Select Git revision
Getopt.pmod
-
Henrik (Grubba) Grubbström authored
Rev: lib/modules/Getopt.pmod:1.4
Henrik (Grubba) Grubbström authoredRev: lib/modules/Getopt.pmod:1.4
Getopt.pmod 5.85 KiB
// startpid = (int)find_arg(argv, "s", ({ "start-script-pid" }),
// ({ "ROXEN_START_SCRIPT_PID"}));
// configuration_dir = find_arg(argv, "d", ({ "config-dir",
// "configurations",
// "configuration-directory" }),
// ({ "ROXEN_CONFIGDIR", "CONFIGURATIONS" }),
// "../configurations");
string|int find_option(array argv,
array|string shortform,
array|string|void longform,
array|string|void envvars,
mixed|void def,
int|void throw_errors)
{
mixed value;
int i,hasarg;
hasarg=query_num_arg() > 4;
if(!arrayp(longform)) longform=({longform});
if(!arrayp(shortform)) shortform=({shortform});
if(!arrayp(envvars)) envvars=({envvars});
for(i=1; i<sizeof(argv); i++)
{
if(argv[i] && strlen(argv[i]) > 1)
{
if(argv[i][0] == '-')
{
if(argv[i][1] == '-')
{
string tmp;
int nf;
if(argv[i]=="--") break;
sscanf(tmp=argv[i], "%s=%s", tmp, value);
if(search(longform, tmp[2..]) != -1)
{
argv[i]=0;
if(hasarg)
{
if(!value)
{
if(i == sizeof(argv)-1)
{
if (throw_errors) {
throw(({ "No argument to option "+tmp+".\n",
backtrace() }));
} else {
werror("No argument to option "+tmp+".\n");
exit(1);
}
}
value=argv[i+1];
argv[i+1]=0;
}
return value;
} else {
return value || 1;
}
}
} else {
int j;
for(j=1;j<strlen(argv[i]);j++)
{
string opt;