* [PATCH v2] f2fs-tools: fix displaing usage information
@ 2017-07-04 12:44 Piotr Sokołowski
2017-07-05 3:43 ` Jaegeuk Kim
0 siblings, 1 reply; 2+ messages in thread
From: Piotr Sokołowski @ 2017-07-04 12:44 UTC (permalink / raw)
To: linux-f2fs-devel
When commands that are symlinks to fsck.f2fs binary are invoked without
any parameters, now they show their own usage communicate instead of
fsck.f2fs help message in all cases.
---
fsck/main.c | 477 +++++++++++++++++++++++++++++++-----------------------------
1 file changed, 250 insertions(+), 227 deletions(-)
diff --git a/fsck/main.c b/fsck/main.c
index 6c94a70..adc8675 100644
--- a/fsck/main.c
+++ b/fsck/main.c
@@ -108,6 +108,17 @@ void f2fs_parse_options(int argc, char *argv[])
char *prog = basename(argv[0]);
int err = NOERROR;
+ if (!strcmp("fsck.f2fs", prog))
+ c.func = FSCK;
+ else if (!strcmp("dump.f2fs", prog))
+ c.func = DUMP;
+ else if (!strcmp("defrag.f2fs", prog))
+ c.func = DEFRAG;
+ else if (!strcmp("resize.f2fs", prog))
+ c.func = RESIZE;
+ else if (!strcmp("sload.f2fs", prog))
+ c.func = SLOAD;
+
if (argc < 2) {
MSG(0, "\tError: Device not specified\n");
error_out();
@@ -115,261 +126,273 @@ void f2fs_parse_options(int argc, char *argv[])
c.devices[0].path = strdup(argv[argc - 1]);
argv[argc-- - 1] = 0;
- if (!strcmp("fsck.f2fs", prog)) {
- const char *option_string = ":ad:fp:t";
+ switch (c.func) {
+ case FSCK:
+ {
+ const char *option_string = ":ad:fp:t";
- c.func = FSCK;
- while ((option = getopt(argc, argv, option_string)) != EOF) {
- switch (option) {
- case 'a':
- c.auto_fix = 1;
- MSG(0, "Info: Fix the reported corruption.\n");
- break;
- case 'p':
- /* preen mode has different levels:
- * 0: default level, the same as -a
- * 1: check meta
- */
- if (optarg[0] == '-') {
- c.preen_mode = PREEN_MODE_0;
- optind--;
- break;
- } else if (!is_digits(optarg)) {
- err = EWRONG_OPT;
- break;
- }
- c.preen_mode = atoi(optarg);
- if (c.preen_mode < 0)
- c.preen_mode = PREEN_MODE_0;
- else if (c.preen_mode >= PREEN_MODE_MAX)
- c.preen_mode = PREEN_MODE_MAX - 1;
- if (c.preen_mode == PREEN_MODE_0)
+ while ((option = getopt(argc, argv, option_string)) != EOF) {
+ switch (option) {
+ case 'a':
c.auto_fix = 1;
- MSG(0, "Info: Fix the reported corruption in "
- "preen mode %d\n", c.preen_mode);
- break;
- case 'd':
- if (optarg[0] == '-') {
- err = ENEED_ARG;
+ MSG(0, "Info: Fix the reported corruption.\n");
break;
- } else if (!is_digits(optarg)) {
- err = EWRONG_OPT;
+ case 'p':
+ /* preen mode has different levels:
+ * 0: default level, the same as -a
+ * 1: check meta
+ */
+ if (optarg[0] == '-') {
+ c.preen_mode = PREEN_MODE_0;
+ optind--;
+ break;
+ } else if (!is_digits(optarg)) {
+ err = EWRONG_OPT;
+ break;
+ }
+ c.preen_mode = atoi(optarg);
+ if (c.preen_mode < 0)
+ c.preen_mode = PREEN_MODE_0;
+ else if (c.preen_mode >= PREEN_MODE_MAX)
+ c.preen_mode = PREEN_MODE_MAX - 1;
+ if (c.preen_mode == PREEN_MODE_0)
+ c.auto_fix = 1;
+ MSG(0, "Info: Fix the reported corruption in "
+ "preen mode %d\n", c.preen_mode);
+ break;
+ case 'd':
+ if (optarg[0] == '-') {
+ err = ENEED_ARG;
+ break;
+ } else if (!is_digits(optarg)) {
+ err = EWRONG_OPT;
+ break;
+ }
+ c.dbg_lv = atoi(optarg);
+ MSG(0, "Info: Debug level = %d\n", c.dbg_lv);
+ break;
+ case 'f':
+ c.fix_on = 1;
+ MSG(0, "Info: Force to fix corruption\n");
+ break;
+ case 't':
+ c.dbg_lv = -1;
break;
- }
- c.dbg_lv = atoi(optarg);
- MSG(0, "Info: Debug level = %d\n", c.dbg_lv);
- break;
- case 'f':
- c.fix_on = 1;
- MSG(0, "Info: Force to fix corruption\n");
- break;
- case 't':
- c.dbg_lv = -1;
- break;
- case ':':
- if (optopt == 'p') {
- MSG(0, "Info: Use default preen mode\n");
- c.preen_mode = PREEN_MODE_0;
- c.auto_fix = 1;
- } else {
+ case ':':
+ if (optopt == 'p') {
+ MSG(0, "Info: Use default preen mode\n");
+ c.preen_mode = PREEN_MODE_0;
+ c.auto_fix = 1;
+ } else {
+ option = optopt;
+ err = ENEED_ARG;
+ break;
+ }
+ break;
+ case '?':
option = optopt;
- err = ENEED_ARG;
+ default:
+ err = EUNKNOWN_OPT;
break;
}
- break;
- case '?':
- option = optopt;
- default:
- err = EUNKNOWN_OPT;
- break;
+ if (err != NOERROR)
+ break;
}
- if (err != NOERROR)
- break;
}
- } else if (!strcmp("dump.f2fs", prog)) {
- const char *option_string = "d:i:n:s:a:b:";
- static struct dump_option dump_opt = {
- .nid = 0, /* default root ino */
- .start_nat = -1,
- .end_nat = -1,
- .start_sit = -1,
- .end_sit = -1,
- .start_ssa = -1,
- .end_ssa = -1,
- .blk_addr = -1,
- };
-
- c.func = DUMP;
- while ((option = getopt(argc, argv, option_string)) != EOF) {
- int ret = 0;
-
- switch (option) {
- case 'd':
- if (!is_digits(optarg)) {
- err = EWRONG_OPT;
+ break;
+ case DUMP:
+ {
+ const char *option_string = "d:i:n:s:a:b:";
+ static struct dump_option dump_opt = {
+ .nid = 0, /* default root ino */
+ .start_nat = -1,
+ .end_nat = -1,
+ .start_sit = -1,
+ .end_sit = -1,
+ .start_ssa = -1,
+ .end_ssa = -1,
+ .blk_addr = -1,
+ };
+
+ while ((option = getopt(argc, argv, option_string)) != EOF) {
+ int ret = 0;
+
+ switch (option) {
+ case 'd':
+ if (!is_digits(optarg)) {
+ err = EWRONG_OPT;
+ break;
+ }
+ c.dbg_lv = atoi(optarg);
+ MSG(0, "Info: Debug level = %d\n",
+ c.dbg_lv);
+ break;
+ case 'i':
+ if (strncmp(optarg, "0x", 2))
+ ret = sscanf(optarg, "%d",
+ &dump_opt.nid);
+ else
+ ret = sscanf(optarg, "%x",
+ &dump_opt.nid);
+ break;
+ case 'n':
+ ret = sscanf(optarg, "%d~%d",
+ &dump_opt.start_nat,
+ &dump_opt.end_nat);
+ break;
+ case 's':
+ ret = sscanf(optarg, "%d~%d",
+ &dump_opt.start_sit,
+ &dump_opt.end_sit);
+ break;
+ case 'a':
+ ret = sscanf(optarg, "%d~%d",
+ &dump_opt.start_ssa,
+ &dump_opt.end_ssa);
+ break;
+ case 'b':
+ if (strncmp(optarg, "0x", 2))
+ ret = sscanf(optarg, "%d",
+ &dump_opt.blk_addr);
+ else
+ ret = sscanf(optarg, "%x",
+ &dump_opt.blk_addr);
+ break;
+ default:
+ err = EUNKNOWN_OPT;
break;
}
- c.dbg_lv = atoi(optarg);
- MSG(0, "Info: Debug level = %d\n",
- c.dbg_lv);
- break;
- case 'i':
- if (strncmp(optarg, "0x", 2))
- ret = sscanf(optarg, "%d",
- &dump_opt.nid);
- else
- ret = sscanf(optarg, "%x",
- &dump_opt.nid);
- break;
- case 'n':
- ret = sscanf(optarg, "%d~%d",
- &dump_opt.start_nat,
- &dump_opt.end_nat);
- break;
- case 's':
- ret = sscanf(optarg, "%d~%d",
- &dump_opt.start_sit,
- &dump_opt.end_sit);
- break;
- case 'a':
- ret = sscanf(optarg, "%d~%d",
- &dump_opt.start_ssa,
- &dump_opt.end_ssa);
- break;
- case 'b':
- if (strncmp(optarg, "0x", 2))
- ret = sscanf(optarg, "%d",
- &dump_opt.blk_addr);
- else
- ret = sscanf(optarg, "%x",
- &dump_opt.blk_addr);
- break;
- default:
- err = EUNKNOWN_OPT;
- break;
+ ASSERT(ret >= 0);
+ if (err != NOERROR)
+ break;
}
- ASSERT(ret >= 0);
- if (err != NOERROR)
- break;
- }
-
- c.private = &dump_opt;
- } else if (!strcmp("defrag.f2fs", prog)) {
- const char *option_string = "d:s:l:t:i";
- c.func = DEFRAG;
- while ((option = getopt(argc, argv, option_string)) != EOF) {
- int ret = 0;
-
- switch (option) {
- case 'd':
- if (!is_digits(optarg)) {
- err = EWRONG_OPT;
+ c.private = &dump_opt;
+ }
+ break;
+ case DEFRAG:
+ {
+ const char *option_string = "d:s:l:t:i";
+
+ while ((option = getopt(argc, argv, option_string)) != EOF) {
+ int ret = 0;
+
+ switch (option) {
+ case 'd':
+ if (!is_digits(optarg)) {
+ err = EWRONG_OPT;
+ break;
+ }
+ c.dbg_lv = atoi(optarg);
+ MSG(0, "Info: Debug level = %d\n",
+ c.dbg_lv);
+ break;
+ case 's':
+ if (strncmp(optarg, "0x", 2))
+ ret = sscanf(optarg, "%"PRIu64"",
+ &c.defrag_start);
+ else
+ ret = sscanf(optarg, "%"PRIx64"",
+ &c.defrag_start);
+ break;
+ case 'l':
+ if (strncmp(optarg, "0x", 2))
+ ret = sscanf(optarg, "%"PRIu64"",
+ &c.defrag_len);
+ else
+ ret = sscanf(optarg, "%"PRIx64"",
+ &c.defrag_len);
+ break;
+ case 't':
+ if (strncmp(optarg, "0x", 2))
+ ret = sscanf(optarg, "%"PRIu64"",
+ &c.defrag_target);
+ else
+ ret = sscanf(optarg, "%"PRIx64"",
+ &c.defrag_target);
+ break;
+ case 'i':
+ c.defrag_shrink = 1;
+ break;
+ default:
+ err = EUNKNOWN_OPT;
break;
}
- c.dbg_lv = atoi(optarg);
- MSG(0, "Info: Debug level = %d\n",
- c.dbg_lv);
- break;
- case 's':
- if (strncmp(optarg, "0x", 2))
- ret = sscanf(optarg, "%"PRIu64"",
- &c.defrag_start);
- else
- ret = sscanf(optarg, "%"PRIx64"",
- &c.defrag_start);
- break;
- case 'l':
- if (strncmp(optarg, "0x", 2))
- ret = sscanf(optarg, "%"PRIu64"",
- &c.defrag_len);
- else
- ret = sscanf(optarg, "%"PRIx64"",
- &c.defrag_len);
- break;
- case 't':
- if (strncmp(optarg, "0x", 2))
- ret = sscanf(optarg, "%"PRIu64"",
- &c.defrag_target);
- else
- ret = sscanf(optarg, "%"PRIx64"",
- &c.defrag_target);
- break;
- case 'i':
- c.defrag_shrink = 1;
- break;
- default:
- err = EUNKNOWN_OPT;
- break;
+ ASSERT(ret >= 0);
+ if (err != NOERROR)
+ break;
}
- ASSERT(ret >= 0);
- if (err != NOERROR)
- break;
}
- } else if (!strcmp("resize.f2fs", prog)) {
- const char *option_string = "d:t:";
-
- c.func = RESIZE;
- while ((option = getopt(argc, argv, option_string)) != EOF) {
- int ret = 0;
-
- switch (option) {
- case 'd':
- if (!is_digits(optarg)) {
- err = EWRONG_OPT;
+ break;
+ case RESIZE:
+ {
+ const char *option_string = "d:t:";
+
+ while ((option = getopt(argc, argv, option_string)) != EOF) {
+ int ret = 0;
+
+ switch (option) {
+ case 'd':
+ if (!is_digits(optarg)) {
+ err = EWRONG_OPT;
+ break;
+ }
+ c.dbg_lv = atoi(optarg);
+ MSG(0, "Info: Debug level = %d\n",
+ c.dbg_lv);
+ break;
+ case 't':
+ if (strncmp(optarg, "0x", 2))
+ ret = sscanf(optarg, "%"PRIu64"",
+ &c.target_sectors);
+ else
+ ret = sscanf(optarg, "%"PRIx64"",
+ &c.target_sectors);
+ break;
+ default:
+ err = EUNKNOWN_OPT;
break;
}
- c.dbg_lv = atoi(optarg);
- MSG(0, "Info: Debug level = %d\n",
- c.dbg_lv);
- break;
- case 't':
- if (strncmp(optarg, "0x", 2))
- ret = sscanf(optarg, "%"PRIu64"",
- &c.target_sectors);
- else
- ret = sscanf(optarg, "%"PRIx64"",
- &c.target_sectors);
- break;
- default:
- err = EUNKNOWN_OPT;
- break;
+ ASSERT(ret >= 0);
+ if (err != NOERROR)
+ break;
}
- ASSERT(ret >= 0);
- if (err != NOERROR)
- break;
}
- } else if (!strcmp("sload.f2fs", prog)) {
- const char *option_string = "d:f:t:";
-
- c.func = SLOAD;
- while ((option = getopt(argc, argv, option_string)) != EOF) {
- switch (option) {
- case 'd':
- if (!is_digits(optarg)) {
- err = EWRONG_OPT;
+ break;
+ case SLOAD:
+ {
+ const char *option_string = "d:f:t:";
+
+ while ((option = getopt(argc, argv, option_string)) != EOF) {
+ switch (option) {
+ case 'd':
+ if (!is_digits(optarg)) {
+ err = EWRONG_OPT;
+ break;
+ }
+ c.dbg_lv = atoi(optarg);
+ MSG(0, "Info: Debug level = %d\n",
+ c.dbg_lv);
+ break;
+ case 'f':
+ c.from_dir = (char *)optarg;
+ break;
+ case 't':
+ c.mount_point = (char *)optarg;
+ break;
+ default:
+ err = EUNKNOWN_OPT;
break;
}
- c.dbg_lv = atoi(optarg);
- MSG(0, "Info: Debug level = %d\n",
- c.dbg_lv);
- break;
- case 'f':
- c.from_dir = (char *)optarg;
- break;
- case 't':
- c.mount_point = (char *)optarg;
- break;
- default:
- err = EUNKNOWN_OPT;
- break;
+ if (err != NOERROR)
+ break;
}
- if (err != NOERROR)
- break;
}
+ break;
}
+
if (argc > optind) {
c.dbg_lv = 0;
err = EUNKNOWN_ARG;
--
1.9.1
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] f2fs-tools: fix displaing usage information
2017-07-04 12:44 [PATCH v2] f2fs-tools: fix displaing usage information Piotr Sokołowski
@ 2017-07-05 3:43 ` Jaegeuk Kim
0 siblings, 0 replies; 2+ messages in thread
From: Jaegeuk Kim @ 2017-07-05 3:43 UTC (permalink / raw)
To: Piotr Sokołowski; +Cc: linux-f2fs-devel
Hi Priotr,
On 07/04, Piotr Sokołowski wrote:
> When commands that are symlinks to fsck.f2fs binary are invoked without
> any parameters, now they show their own usage communicate instead of
> fsck.f2fs help message in all cases.
This should be fixed by:
https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git/commit/?h=dev-test&id=f081d54ba8e0cbcfb0ab8e0dd90934b9113f2d7e
Let me know, if I'm missing something.
Thanks,
>
> ---
> fsck/main.c | 477 +++++++++++++++++++++++++++++++-----------------------------
> 1 file changed, 250 insertions(+), 227 deletions(-)
>
> diff --git a/fsck/main.c b/fsck/main.c
> index 6c94a70..adc8675 100644
> --- a/fsck/main.c
> +++ b/fsck/main.c
> @@ -108,6 +108,17 @@ void f2fs_parse_options(int argc, char *argv[])
> char *prog = basename(argv[0]);
> int err = NOERROR;
>
> + if (!strcmp("fsck.f2fs", prog))
> + c.func = FSCK;
> + else if (!strcmp("dump.f2fs", prog))
> + c.func = DUMP;
> + else if (!strcmp("defrag.f2fs", prog))
> + c.func = DEFRAG;
> + else if (!strcmp("resize.f2fs", prog))
> + c.func = RESIZE;
> + else if (!strcmp("sload.f2fs", prog))
> + c.func = SLOAD;
> +
> if (argc < 2) {
> MSG(0, "\tError: Device not specified\n");
> error_out();
> @@ -115,261 +126,273 @@ void f2fs_parse_options(int argc, char *argv[])
> c.devices[0].path = strdup(argv[argc - 1]);
> argv[argc-- - 1] = 0;
>
> - if (!strcmp("fsck.f2fs", prog)) {
> - const char *option_string = ":ad:fp:t";
> + switch (c.func) {
> + case FSCK:
> + {
> + const char *option_string = ":ad:fp:t";
>
> - c.func = FSCK;
> - while ((option = getopt(argc, argv, option_string)) != EOF) {
> - switch (option) {
> - case 'a':
> - c.auto_fix = 1;
> - MSG(0, "Info: Fix the reported corruption.\n");
> - break;
> - case 'p':
> - /* preen mode has different levels:
> - * 0: default level, the same as -a
> - * 1: check meta
> - */
> - if (optarg[0] == '-') {
> - c.preen_mode = PREEN_MODE_0;
> - optind--;
> - break;
> - } else if (!is_digits(optarg)) {
> - err = EWRONG_OPT;
> - break;
> - }
> - c.preen_mode = atoi(optarg);
> - if (c.preen_mode < 0)
> - c.preen_mode = PREEN_MODE_0;
> - else if (c.preen_mode >= PREEN_MODE_MAX)
> - c.preen_mode = PREEN_MODE_MAX - 1;
> - if (c.preen_mode == PREEN_MODE_0)
> + while ((option = getopt(argc, argv, option_string)) != EOF) {
> + switch (option) {
> + case 'a':
> c.auto_fix = 1;
> - MSG(0, "Info: Fix the reported corruption in "
> - "preen mode %d\n", c.preen_mode);
> - break;
> - case 'd':
> - if (optarg[0] == '-') {
> - err = ENEED_ARG;
> + MSG(0, "Info: Fix the reported corruption.\n");
> break;
> - } else if (!is_digits(optarg)) {
> - err = EWRONG_OPT;
> + case 'p':
> + /* preen mode has different levels:
> + * 0: default level, the same as -a
> + * 1: check meta
> + */
> + if (optarg[0] == '-') {
> + c.preen_mode = PREEN_MODE_0;
> + optind--;
> + break;
> + } else if (!is_digits(optarg)) {
> + err = EWRONG_OPT;
> + break;
> + }
> + c.preen_mode = atoi(optarg);
> + if (c.preen_mode < 0)
> + c.preen_mode = PREEN_MODE_0;
> + else if (c.preen_mode >= PREEN_MODE_MAX)
> + c.preen_mode = PREEN_MODE_MAX - 1;
> + if (c.preen_mode == PREEN_MODE_0)
> + c.auto_fix = 1;
> + MSG(0, "Info: Fix the reported corruption in "
> + "preen mode %d\n", c.preen_mode);
> + break;
> + case 'd':
> + if (optarg[0] == '-') {
> + err = ENEED_ARG;
> + break;
> + } else if (!is_digits(optarg)) {
> + err = EWRONG_OPT;
> + break;
> + }
> + c.dbg_lv = atoi(optarg);
> + MSG(0, "Info: Debug level = %d\n", c.dbg_lv);
> + break;
> + case 'f':
> + c.fix_on = 1;
> + MSG(0, "Info: Force to fix corruption\n");
> + break;
> + case 't':
> + c.dbg_lv = -1;
> break;
> - }
> - c.dbg_lv = atoi(optarg);
> - MSG(0, "Info: Debug level = %d\n", c.dbg_lv);
> - break;
> - case 'f':
> - c.fix_on = 1;
> - MSG(0, "Info: Force to fix corruption\n");
> - break;
> - case 't':
> - c.dbg_lv = -1;
> - break;
>
>
> - case ':':
> - if (optopt == 'p') {
> - MSG(0, "Info: Use default preen mode\n");
> - c.preen_mode = PREEN_MODE_0;
> - c.auto_fix = 1;
> - } else {
> + case ':':
> + if (optopt == 'p') {
> + MSG(0, "Info: Use default preen mode\n");
> + c.preen_mode = PREEN_MODE_0;
> + c.auto_fix = 1;
> + } else {
> + option = optopt;
> + err = ENEED_ARG;
> + break;
> + }
> + break;
> + case '?':
> option = optopt;
> - err = ENEED_ARG;
> + default:
> + err = EUNKNOWN_OPT;
> break;
> }
> - break;
> - case '?':
> - option = optopt;
> - default:
> - err = EUNKNOWN_OPT;
> - break;
> + if (err != NOERROR)
> + break;
> }
> - if (err != NOERROR)
> - break;
> }
> - } else if (!strcmp("dump.f2fs", prog)) {
> - const char *option_string = "d:i:n:s:a:b:";
> - static struct dump_option dump_opt = {
> - .nid = 0, /* default root ino */
> - .start_nat = -1,
> - .end_nat = -1,
> - .start_sit = -1,
> - .end_sit = -1,
> - .start_ssa = -1,
> - .end_ssa = -1,
> - .blk_addr = -1,
> - };
> -
> - c.func = DUMP;
> - while ((option = getopt(argc, argv, option_string)) != EOF) {
> - int ret = 0;
> -
> - switch (option) {
> - case 'd':
> - if (!is_digits(optarg)) {
> - err = EWRONG_OPT;
> + break;
> + case DUMP:
> + {
> + const char *option_string = "d:i:n:s:a:b:";
> + static struct dump_option dump_opt = {
> + .nid = 0, /* default root ino */
> + .start_nat = -1,
> + .end_nat = -1,
> + .start_sit = -1,
> + .end_sit = -1,
> + .start_ssa = -1,
> + .end_ssa = -1,
> + .blk_addr = -1,
> + };
> +
> + while ((option = getopt(argc, argv, option_string)) != EOF) {
> + int ret = 0;
> +
> + switch (option) {
> + case 'd':
> + if (!is_digits(optarg)) {
> + err = EWRONG_OPT;
> + break;
> + }
> + c.dbg_lv = atoi(optarg);
> + MSG(0, "Info: Debug level = %d\n",
> + c.dbg_lv);
> + break;
> + case 'i':
> + if (strncmp(optarg, "0x", 2))
> + ret = sscanf(optarg, "%d",
> + &dump_opt.nid);
> + else
> + ret = sscanf(optarg, "%x",
> + &dump_opt.nid);
> + break;
> + case 'n':
> + ret = sscanf(optarg, "%d~%d",
> + &dump_opt.start_nat,
> + &dump_opt.end_nat);
> + break;
> + case 's':
> + ret = sscanf(optarg, "%d~%d",
> + &dump_opt.start_sit,
> + &dump_opt.end_sit);
> + break;
> + case 'a':
> + ret = sscanf(optarg, "%d~%d",
> + &dump_opt.start_ssa,
> + &dump_opt.end_ssa);
> + break;
> + case 'b':
> + if (strncmp(optarg, "0x", 2))
> + ret = sscanf(optarg, "%d",
> + &dump_opt.blk_addr);
> + else
> + ret = sscanf(optarg, "%x",
> + &dump_opt.blk_addr);
> + break;
> + default:
> + err = EUNKNOWN_OPT;
> break;
> }
> - c.dbg_lv = atoi(optarg);
> - MSG(0, "Info: Debug level = %d\n",
> - c.dbg_lv);
> - break;
> - case 'i':
> - if (strncmp(optarg, "0x", 2))
> - ret = sscanf(optarg, "%d",
> - &dump_opt.nid);
> - else
> - ret = sscanf(optarg, "%x",
> - &dump_opt.nid);
> - break;
> - case 'n':
> - ret = sscanf(optarg, "%d~%d",
> - &dump_opt.start_nat,
> - &dump_opt.end_nat);
> - break;
> - case 's':
> - ret = sscanf(optarg, "%d~%d",
> - &dump_opt.start_sit,
> - &dump_opt.end_sit);
> - break;
> - case 'a':
> - ret = sscanf(optarg, "%d~%d",
> - &dump_opt.start_ssa,
> - &dump_opt.end_ssa);
> - break;
> - case 'b':
> - if (strncmp(optarg, "0x", 2))
> - ret = sscanf(optarg, "%d",
> - &dump_opt.blk_addr);
> - else
> - ret = sscanf(optarg, "%x",
> - &dump_opt.blk_addr);
> - break;
> - default:
> - err = EUNKNOWN_OPT;
> - break;
> + ASSERT(ret >= 0);
> + if (err != NOERROR)
> + break;
> }
> - ASSERT(ret >= 0);
> - if (err != NOERROR)
> - break;
> - }
> -
> - c.private = &dump_opt;
> - } else if (!strcmp("defrag.f2fs", prog)) {
> - const char *option_string = "d:s:l:t:i";
>
> - c.func = DEFRAG;
> - while ((option = getopt(argc, argv, option_string)) != EOF) {
> - int ret = 0;
> -
> - switch (option) {
> - case 'd':
> - if (!is_digits(optarg)) {
> - err = EWRONG_OPT;
> + c.private = &dump_opt;
> + }
> + break;
> + case DEFRAG:
> + {
> + const char *option_string = "d:s:l:t:i";
> +
> + while ((option = getopt(argc, argv, option_string)) != EOF) {
> + int ret = 0;
> +
> + switch (option) {
> + case 'd':
> + if (!is_digits(optarg)) {
> + err = EWRONG_OPT;
> + break;
> + }
> + c.dbg_lv = atoi(optarg);
> + MSG(0, "Info: Debug level = %d\n",
> + c.dbg_lv);
> + break;
> + case 's':
> + if (strncmp(optarg, "0x", 2))
> + ret = sscanf(optarg, "%"PRIu64"",
> + &c.defrag_start);
> + else
> + ret = sscanf(optarg, "%"PRIx64"",
> + &c.defrag_start);
> + break;
> + case 'l':
> + if (strncmp(optarg, "0x", 2))
> + ret = sscanf(optarg, "%"PRIu64"",
> + &c.defrag_len);
> + else
> + ret = sscanf(optarg, "%"PRIx64"",
> + &c.defrag_len);
> + break;
> + case 't':
> + if (strncmp(optarg, "0x", 2))
> + ret = sscanf(optarg, "%"PRIu64"",
> + &c.defrag_target);
> + else
> + ret = sscanf(optarg, "%"PRIx64"",
> + &c.defrag_target);
> + break;
> + case 'i':
> + c.defrag_shrink = 1;
> + break;
> + default:
> + err = EUNKNOWN_OPT;
> break;
> }
> - c.dbg_lv = atoi(optarg);
> - MSG(0, "Info: Debug level = %d\n",
> - c.dbg_lv);
> - break;
> - case 's':
> - if (strncmp(optarg, "0x", 2))
> - ret = sscanf(optarg, "%"PRIu64"",
> - &c.defrag_start);
> - else
> - ret = sscanf(optarg, "%"PRIx64"",
> - &c.defrag_start);
> - break;
> - case 'l':
> - if (strncmp(optarg, "0x", 2))
> - ret = sscanf(optarg, "%"PRIu64"",
> - &c.defrag_len);
> - else
> - ret = sscanf(optarg, "%"PRIx64"",
> - &c.defrag_len);
> - break;
> - case 't':
> - if (strncmp(optarg, "0x", 2))
> - ret = sscanf(optarg, "%"PRIu64"",
> - &c.defrag_target);
> - else
> - ret = sscanf(optarg, "%"PRIx64"",
> - &c.defrag_target);
> - break;
> - case 'i':
> - c.defrag_shrink = 1;
> - break;
> - default:
> - err = EUNKNOWN_OPT;
> - break;
> + ASSERT(ret >= 0);
> + if (err != NOERROR)
> + break;
> }
> - ASSERT(ret >= 0);
> - if (err != NOERROR)
> - break;
> }
> - } else if (!strcmp("resize.f2fs", prog)) {
> - const char *option_string = "d:t:";
> -
> - c.func = RESIZE;
> - while ((option = getopt(argc, argv, option_string)) != EOF) {
> - int ret = 0;
> -
> - switch (option) {
> - case 'd':
> - if (!is_digits(optarg)) {
> - err = EWRONG_OPT;
> + break;
> + case RESIZE:
> + {
> + const char *option_string = "d:t:";
> +
> + while ((option = getopt(argc, argv, option_string)) != EOF) {
> + int ret = 0;
> +
> + switch (option) {
> + case 'd':
> + if (!is_digits(optarg)) {
> + err = EWRONG_OPT;
> + break;
> + }
> + c.dbg_lv = atoi(optarg);
> + MSG(0, "Info: Debug level = %d\n",
> + c.dbg_lv);
> + break;
> + case 't':
> + if (strncmp(optarg, "0x", 2))
> + ret = sscanf(optarg, "%"PRIu64"",
> + &c.target_sectors);
> + else
> + ret = sscanf(optarg, "%"PRIx64"",
> + &c.target_sectors);
> + break;
> + default:
> + err = EUNKNOWN_OPT;
> break;
> }
> - c.dbg_lv = atoi(optarg);
> - MSG(0, "Info: Debug level = %d\n",
> - c.dbg_lv);
> - break;
> - case 't':
> - if (strncmp(optarg, "0x", 2))
> - ret = sscanf(optarg, "%"PRIu64"",
> - &c.target_sectors);
> - else
> - ret = sscanf(optarg, "%"PRIx64"",
> - &c.target_sectors);
> - break;
> - default:
> - err = EUNKNOWN_OPT;
> - break;
> + ASSERT(ret >= 0);
> + if (err != NOERROR)
> + break;
> }
> - ASSERT(ret >= 0);
> - if (err != NOERROR)
> - break;
> }
> - } else if (!strcmp("sload.f2fs", prog)) {
> - const char *option_string = "d:f:t:";
> -
> - c.func = SLOAD;
> - while ((option = getopt(argc, argv, option_string)) != EOF) {
> - switch (option) {
> - case 'd':
> - if (!is_digits(optarg)) {
> - err = EWRONG_OPT;
> + break;
> + case SLOAD:
> + {
> + const char *option_string = "d:f:t:";
> +
> + while ((option = getopt(argc, argv, option_string)) != EOF) {
> + switch (option) {
> + case 'd':
> + if (!is_digits(optarg)) {
> + err = EWRONG_OPT;
> + break;
> + }
> + c.dbg_lv = atoi(optarg);
> + MSG(0, "Info: Debug level = %d\n",
> + c.dbg_lv);
> + break;
> + case 'f':
> + c.from_dir = (char *)optarg;
> + break;
> + case 't':
> + c.mount_point = (char *)optarg;
> + break;
> + default:
> + err = EUNKNOWN_OPT;
> break;
> }
> - c.dbg_lv = atoi(optarg);
> - MSG(0, "Info: Debug level = %d\n",
> - c.dbg_lv);
> - break;
> - case 'f':
> - c.from_dir = (char *)optarg;
> - break;
> - case 't':
> - c.mount_point = (char *)optarg;
> - break;
> - default:
> - err = EUNKNOWN_OPT;
> - break;
> + if (err != NOERROR)
> + break;
> }
> - if (err != NOERROR)
> - break;
> }
> + break;
> }
> +
> if (argc > optind) {
> c.dbg_lv = 0;
> err = EUNKNOWN_ARG;
> --
> 1.9.1
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-07-05 3:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-04 12:44 [PATCH v2] f2fs-tools: fix displaing usage information Piotr Sokołowski
2017-07-05 3:43 ` Jaegeuk Kim
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).