Browse Source

Cleanup opt/arg handling and error reporting

master
cancel 5 years ago
parent
commit
b23b4feac0
  1. 69
      tui_main.c

69
tui_main.c

@ -3331,60 +3331,40 @@ int main(int argc, char **argv) {
case '?': case '?':
usage(); usage();
exit(1); exit(1);
#define OPTFAIL(...) \
{ \
fprintf(stderr, "Bad %s argument: %s\n", tui_options[longindex].name, \
optarg); \
fprintf(stderr, __VA_ARGS__); \
fputc('\n', stderr); \
exit(1); \
}
case Argopt_hardmargins: case Argopt_hardmargins:
if (read_nxn_or_n(optarg, &t.hardmargin_x, &t.hardmargin_y) && if (read_nxn_or_n(optarg, &t.hardmargin_x, &t.hardmargin_y) &&
t.hardmargin_x >= 0 && t.hardmargin_y >= 0) t.hardmargin_x >= 0 && t.hardmargin_y >= 0)
break; break;
fprintf(stderr, OPTFAIL("Must be 0 or positive integer.");
"Bad hard-margins argument %s.\n"
"Must be 0 or positive integer.\n",
optarg);
exit(1);
case Argopt_undo_limit: case Argopt_undo_limit:
if (!read_int(optarg, &t.undo_history_limit) || if (read_int(optarg, &t.undo_history_limit) && t.undo_history_limit >= 0)
t.undo_history_limit < 0) { break;
fprintf(stderr, OPTFAIL("Must be 0 or positive integer.");
"Bad undo-limit argument %s.\n"
"Must be 0 or positive integer.\n",
optarg);
exit(1);
}
break;
case Argopt_bpm: case Argopt_bpm:
if (!read_int(optarg, &init_bpm) || init_bpm < 1) { if (read_int(optarg, &init_bpm) && init_bpm >= 1)
fprintf(stderr, break;
"Bad bpm argument %s.\n" OPTFAIL("Must be positive integer.");
"Must be positive integer.\n",
optarg);
exit(1);
}
break;
case Argopt_seed: case Argopt_seed:
if (!read_int(optarg, &init_seed) || init_seed < 0) { if (read_int(optarg, &init_seed) && init_seed >= 0)
fprintf(stderr, break;
"Bad seed argument %s.\n" OPTFAIL("Must be 0 or positive integer.");
"Must be 0 or positive integer.\n",
optarg);
exit(1);
}
break;
case Argopt_init_grid_size: case Argopt_init_grid_size:
if (sscanf(optarg, "%dx%d", &init_grid_dim_x, &init_grid_dim_y) != 2) { if (sscanf(optarg, "%dx%d", &init_grid_dim_x, &init_grid_dim_y) != 2)
fprintf(stderr, "Bad argument format or count for initial-size.\n"); OPTFAIL("Bad format or count. Expected something like: 40x30");
exit(1); if (init_grid_dim_x <= 0 || init_grid_dim_x > ORCA_X_MAX)
} OPTFAIL("X dimension for initial-size must be 1 <= n <= %d, was %d.",
if (init_grid_dim_x <= 0 || init_grid_dim_x > ORCA_X_MAX) {
fprintf(stderr,
"X dimension for initial-size must be 1 <= n <= %d, was %d.\n",
ORCA_X_MAX, init_grid_dim_x); ORCA_X_MAX, init_grid_dim_x);
exit(1); if (init_grid_dim_y <= 0 || init_grid_dim_y > ORCA_Y_MAX)
} OPTFAIL("Y dimension for initial-size must be 1 <= n <= %d, was %d.",
if (init_grid_dim_y <= 0 || init_grid_dim_y > ORCA_Y_MAX) {
fprintf(stderr,
"Y dimension for initial-size must be 1 <= n <= %d, was %d.\n",
ORCA_Y_MAX, init_grid_dim_y); ORCA_Y_MAX, init_grid_dim_y);
exit(1);
}
explicit_initial_grid_size = true; explicit_initial_grid_size = true;
break; break;
case Argopt_osc_midi_bidule: case Argopt_osc_midi_bidule:
@ -3409,6 +3389,7 @@ int main(int argc, char **argv) {
exit(1); exit(1);
} }
} }
#undef OPTFAIL
if (optind == argc - 1) { if (optind == argc - 1) {
osoput(&t.file_name, argv[optind]); osoput(&t.file_name, argv[optind]);
} else if (optind < argc - 1) { } else if (optind < argc - 1) {

Loading…
Cancel
Save