home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
gdead.berkeley.edu
/
gdead.berkeley.edu.tar
/
gdead.berkeley.edu
/
pub
/
cad-tools
/
ciftomann.tar
/
pggen_dir
/
get_args.c
< prev
next >
Wrap
C/C++ Source or Header
|
1988-01-28
|
3KB
|
179 lines
#include <stdio.h>
extern int debug;
extern int center;
extern int silent;
extern int x_trans;
extern int y_trans;
extern int x_center;
extern int y_center;
extern char *name;
extern FILE *infile;
FILE *fopen();
#define USAGE "Usage : pggen [-s] [-n name] [-c x_center y_center] [-t x_offset y_offset] input_file\n"
/* get_args parses the command line arguments */
get_args(argc,argv)
int argc;
char **argv;
{
char *ptr;
int t_used = 0;
if (argc == 1) {
fprintf(stderr,USAGE);
exit(1);
}
while ( argc-- > 1 ) {
if (*(++argv)[0] == '-') {
ptr = argv[0];
switch (ptr[1]) {
case 't' :
if ( ptr[2] != '\0' || argc < 3 ) {
fprintf(stderr,USAGE);
exit(1);
}
t_used++;
if ( center ) {
fprintf(stderr,"t and c options may not be used at the same time\n");
exit(1);
}
if ( sscanf(*++argv,"%d",&x_trans) != 1 ||
sscanf(*++argv,"%d",&y_trans) != 1 ) {
fprintf(stderr,"Offsets must be integers\n");
fprintf(stderr,USAGE);
exit(1);
}
argc -= 2;
break;
case 'c' :
if ( ptr[2] != '\0' || argc < 3 ) {
fprintf(stderr,USAGE);
exit(1);
}
center++;
if ( t_used ) {
fprintf(stderr,"t and c options may not be used at the same time\n");
exit(1);
}
if ( sscanf(*++argv,"%d",&x_center) != 1 ||
sscanf(*++argv,"%d",&y_center) != 1 ) {
fprintf(stderr,"center coordinates must be integers\n");
fprintf(stderr,USAGE);
exit(1);
}
argc -= 2;
break;
case 'n' :
if ( argc < 2 ) {
fprintf("Name missing in '-n name'\n");
fprintf(stderr,USAGE);
exit(1);
}
name = *++argv;
argc--;
break;
default :
while ( *(++ptr) != '\0' ) {
switch (*ptr) {
case 'D' :
debug++;
break;
case 's' :
silent++;
break;
default :
fprintf(stderr,"Unknown flag %c\n",*ptr);
fprintf(stderr,USAGE);
exit(1);
}
}
}
} else {
char *infile_name = argv[0];
if ( (infile = fopen(infile_name,"r")) == NULL ) {
fprintf(stderr,"Cannot open the input file %s\n",
argv[0]);
fprintf(stderr,USAGE);
exit(1);
}
if ( *(++argv) != 0 ) {
fprintf(stderr,"Extra characters after the input file\n");
fprintf(stderr,USAGE);
exit(1);
}
return;
}
}
fprintf(stderr,"No input_file given\n");
fprintf(stderr,USAGE);
exit(1);
}
#define IS_DIGIT(c) ( (c) >='0' && (c) <='9' )
atoi(string,int_ptr)
char *string;
int *int_ptr;
{
*int_ptr = 0;
if ( (string == (char *) 0) || *string == '\0' ) {
return(0);
}
while ( *string != '\0' ) {
if ( IS_DIGIT(*string) ) {
*int_ptr += *string - '0';
} else {
return(0);
}
string++;
}
return(1);
}