[CRIU] [PATCH 07/20] compel --help: don't hardcode arch list
Kir Kolyshkin
kir at openvz.org
Thu Dec 8 01:44:20 PST 2016
Instead of hardcoding list of architectures to usage(), let's
generate it from the data.
Signed-off-by: Kir Kolyshkin <kir at openvz.org>
---
compel/src/main.c | 66 +++++++++++++++++++++++++++++++++----------------------
1 file changed, 40 insertions(+), 26 deletions(-)
diff --git a/compel/src/main.c b/compel/src/main.c
index b7d83bf..6005f9e 100644
--- a/compel/src/main.c
+++ b/compel/src/main.c
@@ -27,6 +27,30 @@
#define COMPEL_LDFLAGS_DEFAULT "-r -z noexecstack"
+typedef struct {
+ const char *arch;
+ const char *cflags;
+} compel_cflags_t;
+
+static const compel_cflags_t compel_cflags[] = {
+ {
+ .arch = "x86",
+ .cflags = COMPEL_CFLAGS_PIE,
+ }, {
+ .arch = "ia32",
+ .cflags = COMPEL_CFLAGS_NOPIC,
+ }, {
+ .arch = "aarch64",
+ .cflags = COMPEL_CFLAGS_PIE,
+ }, {
+ .arch = "arm",
+ .cflags = COMPEL_CFLAGS_PIE,
+ }, {
+ .arch = "ppc64",
+ .cflags = COMPEL_CFLAGS_PIE,
+ },
+};
+
piegen_opt_t opts = {
.input_filename = NULL,
.output_filename = NULL,
@@ -92,10 +116,24 @@ static void cli_log(unsigned int lvl, const char *fmt, va_list parms)
}
static int usage(int rc) {
+ int i = 0;
printf(
"Usage:\n"
-" compel --arch=(x86|ia32|aarch64|arm|ppc64) cflags\n"
-" compel --arch=(x86|ia32|aarch64|arm|ppc64) ldflags\n"
+" compel --arch=ARCH cflags\n"
+" compel --arch=ARCH ldflags\n"
+" ARCH := { "
+);
+
+ /* Print list of known arches */
+ while (1) {
+ printf("%s", compel_cflags[i++].arch);
+ if (i == ARRAY_SIZE(compel_cflags))
+ break;
+ printf(" | ");
+ }
+
+ printf(
+" }\n"
" compel -f filename hgen\n"
);
@@ -109,30 +147,6 @@ int main(int argc, char *argv[])
int opt, idx, i;
char *action;
- typedef struct {
- const char *arch;
- const char *cflags;
- } compel_cflags_t;
-
- static const compel_cflags_t compel_cflags[] = {
- {
- .arch = "x86",
- .cflags = COMPEL_CFLAGS_PIE,
- }, {
- .arch = "ia32",
- .cflags = COMPEL_CFLAGS_NOPIC,
- }, {
- .arch = "aarch64",
- .cflags = COMPEL_CFLAGS_PIE,
- }, {
- .arch = "arm",
- .cflags = COMPEL_CFLAGS_PIE,
- }, {
- .arch = "ppc64",
- .cflags = COMPEL_CFLAGS_PIE,
- },
- };
-
static const char short_opts[] = "a:f:o:s:p:v:r:u:hVl:";
static struct option long_opts[] = {
{ "arch", required_argument, 0, 'a' },
--
2.7.4
More information about the CRIU
mailing list