comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:cd92449fdb51
1 /*
2 * Schematic read-in main routine
3 */
4
5 #include <sys/types.h>
6 #include <stdio.h>
7 #include "schemstruct.h"
8 #include "parserint.h"
9
10 extern char *malloc();
11
12 struct schem_parse_state schem_parse_state;
13
14 struct schem *
15 read_schem(filename)
16 char *filename;
17 {
18 FILE *f;
19 struct schem *schem;
20 register int i;
21
22 f = fopen(filename, "r");
23 if (!f) {
24 perror(filename);
25 exit(1);
26 }
27
28 schem = (struct schem *) malloc(sizeof(struct schem));
29 if (!schem) {
30 perror("malloc");
31 exit(1);
32 }
33 bzero(schem, sizeof(struct schem));
34 schem->obj_next = (struct schemobj *) schem;
35 schem->obj_prev = (struct schemobj *) schem;
36 schem->orig_filename = filename;
37
38 schem_parse_state.schem = schem;
39 schem_parse_state.file = f;
40 schem_parse_state.lineno = 1;
41 schem_parse_state.pushback_token = 0;
42
43 /* call the meat of the parser */
44 rdschem_parse_schemline();
45 do
46 i = rdschem_parse_object();
47 while (!i);
48
49 fclose(f);
50 return(schem);
51 }
52
53 rdschem_error(msg)
54 char *msg;
55 {
56 fprintf(stderr, "%s: line %d: %s\n",
57 schem_parse_state.schem->orig_filename,
58 schem_parse_state.lineno, msg);
59 exit(1);
60 }