00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "../tool/file_tools.h"
00023 #include <fstream>
00024 #ifdef _WIN32
00025
00026 # define _WIN32_IE 0x400
00027 # include <shlobj.h>
00028 #else
00029 # include <stdlib.h>
00030 #endif
00031
00032 #include "i18n.h"
00033
00034
00035 bool IsFileExist(const std::string &name)
00036 {
00037 std::ifstream f(name.c_str());
00038 bool exist = f;
00039 f.close();
00040 return exist;
00041 }
00042
00043
00044 std::string FileExtension (const std::string &name)
00045 {
00046 int pos = name.rfind('.');
00047 if (pos != -1)
00048 return name.substr(pos+1);
00049 else
00050 return "";
00051 }
00052
00053
00054 #ifndef WIN32
00055 std::string GetHome()
00056 {
00057 char *txt = getenv("HOME");
00058
00059 if (txt == NULL)
00060 Error (_("HOME directory (environment variable $HOME) could not be found!"));
00061
00062 return txt;
00063 }
00064 #else
00065 std::string GetHome (){
00066 TCHAR szPath[MAX_PATH];
00067
00068
00069 if(SHGetSpecialFolderPath(NULL, szPath,
00070 CSIDL_APPDATA, FALSE) == TRUE)
00071 {
00072 return szPath;
00073 }
00074 return "";
00075 }
00076 #endif
00077
00078
00079 std::string TranslateDirectory(const std::string &directory)
00080 {
00081 std::string home = GetHome();
00082 std::string txt = directory;
00083
00084 for (int pos = txt.length()-1;
00085 (pos = txt.rfind ('~', pos)) != -1;
00086 --pos)
00087 {
00088 txt.replace(pos,1,home);
00089 }
00090 return txt;
00091 }