MCPcopy Create free account
hub / github.com/ProgerXP/Notepad2e / PathRelativeToApp

Function PathRelativeToApp

src/Helpers.c:880–921  ·  view source on GitHub ↗

============================================================================= PathRelativeToApp()

Source from the content-addressed store, hash-verified

878// PathRelativeToApp()
879//
880void PathRelativeToApp (
881 LPWSTR lpszSrc, LPWSTR lpszDest, int cchDest, BOOL bSrcIsFile,
882 BOOL bUnexpandEnv, BOOL bUnexpandMyDocs )
883{
884 WCHAR wchAppPath[MAX_PATH];
885 WCHAR wchWinDir[MAX_PATH];
886 WCHAR wchUserFiles[MAX_PATH];
887 WCHAR wchPath[MAX_PATH];
888 WCHAR wchResult[MAX_PATH];
889 DWORD dwAttrTo = ( bSrcIsFile ) ? 0 : FILE_ATTRIBUTE_DIRECTORY;
890 GetModuleFileName ( NULL, wchAppPath, COUNTOF ( wchAppPath ) );
891 PathRemoveFileSpec ( wchAppPath );
892 GetWindowsDirectory ( wchWinDir, COUNTOF ( wchWinDir ) );
893 SHGetFolderPath ( NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, wchUserFiles );
894 if ( bUnexpandMyDocs &&
895 !PathIsRelative ( lpszSrc ) &&
896 !PathIsPrefix ( wchUserFiles, wchAppPath ) &&
897 PathIsPrefix ( wchUserFiles, lpszSrc ) &&
898 PathRelativePathTo ( wchPath, wchUserFiles, FILE_ATTRIBUTE_DIRECTORY, lpszSrc, dwAttrTo ) ) {
899 lstrcpy ( wchUserFiles, L"%CSIDL:MYDOCUMENTS%" );
900 PathAppend ( wchUserFiles, wchPath );
901 lstrcpy ( wchPath, wchUserFiles );
902 } else if ( PathIsRelative ( lpszSrc ) || PathCommonPrefix ( wchAppPath, wchWinDir, NULL ) ) {
903 lstrcpyn ( wchPath, lpszSrc, COUNTOF ( wchPath ) );
904 } else {
905 if ( !PathRelativePathTo ( wchPath, wchAppPath, FILE_ATTRIBUTE_DIRECTORY, lpszSrc, dwAttrTo ) ) {
906 lstrcpyn ( wchPath, lpszSrc, COUNTOF ( wchPath ) );
907 }
908 }
909 if ( bUnexpandEnv ) {
910 if ( !PathUnExpandEnvStrings ( wchPath, wchResult, COUNTOF ( wchResult ) ) ) {
911 lstrcpyn ( wchResult, wchPath, COUNTOF ( wchResult ) );
912 }
913 } else {
914 lstrcpyn ( wchResult, wchPath, COUNTOF ( wchResult ) );
915 }
916 if ( lpszDest == NULL || lpszSrc == lpszDest ) {
917 lstrcpyn ( lpszSrc, wchResult, ( cchDest == 0 ) ? MAX_PATH : cchDest );
918 } else {
919 lstrcpyn ( lpszDest, wchResult, ( cchDest == 0 ) ? MAX_PATH : cchDest );
920 }
921}
922
923
924//=============================================================================

Callers 2

MRU_AddFileFunction · 0.85
SaveSettingsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected