/* * Copyright 1993, 1995 Christopher Seiwald. * * This file is part of Jam - see jam.c for Copyright information. */ /* * option.c - command line option processing * * {o >o * \<>) "Process command line options as defined in <option.h>. * Return the number of argv[] elements used up by options, * or -1 if an invalid option flag was given or an argument * was supplied for an option that does not require one." * * 11/04/02 (seiwald) - const-ing for string literals */ # include "jam.h" # include "option.h" int getoptions( int argc, char **argv, const char *opts, option *optv ) { int i; int optc = N_OPTS; memset( (char *)optv, '\0', sizeof( *optv ) * N_OPTS ); for( i = 0; i < argc; i++ ) { char *arg; if( argv[i][0] != '-' || !isalpha( argv[i][1] ) ) break; if( !optc-- ) { printf( "too many options (%d max)\n", N_OPTS ); return -1; } for( arg = &argv[i][1]; *arg; arg++ ) { const char *f; for( f = opts; *f; f++ ) if( *f == *arg ) break; if( !*f ) { printf( "Invalid option: -%c\n", *arg ); return -1; } optv->flag = *f; if( f[1] != ':' ) { optv++->val = "true"; } else if( arg[1] ) { optv++->val = &arg[1]; break; } else if( ++i < argc ) { optv++->val = argv[i]; break; } else { printf( "option: -%c needs argument\n", *f ); return -1; } } } return i; } /* * Name: getoptval() - find an option given its character */ const char * getoptval( option *optv, char opt, int subopt ) { int i; for( i = 0; i < N_OPTS; i++, optv++ ) if( optv->flag == opt && !subopt-- ) return optv->val; return 0; }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#3 | 3183 | Craig Mcpheeters | Integration of my jam mainline branch into my work branch. | ||
#2 | 785 | Craig Mcpheeters |
Integration from //guest/craig_mcpheeters/jam/src/... This work area now contains both the Alias|Wavefront changes, and the latest integrations from the mainline. There are some changes in this area which shouldn't be merged back into the mainline. As I merge this branch back into my jam/src/... branch, I'll leave out a few of the changes. |
||
#1 | 777 | Craig Mcpheeters |
Branch of my jam/src/... area. This new area establishes the integration base for the copy of Jam which has all the changes. |
||
//guest/craig_mcpheeters/jam/src/option.c | |||||
#2 | 617 | Craig Mcpheeters | Integration from mainline as of @3 | ||
#1 | 616 | Craig Mcpheeters | Integration from Jam mainline, as of @2 |