| |
| |
| |
| |
| |
| |
| #include <psxtypes/psxtypes.h> |
| #include <ntapi/ntapi.h> |
| #include "ntapi_impl.h" |
| |
| int32_t __stdcall __ntapi_tt_get_env_var_meta_utf8( |
| __in char * env_var_name, |
| __in char ** envp, |
| __out nt_env_var_meta_utf8 * env_var_meta) |
| { |
| char ** penv; |
| char * ch; |
| |
| |
| for (penv=envp; *penv; penv++) { |
| for (ch=penv[0]; *ch && (*ch != '='); ) |
| ch++; |
| |
| if (*ch != '=') |
| return NT_STATUS_INVALID_USER_BUFFER; |
| |
| if ((ch > *penv) && !(__ntapi->tt_strncmp_multibyte( |
| *penv, |
| env_var_name, |
| ch - *penv))) { |
| |
| env_var_meta->name = *penv; |
| env_var_meta->value = ++ch; |
| env_var_meta->envp_index = penv - envp; |
| env_var_meta->flags = 0; |
| |
| return NT_STATUS_SUCCESS; |
| } |
| } |
| |
| return NT_STATUS_NOT_FOUND; |
| } |
| |
| |
| int32_t __stdcall __ntapi_tt_get_env_var_meta_utf16( |
| __in wchar16_t * env_var_name, |
| __in wchar16_t ** envp, |
| __out nt_env_var_meta_utf16 * env_var_meta) |
| { |
| wchar16_t ** penv; |
| wchar16_t * wch; |
| |
| |
| for (penv=envp; *penv; penv++) { |
| for (wch=penv[0]; *wch && (*wch != '='); ) |
| wch++; |
| |
| if (*wch != '=') |
| return NT_STATUS_INVALID_USER_BUFFER; |
| |
| if ((wch > *penv) && !(__ntapi->tt_strncmp_utf16( |
| *penv, |
| env_var_name, |
| wch - *penv))) { |
| |
| env_var_meta->name = *penv; |
| env_var_meta->value = ++wch; |
| env_var_meta->envp_index = penv - envp; |
| env_var_meta->flags = 0; |
| |
| |
| return NT_STATUS_SUCCESS; |
| } |
| } |
| |
| return NT_STATUS_NOT_FOUND; |
| } |