FreeCalypso > hg > ueda-linux
diff ueda/mclutils/csvattr.c @ 131:125fc4ef7eb0
ueda-csvattr program written, compiles
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 31 Aug 2020 00:01:59 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ueda/mclutils/csvattr.c Mon Aug 31 00:01:59 2020 +0000 @@ -0,0 +1,54 @@ +/* + * This program generates a CSV output listing all components in their + * MCL order and carrying a selected set of attributes as columns. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> +#include <unistd.h> +#include "../libueda/mcl.h" + +extern char *MCLfile; +extern struct component components[]; +extern int ncomponents; +extern char *get_comp_attr(); + +main(argc, argv) + char **argv; +{ + extern int optind; + register int c, ai; + register struct component *comp; + register char *attr; + + while ((c = getopt(argc, argv, "M:")) != EOF) + switch (c) { + case 'M': + MCLfile = optarg; + break; + default: + /* getopt prints the error message */ + exit(1); + } + + read_MCL(); + /* emit CSV header */ + fputs("Refdes", stdout); + for (ai = optind; ai < argc; ai++) + printf(",%s", argv[ai]); + putchar('\n'); + + for (comp = components, c = 0; c < ncomponents; comp++, c++) { + fputs(comp->name, stdout); + for (ai = optind; ai < argc; ai++) { + attr = get_comp_attr(comp, argv[ai]); + if (!attr) + attr = ""; + printf(",%s", attr); + } + putchar('\n'); + } + exit(0); +}