]> git.lyx.org Git - lyx.git/blobdiff - src/support/filetools.cpp
* get rid of support::absolutePath()
[lyx.git] / src / support / filetools.cpp
index 8b9258cfe15f8d48e78419aa618e9572df161c25..a7cf272e6ba3cce252bd6b368cbf1c7c18e8774b 100644 (file)
 #include "support/environment.h"
 #include "support/gettext.h"
 #include "support/lstrings.h"
-#include "support/lyxlib.h"
 #include "support/os.h"
 #include "support/Package.h"
 #include "support/Path.h"
 #include "support/Systemcall.h"
+#include "support/qstring_helpers.h"
+
+#include <QDir>
 
 #include <boost/assert.hpp>
 #include <boost/regex.hpp>
 #include <fstream>
 #include <sstream>
 
-using std::endl;
-using std::getline;
-using std::make_pair;
-using std::string;
-using std::ifstream;
-using std::ostringstream;
-using std::vector;
-using std::pair;
+using namespace std;
 
 namespace lyx {
 namespace support {
@@ -326,14 +321,15 @@ static FileName createTmpDir(FileName const & tempdir, string const & mask)
        LYXERR(Debug::FILES, "createTmpDir: tempdir=`" << tempdir << "'\n"
                << "createTmpDir:    mask=`" << mask << '\'');
 
-       FileName const tmpfl(tempName(tempdir, mask));
-       // lyx::tempName actually creates a file to make sure that it
+       FileName const tmpfl = FileName::tempName(tempdir.absFilename()
+               + "/" + mask);
+       // FileName::tempName actually creates a file to make sure that it
        // stays unique. So we have to delete it before we can create
        // a dir with the same name. Note also that we are not thread
        // safe because of the gap between unlink and mkdir. (Lgb)
        tmpfl.removeFile();
 
-       if (tmpfl.empty() || mkdir(tmpfl, 0700)) {
+       if (tmpfl.empty() || !tmpfl.createDirectory(0700)) {
                lyxerr << "LyX could not create the temporary directory '"
                       << tmpfl << "'" << endl;
                return FileName();
@@ -352,7 +348,7 @@ string const createBufferTmpDir()
                package().temp_dir().absFilename() + "/lyx_tmpbuf" +
                convert<string>(count++);
 
-       if (mkdir(FileName(tmpfl), 0777)) {
+       if (!FileName(tmpfl).createDirectory(0777)) {
                lyxerr << "LyX could not create the temporary directory '"
                       << tmpfl << "'" << endl;
                return string();
@@ -366,7 +362,7 @@ FileName const createLyXTmpDir(FileName const & deflt)
        if (deflt.empty() || deflt.absFilename() == "/tmp")
                return createTmpDir(FileName("/tmp"), "lyx_tmpdir");
 
-       if (!mkdir(deflt, 0777)) 
+       if (deflt.createDirectory(0777)) 
                return deflt;
 
        if (deflt.isDirWritable()) {
@@ -399,9 +395,10 @@ string const onlyPath(string const & filename)
 // If basepath is empty, use CWD as base.
 FileName const makeAbsPath(string const & relPath, string const & basePath)
 {
+       FileName relative_path(relPath);
        // checks for already absolute path
-       if (os::is_absolute_path(relPath))
-               return FileName(relPath);
+       if (relative_path.isAbsolute())
+               return relative_path;
 
        // Copies given paths
        string tempRel = os::internal_path(relPath);
@@ -410,10 +407,11 @@ FileName const makeAbsPath(string const & relPath, string const & basePath)
 
        string tempBase;
 
-       if (os::is_absolute_path(basePath))
+       FileName base_path(basePath);
+       if (base_path.isAbsolute())
                tempBase = basePath;
        else
-               tempBase = addPath(getcwd().absFilename(), basePath);
+               tempBase = addPath(FileName::getcwd().absFilename(), basePath);
 
        // Handle /./ at the end of the path
        while (suffixIs(tempBase, "/./"))
@@ -488,20 +486,14 @@ string const onlyFilename(string const & fname)
 }
 
 
-/// Returns true is path is absolute
-bool absolutePath(string const & path)
-{
-       return os::is_absolute_path(path);
-}
-
-
 // Create absolute path. If impossible, don't do anything
 // Supports ./ and ~/. Later we can add support for ~logname/. (Asger)
 string const expandPath(string const & path)
 {
        // checks for already absolute path
        string rTemp = replaceEnvironmentPath(path);
-       if (os::is_absolute_path(rTemp))
+       FileName abs_path(rTemp);
+       if (abs_path.isAbsolute())
                return rTemp;
 
        string temp;
@@ -511,7 +503,7 @@ string const expandPath(string const & path)
        rTemp = split(rTemp, temp, '/');
 
        if (temp == ".")
-               return getcwd().absFilename() + '/' + rTemp;
+               return FileName::getcwd().absFilename() + '/' + rTemp;
 
        if (temp == "~")
                return package().home_dir().absFilename() + '/' + rTemp;
@@ -891,7 +883,7 @@ string const readBB_from_PSFile(FileName const & file)
 
        static boost::regex bbox_re(
                "^%%BoundingBox:\\s*([[:digit:]]+)\\s+([[:digit:]]+)\\s+([[:digit:]]+)\\s+([[:digit:]]+)");
-       std::ifstream is(file_.toFilesystemEncoding().c_str());
+       ifstream is(file_.toFilesystemEncoding().c_str());
        while (is) {
                string s;
                getline(is,s);
@@ -935,38 +927,5 @@ int compare_timestamps(FileName const & file1, FileName const & file2)
 }
 
 
-std::vector<FileName> dirList(FileName const & filename, std::string const & ext)
-{
-       std::vector<FileName> dirlist;
-       if (!filename.isDirectory()) {
-               LYXERR0("Directory '" << filename << "' does not exist!");
-               return dirlist;
-       }
-
-       QDir dir(toqstr(filename.absoluteFilePath()));
-
-       if (!ext.empty()) {
-               QString filter;
-               switch (ext[0]) {
-               case '.': filter = "*" + toqstr(ext); break;
-               case '*': filter = toqstr(ext); break;
-               default: filter = "*." + toqstr(ext);
-               }
-               dir.setNameFilters(QStringList(filter));
-               LYXERR(Debug::FILES, "filtering on extension "
-                       << fromqstr(filter) << " is requested.");
-       }
-
-       QFileInfoList list = dir.entryInfoList();
-       for (int i = 0; i != list.size(); ++i) {
-               FileName fi(fromqstr(list.at(i).absoluteFilePath()));
-               dirlist.push_back(fi);
-               LYXERR(Debug::FILES, "found file " << fi);
-       }
-
-       return dirlist;
-}
-
-
 } //namespace support
 } // namespace lyx