annotate pads2gpcb/main.c @ 72:fab9fc646044

pads2gpcb: single -f option to write loose footprint files
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Mon, 01 Feb 2016 00:26:04 +0000
parents 2b71943a311b
children bdfd0b802bb0
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
38
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
32 main(argc, argv)
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
33 char **argv;
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
34 {
47
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
35 int c;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
36 extern int optind;
62
9d7e2937883d pads2gpcb: select specific drawing levels for silk with -s
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 51
diff changeset
37 extern char *optarg;
47
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
38
72
fab9fc646044 pads2gpcb: single -f option to write loose footprint files
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 65
diff changeset
39 while ((c = getopt(argc, argv, "fs:")) != EOF)
47
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
40 switch (c) {
72
fab9fc646044 pads2gpcb: single -f option to write loose footprint files
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 65
diff changeset
41 case 'f':
fab9fc646044 pads2gpcb: single -f option to write loose footprint files
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 65
diff changeset
42 write_footprint_files = 1;
fab9fc646044 pads2gpcb: single -f option to write loose footprint files
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 65
diff changeset
43 continue;
51
f2bcf69fce63 pads2gpcb: -s option to enable footprint silk processing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 47
diff changeset
44 case 's':
f2bcf69fce63 pads2gpcb: -s option to enable footprint silk processing
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 47
diff changeset
45 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
46 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
47 continue;
47
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
48 default:
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
49 usage:
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
50 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
51 argv[0]);
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
52 exit(1);
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 if (argc != optind + 1)
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
55 goto usage;
8fa304e2b7e1 pads2gpcb: parsing of -w options implemented
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 42
diff changeset
56 input_filename = argv[optind];
38
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
57 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
58
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
59 /* 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
60 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
61 invheader: fprintf(stderr,
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
62 "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
63 input_filename);
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
64 exit(1);
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
65 }
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
66 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
67 goto invheader;
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
68
242f73e61ef0 pads2gpcb: implemented parsing of the header line with units spec
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 38
diff changeset
69 /* process the body of the monster! */
38
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
70 while (get_input_line()) {
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
71 if (input_line_buf[0] != '*')
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
72 continue;
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
73 parse_starline();
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
74 loop: if (!strcmp(input_line_starkw, "PARTDECAL")) {
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
75 process_partdecal_section();
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
76 goto loop;
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
77 }
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
78 if (!strcmp(input_line_starkw, "PARTTYPE")) {
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
79 process_parttype_section();
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
80 goto loop;
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
81 }
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
82 if (!strcmp(input_line_starkw, "PART")) {
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
83 process_part_section();
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
84 goto loop;
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
85 }
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
86 }
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
87 exit(0);
aa0539cc3d41 pads2gpcb project started, skeleton compiles
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents:
diff changeset
88 }