FreeCalypso > hg > ueda-linux
view pads2gpcb/main.c @ 63:455a0051f9d2
pads2gpcb: PARTTYPE parsing implemented, compiles
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Sun, 31 Jan 2016 07:32:08 +0000 |
parents | 9d7e2937883d |
children | 6a1197106b6f |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <ctype.h> #include <string.h> #include <strings.h> #include "globals.h" static parse_header_line() { char *cp; if (strncmp(input_line_buf, "!PADS-POWERPCB-", 15)) return(-1); cp = input_line_buf + 15; while (isalnum(*cp) || *cp == '.') cp++; if (*cp++ != '-') return(-1); if (!strncmp(cp, "BASIC", 5)) input_units_global = 'B'; else if (!strncmp(cp, "MILS", 4)) input_units_global = 'I'; else if (!strncmp(cp, "METRIC", 6)) input_units_global = 'M'; else return(-1); return(0); } static void process_write_option() { extern char *optarg; if (strlen(optarg) != 1) { inv: fprintf(stderr, "usage error: invalid -w option\n"); exit(1); } switch (optarg[0]) { case 'd': write_decal_files = 1; return; case 'p': write_parttype_files = 1; return; case 'e': write_final_elements = 1; return; default: goto inv; } } main(argc, argv) char **argv; { int c; extern int optind; extern char *optarg; while ((c = getopt(argc, argv, "s:w:")) != EOF) switch (c) { case 's': do_footprint_silk = 1; select_drawlevel_for_silk(atoi(optarg)); continue; case 'w': process_write_option(); continue; default: usage: fprintf(stderr, "usage: %s [options] pads-file.asc\n", argv[0]); exit(1); } if (argc != optind + 1) goto usage; input_filename = argv[optind]; open_input_file(); /* parse the header line with the units specification */ if (!get_input_line()) { invheader: fprintf(stderr, "error: %s does not begin with a recognized header line\n", input_filename); exit(1); } if (parse_header_line() < 0) goto invheader; /* process the body of the monster! */ while (get_input_line()) { if (input_line_buf[0] != '*') continue; parse_starline(); loop: if (!strcmp(input_line_starkw, "PARTDECAL")) { process_partdecal_section(); goto loop; } #if 0 if (!strcmp(input_line_starkw, "PARTTYPE")) { process_parttype_section(); goto loop; } if (!strcmp(input_line_starkw, "PART")) { process_part_section(); goto loop; } #endif } exit(0); }