| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #include <stdlib.h>
- #include <string.h>
- #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;
- }
|