transfer os::is_absolute_path() to FileName::isAbsolute().

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22187 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2007-12-17 15:15:37 +00:00
parent 908a119973
commit 96ee270933
9 changed files with 30 additions and 68 deletions

View File

@ -163,9 +163,9 @@ void LastFilePosSection::read(istream & is)
itmp >> filepos.pos; itmp >> filepos.pos;
itmp.ignore(2); // ignore ", " itmp.ignore(2); // ignore ", "
getline(itmp, fname); getline(itmp, fname);
if (!absolutePath(fname))
continue;
FileName const file(fname); FileName const file(fname);
if (!file.isAbsolute())
continue;
if (file.exists() && !file.isDirectory() if (file.exists() && !file.isDirectory()
&& lastfilepos.size() < num_lastfilepos) && lastfilepos.size() < num_lastfilepos)
lastfilepos[file] = filepos; lastfilepos[file] = filepos;
@ -240,9 +240,9 @@ void BookmarksSection::read(istream & is)
itmp >> pos; itmp >> pos;
itmp.ignore(2); // ignore ", " itmp.ignore(2); // ignore ", "
getline(itmp, fname); getline(itmp, fname);
if (!absolutePath(fname))
continue;
FileName const file(fname); FileName const file(fname);
if (!file.isAbsolute())
continue;
// only load valid bookmarks // only load valid bookmarks
if (file.exists() && !file.isDirectory() && idx <= max_bookmarks) if (file.exists() && !file.isDirectory() && idx <= max_bookmarks)
bookmarks[idx] = Bookmark(file, pit, pos, 0, 0); bookmarks[idx] = Bookmark(file, pit, pos, 0, 0);

View File

@ -140,6 +140,12 @@ bool FileName::empty() const
} }
bool FileName::isAbsolute() const
{
return d->fi.isAbsolute();
}
string FileName::absFilename() const string FileName::absFilename() const
{ {
return fromqstr(d->fi.absoluteFilePath()); return fromqstr(d->fi.absoluteFilePath());

View File

@ -55,6 +55,9 @@ public:
virtual void erase(); virtual void erase();
/// Is this filename empty? /// Is this filename empty?
bool empty() const; bool empty() const;
/// Is the filename absolute?
bool isAbsolute() const;
/// get the absolute file name in UTF-8 encoding /// get the absolute file name in UTF-8 encoding
std::string absFilename() const; std::string absFilename() const;
/** /**

View File

@ -379,8 +379,9 @@ FileName const abs_path_from_command_line(string const & command_line)
if (command_line.empty()) if (command_line.empty())
return FileName(); return FileName();
string const path = fix_dir_name(command_line); string const str_path = fix_dir_name(command_line);
return os::is_absolute_path(path) ? FileName(path) : makeAbsPath(path); FileName path(str_path);
return path.isAbsolute() ? path : makeAbsPath(str_path);
} }
@ -397,8 +398,9 @@ FileName const get_binary_path(string const & exe)
#else #else
string const exe_path = os::internal_path(exe); string const exe_path = os::internal_path(exe);
#endif #endif
if (os::is_absolute_path(exe_path)) FileName exepath(exe_path);
return FileName(exe_path); if (exepath.isAbsolute())
return exepath;
// Two possibilities present themselves. // Two possibilities present themselves.
// 1. The binary is relative to the CWD. // 1. The binary is relative to the CWD.

View File

@ -395,9 +395,10 @@ string const onlyPath(string const & filename)
// If basepath is empty, use CWD as base. // If basepath is empty, use CWD as base.
FileName const makeAbsPath(string const & relPath, string const & basePath) FileName const makeAbsPath(string const & relPath, string const & basePath)
{ {
FileName relative_path(relPath);
// checks for already absolute path // checks for already absolute path
if (os::is_absolute_path(relPath)) if (relative_path.isAbsolute())
return FileName(relPath); return relative_path;
// Copies given paths // Copies given paths
string tempRel = os::internal_path(relPath); string tempRel = os::internal_path(relPath);
@ -406,7 +407,8 @@ FileName const makeAbsPath(string const & relPath, string const & basePath)
string tempBase; string tempBase;
if (os::is_absolute_path(basePath)) FileName base_path(basePath);
if (base_path.isAbsolute())
tempBase = basePath; tempBase = basePath;
else else
tempBase = addPath(FileName::getcwd().absFilename(), basePath); tempBase = addPath(FileName::getcwd().absFilename(), basePath);
@ -487,7 +489,7 @@ string const onlyFilename(string const & fname)
/// Returns true is path is absolute /// Returns true is path is absolute
bool absolutePath(string const & path) bool absolutePath(string const & path)
{ {
return os::is_absolute_path(path); return FileName(path).isAbsolute();
} }
@ -497,7 +499,8 @@ string const expandPath(string const & path)
{ {
// checks for already absolute path // checks for already absolute path
string rTemp = replaceEnvironmentPath(path); string rTemp = replaceEnvironmentPath(path);
if (os::is_absolute_path(rTemp)) FileName abs_path(rTemp);
if (abs_path.isAbsolute())
return rTemp; return rTemp;
string temp; string temp;

View File

@ -71,10 +71,6 @@ std::string internal_path_list(std::string const & p);
*/ */
std::string latex_path(std::string const & p); std::string latex_path(std::string const & p);
/// Is the path absolute?
/// \p p is encoded in utf8.
bool is_absolute_path(std::string const & p);
/** Returns a string suitable to be passed to popen when /** Returns a string suitable to be passed to popen when
* reading a file. * reading a file.
*/ */

View File

@ -187,7 +187,7 @@ string latex_path(string const & p)
// on windows_style_tex_paths_), but we use always forward slashes, // on windows_style_tex_paths_), but we use always forward slashes,
// since it gets written into a .tex file. // since it gets written into a .tex file.
if (windows_style_tex_paths_ && is_absolute_path(p)) { if (windows_style_tex_paths_ && FileName(p).isAbsolute()) {
string dos_path = convert_path(p, PathStyle(windows)); string dos_path = convert_path(p, PathStyle(windows));
LYXERR(Debug::LATEX, "<Path correction for LaTeX> [" LYXERR(Debug::LATEX, "<Path correction for LaTeX> ["
<< p << "]->>[" << dos_path << ']'); << p << "]->>[" << dos_path << ']');
@ -198,18 +198,6 @@ string latex_path(string const & p)
} }
bool is_absolute_path(string const & p)
{
if (p.empty())
return false;
bool isDosPath = (p.length() > 1 && p[1] == ':');
bool isUnixPath = (p[0] == '/');
return isDosPath || isUnixPath;
}
// returns a string suitable to be passed to popen when // returns a string suitable to be passed to popen when
// reading a pipe // reading a pipe
char const * popen_read_mode() char const * popen_read_mode()

View File

@ -85,12 +85,6 @@ string latex_path(string const & p)
} }
bool is_absolute_path(string const & p)
{
return !p.empty() && p[0] == '/';
}
char const * popen_read_mode() char const * popen_read_mode()
{ {
return "r"; return "r";

View File

@ -240,7 +240,8 @@ string latex_path(string const & p)
// on windows_style_tex_paths_), but we use always forward slashes, // on windows_style_tex_paths_), but we use always forward slashes,
// since it gets written into a .tex file. // since it gets written into a .tex file.
if (!windows_style_tex_paths_ && is_absolute_path(p)) { FileName path(p);
if (!windows_style_tex_paths_ && path.isAbsolute()) {
string const drive = p.substr(0, 2); string const drive = p.substr(0, 2);
string const cygprefix = cygdrive + "/" + drive.substr(0, 1); string const cygprefix = cygdrive + "/" + drive.substr(0, 1);
string const cygpath = subst(subst(p, '\\', '/'), drive, cygprefix); string const cygpath = subst(subst(p, '\\', '/'), drive, cygprefix);
@ -252,37 +253,6 @@ string latex_path(string const & p)
} }
// (Claus H.) On Win32 both Unix and Win32/DOS pathnames are used.
// Therefore an absolute path could be either a pathname starting
// with a slash (Unix) or a pathname starting with a drive letter
// followed by a colon. Because a colon is not valid in pathes in Unix
// and at another location in Win32 testing just for the existance
// of the colon in the 2nd position seems to be enough!
// FIXME: Port to FileName!
bool is_absolute_path(string const & p)
{
if (p.empty())
return false;
if (p[0] == '/')
// Unix style.
return true;
if (p.length() <= 1)
return false;
if (p[1] == ':')
// 'X:\' style.
return true;
if (p[0] == '\\' && p[1] == '\\')
// Network folder style: '\\server\share'
return true;
return false;
}
// returns a string suitable to be passed to popen when // returns a string suitable to be passed to popen when
// reading a pipe // reading a pipe
char const * popen_read_mode() char const * popen_read_mode()