///
inline void refresh()
{
-// There seems to be a bug in Qt >= 4.2.0 and < 4.5.0, that causes problems with
-// QFileInfo::refresh() on *nix. So we recreate the object in that case.
-#if defined(_WIN32) || (QT_VERSION >= 0x040500)
fi.refresh();
-#else
- fi = QFileInfo(fi.absoluteFilePath());
-#endif
}
: d(abs_filename.empty() ? new Private : new Private(abs_filename))
{
//LYXERR(Debug::FILES, "FileName(" << abs_filename << ')');
- LASSERT(empty() || isAbsolute(d->name), /**/);
+ LATTEST(empty() || isAbsolute(d->name));
}
d->fi.setFile(toqstr(name));
d->name = fromqstr(d->fi.absoluteFilePath());
//LYXERR(Debug::FILES, "FileName::set(" << name << ')');
- LASSERT(empty() || isAbsolute(d->name), /**/);
+ LATTEST(empty() || isAbsolute(d->name));
}
d->fi.setFile(QDir(rhs.d->fi.absoluteFilePath()), toqstr(suffix));
d->name = fromqstr(d->fi.absoluteFilePath());
//LYXERR(Debug::FILES, "FileName::set(" << d->name << ')');
- LASSERT(empty() || isAbsolute(d->name), /**/);
+ LATTEST(empty() || isAbsolute(d->name));
}
}
+FileName FileName::parentPath() const
+{
+ FileName path;
+ // return empty path for parent of root dir
+ // parent of empty path is empty too
+ if (empty() || d->fi.isRoot())
+ return path;
+ path.d->fi.setFile(d->fi.path());
+ path.d->name = fromqstr(path.d->fi.absoluteFilePath());
+ return path;
+}
+
+
bool FileName::isReadableFile() const
{
return !empty() && d->fi.isFile() && d->fi.isReadable();
static string createTempFile(QString const & mask)
{
- QTemporaryFile qt_tmp(mask);
+ // FIXME: This is not safe. QTemporaryFile creates a file in open(),
+ // but the file is deleted when qt_tmp goes out of scope.
+ // Therefore the next call to createTempFile() may create the
+ // same file again. To make this safe the QTemporaryFile object
+ // needs to be kept for the whole life time of the temp file name.
+ // This can be achieved by using the TempFile class.
+ QTemporaryFile qt_tmp(mask + ".XXXXXXXXXXXX");
if (qt_tmp.open()) {
string const temp_file = fromqstr(qt_tmp.fileName());
LYXERR(Debug::FILES, "Temporary file `" << temp_file << "' created.");
docstring FileName::fileContents(string const & encoding) const
{
if (!isReadableFile()) {
- LYXERR0("File '" << *this << "' is not redable!");
+ LYXERR0("File '" << *this << "' is not readable!");
return docstring();
}
if (encoding.empty() || encoding == "UTF-8")
s = QString::fromUtf8(contents.data());
else if (encoding == "ascii")
+#if (QT_VERSION < 0x050000)
s = QString::fromAscii(contents.data());
+#else
+ s = QString::fromLatin1(contents.data());
+#endif
else if (encoding == "local8bit")
s = QString::fromLocal8Bit(contents.data());
else if (encoding == "latin1")