]> git.lyx.org Git - lyx.git/blobdiff - src/support/os_cygwin.cpp
Now that exceptions are allowed, handle gracefully the case where a Buffer temp direc...
[lyx.git] / src / support / os_cygwin.cpp
index 886711e89b9d9cc1f1cb6e62e632e109070ed81d..cfaeb549f6330277b3de6e5b0b2c50c06bdc3530 100644 (file)
 #include <config.h>
 
 #include "support/os.h"
-#include "support/lstrings.h"
 
-#include "debug.h"
+#include "support/FileName.h"
+#include "support/lstrings.h"
+#include "support/debug.h"
 
 #include <windows.h>
 #include <io.h>
 #include <windef.h>
-#include <shellapi.h>  
+#include <shellapi.h>
 #include <shlwapi.h>
 
 #include <sys/cygwin.h>
 
-using std::endl;
-using std::string;
-
-using lyx::support::contains;
-
-#ifdef X_DISPLAY_MISSING
-#include "support/filetools.h"
-#include "support/Package.h"
-#include "support/Path.h"
-using lyx::support::addName;
-using lyx::support::addPath;
-using lyx::support::package;
-
-string const win_fonts_truetype[] = {"cmex10", "cmmi10", "cmr10", "cmsy10",
-       "eufm10", "msam10", "msbm10", "wasy10", "esint10"};
-const int num_fonts_truetype = sizeof(win_fonts_truetype) / sizeof(*win_fonts_truetype);
-#endif
-
+using namespace std;
 
 namespace lyx {
 namespace support {
@@ -140,45 +124,11 @@ string convert_path_list(string const & p, PathStyle const & target)
 
 void os::init(int, char *[])
 {
-       // Copy cygwin environment variables to the Windows environment
-       // if they're not already there.
-
-       char **envp = environ;
-       char curval[2];
-       string var;
-       string val;
-       bool temp_seen = false;
-
-       while (envp && *envp) {
-               val = split(*envp++, var, '=');
-
-               if (var == "TEMP")
-                       temp_seen = true;
-               
-               if (GetEnvironmentVariable(var.c_str(), curval, 2) == 0
-                               && GetLastError() == ERROR_ENVVAR_NOT_FOUND) {
-                       /* Convert to Windows style where necessary */
-                       if (var == "PATH" || var == "LD_LIBRARY_PATH") {
-                               string const winpathlist =
-                                   convert_path_list(val, PathStyle(windows));
-                               if (!winpathlist.empty()) {
-                                       SetEnvironmentVariable(var.c_str(),
-                                               winpathlist.c_str());
-                               }
-                       } else if (var == "HOME" || var == "TMPDIR" ||
-                                       var == "TMP" || var == "TEMP") {
-                               string const winpath =
-                                       convert_path(val, PathStyle(windows));
-                               SetEnvironmentVariable(var.c_str(), winpath.c_str());
-                       } else {
-                               SetEnvironmentVariable(var.c_str(), val.c_str());
-                       }
-               }
-       }
-       if (!temp_seen) {
-               string const winpath = convert_path("/tmp", PathStyle(windows));
-               SetEnvironmentVariable("TEMP", winpath.c_str());
-       }
+       // Make sure that the TEMP variable is set
+       // and sync the Windows environment.
+
+       setenv("TEMP", "/tmp", false);
+       cygwin_internal(CW_SYNC_WINENV);
 }
 
 
@@ -238,12 +188,10 @@ string latex_path(string const & p)
        // on windows_style_tex_paths_), but we use always forward slashes,
        // 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));
-               LYXERR(Debug::LATEX)
-                       << "<Path correction for LaTeX> ["
-                       << p << "]->>["
-                       << dos_path << ']' << endl;
+               LYXERR(Debug::LATEX, "<Path correction for LaTeX> ["
+                       << p << "]->>[" << dos_path << ']');
                return dos_path;
        }
 
@@ -251,18 +199,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
 // reading a pipe
 char const * popen_read_mode()
@@ -323,38 +259,6 @@ bool autoOpenFile(string const & filename, auto_open_mode const mode)
                win_path.c_str(), NULL, NULL, 1)) > 32;
 }
 
-
-void addFontResources()
-{
-#ifdef X_DISPLAY_MISSING
-       // Windows only: Add BaKoMa TrueType font resources
-       string const fonts_dir = addPath(package().system_support().absFilename(), "fonts");
-       
-       for (int i = 0 ; i < num_fonts_truetype ; ++i) {
-               string const font_current = to_local8bit(from_utf8(convert_path(
-                       addName(fonts_dir, win_fonts_truetype[i] + ".ttf"),
-                       PathStyle(windows))));
-               AddFontResource(font_current.c_str());
-       }
-#endif
-}
-
-
-void restoreFontResources()
-{
-#ifdef X_DISPLAY_MISSING
-       // Windows only: Remove BaKoMa TrueType font resources
-       string const fonts_dir = addPath(package().system_support().absFilename(), "fonts");
-       
-       for(int i = 0 ; i < num_fonts_truetype ; ++i) {
-               string const font_current = to_local8bit(from_utf8(convert_path(
-                       addName(fonts_dir, win_fonts_truetype[i] + ".ttf"),
-                       PathStyle(windows))));
-               RemoveFontResource(font_current.c_str());
-       }
-#endif
-}
-
 } // namespace os
 } // namespace support
 } // namespace lyx