param.c 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include "sandbox.h"
  4. void print_help(const char *progname, int exit_status)
  5. {
  6. fprintf(stderr, "Usage: %s [options] [--] command\n", progname);
  7. fprintf(stderr, "Options:\t--tmp-dir directory - path to temporary dir (default: /tmp)\n");
  8. exit(exit_status);
  9. }
  10. static int parse_param(t_param *result, const char **av)
  11. {
  12. if (!strcmp(*av, "--"))
  13. result->cmd = ++av;
  14. else if (!strcmp(*av, "--tmp-dir"))
  15. result->tmpdir = *(++av);
  16. else if (!strcmp(*av, "-v") || !(strcmp(*av, "--verbose")))
  17. result->verbose = stderr;
  18. return 1;
  19. }
  20. t_param *parse_argv(const char **av)
  21. {
  22. t_param *result;
  23. const char *progname;
  24. result = (t_param *) malloc(sizeof(*result));
  25. if (result == NULL)
  26. return NULL;
  27. bzero(result, sizeof(*result));
  28. result->tmpdir = "/tmp";
  29. for (progname = *(av++); *av && !result->cmd; ++av)
  30. {
  31. if (**av == '-')
  32. {
  33. if (!parse_param(result, av))
  34. {
  35. free(result);
  36. print_help(progname, EXIT_FAILURE);
  37. }
  38. }
  39. else
  40. result->cmd = av;
  41. }
  42. return result;
  43. }