1 //
2 // FixLFN.h
3 //
4 
5 #ifndef __FIXLFN_H
6 #define __FIXLFN_H
7 
8 #include <string.h>
9 #include <tchar.h>
10 #include <shellapi.h>
11 
12 inline int FixLFN ( const TCHAR* pBadFileName, TCHAR* pGoodFileName )
13 {
14 	SHFILEINFO sfi;
15 	TCHAR* p;
16 
17 	DWORD dwResult = SHGetFileInfo ( pBadFileName, 0, &sfi, sizeof(sfi), SHGFI_DISPLAYNAME );
18 	if ( dwResult )
19 	{
20 		if ( pGoodFileName != pBadFileName )
21 			_tcscpy ( pGoodFileName, pBadFileName );
22 		if ( (p = _tcsrchr ( pGoodFileName, '\\' )) )
23 			_tcscpy ( p+1, sfi.szDisplayName );
24 		else if ( (p = _tcsrchr ( pGoodFileName, '/' )) )
25 			_tcscpy ( p+1, sfi.szDisplayName );
26 		else
27 			_tcscpy ( pGoodFileName, sfi.szDisplayName );
28 	}
29 	return dwResult;
30 }
31 
32 #endif//__FIXLFN_H
33