This is the mail archive of the
cygwin-cvs@cygwin.com
mailing list for the Cygwin project.
[newlib-cygwin] winsup/cygwin: rework basename redefinition handling in path.cc
- From: Yaakov Selkowitz <yselkowitz at sourceware dot org>
- To: cygwin-cvs at sourceware dot org
- Date: 6 Jul 2015 20:18:28 -0000
- Subject: [newlib-cygwin] winsup/cygwin: rework basename redefinition handling in path.cc
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=c9b37162799ebbfadd5d4ffba11aa9a44c4d9853
commit c9b37162799ebbfadd5d4ffba11aa9a44c4d9853
Author: Yaakov Selkowitz <yselkowi@redhat.com>
Date: Mon Jul 6 15:17:17 2015 -0500
winsup/cygwin: rework basename redefinition handling in path.cc
This fixes the compile after commit 79e419de6261c4e04785908828096cb4d56b8680.
* path.cc: Rework basename redefinition handling. Explain why.
Diff:
---
winsup/cygwin/ChangeLog | 4 ++++
winsup/cygwin/path.cc | 10 +++++++---
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 58b75e2..13d6fe7 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+2015-07-06 Yaakov Selkowitz <yselkowi@redhat.com>
+
+ * path.cc: Rework basename redefinition handling. Explain why.
+
2015-07-05 Corinna Vinschen <corinna@vinschen.de>
* dcrt0.cc (CYGWIN_GUARD): Remove.
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index 446d746..89dbdab 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -48,7 +48,12 @@
c: means c:\.
*/
-#define _BASENAME_DEFINED
+/* This file includes both the XPG and GNU basename functions, with the
+ former exported as "basename" for ABI compatibility but the latter
+ declared as such for source compatibility with glibc. This tells
+ <string.h> not to declare the GNU variant in order to prevent a conflicting
+ declaration error with the XPG variant implemented herein. */
+#define basename basename
#include "winsup.h"
#include "miscfuncs.h"
#include <ctype.h>
@@ -70,6 +75,7 @@
#include <ntdll.h>
#include <wchar.h>
#include <wctype.h>
+#undef basename
suffix_info stat_suffixes[] =
{
@@ -4739,8 +4745,6 @@ out:
return buf;
}
-#undef basename
-
/* No need to be reentrant or thread-safe according to SUSv3.
/ and \\ are treated equally. Leading drive specifiers are
kept intact as far as it makes sense. Everything else is