diff ueda/libuschem/rdschem.c @ 0:cd92449fdb51

initial import of ueda and ifctf-part-lib from ifctfvax CVS
author Space Falcon <falcon@ivan.Harhan.ORG>
date Mon, 20 Jul 2015 00:24:37 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ueda/libuschem/rdschem.c	Mon Jul 20 00:24:37 2015 +0000
@@ -0,0 +1,60 @@
+/*
+ * Schematic read-in main routine
+ */
+
+#include <sys/types.h>
+#include <stdio.h>
+#include "schemstruct.h"
+#include "parserint.h"
+
+extern char *malloc();
+
+struct schem_parse_state schem_parse_state;
+
+struct schem *
+read_schem(filename)
+	char *filename;
+{
+	FILE *f;
+	struct schem *schem;
+	register int i;
+
+	f = fopen(filename, "r");
+	if (!f) {
+		perror(filename);
+		exit(1);
+	}
+
+	schem = (struct schem *) malloc(sizeof(struct schem));
+	if (!schem) {
+		perror("malloc");
+		exit(1);
+	}
+	bzero(schem, sizeof(struct schem));
+	schem->obj_next = (struct schemobj *) schem;
+	schem->obj_prev = (struct schemobj *) schem;
+	schem->orig_filename = filename;
+
+	schem_parse_state.schem = schem;
+	schem_parse_state.file = f;
+	schem_parse_state.lineno = 1;
+	schem_parse_state.pushback_token = 0;
+
+	/* call the meat of the parser */
+	rdschem_parse_schemline();
+	do
+		i = rdschem_parse_object();
+	while (!i);
+
+	fclose(f);
+	return(schem);
+}
+
+rdschem_error(msg)
+	char *msg;
+{
+	fprintf(stderr, "%s: line %d: %s\n",
+		schem_parse_state.schem->orig_filename,
+		schem_parse_state.lineno, msg);
+	exit(1);
+}