summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pacman/add.c6
-rw-r--r--src/pacman/conf.c3
-rw-r--r--src/pacman/conf.h5
-rw-r--r--src/pacman/deptest.c2
-rw-r--r--src/pacman/log.c11
-rw-r--r--src/pacman/pacman.c72
-rw-r--r--src/pacman/query.c2
-rw-r--r--src/pacman/remove.c2
-rw-r--r--src/pacman/sync.c4
9 files changed, 52 insertions, 55 deletions
diff --git a/src/pacman/add.c b/src/pacman/add.c
index 111ea9de..6572b8fc 100644
--- a/src/pacman/add.c
+++ b/src/pacman/add.c
@@ -67,7 +67,7 @@ int pacman_add(alpm_list_t *targets)
ERR(NL, "%s\n", alpm_strerror(pm_errno));
if(pm_errno == PM_ERR_HANDLE_LOCK) {
MSG(NL, _(" if you're sure a package manager is not already running,\n"
- " you can remove %s%s\n"), config->root, PM_LOCK);
+ " you can remove %s%s\n"), alpm_option_get_root(), PM_LOCK);
}
return(1);
}
@@ -124,7 +124,7 @@ int pacman_add(alpm_list_t *targets)
switch(alpm_conflict_get_type(conflict)) {
case PM_CONFLICT_TYPE_TARGET:
MSG(NL, _("%s%s exists in \"%s\" (target) and \"%s\" (target)"),
- config->root,
+ alpm_option_get_root(),
alpm_conflict_get_file(conflict),
alpm_conflict_get_target(conflict),
alpm_conflict_get_ctarget(conflict));
@@ -132,7 +132,7 @@ int pacman_add(alpm_list_t *targets)
case PM_CONFLICT_TYPE_FILE:
MSG(NL, _("%s: %s%s exists in filesystem"),
alpm_conflict_get_target(conflict),
- config->root,
+ alpm_option_get_root(),
alpm_conflict_get_file(conflict));
break;
}
diff --git a/src/pacman/conf.c b/src/pacman/conf.c
index 185372e0..4c0381cf 100644
--- a/src/pacman/conf.c
+++ b/src/pacman/conf.c
@@ -26,7 +26,6 @@
#include <libintl.h>
#include <alpm.h>
-#include <alpm_list.h>
/* pacman */
#include "util.h"
#include "log.h"
@@ -51,9 +50,7 @@ int config_free(config_t *config)
return(-1);
}
- FREE(config->root);
FREE(config->configfile);
- FREELIST(config->op_s_ignore);
free(config);
return(0);
diff --git a/src/pacman/conf.h b/src/pacman/conf.h
index 65e0f23e..ddd20ffc 100644
--- a/src/pacman/conf.h
+++ b/src/pacman/conf.h
@@ -25,9 +25,6 @@
typedef struct __config_t {
/* command line options */
- char *root;
- const char *dbpath;
- const char *cachedir;
char *configfile;
unsigned short op;
unsigned short verbose;
@@ -49,14 +46,12 @@ typedef struct __config_t {
unsigned short op_s_clean;
unsigned short op_s_dependsonly;
unsigned short op_s_downloadonly;
- alpm_list_t *op_s_ignore;
unsigned short op_s_info;
unsigned short op_s_sync;
unsigned short op_s_search;
unsigned short op_s_upgrade;
unsigned short group;
unsigned int flags;
- unsigned short debug;
unsigned short noask;
unsigned int ask;
} config_t;
diff --git a/src/pacman/deptest.c b/src/pacman/deptest.c
index e37f4791..c04ecb0c 100644
--- a/src/pacman/deptest.c
+++ b/src/pacman/deptest.c
@@ -67,7 +67,7 @@ int pacman_deptest(alpm_list_t *targets)
ERR(NL, "%s", alpm_strerror(pm_errno));
if(pm_errno == PM_ERR_HANDLE_LOCK) {
MSG(NL, _(" if you're sure a package manager is not already running,\n"
- " you can remove %s%s\n"), config->root, PM_LOCK);
+ " you can remove %s%s\n"), alpm_option_get_root(), PM_LOCK);
}
return(1);
}
diff --git a/src/pacman/log.c b/src/pacman/log.c
index d4db9848..ccdd9a66 100644
--- a/src/pacman/log.c
+++ b/src/pacman/log.c
@@ -66,13 +66,10 @@ void cb_log(unsigned short level, char *msg)
case PM_LOG_WARNING:
sprintf(str, _("warning"));
break;
- case PM_LOG_FLOW1:
- sprintf(str, _("flow1"));
- break;
- case PM_LOG_FLOW2:
- sprintf(str, _("flow2"));
- break;
case PM_LOG_FUNCTION:
+ /* TODO we should increase the indent level when this occurs so we can see
+ * program flow easier. It'll be fun
+ */
sprintf(str, _("function"));
break;
default:
@@ -82,7 +79,7 @@ void cb_log(unsigned short level, char *msg)
#ifdef PACMAN_DEBUG
/* If debug is on, we'll timestamp the output */
- if(config->debug&PM_LOG_DEBUG) {
+ if(alpm_option_get_logmask() & PM_LOG_DEBUG) {
time_t t;
struct tm *tmp;
char timestr[10] = {0};
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 808d8ad1..7f6f4192 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -251,7 +251,7 @@ static int parseargs(int argc, char *argv[])
{"noconfirm", no_argument, 0, 1000},
{"config", required_argument, 0, 1001},
{"ignore", required_argument, 0, 1002},
- {"debug", required_argument, 0, 1003},
+ {"debug", optional_argument, 0, 1003},
{"noprogressbar", no_argument, 0, 1004},
{"noscriptlet", no_argument, 0, 1005},
{"ask", required_argument, 0, 1006},
@@ -259,6 +259,7 @@ static int parseargs(int argc, char *argv[])
};
char root[PATH_MAX];
struct stat st;
+ unsigned short logmask;
while((opt = getopt_long(argc, argv, "ARUFQSTDYr:b:vkhscVfmnoldepiuwyg", opts, &option_index))) {
if(opt < 0) {
@@ -277,8 +278,32 @@ static int parseargs(int argc, char *argv[])
config->configfile = strndup(optarg, PATH_MAX);
#endif
break;
- case 1002: config->op_s_ignore = alpm_list_add(config->op_s_ignore, strdup(optarg)); break;
- case 1003: config->debug = atoi(optarg); break;
+ case 1002: alpm_option_add_ignorepkg(strdup(optarg)); break;
+ case 1003:
+ /* debug levels are made more 'human readable' than using a raw logmask
+ * here, we will ALWAYS set error and warning for now, though perhaps a
+ * --quiet option will remove these later */
+ logmask = PM_LOG_ERROR | PM_LOG_WARNING;
+
+ if(optarg) {
+ unsigned short debug = atoi(optarg);
+ printf("setting logmask to %s\n", optarg);
+ switch(debug) {
+ case 3: logmask |= PM_LOG_FUNCTION; /* fall through */
+ case 2: logmask |= PM_LOG_DOWNLOAD; /*fall through */
+ case 1: logmask |= PM_LOG_DEBUG; break;
+ default:
+ pm_fprintf(stderr, NL, _("error: '%s' is not a valid debug level"), optarg);
+ return(1);
+ }
+ printf("logmask = %d\n", logmask);
+ } else {
+ logmask |= PM_LOG_DEBUG;
+ }
+ /* progress bars get wonky with debug on, shut them off */
+ config->noprogressbar = 1;
+ alpm_option_set_logmask(logmask);
+ break;
case 1004: config->noprogressbar = 1; break;
case 1005: config->flags |= PM_TRANS_FLAG_NOSCRIPTLET; break;
case 1006: config->noask = 1; config->ask = atoi(optarg); break;
@@ -305,10 +330,9 @@ static int parseargs(int argc, char *argv[])
case 'b':
if(stat(optarg, &st) == -1 || !S_ISDIR(st.st_mode)) {
pm_fprintf(stderr, NL, _("error: '%s' is not a valid db path\n"), optarg);
- exit(EXIT_FAILURE);
+ return(1);
}
alpm_option_set_dbpath(optarg);
- config->dbpath = alpm_option_get_dbpath(optarg);
break;
case 'c':
(config->op_s_clean)++;
@@ -334,12 +358,11 @@ static int parseargs(int argc, char *argv[])
config->flags |= PM_TRANS_FLAG_PRINTURIS;
break;
case 'r':
- printf("setting root path=%s\n", optarg);
if(realpath(optarg, root) == NULL) {
- perror(_("bad root path"));
+ pm_fprintf(stderr, NL, _("error: '%s' is not a valid root path\n"), optarg);
return(1);
}
- config->root = strdup(root);
+ alpm_option_set_root(strdup(root));
break;
case 's':
config->op_s_search = 1;
@@ -416,13 +439,17 @@ int main(int argc, char *argv[])
/* init config data */
config = config_new();
config->op = PM_OP_MAIN;
- config->debug |= PM_LOG_ERROR;
- config->debug |= PM_LOG_WARNING;
/* disable progressbar if the output is redirected */
if(!isatty(1)) {
config->noprogressbar = 1;
}
+ /* initialize pm library */
+ if(alpm_initialize() == -1) {
+ ERR(NL, _("failed to initilize alpm library (%s)\n"), alpm_strerror(pm_errno));
+ cleanup(1);
+ }
+
/* parse the command line */
ret = parseargs(argc, argv);
if(ret != 0) {
@@ -447,7 +474,7 @@ int main(int argc, char *argv[])
(config->op_s_search || config->group || config->op_q_list || config->op_q_info
|| config->flags & PM_TRANS_FLAG_PRINTURIS))
|| (config->op == PM_OP_DEPTEST && !config->op_d_resolve)
- || (config->root != NULL)) {
+ || (strcmp(alpm_option_get_root(), PM_ROOT) != 0)) {
/* special case: PM_OP_SYNC can be used w/ config->op_s_search by any user */
/* special case: ignore root user check if -r is specified, fall back on
* normal FS checking */
@@ -460,18 +487,7 @@ int main(int argc, char *argv[])
}
#endif
- if(config->root == NULL) {
- config->root = strdup(PM_ROOT);
- }
-
- /* initialize pm library */
- if(alpm_initialize(config->root) == -1) {
- ERR(NL, _("failed to initilize alpm library (%s)\n"), alpm_strerror(pm_errno));
- cleanup(1);
- }
-
/* Setup logging as soon as possible, to print out maximum debugging info */
- alpm_option_set_logmask(config->debug);
alpm_option_set_logcb(cb_log);
if(config->configfile == NULL) {
@@ -486,17 +502,9 @@ int main(int argc, char *argv[])
/* set library parameters */
alpm_option_set_dlcb(log_progress);
- config->dbpath = alpm_option_get_dbpath();
- config->cachedir = alpm_option_get_cachedir();
-
- alpm_list_t *i;
- for(i = config->op_s_ignore; i; i = alpm_list_next(i)) {
- alpm_option_add_ignorepkg(alpm_list_getdata(i));
- }
-
if(config->verbose > 0) {
- printf("Root : %s\n", config->root);
- printf("DBPath: %s\n", config->dbpath);
+ printf("Root : %s\n", alpm_option_get_root());
+ printf("DBPath: %s\n", alpm_option_get_dbpath());
list_display(_("Targets:"), pm_targets);
}
diff --git a/src/pacman/query.c b/src/pacman/query.c
index 62e7ef10..1b47a9b0 100644
--- a/src/pacman/query.c
+++ b/src/pacman/query.c
@@ -260,7 +260,7 @@ int pacman_query(alpm_list_t *targets)
if(config->op_q_changelog) {
char changelog[PATH_MAX];
snprintf(changelog, PATH_MAX, "%s%s/%s/%s-%s/changelog",
- config->root, alpm_option_get_dbpath(),
+ alpm_option_get_root(), alpm_option_get_dbpath(),
alpm_db_get_name(db_local),
alpm_pkg_get_name(info),
alpm_pkg_get_version(info));
diff --git a/src/pacman/remove.c b/src/pacman/remove.c
index 77e29d68..28f7411d 100644
--- a/src/pacman/remove.c
+++ b/src/pacman/remove.c
@@ -77,7 +77,7 @@ int pacman_remove(alpm_list_t *targets)
ERR(NL, _("failed to init transaction (%s)\n"), alpm_strerror(pm_errno));
if(pm_errno == PM_ERR_HANDLE_LOCK) {
MSG(NL, _(" if you're sure a package manager is not already running,\n"
- " you can remove %s%s\n"), config->root, PM_LOCK);
+ " you can remove %s%s\n"), alpm_option_get_root(), PM_LOCK);
}
FREELIST(finaltargs);
return(1);
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index bbedb9ac..9d62da22 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -439,7 +439,7 @@ int pacman_sync(alpm_list_t *targets)
ERR(NL, _("failed to init transaction (%s)\n"), alpm_strerror(pm_errno));
if(pm_errno == PM_ERR_HANDLE_LOCK) {
MSG(NL, _(" if you're sure a package manager is not already running,\n"
- " you can remove %s%s\n"), config->root, PM_LOCK);
+ " you can remove %s%s\n"), alpm_option_get_root(), PM_LOCK);
}
return(1);
}
@@ -488,7 +488,7 @@ int pacman_sync(alpm_list_t *targets)
ERR(NL, _("failed to init transaction (%s)\n"), alpm_strerror(pm_errno));
if(pm_errno == PM_ERR_HANDLE_LOCK) {
MSG(NL, _(" if you're sure a package manager is not already running,\n"
- " you can remove %s%s\n"), config->root, PM_LOCK);
+ " you can remove %s%s\n"), alpm_option_get_root(), PM_LOCK);
}
return(1);
}