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 }