]> git.lyx.org Git - lyx.git/blobdiff - src/support/filetools.C
tostr -> convert and some bformat work
[lyx.git] / src / support / filetools.C
index 00f38fc3b0fd86c260621c7f1328569d0215e057..4b29034661b3e84e5c6df4810061214b1299bf4c 100644 (file)
 
 #include <config.h>
 
-#include "debug.h"
 #include "support/tostr.h"
 #include "support/systemcall.h"
-
-#include "filetools.h"
-//#include "format.h"
-#include "lstrings.h"
-#include "FileInfo.h"
-#include "forkedcontr.h"
-#include "path.h"
-#include "path_defines.h"
+#include "support/filetools.h"
+#include "support/lstrings.h"
+#include "support/FileInfo.h"
+#include "support/forkedcontr.h"
+#include "support/path.h"
+#include "support/path_defines.h"
+#include "support/lyxlib.h"
+#include "support/os.h"
+
+// FIXME Interface violation
 #include "gettext.h"
-#include "lyxlib.h"
-#include "os.h"
+#include "debug.h"
 
 #include <boost/assert.hpp>
 #include <boost/regex.hpp>
@@ -185,7 +185,7 @@ string const FileOpenSearch(string const & path, string const & name,
        string tmppath = split(path, path_element, ';');
 
        while (notfound && !path_element.empty()) {
-               path_element = os::slashify_path(path_element);
+               path_element = os::internal_path(path_element);
                if (!suffixIs(path_element, '/'))
                        path_element+= '/';
                path_element = subst(path_element, "$$LyX", system_lyxdir());
@@ -394,7 +394,7 @@ string const GetEnvPath(string const & name)
 #ifndef __EMX__
        string const pathlist = subst(GetEnv(name), ':', ';');
 #else
-       string const pathlist = os::slashify_path(GetEnv(name));
+       string const pathlist = os::internal_path(GetEnv(name));
 #endif
        return rtrim(pathlist, ";");
 }
@@ -497,7 +497,7 @@ string const createBufferTmpDir()
        // We are in our own directory.  Why bother to mangle name?
        // In fact I wrote this code to circumvent a problematic behaviour (bug?)
        // of EMX mkstemp().
-       string const tmpfl = os::getTmpDir() + "/lyx_tmpbuf" + tostr(count++);
+       string const tmpfl = os::getTmpDir() + "/lyx_tmpbuf" + convert<string>(count++);
        if (mkdir(tmpfl, 0777)) {
                lyxerr << "LyX could not create the temporary directory '"
                       << tmpfl << "'" << endl;
@@ -538,7 +538,7 @@ string const createLyXTmpDir(string const & deflt)
 
 bool createDirectory(string const & path, int permission)
 {
-       string temp(rtrim(os::slashify_path(path), "/"));
+       string temp(rtrim(os::internal_path(path), "/"));
 
        BOOST_ASSERT(!temp.empty());
 
@@ -573,7 +573,7 @@ string const MakeAbsPath(string const & RelPath, string const & BasePath)
                return RelPath;
 
        // Copies given paths
-       string TempRel(os::slashify_path(RelPath));
+       string TempRel(os::internal_path(RelPath));
        // Since TempRel is NOT absolute, we can safely replace "//" with "/"
        TempRel = subst(TempRel, "//", "/");
 
@@ -624,7 +624,7 @@ string const MakeAbsPath(string const & RelPath, string const & BasePath)
        }
 
        // returns absolute path
-       return os::slashify_path(TempBase);
+       return os::internal_path(TempBase);
 }
 
 
@@ -639,7 +639,7 @@ string const AddName(string const & path, string const & fname)
        string buf;
 
        if (path != "." && path != "./" && !path.empty()) {
-               buf = os::slashify_path(path);
+               buf = os::internal_path(path);
                if (!suffixIs(path, '/'))
                        buf += '/';
        }
@@ -690,7 +690,7 @@ string const ExpandPath(string const & path)
                return getcwd() + '/' + RTemp;
        }
        if (Temp == "~") {
-               return GetEnvPath("HOME") + '/' + RTemp;
+               return os::homepath() + '/' + RTemp;
        }
        if (Temp == "..") {
                return MakeAbsPath(copy);
@@ -840,10 +840,10 @@ string const MakeRelPath(string const & abspath, string const & basepath)
 string const AddPath(string const & path, string const & path_2)
 {
        string buf;
-       string const path2 = os::slashify_path(path_2);
+       string const path2 = os::internal_path(path_2);
 
        if (!path.empty() && path != "." && path != "./") {
-               buf = os::slashify_path(path);
+               buf = os::internal_path(path);
                if (path[path.length() - 1] != '/')
                        buf += '/';
        }
@@ -877,7 +877,7 @@ string const ChangeExtension(string const & oldname, string const & extension)
        else
                ext = extension;
 
-       return os::slashify_path(oldname.substr(0, last_dot) + ext);
+       return os::internal_path(oldname.substr(0, last_dot) + ext);
 }
 
 
@@ -895,25 +895,6 @@ string const GetExtension(string const & name)
 }
 
 
-#if 0
-namespace {
-
-class FormatExtensionsEqual : public std::unary_function<Format, bool> {
-public:
-       FormatExtensionsEqual(string const & extension)
-               : extension_(extension) {}
-       bool operator()(Format const & f) const
-       {
-               return f.extension() == extension_;
-       }
-private:
-       string extension_;
-};
-
-} // namespace anon
-#endif
-
-
 // the different filetypes and what they contain in one of the first lines
 // (dots are any characters).          (Herbert 20020131)
 // AGR Grace...
@@ -941,9 +922,6 @@ private:
 // ZIP PK...                   http://www.halyava.ru/document/ind_arch.htm
 // Z   \037\235                UNIX compress
 
-/// return the "extension" which belongs to the contents.
-/// for no knowing contents return the extension. Without
-/// an extension and unknown contents we return "user"
 string const getFormatFromContents(string const & filename)
 {
        // paranoia check
@@ -1089,33 +1067,10 @@ string const getFormatFromContents(string const & filename)
                return format;
        }
 
-       string const ext(GetExtension(filename));
        lyxerr[Debug::GRAPHICS]
                << "filetools(getFormatFromContents)\n"
                << "\tCouldn't find a known format!\n";
-#if 0
-       // This just cannot be here. It is a blatant violation of interfaces.
-       // Nothing in support should have any knowledge of internal structures
-       // in the rest of lyx. This case needs to be explictly checked for
-       // in the places where this function is called. Also it makes the
-       // function name a lie. (Lgb)
-       if (!ext.empty()) {
-               // this is ambigous if two formats have the same extension,
-               // but better than nothing
-               Formats::const_iterator cit =
-                       find_if(formats.begin(), formats.end(),
-                               FormatExtensionsEqual(ext));
-               if (cit != formats.end()) {
-                       lyxerr[Debug::GRAPHICS]
-                               << "\twill guess format from file extension: "
-                               << ext << " -> " << cit->name() << endl;
-                       return cit->name();
-               }
-       }
-#endif
-       lyxerr[Debug::GRAPHICS]
-               << "\twill use a \"user\" defined format" << endl;
-       return "user";
+       return string();
 }
 
 
@@ -1156,7 +1111,7 @@ string const MakeDisplayPath(string const & path, unsigned int threshold)
 {
        string str = path;
 
-       string const home(GetEnvPath("HOME"));
+       string const home(os::homepath());
 
        // replace /home/blah with ~/
        if (prefixIs(str, home))
@@ -1190,6 +1145,7 @@ string const MakeDisplayPath(string const & path, unsigned int threshold)
 
 bool LyXReadLink(string const & file, string & link, bool resolve)
 {
+#ifdef HAVE_READLINK
        char linkbuffer[512];
        // Should be PATH_MAX but that needs autconf support
        int const nRead = ::readlink(file.c_str(),
@@ -1202,6 +1158,9 @@ bool LyXReadLink(string const & file, string & link, bool resolve)
        else
                link = linkbuffer;
        return true;
+#else
+       return false;
+#endif
 }