1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
/*
* Copyright (C) 2016 FAUmachine Team <info@faumachine.org>.
* This program is free software. You can redistribute it and/or modify it
* under the terms of the GNU General Public License, either version 2 of
* the License, or (at your option) any later version. See COPYING.
*/
#include <assert.h>
#include <errno.h>
#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "xml-schem.h"
const char *progname;
const char *inname;
static void
do_work(void)
{
FILE *fp;
int ret;
struct xml_schem *schem;
struct xml_schem_signal *sig;
struct xml_schem_name *name;
/*
* Read schematic.
*/
fp = fopen(inname, "r");
if (! fp) {
fprintf(stderr, "%s: %s: %s.\n", progname, inname,
strerror(errno));
exit(1);
}
schem = xml_schem_read(fp);
ret = fclose(fp);
assert(0 <= ret);
/*
* Generate signal list.
*/
for (sig = schem->sig_first; sig; sig = sig->next) {
if (sig->name_first) {
printf("%s", sig->name_first->name);
for (name = sig->name_first->next; name; name = name->next) {
printf(" %s", name->name);
}
printf("\n");
}
}
/*
* Free schematic.
*/
#if 0
xml_schem_free(schem);
#endif
}
static void __attribute__((noreturn))
usage(int retval)
{
fprintf(stderr, "Usage: %s xml-file\n", progname);
exit(retval);
}
int
main(int argc, char **argv)
{
int c;
/*
* Get program name.
*/
progname = *argv;
/*
* Get options.
*/
while ((c = getopt(argc, argv, "")) != -1) {
switch (c) {
default:
usage(1);
/*NOTREACHED*/
}
}
argc -= optind;
argv += optind;
/*
* Get arguments.
*/
if (0 < argc) {
inname = *argv;
argc--;
argv++;
} else {
usage(1);
/*NOTREACHED*/
}
/*
* Do work.
*/
do_work();
return 0;
}
|