diff options
author | Timo Teräs <timo.teras@iki.fi> | 2020-08-24 13:35:36 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2020-08-24 13:35:36 +0300 |
commit | edb45ae46449ddabcac3dea6b3f42c6cec01510a (patch) | |
tree | a27a046df30e4ead8f36c559dabdecb2fa1d7ea5 /src/app_add.c | |
parent | 82de29cf7bad3d9cbb0aeb4dbe756ad2bde73eb3 (diff) | |
download | apk-tools-edb45ae46449ddabcac3dea6b3f42c6cec01510a.tar.gz apk-tools-edb45ae46449ddabcac3dea6b3f42c6cec01510a.tar.bz2 apk-tools-edb45ae46449ddabcac3dea6b3f42c6cec01510a.tar.xz apk-tools-edb45ae46449ddabcac3dea6b3f42c6cec01510a.zip |
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.
Diffstat (limited to 'src/app_add.c')
-rw-r--r-- | src/app_add.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/app_add.c b/src/app_add.c index 1f6c875..f4acd22 100644 --- a/src/app_add.c +++ b/src/app_add.c @@ -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, -}; - -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"); +#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") + +APK_OPT_APPLET(option_desc, ADD_OPTIONS); static int option_parse_applet(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg) { |