mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-09-20 06:49:56 +00:00
Care for a tilde in front of a path name. A path name with tilde sign at start is interpreted as relative to the current users home directory.
This commit is contained in:
parent
58e6c6c876
commit
28fd15307b
@ -89,7 +89,7 @@ struct FileName::Private
|
||||
{
|
||||
Private() {}
|
||||
|
||||
Private(string const & abs_filename) : fi(toqstr(abs_filename))
|
||||
Private(string const & abs_filename) : fi(toqstr(handleTildeName(abs_filename)))
|
||||
{
|
||||
name = fromqstr(fi.absoluteFilePath());
|
||||
fi.setCaching(fi.exists() ? true : false);
|
||||
@ -100,7 +100,6 @@ struct FileName::Private
|
||||
fi.refresh();
|
||||
}
|
||||
|
||||
|
||||
static
|
||||
bool isFilesystemEqual(QString const & lhs, QString const & rhs)
|
||||
{
|
||||
@ -108,6 +107,14 @@ struct FileName::Private
|
||||
Qt::CaseSensitive : Qt::CaseInsensitive) == 0;
|
||||
}
|
||||
|
||||
static
|
||||
string const handleTildeName(string const & name)
|
||||
{
|
||||
return name == "~" ? Package::get_home_dir().absFileName() :
|
||||
prefixIs(name, "~/") ? Package::get_home_dir().absFileName() + name.substr(1) :
|
||||
name;
|
||||
}
|
||||
|
||||
/// The absolute file name in UTF-8 encoding.
|
||||
std::string name;
|
||||
///
|
||||
@ -171,7 +178,7 @@ bool FileName::empty() const
|
||||
|
||||
bool FileName::isAbsolute(string const & name)
|
||||
{
|
||||
QFileInfo fi(toqstr(name));
|
||||
QFileInfo fi(toqstr(Private::handleTildeName(name)));
|
||||
return fi.isAbsolute();
|
||||
}
|
||||
|
||||
@ -190,7 +197,7 @@ string FileName::realPath() const
|
||||
|
||||
void FileName::set(string const & name)
|
||||
{
|
||||
d->fi.setFile(toqstr(name));
|
||||
d->fi.setFile(toqstr(Private::handleTildeName(name)));
|
||||
d->name = fromqstr(d->fi.absoluteFilePath());
|
||||
//LYXERR(Debug::FILES, "FileName::set(" << name << ')');
|
||||
LATTEST(empty() || isAbsolute(d->name));
|
||||
|
Loading…
Reference in New Issue
Block a user