/* * required_arg -- check for a required argument; issue message if not there * * return true if arg [something] exists; else return false */ static bool required_arg(char *arg, char *arg_name) { glctx_t *gcp = &glctx; if (*arg != '\0') return true; fprintf(stderr, "%s: command '%s' missing required argument: %s\n\n", gcp->program_name, gcp->cmd_name, arg_name); help_me(gcp->cmd_name); return false; }
int main (int argc, char *argv[]) { QCoreApplication app (argc, argv); bool generate_dot = false; bool generate_report = false; bool no_lines = false; bool debug_info = true; bool troll_copyright = false; QString file_name = 0; QStringList args = app.arguments (); args.removeFirst (); foreach (QString arg, args) { if (arg == QLatin1String ("-h") || arg == QLatin1String ("--help")) help_me (); else if (arg == QLatin1String ("-v") || arg == QLatin1String ("--verbose")) generate_report = true; else if (arg == QLatin1String ("--dot")) generate_dot = true; else if (arg == QLatin1String ("--no-lines")) no_lines = true; else if (arg == QLatin1String ("--no-debug")) debug_info = false; else if (arg == QLatin1String ("--troll")) troll_copyright = true; else if (file_name.isEmpty ()) file_name = arg; else qerr << "*** Warning. Ignore argument `" << arg << "'" << endl; } if (file_name.isEmpty ()) { help_me (); exit (EXIT_SUCCESS); } Grammar grammar; Recognizer p (&grammar, no_lines); if (! p.parse (file_name)) exit (EXIT_FAILURE); if (grammar.rules.isEmpty ()) { qerr << "*** Fatal. No rules!" << endl; exit (EXIT_FAILURE); } else if (grammar.start == grammar.names.end ()) { qerr << "*** Fatal. No start symbol!" << endl; exit (EXIT_FAILURE); } grammar.buildExtendedGrammar (); grammar.buildRuleMap (); Automaton aut (&grammar); aut.build (); CppGenerator gen (p, grammar, aut, generate_report); gen.setDebugInfo (debug_info); gen.setTrollCopyright (troll_copyright); gen (); if (generate_dot) { DotGraph genDotFile (qout); genDotFile (&aut); } else if (generate_report) { ParseTable genParseTable (qout); genParseTable(&aut); } return EXIT_SUCCESS; }
int main (int argc, char **argv) { program_name = argv[0]; /* Set locale according to user's wishes. */ setlocale (LC_ALL, ""); /* Tell program which translations to use and where to find. */ bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); for (;;) { int optc = getopt_long (argc, argv, "i:x:l:m:d:p:", long_options, (int *) 0); if (optc < 0) break; switch (optc) { case 0: break; case 'i': include_languages (optarg); break; case 'x': exclude_languages (optarg); break; case 'l': language_save_arg (optarg); break; case 'm': lang_map_file_name = optarg; break; case 'd': set_default_language (optarg); break; case 'p': if (cw_dlink == 0) cw_dlink = init_walker (&idh); prune_file_names (optarg, cw_dlink); break; default: usage (); } } if (show_version) { printf ("%s - %s\n", program_name, PACKAGE_VERSION); exit (0); } if (show_help) help_me (); argc -= optind; argv += optind; if (argc == 0) { static char dot[] = "."; static char *dotp = dot; argc = 1; argv = &dotp; } language_getopt (); if (cw_dlink == 0) cw_dlink = init_walker (&idh); parse_language_map (lang_map_file_name); while (argc--) { struct file_link *flink = parse_file_name (*argv++, cw_dlink); if (flink) walk_flink (flink, 0); } mark_member_file_links (&idh); obstack_init (&tokens_obstack); scan_files (&idh); return 0; }
int main (int argc, char **argv) { set_program_name (argv[0]); idh.idh_file_name = 0; #if ENABLE_NLS /* Set locale according to user's wishes. */ setlocale (LC_ALL, ""); /* Tell program which translations to use and where to find. */ bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); #endif atexit (close_stdout); for (;;) { int optc = getopt_long (argc, argv, "f:S:", long_options, (int *) 0); if (optc < 0) break; switch (optc) { case 0: break; case 'f': idh.idh_file_name = optarg; break; case 'S': separator_style = parse_separator_style (optarg); break; default: usage (); } } if (show_version) { printf ("%s - %s\n", program_name, PACKAGE_VERSION); exit (EXIT_SUCCESS); } if (show_help) help_me (); if (separator_style == ss_contextual) { if (isatty (STDOUT_FILENO)) separator_style = DEFAULT_SEPARATOR_STYLE; else separator_style = ss_newline; } argc -= optind; argv += optind; if (argc == 0) { static char star[] = "*"; static char *starp = star; argc = 1; argv = &starp; } /* Look for the ID database up the tree */ idh.idh_file_name = locate_id_file_name (idh.idh_file_name); if (idh.idh_file_name == 0) error (EXIT_FAILURE, errno, _("can't locate `ID'")); init_idh_obstacks (&idh); init_idh_tables (&idh); cw_dlink = get_current_dir_link (); { struct file_link **members = read_id_file (idh.idh_file_name, &idh); struct file_link **members_N = &members[idh.idh_files]; struct file_link **flinkv_0 = xmalloc (sizeof(struct file_link *) * (idh.idh_files + 1)); struct file_link **flinkv = flinkv_0; char **patv_0 = xmalloc (sizeof(char *) * (argc * 2)); char **patv_N; char **patv = patv_0; char *file_name = alloca (PATH_MAX); for ( ; argc; argc--, argv++) { char *arg = *argv; *patv++ = arg; if (*arg != '*' && *arg != '/') { char *pat = xmalloc (strlen (arg) + 2); sprintf (pat, "*/%s", arg); *patv++ = pat; } } patv_N = patv; for ( ; members < members_N; members++) { maybe_relative_file_name (file_name, *members, cw_dlink); for (patv = patv_0; patv < patv_N; patv++) { if (fnmatch (*patv, file_name, MAYBE_FNM_CASEFOLD) == 0) { *flinkv++ = *members; break; } } } *flinkv = 0; print_filenames (flinkv_0, separator_style); } return 0; }