summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/libalpm/alpm.h4
-rw-r--r--lib/libalpm/be_sync.c3
-rw-r--r--src/pacman/callback.c6
3 files changed, 10 insertions, 3 deletions
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index d2d6055d..f1c6efd3 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -351,7 +351,9 @@ typedef enum _alpm_event_t {
ALPM_EVENT_DISKSPACE_DONE,
/** An optdepend for another package is being removed
* The requiring package and its dependency are passed to the callback */
- ALPM_EVENT_OPTDEP_REQUIRED
+ ALPM_EVENT_OPTDEP_REQUIRED,
+ /** A configured repository database is missing */
+ ALPM_EVENT_DATABASE_MISSING
} alpm_event_t;
/** Event callback */
diff --git a/lib/libalpm/be_sync.c b/lib/libalpm/be_sync.c
index 6bac6fbf..60094552 100644
--- a/lib/libalpm/be_sync.c
+++ b/lib/libalpm/be_sync.c
@@ -89,8 +89,7 @@ static int sync_db_validate(alpm_db_t *db)
if(_alpm_access(db->handle, NULL, dbpath, R_OK) != 0 && errno == ENOENT) {
db->status &= ~DB_STATUS_EXISTS;
db->status |= DB_STATUS_MISSING;
- _alpm_log(db->handle, ALPM_LOG_WARNING,
- "database file for '%s' does not exist\n", db->treename);
+ EVENT(db->handle, ALPM_EVENT_DATABASE_MISSING, db->treename, NULL);
goto valid;
}
db->status |= DB_STATUS_EXISTS;
diff --git a/src/pacman/callback.c b/src/pacman/callback.c
index a51aa4b6..a249a6ef 100644
--- a/src/pacman/callback.c
+++ b/src/pacman/callback.c
@@ -243,6 +243,12 @@ void cb_event(alpm_event_t event, void *data1, void *data2)
printf(_(":: %s optionally requires %s\n"), alpm_pkg_get_name(data1),
alpm_dep_compute_string(data2));
break;
+ case ALPM_EVENT_DATABASE_MISSING:
+ if(!config->op_s_sync) {
+ pm_printf(ALPM_LOG_WARNING,
+ "database file for '%s' does not exist\n", (char *)data1);
+ }
+ break;
/* all the simple done events, with fallthrough for each */
case ALPM_EVENT_FILECONFLICTS_DONE:
case ALPM_EVENT_CHECKDEPS_DONE: