int btrfs_main(int argc, char **argv) { const struct cmd_struct *cmd; const char *bname; if ((bname = strrchr(argv[0], '/')) != NULL) bname++; else bname = argv[0]; if (!strcmp(bname, "btrfsck")) { argv[0] = "check"; } else { argc--; argv++; handle_options(&argc, &argv); if (argc > 0) { if (!prefixcmp(argv[0], "--")) argv[0] += 2; } else { usage_command_group(&btrfs_cmd_group, 0, 0); exit(1); } } cmd = parse_command_token(argv[0], &btrfs_cmd_group); handle_help_options_next_level(cmd, argc, argv); crc32c_optimization_init(); fixup_argv0(argv, cmd->token); exit(cmd->fn(argc, argv)); }
void help_command_group(const struct cmd_group *grp, int argc, char **argv) { int full = 0; if (argc > 1) { if (!strcmp(argv[1], "--full")) full = 1; } usage_command_group(grp, full, 0); }
int handle_command_group(const struct cmd_group *grp, int argc, char **argv) { const struct cmd_struct *cmd; argc--; argv++; if (argc < 1) { usage_command_group(grp, 0, 0); exit(1); } cmd = parse_command_token(argv[0], grp); handle_help_options_next_level(cmd, argc, argv); fixup_argv0(argv, cmd->token); return cmd->fn(argc, argv); }
void help_unknown_token(const char *arg, const struct cmd_group *grp) { fprintf(stderr, "%s: unknown token '%s'\n", argv0_buf, arg); usage_command_group(grp, 0, 1); exit(1); }