summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYaakov Selkowitz <yselkowi@redhat.com>2015-07-06 15:17:17 -0500
committerYaakov Selkowitz <yselkowi@redhat.com>2015-07-06 15:18:09 -0500
commitc9b37162799ebbfadd5d4ffba11aa9a44c4d9853 (patch)
tree6f73dfbb79a9674b2b0a361754cff9fabceb9d36
parent79e419de6261c4e04785908828096cb4d56b8680 (diff)
downloadcygnal-c9b37162799ebbfadd5d4ffba11aa9a44c4d9853.tar.gz
cygnal-c9b37162799ebbfadd5d4ffba11aa9a44c4d9853.tar.bz2
cygnal-c9b37162799ebbfadd5d4ffba11aa9a44c4d9853.zip
winsup/cygwin: rework basename redefinition handling in path.cc
This fixes the compile after commit 79e419de6261c4e04785908828096cb4d56b8680. * path.cc: Rework basename redefinition handling. Explain why.
-rw-r--r--winsup/cygwin/ChangeLog4
-rw-r--r--winsup/cygwin/path.cc10
2 files changed, 11 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 58b75e2c8..13d6fe734 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 446d746cc..89dbdabba 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