SylixOS中环境变量操作函数存在两套接口:原生的API_TShellVar系列接口和POSIX标准的env接口。
功能 | var接口 | env接口 |
---|---|---|
拷贝获取一个环境变量值 | API_TShellVarGetRt | getenv_r |
引用获取一个环境变量值 | API_TShellVarGet | getenv |
设置/新增一个环境变 | API_TShellVarSet | setenv |
删除一个环境变量 | API_TShellVarDelete | unsetenv |
shell命令设置/新增一个环境变 | API_TShellExec | putenv |
获得变量个数 | API_TShellVarGetNum | – |
获取环境变量列表 | API_TShellVarDup | – |
保存环境变量列表到指定文件 | API_TShellVarSave | :– |
从指定文件加载环境变量列表 | API_TShellVarLoad | :– |
设置环境变量变动回调函数 | API_TShellVarHookSet | :– |
API_TShellVar系列接口
位于libsylixos\SylixOS\shell\ttinyVar\ttinyVar.c文件中。这些API接口函数又是基于libsylixos\SylixOS\shell\ttinyVar\ttinyVarLib.c文件中的对应__tshellVar函数实现。
/*********************************************************************************************************
** 函数名称: API_TShellVarHookSet
** 功能描述: 当变量改变时, 调用的用户回调
** 输 入 : pfuncTSVarHook 新的回调函数
** 输 出 : 以前的回调函数.
*********************************************************************************************************/
VOIDFUNCPTR API_TShellVarHookSet (VOIDFUNCPTR pfuncTSVarHook)
/*********************************************************************************************************
** 函数名称: API_TShellVarGetRt
** 功能描述: 获得一个变量的值
** 输 入 : pcVarName 变量名
** pcVarValue 变量的值
** 输 出 : 变量值长度 or ERROR
*********************************************************************************************************/
INT API_TShellVarGetRt (CPCHAR pcVarName, PCHAR pcVarValue,INT iMaxLen)
/*********************************************************************************************************
** 函数名称: API_TShellVarGet
** 功能描述: 获得一个变量的值
** 输 入 : pcVarName 变量名
** 输 出 : 变量的值
*********************************************************************************************************/
PCHAR API_TShellVarGet (CPCHAR pcVarName)
/*********************************************************************************************************
** 函数名称: API_TShellVarSet
** 功能描述: 设置一个变量的值
** 输 入 : pcVarName 变量名
** pcVarValue 变量的值
** iIsOverwrite 是否覆盖
** 如果 iIsOverwrite 不为0,而该变量原已有内容,则原内容会被改为参数 pcVarValue
** 所指的变量内容:如果 iIsOverwrite 为0,且该环境变量已有内容,
** 则参数 pcVarValue 会被忽略。
** 输 出 : 执行成功则返回0,有错误发生时返回-1。
** 全局变量:
** 调用模块: API 函数
*********************************************************************************************************/
LW_API
INT API_TShellVarSet (CPCHAR pcVarName, CPCHAR pcVarValue, INT iIsOverwrite)
/*********************************************************************************************************
** 函数名称: API_TShellVarDelete
** 功能描述: 删除一个变量
** 输 入 : pcVarName 变量名
** 输 出 : ERROR
** 全局变量:
** 调用模块: API 函数
*********************************************************************************************************/
LW_API
INT API_TShellVarDelete (CPCHAR pcVarName)
/*********************************************************************************************************
** 函数名称: API_TShellVarGetNum
** 功能描述: 获得变量个数
** 输 入 : NONE
** 输 出 : 变量个数
** 全局变量:
** 调用模块: API 函数
*********************************************************************************************************/
LW_API
INT API_TShellVarGetNum (VOID)
/*********************************************************************************************************
** 函数名称: API_TShellVarDup
** 功能描述: dup shell 变量
** 输 入 : pfuncMalloc 内存分配函数
** ppcEvn dup 目标
** ulMax 最大个数
** 输 出 : dup 个数
** 全局变量:
** 调用模块: API 函数
*********************************************************************************************************/
LW_API
INT API_TShellVarDup (PVOID (*pfuncMalloc)(size_t stSize), PCHAR ppcEvn[], ULONG ulMax)
/*********************************************************************************************************
** 函数名称: API_TShellVarSave
** 功能描述: 保存 shell 变量
** 输 入 : pcFile 保存文件名
** 输 出 : ERROR or OK
** 全局变量:
** 调用模块:API 函数
*********************************************************************************************************/
LW_API
INT API_TShellVarSave (CPCHAR pcFile)
/*********************************************************************************************************
** 函数名称: API_TShellVarSave
** 功能描述: 读取 shell 变量
** 输 入 : pcFile 保存文件名
** 输 出 : ERROR or OK
** 全局变量:
** 调用模块:API 函数
*********************************************************************************************************/
LW_API
INT API_TShellVarLoad (CPCHAR pcFile)
env 系列接口
env 系列接口位于 libsylixos\SylixOS\lib\extern\libc.c 文件中,这组接口都是由一 一对应的 lib_xxx函数实现。而lib env 系列接口位于 libsylixos\SylixOS\lib\libc\stdlib\lib_env.c 文件中。lib env 系列接口本质又是由API_TShellVar系列函数实现。
/*********************************************************************************************************
** 函数名称: lib_getenv_r
** 功能描述: 获得当前系统环境变量. (可重入)
** 输 入 : pcName 变量名
** pcBuffer 变量的值
** iLen 长度
** 输 出 : ERROR
** 全局变量:
** 调用模块:
*********************************************************************************************************/
int lib_getenv_r (const char *pcName, char *pcBuffer, int iLen)
/*********************************************************************************************************
** 函数名称: lib_getenv
** 功能描述: 获得当前系统环境变量.
** 输 入 : pcName 变量名
** 输 出 : 变量的值
** 全局变量:
** 调用模块:
*********************************************************************************************************/
char *lib_getenv (const char *pcName)
/*********************************************************************************************************
** 函数名称: lib_putenv
** 功能描述: 设置当前系统环境变量.
** 输 入 : cString 变量赋值字串
** 输 出 : ERROR
** 全局变量:
** 调用模块:
*********************************************************************************************************/
int lib_putenv (char *cString)
/*********************************************************************************************************
** 函数名称: lib_setenv
** 功能描述: 设置当前系统环境变量.
** 输 入 : pcName 变量名
** pcValue 变量的值
** iRewrite 存在时是否改写
** 输 出 : ERROR
** 全局变量:
** 调用模块:
*********************************************************************************************************/
int lib_setenv (const char *pcName, const char *pcValue, int iRewrite)
/*********************************************************************************************************
** 函数名称: lib_unsetenv
** 功能描述: 删除一个指定的系统环境变量.
** 输 入 : pcName 变量名
** 输 出 : ERROR
** 全局变量:
** 调用模块:
*********************************************************************************************************/
int lib_unsetenv (const char *pcName)