From 98c554ac0617c642bc4481e6f56e0d66adec660a Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Wed, 29 Jan 2020 13:42:15 +0100 Subject: [PATCH] msvcrt: Don't duplicate _searchenv_s code in _searchenv. Signed-off-by: Piotr Caban Signed-off-by: Alexandre Julliard --- dlls/msvcrt/dir.c | 90 +++++------------------------------------------ 1 file changed, 8 insertions(+), 82 deletions(-) diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c index 806a2b0c856..83aff8bcb57 100644 --- a/dlls/msvcrt/dir.c +++ b/dlls/msvcrt/dir.c @@ -1640,88 +1640,6 @@ range: return MSVCRT_ERANGE; } -/********************************************************************* - * _searchenv (MSVCRT.@) - * - * Search for a file in a list of paths from an environment variable. - * - * PARAMS - * file [I] Name of the file to search for. - * env [I] Name of the environment variable containing a list of paths. - * buf [O] Destination for the found file path. - * - * RETURNS - * Nothing. If the file is not found, buf will contain an empty string - * and errno is set. - */ -void CDECL MSVCRT__searchenv(const char* file, const char* env, char *buf) -{ - char*envVal, *penv, *end; - char path[MAX_PATH]; - MSVCRT_size_t path_len, fname_len = strlen(file); - - *buf = '\0'; - - /* Try CWD first */ - if (GetFileAttributesA( file ) != INVALID_FILE_ATTRIBUTES) - { - GetFullPathNameA( file, MAX_PATH, buf, NULL ); - return; - } - - /* Search given environment variable */ - envVal = MSVCRT_getenv(env); - if (!envVal) - { - msvcrt_set_errno(ERROR_FILE_NOT_FOUND); - return; - } - - penv = envVal; - TRACE(":searching for %s in paths %s\n", file, envVal); - - for(; *penv; penv = (*end ? end + 1 : end)) - { - end = penv; - path_len = 0; - while(*end && *end != ';' && path_len < MAX_PATH) - { - if (*end == '"') - { - end++; - while(*end && *end != '"' && path_len < MAX_PATH) - { - path[path_len++] = *end; - end++; - } - if (*end == '"') end++; - continue; - } - - path[path_len++] = *end; - end++; - } - if (!path_len || path_len >= MAX_PATH) - continue; - - if (path[path_len - 1] != '/' && path[path_len - 1] != '\\') - path[path_len++] = '\\'; - if (path_len + fname_len >= MAX_PATH) - continue; - - memcpy(path + path_len, file, fname_len + 1); - TRACE("Checking for file %s\n", path); - if (GetFileAttributesA( path ) != INVALID_FILE_ATTRIBUTES) - { - memcpy(buf, path, path_len + fname_len + 1); - return; - } - } - - msvcrt_set_errno(ERROR_FILE_NOT_FOUND); - return; -} - /********************************************************************* * _searchenv_s (MSVCRT.@) */ @@ -1807,6 +1725,14 @@ int CDECL MSVCRT__searchenv_s(const char* file, const char* env, char *buf, MSVC return MSVCRT_ENOENT; } +/********************************************************************* + * _searchenv (MSVCRT.@) + */ +void CDECL MSVCRT__searchenv(const char* file, const char* env, char *buf) +{ + MSVCRT__searchenv_s(file, env, buf, MAX_PATH); +} + /********************************************************************* * _wsearchenv (MSVCRT.@) *