123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #include "hellovm.h"
- char *HelloString = "Welcome To VirtualMath ("__TIME__", "__DATE__") \n"
- "On "SYS" ("CC")\n"
- "VirtualMath Command Line Mode (CLI: hellovm)\n";
- static const struct option long_option[]={
- {"stderr",required_argument,NULL,'o'},
- {"stdout",required_argument,NULL,'e'},
- {"stdin",required_argument,NULL,'i'},
- {"not-run-cl",no_argument,NULL,'n'},
- {"print-clock",no_argument,NULL,'p'},
- {"locale",optional_argument,NULL,'l'}, // 可选参数
- {NULL,0,NULL,0}
- };
- static const char *short_option = "o:e:i:npl::"; // l::可选参数
- Args args = {.out_file=NULL, .error_file=NULL, .in_file=NULL, .run_commandLine=true, .p_clock=false, .locale=""};
- /**
- * 参数设置, args是全局结构体, 保存全局的参数设置
- * @param argc
- * @param argv
- * @return
- */
- int getArgs(const int argc, char **argv)
- {
- int opt;
- opterr = true;
- while((opt=getopt_long(argc, argv, short_option ,long_option,NULL))!=-1)
- {
- switch(opt)
- {
- case 0:
- break;
- case 'o':
- args.out_file = memStrcpy(optarg);
- break;
- case 'e':
- args.error_file = memStrcpy(optarg);
- break;
- case 'i':
- args.in_file = memStrcpy(optarg);
- break;
- case 'n':
- args.run_commandLine = false;
- break;
- case 'l':
- if (optarg != NULL)
- args.locale = optarg; // 不需要复制
- else
- args.locale = "";
- break;
- case 'p':
- args.p_clock = true;
- break;
- case '?':
- fprintf(stderr, "[Error]: get not success args : -%c\n", (char)optopt);
- return -1;
- default:
- break;
- }
- }
- return 0;
- }
- /**
- * 释放args的成员而不包括其本身
- */
- void freeArgs(void){
- memFree(args.out_file);
- memFree(args.error_file);
- memFree(args.in_file);
- }
|