Added dp8390 driver. Additional env_parse functions that take argc and argv.
This commit is contained in:
@@ -12,6 +12,21 @@ char *fmt; /* template to parse it with */
|
||||
int field; /* field number of value to return */
|
||||
long *param; /* address of parameter to get */
|
||||
long min, max; /* minimum and maximum values for the parameter */
|
||||
{
|
||||
return env_parse_x(0, NULL, env, fmt, field, param, min, max);
|
||||
}
|
||||
|
||||
/*=========================================================================*
|
||||
* env_parse_x *
|
||||
*=========================================================================*/
|
||||
PUBLIC int env_parse_x(argc, argv, env, fmt, field, param, min, max)
|
||||
int argc;
|
||||
char *argv[];
|
||||
char *env; /* environment variable to inspect */
|
||||
char *fmt; /* template to parse it with */
|
||||
int field; /* field number of value to return */
|
||||
long *param; /* address of parameter to get */
|
||||
long min, max; /* minimum and maximum values for the parameter */
|
||||
{
|
||||
/* Parse an environment variable setting, something like "DPETH0=300:3".
|
||||
* Panic if the parsing fails. Return EP_UNSET if the environment variable
|
||||
@@ -29,9 +44,27 @@ long min, max; /* minimum and maximum values for the parameter */
|
||||
char value[EP_BUF_SIZE];
|
||||
char PUNCT[] = ":,;.";
|
||||
long newpar;
|
||||
int s, i = 0, radix, r;
|
||||
int s, i, radix, r, keylen;
|
||||
|
||||
if ((s=get_mon_param(env, value, sizeof(value))) != 0) {
|
||||
keylen= strlen(env);
|
||||
for (i= 0; i<argc; i++)
|
||||
{
|
||||
if (strncmp(argv[i], env, keylen) != 0)
|
||||
continue;
|
||||
if (strlen(argv[i]) <= keylen)
|
||||
continue;
|
||||
if (argv[i][keylen] != '=')
|
||||
continue;
|
||||
val= argv[i]+keylen+1;
|
||||
if (strlen(val)+1 > EP_BUF_SIZE)
|
||||
{
|
||||
printf("WARNING: env_parse() failed: argument too long\n");
|
||||
return(EP_EGETKENV);
|
||||
}
|
||||
strcpy(value, val);
|
||||
}
|
||||
|
||||
if (i >= argc && (s=get_mon_param(env, value, sizeof(value))) != 0) {
|
||||
if (s == ESRCH) return(EP_UNSET); /* only error allowed */
|
||||
printf("WARNING: get_mon_param() failed in env_parse(): %d\n",s);
|
||||
return(EP_EGETKENV);
|
||||
@@ -40,6 +73,7 @@ long min, max; /* minimum and maximum values for the parameter */
|
||||
if (strcmp(val, "off") == 0) return(EP_OFF);
|
||||
if (strcmp(val, "on") == 0) return(EP_ON);
|
||||
|
||||
i = 0;
|
||||
r = EP_ON;
|
||||
for (;;) {
|
||||
while (*val == ' ') val++; /* skip spaces */
|
||||
|
||||
Reference in New Issue
Block a user