From 5daa663a86e3c9be1762f22808c3476933858156 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Tue, 21 Apr 2009 12:23:34 +0000 Subject: info: let -e print which packages are installed --- src/info.c | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) (limited to 'src/info.c') diff --git a/src/info.c b/src/info.c index 5dd0e30..b7071a5 100644 --- a/src/info.c +++ b/src/info.c @@ -23,19 +23,31 @@ struct info_ctx { void (*subaction)(struct apk_package *pkg); }; +static void verbose_print_pkg(struct apk_package *pkg, int minimal_verbosity) +{ + int verbosity = apk_verbosity; + if (verbosity < minimal_verbosity) + verbosity = minimal_verbosity; + + if (pkg == NULL || verbosity < 1) + return; + + printf("%s", pkg->name->name); + if (apk_verbosity > 1) + printf("-%s", pkg->version); + if (apk_verbosity > 2) + printf(" - %s", pkg->description); + printf("\n"); +} + + static int info_list(struct info_ctx *ctx, struct apk_database *db, int argc, char **argv) { struct apk_package *pkg; - list_for_each_entry(pkg, &db->installed.packages, installed_pkgs_list) { - printf("%s", pkg->name->name); - if (apk_verbosity > 0) - printf("-%s", pkg->version); - if (apk_verbosity > 1) - printf("- %s", pkg->description); - printf("\n"); - } + list_for_each_entry(pkg, &db->installed.packages, installed_pkgs_list) + verbose_print_pkg(pkg, 1); return 0; } @@ -43,22 +55,26 @@ static int info_exists(struct info_ctx *ctx, struct apk_database *db, int argc, char **argv) { struct apk_name *name; - int i, j; + int i, j, ret = 0; for (i = 0; i < argc; i++) { name = apk_db_query_name(db, APK_BLOB_STR(argv[i])); - if (name == NULL) - return 1; + if (name == NULL) { + ret++; + continue; + } for (j = 0; j < name->pkgs->num; j++) { if (apk_pkg_get_state(name->pkgs->item[j]) == APK_PKG_INSTALLED) break; } - if (j >= name->pkgs->num) - return 2; + if (j >= name->pkgs->num) { + ret++; + } else + verbose_print_pkg(name->pkgs->item[j], 0); } - return 0; + return ret; } static int info_who_owns(struct info_ctx *ctx, struct apk_database *db, -- cgit v1.2.3