argument.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "__virtualmath.h"
  2. static const struct option long_option[]={
  3. {"stdout",no_argument,NULL,'s'},
  4. {"log",required_argument,NULL,'l'},
  5. {NULL,0,NULL,0}
  6. };
  7. static const char *short_option = "sl:";
  8. /**
  9. * 参数设置, args是全局结构体, 保存全局的参数设置
  10. * @param argc
  11. * @param argv
  12. * @return
  13. */
  14. int getArgs(const int argc, char **argv)
  15. {
  16. args.log_file = NULL;
  17. args.stdout_inter = false;
  18. opterr = false;
  19. int opt;
  20. while((opt=getopt_long(argc, argv, short_option ,long_option,NULL))!=-1)
  21. {
  22. switch(opt)
  23. {
  24. case 0:
  25. break;
  26. case 'l':
  27. args.log_file = memStrcpy(optarg);
  28. break;
  29. case 's':
  30. args.stdout_inter = true;
  31. break;
  32. case '?':
  33. fprintf(stderr, "[Error]: get not success args : -%c\n", (char)optopt);
  34. return -1;
  35. default:
  36. break;
  37. }
  38. }
  39. return 0;
  40. }
  41. /**
  42. * 释放args的成员而不包括其本身
  43. */
  44. void freeArgs(void){
  45. memFree(args.log_file);
  46. }