* [PATCH] f2fs-tools: fix displaing usage information
@ 2017-06-12 21:12 Piotr Sokołowski
2017-06-14 14:34 ` Jaegeuk Kim
0 siblings, 1 reply; 2+ messages in thread
From: Piotr Sokołowski @ 2017-06-12 21:12 UTC (permalink / raw)
To: linux-f2fs-devel
Hi Jaegeuk,
Sorry for my mistakes and lack of information in previous mail.
This bug is quite simple. When dump.f2fs or similar command
is invoked without any parameters, it always shows fsck.f2fs usage information.
I also correct format errors, so it should be ok now.
Thanks
---
fsck/main.c | 479 +++++++++++++++++++++++++++++++-----------------------------
1 file changed, 251 insertions(+), 228 deletions(-)
diff --git a/fsck/main.c b/fsck/main.c
index 6c94a70..1f3953d 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] f2fs-tools: fix displaing usage information
2017-06-12 21:12 [PATCH] f2fs-tools: fix displaing usage information Piotr Sokołowski
@ 2017-06-14 14:34 ` Jaegeuk Kim
0 siblings, 0 replies; 2+ messages in thread
From: Jaegeuk Kim @ 2017-06-14 14:34 UTC (permalink / raw)
To: Piotr Sokołowski; +Cc: linux-f2fs-devel
Hi Piotr,
Still git blames some wrong patch format.
On 06/12, Piotr Sokołowski wrote:
> Hi Jaegeuk,
> Sorry for my mistakes and lack of information in previous mail.
> This bug is quite simple. When dump.f2fs or similar command
> is invoked without any parameters, it always shows fsck.f2fs usage information.
>
> I also correct format errors, so it should be ok now.
>
> Thanks
>
> ---
> fsck/main.c | 479 +++++++++++++++++++++++++++++++-----------------------------
> 1 file changed, 251 insertions(+), 228 deletions(-)
>
> diff --git a/fsck/main.c b/fsck/main.c
> index 6c94a70..1f3953d 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))
Tailing white space.
> + c.func = RESIZE;
> + else if (!strcmp("sload.f2fs", prog))
> + c.func = SLOAD;
Ditto.
> +
> 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)) {
What about using this in order to keep the below codes. Just moving the
existing function block is hard to keep track on any difference.
if (c.func == FSCK) {
Thanks,
> - 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-06-14 14:35 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-12 21:12 [PATCH] f2fs-tools: fix displaing usage information Piotr Sokołowski
2017-06-14 14:34 ` 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).