============================================================================= PathAbsoluteFromApp()
| 926 | // PathAbsoluteFromApp() |
| 927 | // |
| 928 | void PathAbsoluteFromApp ( LPWSTR lpszSrc, LPWSTR lpszDest, int cchDest, BOOL bExpandEnv ) |
| 929 | { |
| 930 | WCHAR wchPath[MAX_PATH]; |
| 931 | WCHAR wchResult[MAX_PATH]; |
| 932 | if ( StrCmpNI ( lpszSrc, L"%CSIDL:MYDOCUMENTS%", CSTRLEN ( "%CSIDL:MYDOCUMENTS%" ) ) == 0 ) { |
| 933 | SHGetFolderPath ( NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, wchPath ); |
| 934 | PathAppend ( wchPath, lpszSrc + CSTRLEN ( "%CSIDL:MYDOCUMENTS%" ) ); |
| 935 | } else { |
| 936 | lstrcpyn ( wchPath, lpszSrc, COUNTOF ( wchPath ) ); |
| 937 | } |
| 938 | if ( bExpandEnv ) { |
| 939 | ExpandEnvironmentStringsEx ( wchPath, COUNTOF ( wchPath ) ); |
| 940 | } |
| 941 | if ( PathIsRelative ( wchPath ) ) { |
| 942 | GetModuleFileName ( NULL, wchResult, COUNTOF ( wchResult ) ); |
| 943 | PathRemoveFileSpec ( wchResult ); |
| 944 | PathAppend ( wchResult, wchPath ); |
| 945 | } else { |
| 946 | lstrcpyn ( wchResult, wchPath, COUNTOF ( wchResult ) ); |
| 947 | } |
| 948 | PathCanonicalizeEx ( wchResult ); |
| 949 | if ( PathGetDriveNumber ( wchResult ) != -1 ) { |
| 950 | CharUpperBuff ( wchResult, 1 ); |
| 951 | } |
| 952 | if ( lpszDest == NULL || lpszSrc == lpszDest ) { |
| 953 | lstrcpyn ( lpszSrc, wchResult, ( cchDest == 0 ) ? MAX_PATH : cchDest ); |
| 954 | } else { |
| 955 | lstrcpyn ( lpszDest, wchResult, ( cchDest == 0 ) ? MAX_PATH : cchDest ); |
| 956 | } |
| 957 | } |
| 958 | |
| 959 | |
| 960 | /////////////////////////////////////////////////////////////////////////////// |
no test coverage detected