diff options
Diffstat (limited to 'src/utilcode/makepath.cpp')
-rw-r--r-- | src/utilcode/makepath.cpp | 203 |
1 files changed, 0 insertions, 203 deletions
diff --git a/src/utilcode/makepath.cpp b/src/utilcode/makepath.cpp index 701c525cf4..6e0b56281c 100644 --- a/src/utilcode/makepath.cpp +++ b/src/utilcode/makepath.cpp @@ -15,158 +15,6 @@ #include "utilcode.h" #include "ex.h" -#ifndef FEATURE_CORECLR -/*** -*void MakePath() - build path name from components -* -*Purpose: -* create a path name from its individual components -* -*Entry: -* WCHAR *path - pointer to buffer for constructed path -* WCHAR *drive - pointer to drive component, may or may not contain -* trailing ':' -* WCHAR *dir - pointer to subdirectory component, may or may not include -* leading and/or trailing '/' or '\' characters -* WCHAR *fname - pointer to file base name component -* WCHAR *ext - pointer to extension component, may or may not contain -* a leading '.'. -* -*Exit: -* path - pointer to constructed path name -* -*Exceptions: -* -*******************************************************************************/ - -void MakePath ( - __out_ecount (MAX_LONGPATH) WCHAR *path, - __in LPCWSTR drive, - __in LPCWSTR dir, - __in LPCWSTR fname, - __in LPCWSTR ext - ) -{ - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - FORBID_FAULT; - } - CONTRACTL_END - - const WCHAR *p; - DWORD count = 0; - - /* we assume that the arguments are in the following form (although we - * do not diagnose invalid arguments or illegal filenames (such as - * names longer than 8.3 or with illegal characters in them) - * - * drive: - * A ; or - * A: - * dir: - * \top\next\last\ ; or - * /top/next/last/ ; or - * either of the above forms with either/both the leading - * and trailing / or \ removed. Mixed use of '/' and '\' is - * also tolerated - * fname: - * any valid file name - * ext: - * any valid extension (none if empty or null ) - */ - - /* copy drive */ - - if (drive && *drive) { - *path++ = *drive; - *path++ = _T(':'); - count += 2; - } - - /* copy dir */ - - if ((p = dir)) { - while (*p) { - *path++ = *p++; - count++; - - if (count == MAX_LONGPATH) { - --path; - *path = _T('\0'); - return; - } - } - -#ifdef _MBCS - if (*(p=_mbsdec(dir,p)) != _T('/') && *p != _T('\\')) { -#else /* _MBCS */ - // suppress warning for the following line; this is safe but would require significant code - // delta for prefast to understand. -#ifdef _PREFAST_ - #pragma warning( suppress: 26001 ) -#endif - if (*(p-1) != _T('/') && *(p-1) != _T('\\')) { -#endif /* _MBCS */ - *path++ = _T('\\'); - count++; - - if (count == MAX_LONGPATH) { - --path; - *path = _T('\0'); - return; - } - } - } - - /* copy fname */ - - if ((p = fname)) { - while (*p) { - *path++ = *p++; - count++; - - if (count == MAX_LONGPATH) { - --path; - *path = _T('\0'); - return; - } - } - } - - /* copy ext, including 0-terminator - check to see if a '.' needs - * to be inserted. - */ - - if ((p = ext)) { - if (*p && *p != _T('.')) { - *path++ = _T('.'); - count++; - - if (count == MAX_LONGPATH) { - --path; - *path = _T('\0'); - return; - } - } - - while ((*path++ = *p++)) { - count++; - - if (count == MAX_LONGPATH) { - --path; - *path = _T('\0'); - return; - } - } - } - else { - /* better add the 0-terminator */ - *path = _T('\0'); - } -} -#endif // !FEATURE_CORECLR /*** *void Makepath() - build path name from components @@ -307,57 +155,6 @@ void MakePath ( szPath.Shrink(count + 1); } -#if !defined(FEATURE_CORECLR) -static LPCWSTR g_wszProcessExePath = NULL; - -HRESULT GetProcessExePath(LPCWSTR *pwszProcessExePath) -{ - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - CONSISTENCY_CHECK(CheckPointer(pwszProcessExePath)); - } - CONTRACTL_END; - - HRESULT hr = S_OK; - - if (g_wszProcessExePath == NULL) - { - DWORD cchProcName = 0; - NewArrayHolder<WCHAR> wszProcName; - EX_TRY - { - PathString wszProcNameString; - cchProcName = WszGetModuleFileName(NULL, wszProcNameString); - if (cchProcName == 0) - { - hr = HRESULT_FROM_GetLastError(); - } - else - { - wszProcName = wszProcNameString.GetCopyOfUnicodeString(); - } - } - EX_CATCH_HRESULT(hr); - - if (FAILED(hr)) - { - return hr; - } - - if (InterlockedCompareExchangeT(&g_wszProcessExePath, const_cast<LPCWSTR>(wszProcName.GetValue()), NULL) == NULL) - { - wszProcName.SuppressRelease(); - } - } - _ASSERTE(g_wszProcessExePath != NULL); - _ASSERTE(SUCCEEDED(hr)); - - *pwszProcessExePath = g_wszProcessExePath; - return hr; -} -#endif // Returns the directory for HMODULE. So, if HMODULE was for "C:\Dir1\Dir2\Filename.DLL", // then this would return "C:\Dir1\Dir2\" (note the trailing backslash). |