Piotr Caban : msvcrt: Don't duplicate _wsearchenv_s code in _wsearchenv.

Alexandre Julliard julliard at winehq.org
Tue Jun 2 08:11:16 CDT 2020


Module: wine
Branch: stable
Commit: 446daec1f5261af01ac49c78f9f6537aa53f3c0a
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=446daec1f5261af01ac49c78f9f6537aa53f3c0a

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Wed Jan 29 13:42:23 2020 +0100

msvcrt: Don't duplicate _wsearchenv_s code in _wsearchenv.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 1b5a551324e113afefd247e703cc59c03ad80a9d)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>

---

 dlls/msvcrt/dir.c | 66 +++++++------------------------------------------------
 1 file changed, 8 insertions(+), 58 deletions(-)

diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c
index 5bd8fb1b15..5e84e38a00 100644
--- a/dlls/msvcrt/dir.c
+++ b/dlls/msvcrt/dir.c
@@ -1733,64 +1733,6 @@ void CDECL MSVCRT__searchenv(const char* file, const char* env, char *buf)
     MSVCRT__searchenv_s(file, env, buf, MAX_PATH);
 }
 
-/*********************************************************************
- *      _wsearchenv (MSVCRT.@)
- *
- * Unicode version of _searchenv
- */
-void CDECL MSVCRT__wsearchenv(const MSVCRT_wchar_t* file, const MSVCRT_wchar_t* env, MSVCRT_wchar_t *buf)
-{
-  MSVCRT_wchar_t *envVal, *penv, *end;
-  MSVCRT_wchar_t path[MAX_PATH];
-  MSVCRT_size_t path_len, fname_len = strlenW(file);
-
-  *buf = '\0';
-
-  /* Try CWD first */
-  if (GetFileAttributesW( file ) != INVALID_FILE_ATTRIBUTES)
-  {
-    GetFullPathNameW( file, MAX_PATH, buf, NULL );
-    return;
-  }
-
-  /* Search given environment variable */
-  envVal = MSVCRT__wgetenv(env);
-  if (!envVal)
-  {
-    msvcrt_set_errno(ERROR_FILE_NOT_FOUND);
-    return;
-  }
-
-  penv = envVal;
-  TRACE(":searching for %s in paths %s\n", debugstr_w(file), debugstr_w(envVal));
-
-  for(; *penv; penv = (*end ? end + 1 : end))
-  {
-    end = penv;
-    while(*end && *end != ';') end++; /* Find end of next path */
-    path_len = end - penv;
-    if (!path_len || path_len >= MAX_PATH)
-      continue;
-
-    memcpy(path, penv, path_len * sizeof(MSVCRT_wchar_t));
-    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) * sizeof(MSVCRT_wchar_t));
-    TRACE("Checking for file %s\n", debugstr_w(path));
-    if (GetFileAttributesW( path ) != INVALID_FILE_ATTRIBUTES)
-    {
-      memcpy(buf, path, (path_len + fname_len + 1) * sizeof(MSVCRT_wchar_t));
-      return;
-    }
-  }
-
-  msvcrt_set_errno(ERROR_FILE_NOT_FOUND);
-  return;
-}
-
 /*********************************************************************
  *		_wsearchenv_s (MSVCRT.@)
  */
@@ -1876,3 +1818,11 @@ int CDECL MSVCRT__wsearchenv_s(const MSVCRT_wchar_t* file, const MSVCRT_wchar_t*
   *MSVCRT__errno() = MSVCRT_ENOENT;
   return MSVCRT_ENOENT;
 }
+
+/*********************************************************************
+ *      _wsearchenv (MSVCRT.@)
+ */
+void CDECL MSVCRT__wsearchenv(const MSVCRT_wchar_t* file, const MSVCRT_wchar_t* env, MSVCRT_wchar_t *buf)
+{
+    MSVCRT__wsearchenv_s(file, env, buf, MAX_PATH);
+}




More information about the wine-cvs mailing list