diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2009-04-21 12:23:34 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2009-04-21 12:23:34 +0000 |
commit | 5daa663a86e3c9be1762f22808c3476933858156 (patch) | |
tree | a7733fe67cde89d81cb48cb216d7e798f18dc42c /src/info.c | |
parent | b0921ebac5184be14bac6548b9d91afb721da9a8 (diff) | |
download | apk-tools-5daa663a86e3c9be1762f22808c3476933858156.tar.gz apk-tools-5daa663a86e3c9be1762f22808c3476933858156.tar.bz2 apk-tools-5daa663a86e3c9be1762f22808c3476933858156.tar.xz apk-tools-5daa663a86e3c9be1762f22808c3476933858156.zip |
info: let -e print which packages are installed
Diffstat (limited to 'src/info.c')
-rw-r--r-- | src/info.c | 44 |
1 files changed, 30 insertions, 14 deletions
@@ -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, |