view 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 source

/*
 * 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);
}