#include #include #include "sandbox.h" void print_help(const char *progname, int exit_status) { fprintf(stderr, "Usage: %s [options] [--] command\n", progname); fprintf(stderr, "Options:\t--tmp-dir directory - path to temporary dir (default: /tmp)\n"); exit(exit_status); } static int parse_param(t_param *result, const char **av) { if (!strcmp(*av, "--")) result->cmd = ++av; else if (!strcmp(*av, "--tmp-dir")) result->tmpdir = *(++av); else if (!strcmp(*av, "-v") || !(strcmp(*av, "--verbose"))) result->verbose = stderr; return 1; } t_param *parse_argv(const char **av) { t_param *result; const char *progname; result = (t_param *) malloc(sizeof(*result)); if (result == NULL) return NULL; bzero(result, sizeof(*result)); result->tmpdir = "/tmp"; for (progname = *(av++); *av && !result->cmd; ++av) { if (**av == '-') { if (!parse_param(result, av)) { free(result); print_help(progname, EXIT_FAILURE); } } else result->cmd = av; } return result; }