Example #1
0
void parse_args(int argc, char *argv[], cmd_data_t *cmd_data)
{
    int a;
    char *arg;
    bool argused;

    for (a=1; a < argc; a++) {
        arg = argv[a];
        argused = false;

        if (arg[0] == '-') {
            if (arg[1] == '-') {
                argused = parse_long_opt(arg + 2, cmd_data);
            } else if (arg[1] == 'o' && a+1 < argc) {
                cmd_data->arglist[cmd_data->num_args++] = arg;
                arg = argv[++a];
                argused = parse_output_file_name(arg, cmd_data);
            } else {
                int num_used = parse_short_opt(arg + 1, cmd_data);
                argused = num_used > 0;

                if (num_used > 1) {
                    a += num_used - 1;
                }
            }
        } else {
            argused = parse_input_file_name(arg, cmd_data);
        }

        if (!argused) {
            cmd_data->arglist[cmd_data->num_args++] = arg;
        }
    }

    post_parse_fixup(cmd_data);
}
Example #2
0
File: ddl-main.c Project: mpw/p2
void
main (int argc, char *argv[])
{
  int command_line_arg;
  int unused;

  /* Machine specific initialization. (JAT) */

  machine_setup();

  /* Error initialization. */

  program_name = "ddl";

  /* Set defaults */

  yydebug = 0;
  min_warning_priority = DRC_MIN_WARNING_PRIORITY + 2;

  /* Parse command line arguments. */

  while ((command_line_arg
          = getopt_long(argc, argv, "dhvw", long_options, &unused)) != -1) {
    switch (command_line_arg) {
    case 'd':
      yydebug = 1;
      break;
    case 'h':
      print_help_information(long_options, options_help);
      exit(EXIT_SUCCESS);
      break;
    case 'v':
      printf("p2 version %s\n", version_string);
      exit(EXIT_SUCCESS);
      break;
    case 'w':
      min_warning_priority = 1; /* Enable all warnings. */
      break;
    case '?':
      calling_error("illegal or unrecognized option");
      break;
    }
  }

  if (optind == argc) 
    calling_error("ddl takes exactly one argument");
  
  /* Parse input file name and open input file. */

  parse_input_file_name(argv[optind], file_name);

  yyin = fopen(file_name, "r");
  if (yyin == NULL)
    error("Can't open file %s\n", file_name);

  /* Parse. */

  if (yyparse() != 0)
    error("parsing failed");

  /* Exit. */

  exit(EXIT_SUCCESS);
}