]> git.lyx.org Git - lyx.git/blobdiff - src/support/os_win32.C
* lyxfunctional.h: delete compare_memfun and helper classes
[lyx.git] / src / support / os_win32.C
index f3f8026c2b23f10ff8ec7738cd3cd51e991e1b0a..37dc5999477ff37b9082052b560e7d1aaa7b73b0 100644 (file)
@@ -1,6 +1,15 @@
-// os_win32.C copyright "Ruurd A. Reitsma" <R.A.Reitsma@wbmt.tudelft.nl>
+/**
+ * \file os_win32.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Ruurd A. Reitsma
+ *
+ * Full author contact details are available in file CREDITS.
+ *
+ * Various OS specific functions
+ */
 
-// Various OS specific functions
 #include <config.h>
 
 #include "os.h"
 #include <io.h>
 #include <sys/cygwin.h>
 
+using namespace lyx::support;
+using std::endl;
+using std::string;
 
-string os::binpath_ = string();
-string os::binname_ = string();
-string os::tmpdir_ = string();
-os::shell_type os::_shell = os::UNIX;
-unsigned long os::cp_ = 0;
 
-using std::endl;
+namespace {
+
+string binpath_;
+string binname_;
+string tmpdir_;
+
+}
+
 
-void os::init(int * /* argc */, char ** argv[]) {
+namespace lyx {
+namespace support {
+namespace os {
+
+void init(int * /* argc */, char ** argv[])
+{
        static bool initialized = false;
-       if (initialized) return;
+       if (initialized)
+               return;
        initialized = true;
+
        string tmp = *argv[0];
        binname_ = OnlyFilename(tmp);
        tmp = ExpandPath(tmp); // This expands ./ and ~/
@@ -45,44 +66,58 @@ void os::init(int * /* argc */, char ** argv[]) {
        binpath_ = tmp;
 }
 
-void os::warn(string mesg) {
+
+void warn(string const & mesg)
+{
        MessageBox(0, mesg.c_str(), "LyX error",
        MB_OK|MB_ICONSTOP|MB_SYSTEMMODAL);
-       }
+}
+
 
-string os::current_root() {
-       return string("/");
+string current_root()
+{
+       return "/";
 }
 
-string::size_type os::common_path(string const &p1, string const &p2) {
-       string::size_type i = 0,
-                       p1_len = p1.length(),
-                       p2_len = p2.length();
-       while (i < p1_len && i < p2_len && uppercase(p1[i]) == uppercase(p2[i])) ++i;
+
+string::size_type common_path(string const & p1, string const & p2)
+{
+       string::size_type i = 0;
+       string::size_type       p1_len = p1.length();
+       string::size_type       p2_len = p2.length();
+       while (i < p1_len && i < p2_len && uppercase(p1[i]) == uppercase(p2[i]))
+               ++i;
        if ((i < p1_len && i < p2_len)
            || (i < p1_len && p1[i] != '/' && i == p2_len)
-           || (i < p2_len && p2[i] != '/' && i == p1_len)) {
-               if (i) --i;     // here was the last match
-               while (i && p1[i] != '/') --i;
+           || (i < p2_len && p2[i] != '/' && i == p1_len))
+       {
+               if (i)
+                       --i;     // here was the last match
+               while (i && p1[i] != '/')
+                       --i;
        }
        return i;
 }
 
-string os::slashify_path(string p) {
-               return subst(p, '\\', '/');
+
+string slashify_path(string const & p)
+{
+       return subst(p, '\\', '/');
 }
 
-string os::external_path(string const & p) {
-       string dos_path=p;
+
+string external_path(string const & p)
+{
+       string dos_path = p;
        if (is_absolute_path(p)) {
                char dp[255];
                cygwin_conv_to_full_win32_path(p.c_str(), dp);
-               dos_path=subst(dp,'\\','/');
+               dos_path = subst(dp,'\\','/');
        }
        lyxerr[Debug::LATEX]
                << "<Win32 path correction> ["
                << p << "]->>["
-               << dos_path << "]" << endl;
+               << dos_path << ']' << endl;
        return dos_path;
 }
 
@@ -91,24 +126,26 @@ string os::external_path(string const & p) {
 // files are mentioned in Win32/DOS syntax. Because LyX uses the dep file
 // entries to check if any file has been changed we must retranslate
 // the Win32/DOS pathnames into Cygwin pathnames.
-string os::internal_path(string const &p) {
+string internal_path(string const & p)
+{
        char pp[256];
        cygwin_conv_to_posix_path(p.c_str(), pp);
        string const posix_path = MakeLatexName(pp);
        lyxerr[Debug::DEPEND]
                << "<Win32 path correction> ["
                << p << "]->>["
-               << posix_path << "]" << endl;
+               << posix_path << ']' << endl;
        return posix_path;
 }
 
+
 // (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!
-bool os::is_absolute_path(string const & p)
+bool is_absolute_path(string const & p)
 {
        if (p.empty())
                return false;
@@ -116,19 +153,47 @@ bool os::is_absolute_path(string const & p)
        bool isDosPath = (p.length() > 1 && p[1] == ':');
        bool isUnixPath = (p[0] == '/');
 
-       return isDosPath | isUnixPath;
+       return isDosPath || isUnixPath;
 }
 
-// returns a string suitable to be passed to fopen when
-// reading a file
-char const * os::read_mode()
-{
-       return "rb";
-}
 
 // returns a string suitable to be passed to popen when
 // reading a pipe
-char const * os::popen_read_mode()
+char const * popen_read_mode()
 {
        return "r";
 }
+
+
+string binpath()
+{
+       return binpath_;
+}
+
+
+string binname()
+{
+       return binname_;
+}
+
+
+void setTmpDir(string const & p)
+{
+       tmpdir_ = p;
+}
+
+
+string getTmpDir()
+{
+       return tmpdir_;
+}
+
+
+shell_type shell()
+{
+       return UNIX;
+}
+
+} // namespace os
+} // namespace support
+} // namespace lyx