params.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include "rubiks.h"
  5. void usage(char *av0)
  6. {
  7. printf("Usage: %s action [-f filename] [-c count=20] [-move movment=20]\n", av0);
  8. printf("\taction: generate|gen create a new grid\n");
  9. }
  10. static int getInt(char *params, char *av0)
  11. {
  12. int varNum;
  13. if (!params)
  14. {
  15. fprintf(stderr, "Expected number\n");
  16. usage(av0);
  17. return -1;
  18. }
  19. if ((varNum = atoi(params)) <= 0)
  20. {
  21. fprintf(stderr, "Invalid number\n");
  22. usage(av0);
  23. return -1;
  24. }
  25. return varNum;
  26. }
  27. int parse_params(char **params, t_params *p, char *av0)
  28. {
  29. int varNum;
  30. p->count = 20;
  31. p->file = NULL;
  32. p->nbMovment = 20;
  33. for (int i=0; params[i]; ++i)
  34. {
  35. if (!strcmp(params[i], "-f"))
  36. {
  37. if (!params[i+1])
  38. {
  39. fprintf(stderr, "Error: expected filename\n");
  40. usage(av0);
  41. return 0;
  42. }
  43. p->file = strdup(params[i+1]);
  44. i++;
  45. }
  46. else if (!strcmp(params[i], "-c"))
  47. {
  48. if ((p->count = getInt(params[1+i], av0)) == -1)
  49. return -1;
  50. i++;
  51. }
  52. else if (!strcmp(params[i], "-move"))
  53. {
  54. if ((p->nbMovment = getInt(params[1+i], av0)) == -1)
  55. return -1;
  56. i++;
  57. }
  58. else
  59. {
  60. fprintf(stderr, "Invalid token: %s\n", params[i]);
  61. usage(av0);
  62. return -1;
  63. }
  64. }
  65. return 1;
  66. }