Пример #1
0
int
main(int argc, char **argv)
{
  dbc_t *dbc;
  char *const inFilename = (argc>1 ? argv[1] : NULL);
  char *const outFilename = (argc>2 ? argv[2] : NULL);
  int ret = 0;

  if(NULL != (dbc = dbc_read_file(inFilename))) {
    FILE *dbcout;

    /* open output file */
    if(outFilename != NULL) {
      if(NULL == (dbcout = fopen(outFilename,"w"))) {
        fprintf(stderr, "can't open output file '%s'\n", outFilename);
        ret = 1;
      }
    } else {
      dbcout = stdout;
    }

    /* perform copy */
    if(dbcout != NULL) {
      dbc_write(dbcout, dbc);
      
      /* close output file */
      if(outFilename != NULL) {
        fclose(dbcout);
      }
    }

    dbc_free(dbc);
  } else {
    fprintf(stderr, "can't open input file '%s'\n", inFilename);
    ret = 1;
  }

  return ret;
}
Пример #2
0
int
main(int argc, char **argv)
{
  dbc_t *dbc;
  char *filename = NULL; /* default: stdin */
  int c;

#if 0
  extern int yydebug;
  yydebug = 1;
#endif

  verbose_flag = 0;

  while (1) {
    static struct option long_options[] = {
      /* These options set a flag. */
      {"verbose", no_argument,       &verbose_flag, 1},
      {"brief",   no_argument,       &verbose_flag, 0},
      /* These options don't set a flag.
         We distinguish them by their indices. */
      {"dbc",     required_argument, 0, 'd'},
      {"networks",no_argument,       &networks_flag,  'N'},
      {"nodes"   ,no_argument,       &nodes_flag,     'n'},
      {"envvars" ,no_argument,       &envvars_flag,   'e'},
      {"messages",no_argument,       &messages_flag,  'm'},
      {"signals" ,no_argument,       &signals_flag,   's'},
      {"valtables" ,no_argument,     &valtables_flag, 't'},
      {"help",    no_argument,       NULL,            'h'},
      {0, 0, 0, 0}
    };

    /* getopt_long stores the option index here. */
    int option_index = 0;

    c = getopt_long (argc, argv, "d:Nnemst",
                     long_options, &option_index);

    /* Detect the end of the options. */
    if (c == -1)
      break;

    switch (c) {
    case 0:
      /* If this option set a flag, do nothing else now. */
      if (long_options[option_index].flag != 0)
        break;
      printf ("option %s", long_options[option_index].name);
      if (optarg)
        printf (" with arg %s", optarg);
      printf ("\n");
      break;
    case 'd': filename = optarg;  break;
    case 'N': networks_flag = 1;  break;
    case 'n': nodes_flag = 1;     break;
    case 'e': envvars_flag = 1;   break;
    case 'm': messages_flag = 1;  break;
    case 's': signals_flag = 1;   break;
    case 't': valtables_flag = 1; break;
    case 'h': help(); exit(0);    break;
    case '?':
      /* getopt_long already printed an error message. */
      fprintf(stderr, "Typ `dbcls --help' for more information\n");
      abort();
      break;
    default:
      abort();
      break;
    }
  }

  if(NULL != (dbc = dbc_read_file(filename))) {
    if(networks_flag)  show_network(dbc);
    if(messages_flag)  show_message_list(dbc->message_list);
    if(signals_flag)   show_signals(dbc);
    if(nodes_flag)     show_nodes(dbc);
    if(envvars_flag)   show_envvars(dbc->envvar_list);
    if(valtables_flag) show_valtable_list(dbc->valtable_list);
    dbc_free(dbc);
  }

  return 0;
}