diff options
Diffstat (limited to 'generic/tclFileName.c')
-rw-r--r-- | generic/tclFileName.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/generic/tclFileName.c b/generic/tclFileName.c index f5e7970..e3ec128 100644 --- a/generic/tclFileName.c +++ b/generic/tclFileName.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclFileName.c,v 1.37 2002/06/05 11:59:33 das Exp $ + * RCS: @(#) $Id: tclFileName.c,v 1.38 2002/09/27 00:50:10 hobbs Exp $ */ #include "tclInt.h" @@ -1356,12 +1356,31 @@ Tcl_TranslateFileName(interp, name, bufferPtr) */ if (tclPlatform == TCL_PLATFORM_WINDOWS) { +#if defined(__CYGWIN__) && defined(__WIN32__) + + extern int cygwin_conv_to_win32_path + _ANSI_ARGS_((CONST char *, char *)); + char winbuf[MAX_PATH]; + + /* + * In the Cygwin world, call conv_to_win32_path in order to use the + * mount table to translate the file name into something Windows will + * understand. Take care when converting empty strings! + */ + if (Tcl_DStringLength(bufferPtr)) { + cygwin_conv_to_win32_path(Tcl_DStringValue(bufferPtr), winbuf); + Tcl_DStringFree(bufferPtr); + Tcl_DStringAppend(bufferPtr, winbuf, -1); + } +#else /* __CYGWIN__ && __WIN32__ */ + register char *p; for (p = Tcl_DStringValue(bufferPtr); *p != '\0'; p++) { if (*p == '/') { *p = '\\'; } } +#endif /* __CYGWIN__ && __WIN32__ */ } return Tcl_DStringValue(bufferPtr); } @@ -2317,6 +2336,25 @@ TclDoGlob(interp, separators, headPtr, tail, types) * element. Add an extra slash if this is a UNC path. */ +#if defined(__CYGWIN__) && defined(__WIN32__) + { + + extern int cygwin_conv_to_win32_path + _ANSI_ARGS_((CONST char *, char *)); + char winbuf[MAX_PATH]; + + /* + * In the Cygwin world, call conv_to_win32_path in order to use + * the mount table to translate the file name into something + * Windows will understand. + */ + cygwin_conv_to_win32_path(Tcl_DStringValue(headPtr), winbuf); + Tcl_DStringFree(headPtr); + Tcl_DStringAppend(headPtr, winbuf, -1); + + } +#endif /* __CYGWIN__ && __WIN32__ */ + if (*name == ':') { Tcl_DStringAppend(headPtr, ":", 1); if (count > 1) { |