diff options
author | Timo Teräs <timo.teras@iki.fi> | 2023-03-23 13:12:34 +0200 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2023-04-11 20:55:13 +0300 |
commit | 4d8a920366143c38d5bc521470e353c11e788b04 (patch) | |
tree | cccb6d820a9bab4a0e57d030bef67c3576f36c95 /src/apk.c | |
parent | 6c2af0f0d3381f1a2d12105e310ae47e120f5d4d (diff) | |
download | apk-tools-4d8a920366143c38d5bc521470e353c11e788b04.tar.gz apk-tools-4d8a920366143c38d5bc521470e353c11e788b04.tar.bz2 apk-tools-4d8a920366143c38d5bc521470e353c11e788b04.tar.xz apk-tools-4d8a920366143c38d5bc521470e353c11e788b04.zip |
db, dot, fetch, info, list, search: support --from=FROMSPEC
Allow omitting loading of system installed database and system
repositories for the commands that operate on package indexes
only.
Diffstat (limited to 'src/apk.c')
-rw-r--r-- | src/apk.c | 37 |
1 files changed, 37 insertions, 0 deletions
@@ -284,6 +284,43 @@ const struct apk_option_group optgroup_commit = { .parse = option_parse_commit, }; +#define SOURCE_OPTIONS(OPT) \ + OPT(OPT_SOURCE_from, APK_OPT_ARG "from") + +APK_OPT_GROUP(optiondesc_source, "Source", SOURCE_OPTIONS); + +static int option_parse_source(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg) +{ + const unsigned long all_flags = APK_OPENF_NO_SYS_REPOS | APK_OPENF_NO_INSTALLED_REPO | APK_OPENF_NO_INSTALLED; + unsigned long flags; + + switch (opt) { + case OPT_SOURCE_from: + if (strcmp(optarg, "none") == 0) { + flags = APK_OPENF_NO_SYS_REPOS | APK_OPENF_NO_INSTALLED_REPO | APK_OPENF_NO_INSTALLED; + } else if (strcmp(optarg, "repositories") == 0) { + flags = APK_OPENF_NO_INSTALLED_REPO | APK_OPENF_NO_INSTALLED; + } else if (strcmp(optarg, "installed") == 0) { + flags = APK_OPENF_NO_SYS_REPOS; + } else if (strcmp(optarg, "system") == 0) { + flags = 0; + } else + return -ENOTSUP; + + dbopts->open_flags &= ~all_flags; + dbopts->open_flags |= flags; + break; + default: + return -ENOTSUP; + } + return 0; +} + +const struct apk_option_group optgroup_source = { + .desc = optiondesc_source, + .parse = option_parse_source, +}; + static int usage(struct apk_applet *applet) { version(); |