Git development
 help / color / mirror / Atom feed
* strbuf name conflict on Mac OS
@ 2009-03-31 20:17 Joshua Juran
  2009-03-31 20:24 ` Johannes Schindelin
  2009-03-31 20:26 ` Brian Gernhardt
  0 siblings, 2 replies; 5+ messages in thread
From: Joshua Juran @ 2009-03-31 20:17 UTC (permalink / raw)
  To: git

Apple's OpenTransport.h from Universal Interfaces 3.4.2 defines its  
own struct strbuf, with which git's collides.

Since OpenTransport.h also defines some POSIX constants (such as  
O_NONBLOCK) as enums, it's necessary to include OpenTransport.h from  
fcntl.h (and other affected headers) so as to control the order in  
which the definitions appear in the translation unit.

This is the minimal patch:


diff --git a/strbuf.h b/strbuf.h
index 89bd36e..b8f380e 100644
--- a/strbuf.h
+++ b/strbuf.h
@@ -40,6 +40,8 @@

  #include <assert.h>

+#define strbuf git_strbuf
+
  extern char strbuf_slopbuf[];
  struct strbuf {
         size_t alloc;


Josh

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: strbuf name conflict on Mac OS
  2009-03-31 20:17 strbuf name conflict on Mac OS Joshua Juran
@ 2009-03-31 20:24 ` Johannes Schindelin
  2009-03-31 21:36   ` Jay Soffian
  2009-03-31 20:26 ` Brian Gernhardt
  1 sibling, 1 reply; 5+ messages in thread
From: Johannes Schindelin @ 2009-03-31 20:24 UTC (permalink / raw)
  To: Joshua Juran; +Cc: git

Hi,

On Tue, 31 Mar 2009, Joshua Juran wrote:

> Apple's OpenTransport.h from Universal Interfaces 3.4.2 defines its own struct
> strbuf, with which git's collides.
> 
> Since OpenTransport.h also defines some POSIX constants (such as O_NONBLOCK)
> as enums, it's necessary to include OpenTransport.h from fcntl.h (and other
> affected headers) so as to control the order in which the definitions appear
> in the translation unit.
> 
> This is the minimal patch:
> 
> 
> diff --git a/strbuf.h b/strbuf.h
> index 89bd36e..b8f380e 100644
> --- a/strbuf.h
> +++ b/strbuf.h
> @@ -40,6 +40,8 @@
> 
> #include <assert.h>
> 
> +#define strbuf git_strbuf
> +
> extern char strbuf_slopbuf[];
> struct strbuf {
>        size_t alloc;

How about this instead?

-- snip --
diff --git a/Makefile b/Makefile
index 32d6782..370c2d9 100644
--- a/Makefile
+++ b/Makefile
@@ -659,6 +659,7 @@ ifeq ($(uname_S),SCO_SV)
 	TAR = gtar
 endif
 ifeq ($(uname_S),Darwin)
+	BASIC_CFLAGS += -Dstrbuf=git_strbuf
 	NEEDS_SSL_WITH_CRYPTO = YesPlease
 	NEEDS_LIBICONV = YesPlease
 	ifeq ($(shell expr "$(uname_R)" : '[15678]\.'),2)
-- snap --

No need to let other platforms (and the C source) suffer...

Ciao,
Dscho

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: strbuf name conflict on Mac OS
  2009-03-31 20:17 strbuf name conflict on Mac OS Joshua Juran
  2009-03-31 20:24 ` Johannes Schindelin
@ 2009-03-31 20:26 ` Brian Gernhardt
  1 sibling, 0 replies; 5+ messages in thread
From: Brian Gernhardt @ 2009-03-31 20:26 UTC (permalink / raw)
  To: Joshua Juran; +Cc: git


On Mar 31, 2009, at 4:17 PM, Joshua Juran wrote:

> Apple's OpenTransport.h from Universal Interfaces 3.4.2 defines its  
> own struct strbuf, with which git's collides.
>
> Since OpenTransport.h also defines some POSIX constants (such as  
> O_NONBLOCK) as enums, it's necessary to include OpenTransport.h from  
> fcntl.h (and other affected headers) so as to control the order in  
> which the definitions appear in the translation unit.

Just to be clear, this is related to your work on LAMP under Classic  
and not OS X, correct?  If so, perhaps you need to create a compat/ 
classic_mac.h file that's included (when the correct #defines are  
seen) from git-compat-util.h in the manner of compat/ 
{cygwin,mingw}.h.  I'm assuming that this naming conflict is not the  
only such you'll find and it's better to keep platform specific tweaks  
to a single place when possible.

~~ Brian

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: strbuf name conflict on Mac OS
  2009-03-31 20:24 ` Johannes Schindelin
@ 2009-03-31 21:36   ` Jay Soffian
  2009-03-31 21:57     ` Joshua Juran
  0 siblings, 1 reply; 5+ messages in thread
From: Jay Soffian @ 2009-03-31 21:36 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Joshua Juran, git

On Tue, Mar 31, 2009 at 4:24 PM, Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
> How about this instead?
>  ifeq ($(uname_S),Darwin)
> +       BASIC_CFLAGS += -Dstrbuf=git_strbuf

Heh, wrong platform. See Joshua's other message about porting git to
Mac OS (not Mac OS X). :-)

j.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: strbuf name conflict on Mac OS
  2009-03-31 21:36   ` Jay Soffian
@ 2009-03-31 21:57     ` Joshua Juran
  0 siblings, 0 replies; 5+ messages in thread
From: Joshua Juran @ 2009-03-31 21:57 UTC (permalink / raw)
  To: Jay Soffian; +Cc: Johannes Schindelin, git

On Mar 31, 2009, at 2:36 PM, Jay Soffian wrote:

> On Tue, Mar 31, 2009 at 4:24 PM, Johannes Schindelin
> <Johannes.Schindelin@gmx.de> wrote:
>> How about this instead?
>>  ifeq ($(uname_S),Darwin)
>> +       BASIC_CFLAGS += -Dstrbuf=git_strbuf
>
> Heh, wrong platform. See Joshua's other message about porting git to
> Mac OS (not Mac OS X). :-)

That, and I'm not using make.  There's no need for this to be any  
more painful than necessary.  :-)

I've added compat/lamp.h, following Brian's suggestion.

Josh

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-03-31 21:59 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-31 20:17 strbuf name conflict on Mac OS Joshua Juran
2009-03-31 20:24 ` Johannes Schindelin
2009-03-31 21:36   ` Jay Soffian
2009-03-31 21:57     ` Joshua Juran
2009-03-31 20:26 ` Brian Gernhardt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox