argument.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "__virtualmath.h"
  2. char *HelloString = "Welcome To VirtualMath ("__TIME__", "__DATE__") \n"
  3. #ifdef __linux__
  4. "On Linux\n"
  5. #else
  6. "On windows"
  7. #endif
  8. "VirtualMath Command Line Mode\n";
  9. static const struct option long_option[]={
  10. {"log-err",required_argument,NULL,'o'},
  11. {"log-out",required_argument,NULL,'e'},
  12. {"not-run-cl",required_argument,NULL,'n'},
  13. {NULL,0,NULL,0}
  14. };
  15. static const char *short_option = "o:e:n";
  16. /**
  17. * 参数设置, args是全局结构体, 保存全局的参数设置
  18. * @param argc
  19. * @param argv
  20. * @return
  21. */
  22. int getArgs(const int argc, char **argv)
  23. {
  24. args.out_file = NULL;
  25. args.error_file = NULL;
  26. args.run_commandLine = true;
  27. opterr = true;
  28. int opt;
  29. while((opt=getopt_long(argc, argv, short_option ,long_option,NULL))!=-1)
  30. {
  31. switch(opt)
  32. {
  33. case 0:
  34. break;
  35. case 'o':
  36. args.out_file = memStrcpy(optarg);
  37. break;
  38. case 'e':
  39. args.error_file = memStrcpy(optarg);
  40. break;
  41. case 'n':
  42. args.run_commandLine = false;
  43. break;
  44. case '?':
  45. fprintf(stderr, "[Error]: get not success args : -%c\n", (char)optopt);
  46. return -1;
  47. default:
  48. break;
  49. }
  50. }
  51. return 0;
  52. }
  53. /**
  54. * 释放args的成员而不包括其本身
  55. */
  56. void freeArgs(void){
  57. memFree(args.out_file);
  58. memFree(args.error_file);
  59. }