* \author Ruurd A. Reitsma
* \author Claus Hentschel
* \author Angus Leeming
+ * \author Enrico Forestieri
*
* Full author contact details are available in file CREDITS.
*
#include <shellapi.h>
#include <shlwapi.h>
#include <limits.h>
+#include <stdlib.h>
#include <sys/cygwin.h>
}
+bool path_prefix_is(string const & path, string const & pre)
+{
+ return path_prefix_is(const_cast<string &>(path), pre, CASE_UNCHANGED);
+}
+
+
+bool path_prefix_is(string & path, string const & pre, path_case how)
+{
+ docstring const p1 = from_utf8(path);
+ docstring const p2 = from_utf8(pre);
+ docstring::size_type const p1_len = p1.length();
+ docstring::size_type const p2_len = p2.length();
+ docstring::size_type common_len = common_path(p1, p2);
+
+ if (p2[p2_len - 1] == '/' && p1_len != p2_len)
+ ++common_len;
+
+ if (common_len != p2_len)
+ return false;
+
+ if (how == CASE_ADJUSTED && !prefixIs(path, pre)) {
+ if (p1_len < common_len)
+ path = to_utf8(p2.substr(0, p1_len));
+ else
+ path = to_utf8(p2 + p1.substr(common_len,
+ p1_len - common_len));
+ }
+
+ return true;
+}
+
+
string external_path(string const & p)
{
return convert_path(p, PathStyle(posix));
// on windows_style_tex_paths_), but we use always forward slashes,
// since it gets written into a .tex file.
- if (windows_style_tex_paths_ && FileName(p).isAbsolute()) {
+ if (windows_style_tex_paths_ && FileName::isAbsolute(p)) {
string dos_path = convert_path(p, PathStyle(windows));
LYXERR(Debug::LATEX, "<Path correction for LaTeX> ["
<< p << "]->>[" << dos_path << ']');
}
+bool is_terminal(io_channel channel)
+{
+ return isatty(channel);
+}
+
+
shell_type shell()
{
return UNIX;
win_path.c_str(), NULL, NULL, 1)) > 32;
}
+
+string real_path(string const & path)
+{
+ char rpath[PATH_MAX + 1];
+ char * result = realpath(path.c_str(), rpath);
+ return FileName::fromFilesystemEncoding(result ? rpath : path).absFilename();
+}
+
} // namespace os
} // namespace support
} // namespace lyx