fped.c |
67 | 67 | static void usage(const char *name) |
68 | 68 | { |
69 | 69 | fprintf(stderr, |
70 | | "usage: %s [-k] [-p|-P [-s scale] [-1 package]] [-T [-T]] [cpp_option ...]\n" |
71 | | " %*s [in_file [out_file]]\n\n" |
72 | | " -1 name output only the specified package\n" |
| 70 | "usage: %s [batch_mode] [cpp_option ...] [in_file [out_file]]\n\n" |
| 71 | "Batch mode options:\n" |
73 | 72 | " -k write KiCad output, then exit\n" |
74 | 73 | " -p write Postscript output, then exit\n" |
75 | | " -P write Postscript output (full page), then exit\n" |
76 | | " -s scale scale factor for -P (default: auto-scale)\n" |
| 74 | " -P [-s scale] [-1 package]\n" |
| 75 | " write Postscript output (full page), then exit\n" |
| 76 | " -1 name output only the specified package\n" |
| 77 | " -s scale scale factor for -P (default: auto-scale)\n" |
77 | 78 | " -T test mode. Load file, then exit\n" |
78 | | " -T -T test mode. Load file, dump to stdout, then exit\n" |
| 79 | " -T -T test mode. Load file, dump to stdout, then exit\n\n" |
| 80 | "Common options:\n" |
79 | 81 | " cpp_option -Idir, -Dname[=value], or -Uname\n" |
80 | | , name, (int) strlen(name), ""); |
| 82 | , name); |
81 | 83 | exit(1); |
82 | 84 | } |
83 | 85 | |
84 | 86 | |
85 | 87 | int main(int argc, char **argv) |
86 | 88 | { |
| 89 | enum { |
| 90 | batch_none = 0, |
| 91 | batch_kicad, |
| 92 | batch_ps, |
| 93 | batch_ps_fullpage, |
| 94 | batch_test |
| 95 | } batch = batch_none; |
87 | 96 | char *name = *argv; |
88 | 97 | char **fake_argv; |
89 | 98 | char *args[2]; |
... | ... | |
91 | 100 | char opt[] = "-?"; |
92 | 101 | char *end; |
93 | 102 | int error; |
94 | | int batch = 0; |
95 | 103 | int test_mode = 0; |
96 | 104 | const char *one = NULL; |
97 | | int batch_write_kicad = 0; |
98 | | int batch_write_ps = 0, batch_write_ps_fullpage = 0; |
99 | 105 | int c; |
100 | 106 | |
101 | 107 | while ((c = getopt(argc, argv, "1:kps:D:I:PTU:")) != EOF) |
... | ... | |
104 | 110 | one = optarg; |
105 | 111 | break; |
106 | 112 | case 'k': |
107 | | batch_write_kicad = 1; |
| 113 | if (batch) |
| 114 | usage(*argv); |
| 115 | batch = batch_kicad; |
108 | 116 | break; |
109 | 117 | case 'p': |
110 | | batch_write_ps = 1; |
| 118 | if (batch) |
| 119 | usage(*argv); |
| 120 | batch = batch_ps; |
111 | 121 | break; |
112 | 122 | case 'P': |
113 | | batch_write_ps_fullpage = 1; |
| 123 | if (batch) |
| 124 | usage(*argv); |
| 125 | batch = batch_ps_fullpage; |
114 | 126 | break; |
115 | 127 | case 's': |
116 | | if (!batch_write_ps_fullpage) |
| 128 | if (batch != batch_ps_fullpage) |
117 | 129 | usage(*argv); |
118 | 130 | postscript_params.zoom = strtod(optarg, &end); |
119 | 131 | if (*end) |
120 | 132 | usage(*argv); |
121 | 133 | break; |
122 | 134 | case 'T': |
123 | | batch = 1; |
| 135 | batch = batch_test; |
124 | 136 | test_mode++; |
125 | 137 | break; |
126 | 138 | case 'D': |
... | ... | |
134 | 146 | usage(name); |
135 | 147 | } |
136 | 148 | |
137 | | if (batch_write_ps && batch_write_ps_fullpage) |
| 149 | if (one && batch != batch_ps && batch != batch_ps_fullpage) |
138 | 150 | usage(name); |
139 | 151 | |
140 | | if (one && !(batch_write_ps || batch_write_ps_fullpage)) |
141 | | usage(name); |
142 | | |
143 | | if (batch_write_kicad || batch_write_ps || batch_write_ps_fullpage) |
144 | | batch = 1; |
145 | | |
146 | 152 | if (!batch) { |
147 | 153 | args[0] = name; |
148 | 154 | args[1] = NULL; |
... | ... | |
179 | 185 | if (!instantiate()) |
180 | 186 | return 1; |
181 | 187 | |
182 | | if (batch_write_kicad) |
183 | | write_kicad(); |
184 | | if (batch_write_ps) |
185 | | write_ps(one); |
186 | | if (batch_write_ps_fullpage) |
187 | | write_ps_fullpage(one); |
188 | | if (!batch) { |
| 188 | switch (batch) { |
| 189 | case batch_none: |
189 | 190 | error = gui_main(); |
190 | 191 | if (error) |
191 | 192 | return error; |
192 | | } |
193 | | if (test_mode > 1) |
| 193 | break; |
| 194 | case batch_kicad: |
| 195 | write_kicad(); |
| 196 | break; |
| 197 | case batch_ps: |
| 198 | write_ps(one); |
| 199 | break; |
| 200 | case batch_ps_fullpage: |
| 201 | write_ps_fullpage(one); |
| 202 | break; |
| 203 | case batch_test: |
194 | 204 | dump(stdout, NULL); |
| 205 | break; |
| 206 | default: |
| 207 | abort(); |
| 208 | } |
195 | 209 | |
196 | 210 | purge(); |
197 | 211 | inst_revert(); |