annotate pads2gpcb/main.c @ 64:6a1197106b6f

pads2gpcb: PARTTYPE section processing enabled
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Sun, 31 Jan 2016 07:37:09 +0000
parents 9d7e2937883d
children 2b71943a311b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
1 #include <stdio.h>
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
2 #include <stdlib.h>
47
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
3 #include <unistd.h>
38
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
4 #include <ctype.h>
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
5 #include <string.h>
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
6 #include <strings.h>
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
7 #include "globals.h"
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
8
39
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
9 static
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
10 parse_header_line()
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
11 {
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
12 char *cp;
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
13
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
14 if (strncmp(input_line_buf, "!PADS-POWERPCB-", 15))
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
15 return(-1);
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
16 cp = input_line_buf + 15;
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
17 while (isalnum(*cp) || *cp == '.')
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
18 cp++;
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
19 if (*cp++ != '-')
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
20 return(-1);
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
21 if (!strncmp(cp, "BASIC", 5))
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
22 input_units_global = 'B';
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
23 else if (!strncmp(cp, "MILS", 4))
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
24 input_units_global = 'I';
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
25 else if (!strncmp(cp, "METRIC", 6))
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
26 input_units_global = 'M';
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
27 else
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
28 return(-1);
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
29 return(0);
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
30 }
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
31
47
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
32 static void
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
33 process_write_option()
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
34 {
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
35 extern char *optarg;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
36
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
37 if (strlen(optarg) != 1) {
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
38 inv: fprintf(stderr, "usage error: invalid -w option\n");
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
39 exit(1);
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
40 }
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
41 switch (optarg[0]) {
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
42 case 'd':
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
43 write_decal_files = 1;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
44 return;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
45 case 'p':
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
46 write_parttype_files = 1;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
47 return;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
48 case 'e':
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
49 write_final_elements = 1;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
50 return;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
51 default:
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
52 goto inv;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
53 }
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
54 }
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
55
38
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
56 main(argc, argv)
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
57 char **argv;
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
58 {
47
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
59 int c;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
60 extern int optind;
62
9d7e2937883d pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 51
diff changeset
61 extern char *optarg;
47
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
62
62
9d7e2937883d pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 51
diff changeset
63 while ((c = getopt(argc, argv, "s:w:")) != EOF)
47
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
64 switch (c) {
51
f2bcf69fce63 pads2gpcb: -s option to enable footprint silk processing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 47
diff changeset
65 case 's':
f2bcf69fce63 pads2gpcb: -s option to enable footprint silk processing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 47
diff changeset
66 do_footprint_silk = 1;
62
9d7e2937883d pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 51
diff changeset
67 select_drawlevel_for_silk(atoi(optarg));
51
f2bcf69fce63 pads2gpcb: -s option to enable footprint silk processing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 47
diff changeset
68 continue;
47
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
69 case 'w':
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
70 process_write_option();
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
71 continue;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
72 default:
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
73 usage:
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
74 fprintf(stderr, "usage: %s [options] pads-file.asc\n",
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
75 argv[0]);
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
76 exit(1);
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
77 }
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
78 if (argc != optind + 1)
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
79 goto usage;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
80 input_filename = argv[optind];
38
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
81 open_input_file();
39
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
82
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
83 /* parse the header line with the units specification */
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
84 if (!get_input_line()) {
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
85 invheader: fprintf(stderr,
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
86 "error: %s does not begin with a recognized header line\n",
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
87 input_filename);
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
88 exit(1);
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
89 }
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
90 if (parse_header_line() < 0)
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
91 goto invheader;
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
92
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
93 /* process the body of the monster! */
38
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
94 while (get_input_line()) {
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
95 if (input_line_buf[0] != '*')
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
96 continue;
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
97 parse_starline();
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
98 loop: if (!strcmp(input_line_starkw, "PARTDECAL")) {
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
99 process_partdecal_section();
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
100 goto loop;
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
101 }
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
102 if (!strcmp(input_line_starkw, "PARTTYPE")) {
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
103 process_parttype_section();
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
104 goto loop;
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
105 }
64
6a1197106b6f pads2gpcb: PARTTYPE section processing enabled
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 62
diff changeset
106 #if 0
38
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
107 if (!strcmp(input_line_starkw, "PART")) {
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
108 process_part_section();
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
109 goto loop;
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
110 }
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
111 #endif
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
112 }
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
113 exit(0);
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
114 }