void getargs(int argc, char **argv) { register int i; register char *s; if (argc > 0) myname = argv[0]; for (i = 1; i < argc; ++i) { s = argv[i]; if (*s != '-') break; switch (*++s) { case '\0': read_from_file("-"); if (i + 1 < argc) usage(); return; case '-': ++i; goto no_more_options; case 'b': if (*++s) file_prefix = s; else if (++i < argc) file_prefix = argv[i]; else usage(); continue; case 'd': dflag = 1; break; case 'D': /* Find the preprocessor variable */ { char **ps; char *var_name = s + 1; extern char *defd_vars[]; for(ps=&defd_vars[0]; *ps; ps++) { if(strcmp(*ps,var_name)==0) { error(input_file->lineno, 0, 0, "Preprocessor variable %s already defined", var_name); } } *ps = MALLOC(strlen(var_name)+1); strcpy(*ps, var_name); *++ps = NULL; } continue; case 'E': Eflag = 1; break; case 'l': lflag = 1; break; case 'r': rflag = 1; break; case 't': tflag = 1; break; case 'v': vflag = 1; break; case 'y': file_prefix = "y"; break; case 'S': if (*++s) read_skel(s); else if (++i < argc) read_skel(argv[i]); else usage(); continue; default: usage(); } for (;;) { switch (*++s) { case '\0': goto end_of_option; case 'd': dflag = 1; break; case 'l': lflag = 1; break; case 'r': rflag = 1; break; case 't': tflag = 1; break; case 'v': vflag = 1; break; case 'y': file_prefix = "y"; break; default: usage(); } } end_of_option:; } no_more_options:; if (i + 1 != argc) usage(); read_from_file(argv[i]); if (!file_prefix) { if (input_file && input_file->name) { file_prefix = strdup(input_file->name); if ((s = strrchr(file_prefix, '.'))) *s = 0; } else { file_prefix = "y"; } } }
void getargs(int argc, char **argv) { register int i; register char *s; if (argc > 0) myname = argv[0]; for (i = 1; i < argc; ++i) { s = argv[i]; if (*s != '-') break; switch (*++s) { case '\0': input_file = stdin; if (i + 1 < argc) usage(); return; case '-': ++i; no_more_options(i, argc, argv); return; case 'b': if (*++s) file_prefix = s; else if (++i < argc) file_prefix = argv[i]; else usage(); continue; case 'd': dflag = 1; break; case 'D': /* Find the preprocessor variable */ { char **ps; char *var_name = s + 1; extern char *defd_vars[]; for (ps = &defd_vars[0]; *ps; ps++) { if (strcmp(*ps, var_name) == 0) { error(lineno, 0, 0, "Preprocessor variable %s already defined", var_name); } } *ps = MALLOC(strlen(var_name)+1); strcpy(*ps, var_name); *++ps = NULL; } continue; case 'E': Eflag = 1; break; case 'l': lflag = 1; break; case 'r': rflag = 1; break; case 't': tflag = 1; break; case 'v': vflag = 1; break; case 'S': if (*++s) read_skel(s); else if (++i < argc) read_skel(argv[i]); else usage(); continue; default: usage(); } for (;*++s;) { switch (*s) { //case '\0': //goto end_of_option; case 'd': dflag = 1; break; case 'l': lflag = 1; break; case 'r': rflag = 1; break; case 't': tflag = 1; break; case 'v': vflag = 1; break; default: usage(); } } //end_of_option: } no_more_options(i, argc, argv); }