/* Check the options: "multi" should be zero for wrapper tools that * only take one input file, or one for wrapper tools that take multiple * input files. Returns zero for "--version" or "--help", or returns -1 * if an error occurred. Otherwise, it returns the number of args * that were successfully parsed. */ static int parse_check_options(int argc, char *argv[], int multi) { int i; size_t j; char *cp; char c; options.NumberOfFiles = 0; options.Files = NULL; options.InputFileName = NULL; options.OutputFileName = NULL; options.IsAbstract = 0; options.IsConcrete = 0; options.IsVTKObject = 0; options.IsSpecialObject = 0; options.HierarchyFileName = 0; options.HintFileName = 0; for (i = 1; i < argc; i++) { if (strcmp(argv[i], "--help") == 0) { parse_print_help(stdout, argv[0], multi); return 0; } else if (strcmp(argv[i], "--version") == 0) { const char *ver = VTK_PARSE_VERSION; fprintf(stdout, "%s %s\n", parse_exename(argv[0]), ver); return 0; } else if (argv[i][0] != '-') { if (options.NumberOfFiles == 0) { options.Files = (char **)malloc(sizeof(char *)); } else if ((options.NumberOfFiles & (options.NumberOfFiles - 1)) == 0) { options.Files = (char **)realloc( options.Files, 2*options.NumberOfFiles*sizeof(char *)); } options.Files[options.NumberOfFiles++] = argv[i]; } else if (argv[i][0] == '-' && isalpha(argv[i][1])) { c = argv[i][1]; cp = &argv[i][2]; if (*cp == '\0') { i++; if (i >= argc || argv[i][0] == '-') { return -1; } cp = argv[i]; } if (c == 'o') { options.OutputFileName = cp; } else if (c == 'I') { vtkParse_IncludeDirectory(cp); } else if (c == 'D') { j = 0; while (cp[j] != '\0' && cp[j] != '=') { j++; } if (cp[j] == '=') { j++; } vtkParse_DefineMacro(cp, &cp[j]); } else if (c == 'U') { vtkParse_UndefineMacro(cp); } } else if (!multi && strcmp(argv[i], "--hints") == 0) { i++; if (i >= argc || argv[i][0] == '-') { return -1; } options.HintFileName = argv[i]; } else if (!multi && strcmp(argv[i], "--types") == 0) { i++; if (i >= argc || argv[i][0] == '-') { return -1; } options.HierarchyFileName = argv[i]; } else if (!multi && strcmp(argv[i], "--vtkobject") == 0) { options.IsVTKObject = 1; } else if (!multi && strcmp(argv[i], "--special") == 0) { options.IsSpecialObject = 1; } } return i; }
/* Check the options */ static int check_options(int argc, char *argv[]) { int i; size_t j; options.InputFileName = NULL; options.OutputFileName = NULL; options.IsAbstract = 0; options.IsConcrete = 0; options.IsVTKObject = 0; options.IsSpecialObject = 0; options.HierarchyFileName = 0; options.HintFileName = 0; for (i = 1; i < argc && argv[i][0] == '-'; i++) { if (strcmp(argv[i], "--concrete") == 0) { options.IsConcrete = 1; } else if (strcmp(argv[i], "--abstract") == 0) { options.IsAbstract = 1; } else if (strcmp(argv[i], "--vtkobject") == 0) { options.IsVTKObject = 1; } else if (strcmp(argv[i], "--special") == 0) { options.IsSpecialObject = 1; } else if (strcmp(argv[i], "--hints") == 0) { i++; if (i >= argc || argv[i][0] == '-') { return -1; } options.HintFileName = argv[i]; } else if (strcmp(argv[i], "--types") == 0) { i++; if (i >= argc || argv[i][0] == '-') { return -1; } options.HierarchyFileName = argv[i]; } else if (strcmp(argv[i], "-I") == 0) { i++; if (i >= argc || argv[i][0] == '-') { return -1; } vtkParse_IncludeDirectory(argv[i]); } else if (strcmp(argv[i], "-D") == 0) { i++; j = 0; if (i >= argc || argv[i][0] == '-') { return -1; } while (argv[i][j] != '\0' && argv[i][j] != '=') { j++; } if (argv[i][j] == '=') { j++; } vtkParse_DefineMacro(argv[i], &argv[i][j]); } else if (strcmp(argv[i], "-U") == 0) { i++; if (i >= argc || argv[i][0] == '-') { return -1; } vtkParse_UndefineMacro(argv[i]); } } return i; }