This is the mail archive of the cygwin-cvs@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]