implement epicsEnvUnset

This commit is contained in:
2018-10-03 15:03:11 +02:00
parent a9d7f7be13
commit 7151fbe498
5 changed files with 67 additions and 0 deletions

View File

@@ -110,6 +110,21 @@ static void epicsEnvSetCallFunc(const iocshArgBuf *args)
epicsEnvSet (name, value);
}
/* epicsEnvUnset */
static const iocshArg epicsEnvUnsetArg0 = { "name",iocshArgString};
static const iocshArg * const epicsEnvUnsetArgs[1] = {&epicsEnvUnsetArg0};
static const iocshFuncDef epicsEnvUnsetFuncDef = {"epicsEnvUnset",1,epicsEnvUnsetArgs};
static void epicsEnvUnsetCallFunc(const iocshArgBuf *args)
{
char *name = args[0].sval;
if (name == NULL) {
fprintf(stderr, "Missing environment variable name argument.\n");
return;
}
epicsEnvUnset (name);
}
/* epicsParamShow */
static const iocshFuncDef epicsParamShowFuncDef = {"epicsParamShow",0,NULL};
static void epicsParamShowCallFunc(const iocshArgBuf *args)
@@ -367,6 +382,7 @@ void epicsShareAPI libComRegister(void)
iocshRegister(&pwdFuncDef, pwdCallFunc);
iocshRegister(&epicsEnvSetFuncDef, epicsEnvSetCallFunc);
iocshRegister(&epicsEnvUnsetFuncDef, epicsEnvUnsetCallFunc);
iocshRegister(&epicsParamShowFuncDef, epicsParamShowCallFunc);
iocshRegister(&epicsPrtEnvParamsFuncDef, epicsPrtEnvParamsCallFunc);
iocshRegister(&epicsEnvShowFuncDef, epicsEnvShowCallFunc);

View File

@@ -39,6 +39,16 @@ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *val
setenv(name, value, 1);
}
/*
* Unset an environment variable
*/
epicsShareFunc void epicsShareAPI epicsEnvUnset (const char *name)
{
iocshEnvClear(name);
unsetenv(name);
}
/*
* Show the value of the specified, or all, environment variables
*/

View File

@@ -55,6 +55,18 @@ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *val
}
}
/*
* Unset an environment variable
* Using putenv with a an exsiting name but without "=..." deletes the variable.
*/
epicsShareFunc void epicsShareAPI epicsEnvUnset (const char *name)
{
iocshEnvClear(name);
if (getenv(name) != NULL)
putenv(name);
}
/*
* Show the value of the specified, or all, environment variables
*/

View File

@@ -36,6 +36,16 @@ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *val
setenv(name, value, 1);
}
/*
* Unset an environment variable
*/
epicsShareFunc void epicsShareAPI epicsEnvUnset (const char *name)
{
iocshEnvClear(name);
unsetenv(name);
}
/*
* Show the value of the specified, or all, environment variables
*/

View File

@@ -51,6 +51,25 @@ epicsShareFunc void epicsShareAPI epicsEnvSet (const char *name, const char *val
}
}
/*
* Unset an environment variable
* Basically destroy the name of that variable because vxWorks does not
* support to really uset an environment variable.
*/
epicsShareFunc void epicsShareAPI epicsEnvUnset (const char *name)
{
char* var;
if (!name) return;
iocshEnvClear(name);
var = getenv(name);
if (!var) return;
var -= strlen(name);
var --;
*var = 0;
}
/*
* Show the value of the specified, or all, environment variables
*/