Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. typedef enum {
  2. OP_APPEND,
  3. OP_READ,
  4. OP_DELETE,
  5. OP_LIST,
  6. OP_REFORMAT,
  7. OP_CREATE_FS
  8. } operation_t;
  9.  
  10. int main(int argc, char** argv) {
  11. char file[PATH_MAX];
  12. bool file_arg_set = false;
  13. operation_t operation = OP_LIST;
  14.  
  15. if (argc > 1) {
  16. int i = 1;
  17. // iterate over all args
  18. for (; i < argc; i++) {
  19. const size_t length = strlen(argv[i]);
  20. const char *arg = argv[i];
  21.  
  22. // it's a flag
  23. if (arg[0] == '-') {
  24. // long-name flag
  25. if (arg[1] == '-') {
  26. // we can't use switch-case for strings
  27. if (strcmp(arg, "--append") == 0) operation = OP_APPEND;
  28. if (strcmp(arg, "--read") == 0) operation = OP_READ;
  29. if (strcmp(arg, "--delete") == 0) operation = OP_DELETE;
  30. if (strcmp(arg, "--list") == 0) operation = OP_LIST;
  31. if (strcmp(arg, "--reformat") == 0) operation = OP_REFORMAT;
  32. if (strcmp(arg, "--create") == 0) operation = OP_CREATE_FS;
  33. }
  34. // short-name flag
  35. else {
  36. int k = 1;
  37. for (; k < length; k++) {
  38. switch (arg[k]) {
  39. case 'a':
  40. operation = OP_APPEND;
  41. break;
  42. case 'r':
  43. operation = OP_READ;
  44. break;
  45. case 'd':
  46. operation = OP_DELETE;
  47. break;
  48. case 'l':
  49. operation = OP_LIST;
  50. break;
  51. case 'R':
  52. operation = OP_REFORMAT;
  53. break;
  54. case 'C':
  55. operation = OP_CREATE_FS;
  56. break;
  57. }
  58. }
  59. }
  60. } else {
  61. memcpy(file, arg, length + 1);
  62. file_arg_set = true;
  63. }
  64. }
  65. }
  66.  
  67. switch (operation) {
  68. case OP_APPEND: {
  69. /* */
  70. break;
  71. }
  72. case OP_LIST: {
  73. /* */
  74. break;
  75. }
  76. case OP_READ: {
  77. /* */
  78. break;
  79. }
  80. case OP_DELETE: {
  81. /* */
  82. break;
  83. }
  84. case OP_REFORMAT: {
  85. /* */
  86. break;
  87. }
  88. default:
  89. break;
  90. }
  91.  
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement