In src/support/os_cygwin.C path styles are converted (when needed) from
one style to another. I discovered a couple of cases in which an
unnecessary conversion takes place.

The default output path style in external_path is windows because this
function is also used when adding fonts though a native Windows API call.
However, this call is not made in an X11 build, so it is not necessary
that the output path style is windows.

I have no commit priveleges, so could some kind soul apply this patch
on my behalf (I'll take all the blame for it;-)) ?

Log:
Small fixes for cygwin.

        * os_cygwin.C (is_windows_path): avoid unnecessary conversion
        when path is relative
        (convert_path_list): avoid unnecessary conversion when path
        list is empty
        (external_path): for an X11 build it is not necessary that
        the output path style is windows

-- 
Enrico
Index: src/support/os_cygwin.C
===================================================================
--- src/support/os_cygwin.C     (revision 14851)
+++ src/support/os_cygwin.C     (working copy)
@@ -55,8 +55,7 @@ bool is_posix_path(string const & p)
 
 bool is_windows_path(string const & p)
 {
-       return p.empty() ||
-               (!contains(p, '\\') && (p.length() <= 1 || p[1] == ':'));
+       return p.empty() || (!contains(p, '\\') && p[0] != '/');
 }
 
 
@@ -87,6 +86,9 @@ string convert_path(string const & p, Pa
 
 string convert_path_list(string const & p, PathStyle const & target)
 {
+       if (p.empty())
+               return p;
+
        char const * const pc = p.c_str();
        PathStyle const actual = cygwin_posix_path_list_p(pc) ? posix : windows;
 
@@ -186,7 +188,11 @@ string::size_type common_path(string con
 
 string external_path(string const & p)
 {
+#ifdef X_DISPLAY_MISSING
        return convert_path(p, PathStyle(windows));
+#else
+       return convert_path(p, PathStyle(posix));
+#endif
 }
 
 
Index: src/support/ChangeLog
===================================================================
--- src/support/ChangeLog       (revision 14851)
+++ src/support/ChangeLog       (working copy)
@@ -1,3 +1,11 @@
+2006-08-30  Enrico Forestieri  <[EMAIL PROTECTED]>
+       * os_cygwin.C (is_windows_path): avoid unnecessary conversion
+       when path is relative
+       (convert_path_list): avoid unnecessary conversion when path
+       list is empty
+       (external_path): for an X11 build it is not necessary that
+       the output path style is windows
+
 2006-06-27  Enrico Forestieri  <[EMAIL PROTECTED]>
 
        * os.h: rename cygwin_path_fix as windows_style_tex_paths.
Index: src/support/os_cygwin.C
===================================================================
--- src/support/os_cygwin.C     (revision 14851)
+++ src/support/os_cygwin.C     (working copy)
@@ -55,8 +55,7 @@ bool is_posix_path(string const & p)
 
 bool is_windows_path(string const & p)
 {
-       return p.empty() ||
-               (!contains(p, '\\') && (p.length() <= 1 || p[1] == ':'));
+       return p.empty() || (!contains(p, '\\') && p[0] != '/');
 }
 
 
@@ -87,6 +86,9 @@ string convert_path(string const & p, Pa
 
 string convert_path_list(string const & p, PathStyle const & target)
 {
+       if (p.empty())
+               return p;
+
        char const * const pc = p.c_str();
        PathStyle const actual = cygwin_posix_path_list_p(pc) ? posix : windows;
 
@@ -186,7 +188,11 @@ string::size_type common_path(string con
 
 string external_path(string const & p)
 {
+#ifdef X_DISPLAY_MISSING
        return convert_path(p, PathStyle(windows));
+#else
+       return convert_path(p, PathStyle(posix));
+#endif
 }
 
 

Reply via email to