#include "./args.h" #include #include #include int args_handler(int argc, char **argv, struct args_options *options) { options->type = INPUT_UNDEFINED; options->input_source = NULL; options->pretty_print = false; options->verbose = false; for (int i = 1; i < argc; i++) { if (strcmp(argv[i], "--pretty-print") == 0) { options->pretty_print = true; } else if (strcmp(argv[i], "--verbose") == 0) { options->verbose = true; } else if (strcmp(argv[i], "-c") == 0 && i + 1 < argc) { if (options->type != INPUT_UNDEFINED) return 1; // Error: multiple input types specified options->type = INPUT_CMD; options->input_source = argv[i + 1]; i++; } else if (argv[i][0] == '-') { return 1; // Error: unknown option } else { if (options->type != INPUT_UNDEFINED) return 1; // Error: multiple input types specified options->type = INPUT_FILE; options->input_source = argv[i]; } } if (options->type == INPUT_UNDEFINED) options->type = INPUT_STDIN; return 0; } void args_print(struct args_options *options) { printf("Input type: %s\n", options->type == INPUT_CMD ? "COMMAND" : options->type == INPUT_FILE ? "FILE" : options->type == INPUT_STDIN ? "STDIN" : "UNDEFINED"); printf("Input source: %s\n", options->input_source ? options->input_source : "NULL"); printf("Pretty print: %s\n", options->pretty_print ? "true" : "false"); printf("Verbose: %s\n", options->verbose ? "true" : "false"); }