summaryrefslogtreecommitdiff
path: root/src/app_audit.c
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2020-08-24 13:35:36 +0300
committerTimo Teräs <timo.teras@iki.fi>2020-08-24 13:35:36 +0300
commitedb45ae46449ddabcac3dea6b3f42c6cec01510a (patch)
treea27a046df30e4ead8f36c559dabdecb2fa1d7ea5 /src/app_audit.c
parent82de29cf7bad3d9cbb0aeb4dbe756ad2bde73eb3 (diff)
downloadapk-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_audit.c')
-rw-r--r--src/app_audit.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/src/app_audit.c b/src/app_audit.c
index 011a26c..9b410c5 100644
--- a/src/app_audit.c
+++ b/src/app_audit.c
@@ -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,
-};
-
-static const char option_desc[] =
- APK_OPTAPPLET
- APK_OPT1n("backup")
- APK_OPT1n("check-permissions")
- APK_OPT1n("packages")
- APK_OPT2n("recursive", "r")
- APK_OPT1n("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")
+
+APK_OPT_APPLET(option_desc, AUDIT_OPTIONS);
static int option_parse_applet(void *ctx, struct apk_db_options *dbopts, int opt, const char *optarg)
{