|
|
1.1 ! root 1: ! 2: ! 3: /* ! 4: * ! 5: * Template for normal C programs. All the code was written with standard ! 6: * tab settings, ie. every eighth column. Options are processed in routine ! 7: * options() using getopt(). The non-option arguments are handled in ! 8: * arguments(). To add a new option add its name to string *name and an ! 9: * appropriate case to the switch in options() (see getopt in section 3 ! 10: * of the UNIX manual). You'll also need to add a bunch of code to handle ! 11: * the non-option arguments. ! 12: * ! 13: */ ! 14: ! 15: ! 16: #include <stdio.h> ! 17: ! 18: #include "gen.h" /* general purpose definitions */ ! 19: #include "ext.h" /* external variable declarations */ ! 20: ! 21: ! 22: /*****************************************************************************/ ! 23: ! 24: ! 25: main(agc, agv) ! 26: ! 27: ! 28: int agc; ! 29: char *agv[]; ! 30: ! 31: ! 32: { ! 33: ! 34: ! 35: /* ! 36: * ! 37: * ! 38: */ ! 39: ! 40: ! 41: argc = agc; /* other routines may want them */ ! 42: argv = agv; ! 43: ! 44: prog_name = argv[0]; /* really just for error messages */ ! 45: ! 46: options(); /* first get command line options */ ! 47: arguments(); /* then process non-option arguments */ ! 48: ! 49: exit(x_stat); /* everything probably went OK */ ! 50: ! 51: } /* End of main */ ! 52: ! 53: ! 54: /*****************************************************************************/ ! 55: ! 56: ! 57: options() ! 58: ! 59: ! 60: { ! 61: ! 62: ! 63: int ch; /* return value from getopt() */ ! 64: char *names = "DIF:R:o:"; ! 65: ! 66: extern char *optarg; /* used by getopt() */ ! 67: extern int optind; ! 68: ! 69: ! 70: /* ! 71: * ! 72: * Reads and processes the command line options. Right now the recognized ! 73: * options are, ! 74: * ! 75: */ ! 76: ! 77: ! 78: while ( (ch = getopt(argc, argv, names)) != EOF ) { ! 79: ! 80: switch ( ch ) { ! 81: ! 82: case 'o': /* processing range list */ ! 83: out_list(optarg); ! 84: break; ! 85: ! 86: case 'F': /* new troff font directory */ ! 87: fontdir = optarg; ! 88: break; ! 89: ! 90: case 'R': /* set raster table directory */ ! 91: rastdir = optarg; ! 92: break; ! 93: ! 94: case 'D': /* debug flag */ ! 95: debug = ON; ! 96: break; ! 97: ! 98: case 'I': /* ignore FATAL errors */ ! 99: ignore = ON; ! 100: break; ! 101: ! 102: case '?': /* don't understand the option */ ! 103: error(FATAL, ""); ! 104: break; ! 105: ! 106: default: /* don't know what to do for ch */ ! 107: error(FATAL, "missing case for option %c\n", ch); ! 108: break; ! 109: ! 110: } /* End switch */ ! 111: ! 112: } /* End while */ ! 113: ! 114: argc -= optind; /* get ready for non-option args */ ! 115: argv += optind; ! 116: ! 117: } /* End of options */ ! 118: ! 119: ! 120: /*****************************************************************************/ ! 121: ! 122: ! 123: arguments() ! 124: ! 125: ! 126: { ! 127: ! 128: ! 129: char *file; ! 130: int size; ! 131: int i; ! 132: ! 133: ! 134: /* ! 135: * ! 136: * Makes sure all the non-option command line arguments are processed. ! 137: * ! 138: */ ! 139: ! 140: ! 141: if ( argc < 1 ) ! 142: printf("No non-option arguments\n"); ! 143: else { /* have at least one argument */ ! 144: while ( argc > 0 ) { ! 145: file = *argv++; ! 146: argc--; ! 147: size = atoi(*argv); ! 148: fprintf(stderr, "Get raster file for %s.r%d\n", file, size); ! 149: getrastdata(file, size); ! 150: for ( i = 0; i < 127; i++ ) dump_glyph(i); ! 151: argc--; ! 152: argv++; ! 153: } /* End while */ ! 154: } /* End else */ ! 155: ! 156: } /* End of arguments */ ! 157: ! 158: ! 159: /*****************************************************************************/ ! 160: ! 161:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.