home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
SRC
/
unc.lzh
/
UNC
/
getparms.c
< prev
next >
Wrap
Text File
|
1991-06-10
|
2KB
|
101 lines
int getparms(argc, argv)
int argc;
char *argv[];
{
char c, *parm, *getstr();
int i;
for (i=1; i < argc; i++)
{
parm = argv[i];
if(*parm != '-')
{
cmdindex = i; /* ab hier beginnts Kommando */
return(0);
}
parm++;
while( (c = *parm++) != '\0')
switch( tolower(c) )
{
case 'g': group = getint(&parm, group); break;
case 'u': user = getint(&parm, user); break;
case '?': usage(); clean(0); break;
case 'v': fputs(VERSION, stderr); exit(0);
case 'd': debug = getint(&parm, 1); break;
default:
usage();
clean(_errmsg(1, "illegal option '%c'\n", c)) ;
}
}
}
/* getint(&par) und getstr(&par) untersuchen den String ab **par.
* *par wird erhöht und steht 1 hinter dem letzten erkannten Zeichen
* bei ungültigem oder nicht vorhandenem Argument wird der übergebene
* Defaultwert zurückgegeben.
*/
int getint(par, difauld)
char **par;
int difauld;
{
int i;
if (**par == '=')
++*par;
if (isdigit(**par))
i = atoi(*par); /* Zahl zurückgeben */
else
i = difauld;
while (isdigit(**par)) /* skippen bis Zahlende */
++*par;
return(i);
}
int gethex(par, difauld)
char **par;
int difauld;
{
int i;
if (**par == '=')
++*par;
if (**par == '0' || **par == '$')
++*par;
if (**par == 'x' || **par == 'X')
++*par;
if (sscanf(*par, "%x", &i) != 1)
i = difauld; /* nix gefunden */
while (isxdigit(**par)) /* skippen bis Zahlende */
++*par;
return(i);
}
char *getstr(par, difauld)
char **par, *difauld;
{
char *cp;
if (**par == '=')
++*par;
if (**par != '\0')
{
cp = *par; /* Übergabe: Stringbeginn */
while(**par) ++*par; /* skippen bis Stringende */
return(cp);
}
return(difauld);
}
void usage()
{
fputs(
"\
Syntax: sus {-<opts>} <cmd>\n\
Funkcion: execute <cmd> as member of a different group\n\
Options: -v show version number\n\
"
, stderr); fputs("\
-g[=]<group> set group id (default: 0)\n\
-u[=]<user> set user id (default: current)\n\
"
, stderr);
}