summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pacman/pacman.c112
-rw-r--r--src/pacman/sync.c10
2 files changed, 69 insertions, 53 deletions
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 51f1daeb..17ad778b 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -46,35 +46,37 @@
char *pmo_root = NULL;
char *pmo_dbpath = NULL;
char *pmo_configfile = NULL;
-unsigned short pmo_op = PM_OP_MAIN;
-unsigned short pmo_verbose = 0;
-unsigned short pmo_version = 0;
-unsigned short pmo_help = 0;
-unsigned short pmo_upgrade = 0;
-unsigned short pmo_noconfirm = 0;
-unsigned short pmo_d_vertest = 0;
-unsigned short pmo_d_resolve = 0;
-unsigned short pmo_q_isfile = 0;
-unsigned short pmo_q_info = 0;
-unsigned short pmo_q_list = 0;
-unsigned short pmo_q_orphans = 0;
-unsigned short pmo_q_owns = 0;
-unsigned short pmo_q_search = 0;
-unsigned short pmo_s_upgrade = 0;
+unsigned short pmo_op = PM_OP_MAIN;
+unsigned short pmo_verbose = 0;
+unsigned short pmo_version = 0;
+unsigned short pmo_help = 0;
+unsigned short pmo_upgrade = 0;
+unsigned short pmo_noconfirm = 0;
+unsigned short pmo_d_vertest = 0;
+unsigned short pmo_d_resolve = 0;
+unsigned short pmo_q_isfile = 0;
+unsigned short pmo_q_info = 0;
+unsigned short pmo_q_list = 0;
+unsigned short pmo_q_orphans = 0;
+unsigned short pmo_q_owns = 0;
+unsigned short pmo_q_search = 0;
+unsigned short pmo_s_clean = 0;
unsigned short pmo_s_downloadonly = 0;
+list_t *pmo_s_ignore = NULL;
+unsigned short pmo_s_info = 0;
unsigned short pmo_s_printuris = 0;
-unsigned short pmo_s_sync = 0;
-unsigned short pmo_s_search = 0;
-unsigned short pmo_s_clean = 0;
-unsigned short pmo_group = 0;
-unsigned char pmo_flags = 0;
+unsigned short pmo_s_sync = 0;
+unsigned short pmo_s_search = 0;
+unsigned short pmo_s_upgrade = 0;
+unsigned short pmo_group = 0;
+unsigned char pmo_flags = 0;
/* configuration file option */
-list_t *pmo_holdpkg = NULL;
char *pmo_proxyhost = NULL;
unsigned short pmo_proxyport = 0;
char *pmo_xfercommand = NULL;
unsigned short pmo_chomp = 0;
unsigned short pmo_nopassiveftp = 0;
+list_t *pmo_holdpkg = NULL;
PM_DB *db_local;
/* list of (sync_t *) structs for sync locations */
@@ -337,38 +339,39 @@ int parseargs(int argc, char **argv)
static struct option opts[] =
{
{"add", no_argument, 0, 'A'},
- {"remove", no_argument, 0, 'R'},
- {"upgrade", no_argument, 0, 'U'},
+ {"resolve", no_argument, 0, 'D'}, /* used by 'makepkg -s' */
{"freshen", no_argument, 0, 'F'},
{"query", no_argument, 0, 'Q'},
+ {"remove", no_argument, 0, 'R'},
{"sync", no_argument, 0, 'S'},
- {"deptest", no_argument, 0, 'T'},
- {"vertest", no_argument, 0, 'Y'},
- {"resolve", no_argument, 0, 'D'},
- {"root", required_argument, 0, 'r'},
- {"dbpath", required_argument, 0, 'b'},
- {"verbose", no_argument, 0, 'v'},
+ {"deptest", no_argument, 0, 'T'}, /* used by makepkg */
+ {"upgrade", no_argument, 0, 'U'},
{"version", no_argument, 0, 'V'},
- {"help", no_argument, 0, 'h'},
- {"search", no_argument, 0, 's'},
+ {"vertest", no_argument, 0, 'Y'}, /* does the same as the 'vercmp' binary */
+ {"dbpath", required_argument, 0, 'b'},
+ {"cascade", no_argument, 0, 'c'},
{"clean", no_argument, 0, 'c'},
- {"force", no_argument, 0, 'f'},
{"nodeps", no_argument, 0, 'd'},
{"orphans", no_argument, 0, 'e'},
+ {"force", no_argument, 0, 'f'},
+ {"groups", no_argument, 0, 'g'},
+ {"help", no_argument, 0, 'h'},
+ {"info", no_argument, 0, 'i'},
+ {"dbonly", no_argument, 0, 'k'},
+ {"list", no_argument, 0, 'l'},
{"nosave", no_argument, 0, 'n'},
{"owns", no_argument, 0, 'o'},
- {"list", no_argument, 0, 'l'},
{"file", no_argument, 0, 'p'},
- {"info", no_argument, 0, 'i'},
+ {"root", required_argument, 0, 'r'},
+ {"recursive", no_argument, 0, 's'},
+ {"search", no_argument, 0, 's'},
{"sysupgrade", no_argument, 0, 'u'},
+ {"verbose", no_argument, 0, 'v'},
{"downloadonly", no_argument, 0, 'w'},
{"refresh", no_argument, 0, 'y'},
- {"dbonly", no_argument, 0, 'k'},
- {"cascade", no_argument, 0, 'c'},
- {"recursive", no_argument, 0, 's'},
- {"groups", no_argument, 0, 'g'},
{"noconfirm", no_argument, 0, 1000},
{"config", required_argument, 0, 1001},
+ {"ignore", required_argument, 0, 1002},
{0, 0, 0, 0}
};
char root[256];
@@ -380,34 +383,47 @@ int parseargs(int argc, char **argv)
switch(opt) {
case 0: break;
case 1000: pmo_noconfirm = 1; break;
- case 1001: pmo_configfile = strndup(optarg, PATH_MAX); break;
+ case 1001:
+ if(pmo_configfile) {
+ free(pmo_configfile);
+ }
+ pmo_configfile = strndup(optarg, PATH_MAX); break;
+ case 1002: pmo_s_ignore = list_add(pmo_s_ignore, strdup(optarg)); break;
case 'A': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_ADD); break;
- case 'R': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_REMOVE); break;
- case 'U': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_UPGRADE); break;
+ case 'D': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_DEPTEST); pmo_d_resolve = 1; break;
case 'F': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_UPGRADE); pmo_flags |= PM_TRANS_FLAG_FRESHEN; break;
case 'Q': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_QUERY); break;
+ case 'R': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_REMOVE); break;
case 'S': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_SYNC); break;
case 'T': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_DEPTEST); break;
- case 'Y': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_DEPTEST); pmo_d_vertest = 1; break;
- case 'D': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_DEPTEST); pmo_d_resolve = 1; break;
- case 'h': pmo_help = 1; break;
+ case 'U': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_UPGRADE); break;
case 'V': pmo_version = 1; break;
- case 'b': pmo_dbpath = strdup(optarg); break;
+ case 'Y': pmo_op = (pmo_op != PM_OP_MAIN ? 0 : PM_OP_DEPTEST); pmo_d_vertest = 1; break;
+ case 'b':
+ if(pmo_dbpath) {
+ free(pmo_dbpath);
+ }
+ pmo_dbpath = strdup(optarg);
+ break;
case 'c': pmo_s_clean++; pmo_flags |= PM_TRANS_FLAG_CASCADE; break;
case 'd': pmo_flags |= PM_TRANS_FLAG_NODEPS; break;
case 'e': pmo_q_orphans = 1; break;
case 'f': pmo_flags |= PM_TRANS_FLAG_FORCE; break;
case 'g': pmo_group = 1; break;
- case 'i': pmo_q_info++; break;
+ case 'h': pmo_help = 1; break;
+ case 'i': pmo_q_info++; pmo_s_info++; break;
case 'k': pmo_flags |= PM_TRANS_FLAG_DBONLY; break;
case 'l': pmo_q_list = 1; break;
case 'n': pmo_flags |= PM_TRANS_FLAG_NOSAVE; break;
- case 'p': pmo_q_isfile = 1; break;
case 'o': pmo_q_owns = 1; break;
+ case 'p': pmo_q_isfile = 1; break;
case 'r':
if(realpath(optarg, root) == NULL) {
perror("bad root path");
- return(1);
+ return(1);
+ }
+ if(pmo_root) {
+ free(pmo_root);
}
pmo_root = strdup(root);
break;
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 62394780..631d58ff 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -40,14 +40,14 @@
extern unsigned short pmo_noconfirm;
extern unsigned short pmo_d_resolve;
-extern unsigned short pmo_q_info;
extern unsigned short pmo_q_list;
-extern unsigned short pmo_s_upgrade;
+extern unsigned short pmo_s_clean;
extern unsigned short pmo_s_downloadonly;
+extern unsigned short pmo_s_info;
extern unsigned short pmo_s_printuris;
-extern unsigned short pmo_s_sync;
extern unsigned short pmo_s_search;
-extern unsigned short pmo_s_clean;
+extern unsigned short pmo_s_sync;
+extern unsigned short pmo_s_upgrade;
extern unsigned short pmo_group;
extern unsigned char pmo_flags;
@@ -411,7 +411,7 @@ int pacman_sync(list_t *targets)
return(sync_group(pmc_syncs, targets));
}
- if(pmo_q_info) {
+ if(pmo_s_info) {
return(sync_info(pmc_syncs, targets));
}