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; }
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; }