argument.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. {NULL,0,NULL,0}
  13. };
  14. static const char *short_option = "o:e:";
  15. /**
  16. * 参数设置, args是全局结构体, 保存全局的参数设置
  17. * @param argc
  18. * @param argv
  19. * @return
  20. */
  21. int getArgs(const int argc, char **argv)
  22. {
  23. args.out_file = NULL;
  24. args.error_file = false;
  25. opterr = false;
  26. int opt;
  27. while((opt=getopt_long(argc, argv, short_option ,long_option,NULL))!=-1)
  28. {
  29. switch(opt)
  30. {
  31. case 0:
  32. break;
  33. case 'o':
  34. args.out_file = memStrcpy(optarg);
  35. break;
  36. case 'e':
  37. args.error_file = memStrcpy(optarg);
  38. break;
  39. case '?':
  40. fprintf(stderr, "[Error]: get not success args : -%c\n", (char)optopt);
  41. return -1;
  42. default:
  43. break;
  44. }
  45. }
  46. return 0;
  47. }
  48. /**
  49. * 释放args的成员而不包括其本身
  50. */
  51. void freeArgs(void){
  52. memFree(args.out_file);
  53. memFree(args.error_file);
  54. }