moved files around
This commit is contained in:
105
jam-2.5/option.c
Normal file
105
jam-2.5/option.c
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
Reference in New Issue
Block a user