enforce options definitions to bind the enum and the descriptor
This uses some macro trickery to make sure that there's one-to-one mapping with the option index enum and the descriptor. The down side is that enum's are generated via #define's and editors might not pick them up for auto completion, but the benefits are more: it's no longer possible have mismatching enum value and descriptor index, and the amount of source code lines is less.cute-signatures
parent
82de29cf7b
commit
edb45ae464
136
src/apk.c
136
src/apk.c
|
@ -73,80 +73,48 @@ static struct apk_repository_list *apk_repository_new(const char *url)
|
|||
return r;
|
||||
}
|
||||
|
||||
enum {
|
||||
OPT_GLOBAL_allow_untrusted,
|
||||
OPT_GLOBAL_arch,
|
||||
OPT_GLOBAL_cache_dir,
|
||||
OPT_GLOBAL_cache_max_age,
|
||||
OPT_GLOBAL_force,
|
||||
OPT_GLOBAL_force_binary_stdout,
|
||||
OPT_GLOBAL_force_broken_world,
|
||||
OPT_GLOBAL_force_non_repository,
|
||||
OPT_GLOBAL_force_old_apk,
|
||||
OPT_GLOBAL_force_overwrite,
|
||||
OPT_GLOBAL_force_refresh,
|
||||
OPT_GLOBAL_help,
|
||||
OPT_GLOBAL_interactive,
|
||||
OPT_GLOBAL_keys_dir,
|
||||
OPT_GLOBAL_no_cache,
|
||||
OPT_GLOBAL_no_network,
|
||||
OPT_GLOBAL_no_progress,
|
||||
OPT_GLOBAL_print_arch,
|
||||
OPT_GLOBAL_progress,
|
||||
OPT_GLOBAL_progress_fd,
|
||||
OPT_GLOBAL_purge,
|
||||
OPT_GLOBAL_quiet,
|
||||
OPT_GLOBAL_repositories_file,
|
||||
OPT_GLOBAL_repository,
|
||||
OPT_GLOBAL_root,
|
||||
OPT_GLOBAL_update_cache,
|
||||
OPT_GLOBAL_verbose,
|
||||
OPT_GLOBAL_version,
|
||||
OPT_GLOBAL_wait,
|
||||
#ifdef TEST_MODE
|
||||
OPT_GLOBAL_test_instdb,
|
||||
OPT_GLOBAL_test_repo,
|
||||
OPT_GLOBAL_test_world,
|
||||
#endif
|
||||
};
|
||||
#define GLOBAL_OPTIONS(OPT) \
|
||||
OPT(OPT_GLOBAL_allow_untrusted, "allow-untrusted") \
|
||||
OPT(OPT_GLOBAL_arch, APK_OPT_ARG "arch") \
|
||||
OPT(OPT_GLOBAL_cache_dir, APK_OPT_ARG "cache-dir") \
|
||||
OPT(OPT_GLOBAL_cache_max_age, APK_OPT_ARG "cache-max-age") \
|
||||
OPT(OPT_GLOBAL_force, APK_OPT_SH("f") "force") \
|
||||
OPT(OPT_GLOBAL_force_binary_stdout, "force-binary-stdout") \
|
||||
OPT(OPT_GLOBAL_force_broken_world, "force-broken-world") \
|
||||
OPT(OPT_GLOBAL_force_non_repository, "force-non-repository") \
|
||||
OPT(OPT_GLOBAL_force_old_apk, "force-old-apk") \
|
||||
OPT(OPT_GLOBAL_force_overwrite, "force-overwrite") \
|
||||
OPT(OPT_GLOBAL_force_refresh, "force-refresh") \
|
||||
OPT(OPT_GLOBAL_help, APK_OPT_SH("h") "help") \
|
||||
OPT(OPT_GLOBAL_interactive, APK_OPT_SH("i") "interactive") \
|
||||
OPT(OPT_GLOBAL_keys_dir, APK_OPT_ARG "keys-dir") \
|
||||
OPT(OPT_GLOBAL_no_cache, "no-cache") \
|
||||
OPT(OPT_GLOBAL_no_network, "no-network") \
|
||||
OPT(OPT_GLOBAL_no_progress, "no-progress") \
|
||||
OPT(OPT_GLOBAL_print_arch, "print-arch") \
|
||||
OPT(OPT_GLOBAL_progress, "progress") \
|
||||
OPT(OPT_GLOBAL_progress_fd, APK_OPT_ARG "progress-fd") \
|
||||
OPT(OPT_GLOBAL_purge, "purge") \
|
||||
OPT(OPT_GLOBAL_quiet, APK_OPT_SH("q") "quiet") \
|
||||
OPT(OPT_GLOBAL_repositories_file, APK_OPT_ARG "repositories-file") \
|
||||
OPT(OPT_GLOBAL_repository, APK_OPT_ARG APK_OPT_SH("x") "repository") \
|
||||
OPT(OPT_GLOBAL_root, APK_OPT_ARG APK_OPT_SH("p") "root") \
|
||||
OPT(OPT_GLOBAL_update_cache, APK_OPT_SH("U") "update-cache") \
|
||||
OPT(OPT_GLOBAL_verbose, APK_OPT_SH("v") "verbose") \
|
||||
OPT(OPT_GLOBAL_version, APK_OPT_SH("V") "version") \
|
||||
OPT(OPT_GLOBAL_wait, APK_OPT_ARG "wait") \
|
||||
|
||||
#define TEST_OPTIONS(OPT) \
|
||||
OPT(OPT_GLOBAL_test_instdb, APK_OPT_ARG "test-instdb") \
|
||||
OPT(OPT_GLOBAL_test_repo, APK_OPT_ARG "test-repo") \
|
||||
OPT(OPT_GLOBAL_test_world, APK_OPT_ARG "test-world")
|
||||
|
||||
|
||||
static const char optiondesc_global[] =
|
||||
APK_OPTGROUP("Global")
|
||||
APK_OPT1n("allow-untrusted")
|
||||
APK_OPT1R("arch")
|
||||
APK_OPT1R("cache-dir")
|
||||
APK_OPT1R("cache-max-age")
|
||||
APK_OPT2n("force", "f")
|
||||
APK_OPT1n("force-binary-stdout")
|
||||
APK_OPT1n("force-broken-world")
|
||||
APK_OPT1n("force-non-repository")
|
||||
APK_OPT1n("force-old-apk")
|
||||
APK_OPT1n("force-overwrite")
|
||||
APK_OPT1n("force-refresh")
|
||||
APK_OPT2n("help", "h")
|
||||
APK_OPT2n("interactive", "i")
|
||||
APK_OPT1R("keys-dir")
|
||||
APK_OPT1n("no-cache")
|
||||
APK_OPT1n("no-network")
|
||||
APK_OPT1n("no-progress")
|
||||
APK_OPT1n("print-arch")
|
||||
APK_OPT1n("progress")
|
||||
APK_OPT1R("progress-fd")
|
||||
APK_OPT1n("purge")
|
||||
APK_OPT2n("quiet", "q")
|
||||
APK_OPT1R("repositories-file")
|
||||
APK_OPT2R("repository", "X")
|
||||
APK_OPT2R("root", "p")
|
||||
APK_OPT2n("update-cache", "U")
|
||||
APK_OPT2n("verbose", "v")
|
||||
APK_OPT2n("version", "V")
|
||||
APK_OPT1R("wait")
|
||||
#ifdef TEST_MODE
|
||||
APK_OPT1R("test-instdb")
|
||||
APK_OPT1R("test-repo")
|
||||
APK_OPT1R("test-world")
|
||||
APK_OPT_GROUP2(optiondesc_global, "Global", GLOBAL_OPTIONS, TEST_OPTIONS);
|
||||
#else
|
||||
APK_OPT_GROUP(optiondesc_global, "Global", GLOBAL_OPTIONS);
|
||||
#endif
|
||||
;
|
||||
|
||||
static int option_parse_global(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
@ -266,23 +234,15 @@ const struct apk_option_group optgroup_global = {
|
|||
.parse = option_parse_global,
|
||||
};
|
||||
|
||||
enum {
|
||||
OPT_COMMIT_clean_protected,
|
||||
OPT_COMMIT_initramfs_diskless_boot,
|
||||
OPT_COMMIT_no_commit_hooks,
|
||||
OPT_COMMIT_no_scripts,
|
||||
OPT_COMMIT_overlay_from_stdin,
|
||||
OPT_COMMIT_simulate,
|
||||
};
|
||||
#define COMMIT_OPTIONS(OPT) \
|
||||
OPT(OPT_COMMIT_clean_protected, "clean-protected") \
|
||||
OPT(OPT_COMMIT_initramfs_diskless_boot, "initramfs-diskless-boot") \
|
||||
OPT(OPT_COMMIT_no_commit_hooks, "no-commit-hooks") \
|
||||
OPT(OPT_COMMIT_no_scripts, "no-scripts") \
|
||||
OPT(OPT_COMMIT_overlay_from_stdin, "overlay-from-stdin") \
|
||||
OPT(OPT_COMMIT_simulate, APK_OPT_SH("s") "simulate")
|
||||
|
||||
static const char optiondesc_commit[] =
|
||||
APK_OPTGROUP("commit")
|
||||
APK_OPT1n("clean-protected")
|
||||
APK_OPT1n("initramfs-diskless-boot")
|
||||
APK_OPT1n("no-commit-hooks")
|
||||
APK_OPT1n("no-scripts")
|
||||
APK_OPT1n("overlay-from-stdin")
|
||||
APK_OPT2n("simulate", "s");
|
||||
APK_OPT_GROUP(optiondesc_commit, "Commit", COMMIT_OPTIONS);
|
||||
|
||||
static int option_parse_commit(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
@ -387,7 +347,7 @@ static int parse_options(int argc, char **argv, struct apk_applet *applet, void
|
|||
opt->has_arg = required_argument;
|
||||
d++;
|
||||
}
|
||||
num_short = 1;
|
||||
num_short = 0;
|
||||
if ((unsigned char)*d >= 0xf0)
|
||||
num_short = *d++ & 0x0f;
|
||||
for (; num_short > 0; num_short--) {
|
||||
|
|
|
@ -15,12 +15,33 @@
|
|||
#include "apk_defines.h"
|
||||
#include "apk_database.h"
|
||||
|
||||
#define APK_OPTAPPLET "\x00"
|
||||
#define APK_OPTGROUP(_name) _name "\x00"
|
||||
#if 0
|
||||
#define APK_OPT1n(_opt) "\xf0" _opt "\x00"
|
||||
#define APK_OPT1R(_opt) "\xaf" "\xf0" _opt "\x00"
|
||||
#define APK_OPT2n(_opt, _short) _short _opt "\x00"
|
||||
#define APK_OPT2R(_opt, _short) "\xaf" _short _opt "\x00"
|
||||
#endif
|
||||
|
||||
#define __APK_OPTAPPLET "\x00"
|
||||
#define __APK_OPTGROUP(_name) _name "\x00"
|
||||
#define __APK_OPT_ENUM(_enum,__desc) _enum,
|
||||
#define __APK_OPT_DESC(_enum,__desc) __desc "\x00"
|
||||
|
||||
#define APK_OPT_ARG "\xaf"
|
||||
#define APK_OPT_SH(x) "\xf1" x
|
||||
#define APK_OPT_S2(x) "\xf2" x
|
||||
|
||||
#define APK_OPT_APPLET(var_name, init_macro) \
|
||||
enum { init_macro(__APK_OPT_ENUM) }; \
|
||||
static const char var_name[] = __APK_OPTAPPLET init_macro(__APK_OPT_DESC);
|
||||
|
||||
#define APK_OPT_GROUP(var_name, group_name, init_macro) \
|
||||
enum { init_macro(__APK_OPT_ENUM) }; \
|
||||
static const char var_name[] = __APK_OPTGROUP(group_name) init_macro(__APK_OPT_DESC);
|
||||
|
||||
#define APK_OPT_GROUP2(var_name, group_name, init_macro, init_macro2) \
|
||||
enum { init_macro(__APK_OPT_ENUM) init_macro2(__APK_OPT_ENUM) }; \
|
||||
static const char var_name[] = __APK_OPTGROUP(group_name) init_macro(__APK_OPT_DESC) init_macro2(__APK_OPT_DESC);
|
||||
|
||||
struct apk_option_group {
|
||||
const char *desc;
|
||||
|
|
|
@ -21,21 +21,14 @@ struct add_ctx {
|
|||
unsigned short extract_flags;
|
||||
};
|
||||
|
||||
enum {
|
||||
OPT_ADD_initdb,
|
||||
OPT_ADD_latest,
|
||||
OPT_ADD_no_chown,
|
||||
OPT_ADD_upgrade,
|
||||
OPT_ADD_virtual,
|
||||
};
|
||||
#define ADD_OPTIONS(OPT) \
|
||||
OPT(OPT_ADD_initdb, "initdb") \
|
||||
OPT(OPT_ADD_latest, APK_OPT_SH("l") "latest") \
|
||||
OPT(OPT_ADD_no_chown, "no-chown") \
|
||||
OPT(OPT_ADD_upgrade, APK_OPT_SH("u") "upgrade") \
|
||||
OPT(OPT_ADD_virtual, APK_OPT_ARG APK_OPT_SH("t") "virtual")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT1n("initdb")
|
||||
APK_OPT2n("latest", "l")
|
||||
APK_OPT1n("no-chown")
|
||||
APK_OPT2n("upgrade", "u")
|
||||
APK_OPT2R("virtual", "t");
|
||||
APK_OPT_APPLET(option_desc, ADD_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -35,21 +35,14 @@ struct audit_ctx {
|
|||
unsigned packages_only : 1;
|
||||
};
|
||||
|
||||
enum {
|
||||
OPT_AUDIT_backup,
|
||||
OPT_AUDIT_check_permissions,
|
||||
OPT_AUDIT_packages,
|
||||
OPT_AUDIT_recursive,
|
||||
OPT_AUDIT_system,
|
||||
};
|
||||
#define AUDIT_OPTIONS(OPT) \
|
||||
OPT(OPT_AUDIT_backup, "backup") \
|
||||
OPT(OPT_AUDIT_check_permissions, "check-permissions") \
|
||||
OPT(OPT_AUDIT_packages, "packages") \
|
||||
OPT(OPT_AUDIT_recursive, APK_OPT_SH("r") "recursive") \
|
||||
OPT(OPT_AUDIT_system, "system")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT1n("backup")
|
||||
APK_OPT1n("check-permissions")
|
||||
APK_OPT1n("packages")
|
||||
APK_OPT2n("recursive", "r")
|
||||
APK_OPT1n("system");
|
||||
APK_OPT_APPLET(option_desc, AUDIT_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -28,15 +28,11 @@ struct cache_ctx {
|
|||
unsigned short solver_flags;
|
||||
};
|
||||
|
||||
enum {
|
||||
OPT_CACHE_latest,
|
||||
OPT_CACHE_upgrade,
|
||||
};
|
||||
#define CACHE_OPTIONS(OPT) \
|
||||
OPT(OPT_CACHE_latest, APK_OPT_SH("l") "latest") \
|
||||
OPT(OPT_CACHE_upgrade, APK_OPT_SH("u") "upgrade")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT2n("latest", "l")
|
||||
APK_OPT2n("upgrade", "u");
|
||||
APK_OPT_APPLET(option_desc, CACHE_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -19,13 +19,10 @@ struct del_ctx {
|
|||
int errors;
|
||||
};
|
||||
|
||||
enum {
|
||||
OPT_DEL_redepends,
|
||||
};
|
||||
#define DEL_OPTIONS(OPT) \
|
||||
OPT(OPT_DEL_redepends, APK_OPT_SH("r") "rdepends")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT2n("rdepends", "r");
|
||||
APK_OPT_APPLET(option_desc, DEL_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *pctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -22,15 +22,11 @@ struct dot_ctx {
|
|||
int installed_only : 1;
|
||||
};
|
||||
|
||||
enum {
|
||||
OPT_DOT_errors,
|
||||
OPT_DOT_installed,
|
||||
};
|
||||
#define DOT_OPTIONS(OPT) \
|
||||
OPT(OPT_DOT_errors, "errors") \
|
||||
OPT(OPT_DOT_installed, "installed")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT1n("errors")
|
||||
APK_OPT1n("installed");
|
||||
APK_OPT_APPLET(option_desc, DOT_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *pctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -66,21 +66,14 @@ static int cup(void)
|
|||
return write(STDOUT_FILENO, buf, len) != len;
|
||||
}
|
||||
|
||||
enum {
|
||||
OPT_FETCH_link,
|
||||
OPT_FETCH_recursive,
|
||||
OPT_FETCH_output,
|
||||
OPT_FETCH_simulate,
|
||||
OPT_FETCH_stdout,
|
||||
};
|
||||
#define FETCH_OPTIONS(OPT) \
|
||||
OPT(OPT_FETCH_link, APK_OPT_SH("l") "link") \
|
||||
OPT(OPT_FETCH_recursive, APK_OPT_SH("R") "recursive") \
|
||||
OPT(OPT_FETCH_output, APK_OPT_ARG APK_OPT_SH("o") "output") \
|
||||
OPT(OPT_FETCH_simulate, "simulate") \
|
||||
OPT(OPT_FETCH_stdout, APK_OPT_SH("s") "stdout")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT2n("link", "l")
|
||||
APK_OPT2n("recursive", "R")
|
||||
APK_OPT2R("output", "o")
|
||||
APK_OPT1n("simulate")
|
||||
APK_OPT2n("stdout", "s");
|
||||
APK_OPT_APPLET(option_desc, FETCH_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -22,21 +22,14 @@ struct fix_ctx {
|
|||
int errors;
|
||||
};
|
||||
|
||||
enum {
|
||||
OPT_FIX_depends,
|
||||
OPT_FIX_directory_permissions,
|
||||
OPT_FIX_reinstall,
|
||||
OPT_FIX_upgrade,
|
||||
OPT_FIX_xattr,
|
||||
};
|
||||
#define FIX_OPTIONS(OPT) \
|
||||
OPT(OPT_FIX_depends, APK_OPT_SH("d") "depends") \
|
||||
OPT(OPT_FIX_directory_permissions, "directory-permissions") \
|
||||
OPT(OPT_FIX_reinstall, APK_OPT_SH("r") "reinstall") \
|
||||
OPT(OPT_FIX_upgrade, APK_OPT_SH("u") "upgrade") \
|
||||
OPT(OPT_FIX_xattr, APK_OPT_SH("x") "xattr")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT2n("depends", "d")
|
||||
APK_OPT1n("directory-permissions")
|
||||
APK_OPT2n("reinstall", "r")
|
||||
APK_OPT2n("upgrade", "u")
|
||||
APK_OPT2n("xattr", "x");
|
||||
APK_OPT_APPLET(option_desc, FIX_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *pctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -33,21 +33,14 @@ struct index_ctx {
|
|||
unsigned short index_flags;
|
||||
};
|
||||
|
||||
enum {
|
||||
OPT_INDEX_description,
|
||||
OPT_INDEX_index,
|
||||
OPT_INDEX_no_warnings,
|
||||
OPT_INDEX_output,
|
||||
OPT_INDEX_rewrite_arch,
|
||||
};
|
||||
#define INDEX_OPTIONS(OPT) \
|
||||
OPT(OPT_INDEX_description, APK_OPT_ARG APK_OPT_SH("d") "description") \
|
||||
OPT(OPT_INDEX_index, APK_OPT_ARG APK_OPT_SH("x") "index") \
|
||||
OPT(OPT_INDEX_no_warnings, "no-warnings") \
|
||||
OPT(OPT_INDEX_output, APK_OPT_ARG APK_OPT_SH("o") "output") \
|
||||
OPT(OPT_INDEX_rewrite_arch, APK_OPT_ARG "rewrite-arch")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT2R("description", "d")
|
||||
APK_OPT2R("index", "x")
|
||||
APK_OPT1n("no-warnings")
|
||||
APK_OPT2R("output", "o")
|
||||
APK_OPT1R("rewrite-arch");
|
||||
APK_OPT_APPLET(option_desc, INDEX_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -364,41 +364,24 @@ static void print_name_info(struct apk_database *db, const char *match, struct a
|
|||
info_subaction(ctx, p->pkg);
|
||||
}
|
||||
|
||||
enum {
|
||||
OPT_INFO_all,
|
||||
OPT_INFO_contents,
|
||||
OPT_INFO_depends,
|
||||
OPT_INFO_description,
|
||||
OPT_INFO_install_if,
|
||||
OPT_INFO_installed,
|
||||
OPT_INFO_license,
|
||||
OPT_INFO_provides,
|
||||
OPT_INFO_rdepends,
|
||||
OPT_INFO_replaces,
|
||||
OPT_INFO_rinstall_if,
|
||||
OPT_INFO_size,
|
||||
OPT_INFO_triggers,
|
||||
OPT_INFO_webpage,
|
||||
OPT_INFO_who_owns,
|
||||
};
|
||||
#define INFO_OPTIONS(OPT) \
|
||||
OPT(OPT_INFO_all, APK_OPT_SH("a") "all") \
|
||||
OPT(OPT_INFO_contents, APK_OPT_SH("L") "contents") \
|
||||
OPT(OPT_INFO_depends, APK_OPT_SH("R") "depends") \
|
||||
OPT(OPT_INFO_description, APK_OPT_SH("d") "description") \
|
||||
OPT(OPT_INFO_install_if, "install-if") \
|
||||
OPT(OPT_INFO_installed, APK_OPT_SH("e") "installed") \
|
||||
OPT(OPT_INFO_license, "license") \
|
||||
OPT(OPT_INFO_provides, APK_OPT_SH("P") "provides") \
|
||||
OPT(OPT_INFO_rdepends, APK_OPT_SH("r") "rdepends") \
|
||||
OPT(OPT_INFO_replaces, "replaces") \
|
||||
OPT(OPT_INFO_rinstall_if, "rinstall-if") \
|
||||
OPT(OPT_INFO_size, APK_OPT_SH("s") "size") \
|
||||
OPT(OPT_INFO_triggers, APK_OPT_SH("t") "triggers") \
|
||||
OPT(OPT_INFO_webpage, APK_OPT_SH("w") "webpage") \
|
||||
OPT(OPT_INFO_who_owns, APK_OPT_SH("W") "who-owns")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT2n("all", "a")
|
||||
APK_OPT2n("contents", "L")
|
||||
APK_OPT2n("depends", "R")
|
||||
APK_OPT2n("description", "d")
|
||||
APK_OPT1n("install-if")
|
||||
APK_OPT2n("installed", "e")
|
||||
APK_OPT1n("license")
|
||||
APK_OPT2n("provides", "P")
|
||||
APK_OPT2n("rdepends", "r")
|
||||
APK_OPT1n("replaces")
|
||||
APK_OPT1n("rinstall-if")
|
||||
APK_OPT2n("size", "s")
|
||||
APK_OPT2n("triggers", "t")
|
||||
APK_OPT2n("webpage", "w")
|
||||
APK_OPT2n("who-owns", "W");
|
||||
APK_OPT_APPLET(option_desc, INFO_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *pctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -177,25 +177,16 @@ static void print_result(struct apk_database *db, const char *match, struct apk_
|
|||
iterate_providers(name, ctx);
|
||||
}
|
||||
|
||||
enum {
|
||||
OPT_LIST_available,
|
||||
OPT_LIST_installed,
|
||||
OPT_LIST_depends,
|
||||
OPT_LIST_origin,
|
||||
OPT_LIST_orphaned,
|
||||
OPT_LIST_providers,
|
||||
OPT_LIST_upgradeable,
|
||||
};
|
||||
#define LIST_OPTIONS(OPT) \
|
||||
OPT(OPT_LIST_available, APK_OPT_SH("a") "available") \
|
||||
OPT(OPT_LIST_installed, APK_OPT_SH("I") "installed") \
|
||||
OPT(OPT_LIST_depends, APK_OPT_SH("d") "depends") \
|
||||
OPT(OPT_LIST_origin, APK_OPT_SH("o") "origin") \
|
||||
OPT(OPT_LIST_orphaned, APK_OPT_SH("O") "orphaned") \
|
||||
OPT(OPT_LIST_providers, APK_OPT_SH("P") "providers") \
|
||||
OPT(OPT_LIST_upgradeable, APK_OPT_SH("u") "upgradeable")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT2n("available", "a")
|
||||
APK_OPT2n("installed", "I")
|
||||
APK_OPT2n("depends", "d")
|
||||
APK_OPT2n("origin", "o")
|
||||
APK_OPT2n("orphaned", "O")
|
||||
APK_OPT2n("providers", "P")
|
||||
APK_OPT2n("upgradeable", "u");
|
||||
APK_OPT_APPLET(option_desc, LIST_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *pctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -72,23 +72,15 @@ static void print_rdepends(struct search_ctx *ctx, struct apk_package *pkg)
|
|||
apk_pkg_foreach_reverse_dependency(pkg, ctx->matches, print_rdep_pkg, ctx);
|
||||
}
|
||||
|
||||
enum {
|
||||
OPT_SEARCH_all,
|
||||
OPT_SEARCH_description,
|
||||
OPT_SEARCH_exact,
|
||||
OPT_SEARCH_has_origin,
|
||||
OPT_SEARCH_origin,
|
||||
OPT_SEARCH_rdepends,
|
||||
};
|
||||
#define SEARCH_OPTIONS(OPT) \
|
||||
OPT(OPT_SEARCH_all, APK_OPT_SH("a") "all") \
|
||||
OPT(OPT_SEARCH_description, APK_OPT_SH("d") "description") \
|
||||
OPT(OPT_SEARCH_exact, APK_OPT_S2("ex") "exact") \
|
||||
OPT(OPT_SEARCH_has_origin, "has-origin") \
|
||||
OPT(OPT_SEARCH_origin, APK_OPT_SH("o") "origin") \
|
||||
OPT(OPT_SEARCH_rdepends, APK_OPT_SH("r") "rdepends") \
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT2n("all", "a")
|
||||
APK_OPT2n("description", "d")
|
||||
APK_OPT2n("exact", "\xf2""ex")
|
||||
APK_OPT1n("has-origin")
|
||||
APK_OPT2n("origin", "o")
|
||||
APK_OPT2n("rdepends", "r");
|
||||
APK_OPT_APPLET(option_desc, SEARCH_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -24,21 +24,14 @@ struct upgrade_ctx {
|
|||
int errors;
|
||||
};
|
||||
|
||||
enum {
|
||||
OPT_UPGRADE_available,
|
||||
OPT_UPGRADE_ignore,
|
||||
OPT_UPGRADE_latest,
|
||||
OPT_UPGRADE_no_self_upgrade,
|
||||
OPT_UPGRADE_self_upgrade_only,
|
||||
};
|
||||
#define UPGRADE_OPTIONS(OPT) \
|
||||
OPT(OPT_UPGRADE_available, APK_OPT_SH("a") "available") \
|
||||
OPT(OPT_UPGRADE_ignore, "ignore") \
|
||||
OPT(OPT_UPGRADE_latest, APK_OPT_SH("l") "latest") \
|
||||
OPT(OPT_UPGRADE_no_self_upgrade, "no-self-upgrade") \
|
||||
OPT(OPT_UPGRADE_self_upgrade_only, "self-upgrade-only")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT2n("available", "a")
|
||||
APK_OPT1n("ignore")
|
||||
APK_OPT2n("latest", "l")
|
||||
APK_OPT1n("no-self-upgrade")
|
||||
APK_OPT1n("self-upgrade-only");
|
||||
APK_OPT_APPLET(option_desc, UPGRADE_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
|
@ -66,21 +66,14 @@ static int ver_validate(struct apk_database *db, struct apk_string_array *args)
|
|||
return errors;
|
||||
}
|
||||
|
||||
enum {
|
||||
OPT_VERSION_all,
|
||||
OPT_VERSION_check,
|
||||
OPT_VERSION_indexes,
|
||||
OPT_VERSION_limit,
|
||||
OPT_VERSION_test,
|
||||
};
|
||||
#define VERSION_OPTIONS(OPT) \
|
||||
OPT(OPT_VERSION_all, APK_OPT_SH("a") "all") \
|
||||
OPT(OPT_VERSION_check, APK_OPT_SH("c") "check") \
|
||||
OPT(OPT_VERSION_indexes, APK_OPT_SH("I") "indexes") \
|
||||
OPT(OPT_VERSION_limit, APK_OPT_ARG APK_OPT_SH("l") "limit") \
|
||||
OPT(OPT_VERSION_test, APK_OPT_SH("t") "test")
|
||||
|
||||
static const char option_desc[] =
|
||||
APK_OPTAPPLET
|
||||
APK_OPT2n("all", "a")
|
||||
APK_OPT2n("check", "c")
|
||||
APK_OPT2n("indexes", "I")
|
||||
APK_OPT2R("limit", "l")
|
||||
APK_OPT2n("test", "t");
|
||||
APK_OPT_APPLET(option_desc, VERSION_OPTIONS);
|
||||
|
||||
static int option_parse_applet(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue