[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master e1890e3: Fix slash collapsing in etags on MS-Window
From: |
Eli Zaretskii |
Subject: |
[Emacs-diffs] master e1890e3: Fix slash collapsing in etags on MS-Windows |
Date: |
Wed, 20 May 2015 15:19:31 +0000 |
branch: master
commit e1890e3e829665a54f04284f4e23bd0fd37de06b
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>
Fix slash collapsing in etags on MS-Windows
* lib-src/etags.c (canonicalize_filename) [DOS_NT]: Separate the
MS-Windows code from the Posix code, and support collapsing both
forward- and back-slashes on MS-Windows. Fixes a regression found
by the test suite.
---
lib-src/etags.c | 25 +++++++++++++++++++------
1 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 7bacbd3..0a308c1 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -6484,7 +6484,6 @@ static void
canonicalize_filename (register char *fn)
{
register char* cp;
- char sep = '/';
#ifdef DOS_NT
/* Canonicalize drive letter case. */
@@ -6492,19 +6491,33 @@ canonicalize_filename (register char *fn)
if (fn[0] != '\0' && fn[1] == ':' && ISUPPER (fn[0]))
fn[0] = lowcase (fn[0]);
- sep = '\\';
-#endif
+ /* Collapse multiple forward- and back-slashes into a single forward
+ slash. */
+ for (cp = fn; *cp != '\0'; cp++, fn++)
+ if (*cp == '/' || *cp == '\\')
+ {
+ *fn = '/';
+ while (cp[1] == '/' || cp[1] == '\\')
+ cp++;
+ }
+ else
+ *fn = *cp;
+
+#else /* !DOS_NT */
- /* Collapse multiple separators into a single slash. */
+ /* Collapse multiple slashes into a single slash. */
for (cp = fn; *cp != '\0'; cp++, fn++)
- if (*cp == sep)
+ if (*cp == '/')
{
*fn = '/';
- while (cp[1] == sep)
+ while (cp[1] == '/')
cp++;
}
else
*fn = *cp;
+
+#endif /* !DOS_NT */
+
*fn = '\0';
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master e1890e3: Fix slash collapsing in etags on MS-Windows,
Eli Zaretskii <=