&& p[-1] != ':' && p[-1] != ']' && p[-1] != '>'
#endif /* VMS */
#ifdef MSDOS
- && p[-1] != ':'
+ && p[-1] != ':' && p[-1] != '\\'
#endif
) p--;
&& p[-1] != ':' && p[-1] != ']' && p[-1] != '>'
#endif /* VMS */
#ifdef MSDOS
- && p[-1] != ':'
+ && p[-1] != ':' && p[-1] != '\\'
#endif
) p--;
#else /* not VMS */
/* For Unix syntax, Append a slash if necessary */
#ifdef MSDOS
- if (out[size] != ':' && out[size] != '/')
+ if (out[size] != ':' && out[size] != '/' && out[size] != '\\')
#else
if (out[size] != '/')
#endif
But leave "/" unchanged; do not change it to "". */
strcpy (dst, src);
if (slen > 1
- && dst[slen - 1] == '/'
#ifdef MSDOS
+ && (dst[slen - 1] == '/' || dst[slen - 1] == '/')
&& dst[slen - 2] != ':'
+#else
+ && dst[slen - 1] == '/'
#endif
)
dst[slen - 1] = 0;
nm = XSTRING (name)->data;
#ifdef MSDOS
- /* firstly, strip drive name. */
+ /* First map all backslashes to slashes. */
+ dostounix_filename (nm = strcpy (alloca (strlen (nm) + 1), nm));
+
+ /* Now strip drive name. */
{
unsigned char *colon = rindex (nm, ':');
if (colon)
CHECK_STRING (string, 0);
nm = XSTRING (string)->data;
+#ifdef MSDOS
+ dostounix_filename (nm = strcpy (alloca (strlen (nm) + 1), nm));
+ substituted = !strcmp (nm, XSTRING (string)->data);
+#endif
endp = nm + XSTRING (string)->size;
/* If /~ or // appears, discard everything through first slash. */
&& ptr[1] != '.')
#endif /* VMS */
#ifdef MSDOS
- || (*ptr != 0 && ptr[1] == ':' && ptr[2] == '/')
+ || (*ptr != 0 && ptr[1] == ':' && (ptr[2] == '/' || ptr[2] == '\\'))
#endif
)
return Qt;