#include <globals.h>
Public Types | |
typedef map< String, FileTypeInfo > | super |
Public Member Functions | |
const FileTypeInfo & | operator[] (String ext) |
LPCTSTR | set_type (struct Entry *entry, bool dont_hide_ext=false) |
Static Public Member Functions | |
static bool | is_exe_file (LPCTSTR ext) |
Definition at line 43 of file globals.h.
typedef map<String, FileTypeInfo> FileTypeManager::super |
bool FileTypeManager::is_exe_file | ( | LPCTSTR | ext ) | [static] |
Definition at line 154 of file explorer.cpp.
References _MAX_EXT, and TEXT.
Referenced by set_type().
{ static const LPCTSTR s_executable_extensions[] = { TEXT("COM"), TEXT("EXE"), TEXT("BAT"), TEXT("CMD"), TEXT("CMM"), TEXT("BTM"), TEXT("AWK"), 0 }; TCHAR ext_buffer[_MAX_EXT]; const LPCTSTR* p; LPCTSTR s; LPTSTR d; for(s=ext+1,d=ext_buffer; (*d=toupper(*s)); s++) ++d; for(p=s_executable_extensions; *p; p++) if (!lstrcmp(ext_buffer, *p)) return true; return false; }
const FileTypeInfo & FileTypeManager::operator[] | ( | String | ext ) |
Definition at line 183 of file explorer.cpp.
References FileTypeInfo::_classname, FileTypeInfo::_displayname, FileTypeInfo::_neverShowExt, TEXT, and String::toLower().
{ ext.toLower(); iterator found = find(ext); if (found != end()) return found->second; FileTypeInfo& ftype = super::operator[](ext); ftype._neverShowExt = false; HKEY hkey; TCHAR value[MAX_PATH], display_name[MAX_PATH]; LONG valuelen = sizeof(value); if (!RegQueryValue(HKEY_CLASSES_ROOT, ext, value, &valuelen)) { ftype._classname = value; valuelen = sizeof(display_name); if (!RegQueryValue(HKEY_CLASSES_ROOT, ftype._classname, display_name, &valuelen)) ftype._displayname = display_name; if (!RegOpenKey(HKEY_CLASSES_ROOT, ftype._classname, &hkey)) { if (!RegQueryValueEx(hkey, TEXT("NeverShowExt"), 0, NULL, NULL, NULL)) ftype._neverShowExt = true; RegCloseKey(hkey); } } return ftype; }
Definition at line 217 of file explorer.cpp.
References Entry::_data, Entry::_display_name, FileTypeInfo::_displayname, FileTypeInfo::_neverShowExt, _tcsrchr, Entry::_type_name, ATTRIBUTE_EXECUTABLE, is_exe_file(), and TEXT.
Referenced by WinDirectory::read_directory(), and ShellDirectory::read_directory().
{ LPCTSTR ext = _tcsrchr(entry->_data.cFileName, TEXT('.')); if (ext) { const FileTypeInfo& type = (*this)[ext]; if (!type._displayname.empty()) entry->_type_name = _tcsdup(type._displayname); // hide some file extensions if (type._neverShowExt && !dont_hide_ext) { int len = ext - entry->_data.cFileName; if (entry->_display_name != entry->_data.cFileName) free(entry->_display_name); entry->_display_name = (LPTSTR) malloc((len+1)*sizeof(TCHAR)); lstrcpyn(entry->_display_name, entry->_data.cFileName, len + 1); } if (is_exe_file(ext)) entry->_data.dwFileAttributes |= ATTRIBUTE_EXECUTABLE; } return ext; }
ROS Explorer Source Code Documentation
generated on 02.01.2013 by ![]() |