threads / bug / 3637

[BUG] imap-send.c fails to build on OSX

Subject: [BUG] imap-send.c fails to build on OSX

## tl;dr

5 messages between Mar 12, 2006 and Mar 13, 2006.

replies: 4people: 2as markdown or json

Randal L. Schwartz· Mar 12, 2006, 14:44 UTC · lore
    gcc -o imap-send.o -c -g -O2 -Wall -I/sw/include -I/opt/local/include -DSHA1_HEADER='<openssl/sha.h>'  imap-send.c
    imap-send.c:376: error: static declaration of 'vasprintf' follows non-static declaration
    /usr/include/stdio.h:297: error: previous declaration of 'vasprintf' was here
    make: *** [imap-send.o] Error 1
-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
Randal L. Schwartz· Mar 12, 2006, 19:08 UTC · re: Randal L. Schwartz · lore

Re: [BUG] imap-send.c fails to build on OSX

>>>>> "Randal" == Randal L Schwartz <merlyn@stonehenge.com> writes:

Randal> gcc -o imap-send.o -c -g -O2 -Wall -I/sw/include -I/opt/local/include -DSHA1_HEADER='<openssl/sha.h>' imap-send.c Randal> imap-send.c:376: error: static declaration of 'vasprintf' follows non-static declaration Randal> /usr/include/stdio.h:297: error: previous declaration of 'vasprintf' was here Randal> make: *** [imap-send.o] Error 1

By the way, /usr/include/stdio.h near the line in question looks like:
int      vasprintf(char **, const char *, va_list) __DARWIN_LDBL_COMPAT(vasprintf);
-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
Shawn Pearce· Mar 13, 2006, 04:25 UTC · re: Randal L. Schwartz · lore

Re: [BUG] imap-send.c fails to build on OSX

Workarounds for compiling on MacOS X.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
 "Randal L. Schwartz" <merlyn@stonehenge.com> wrote:
 > 
 >     gcc -o imap-send.o -c -g -O2 -Wall -I/sw/include -I/opt/local/include -DSHA1_HEADER='<openssl/sha.h>'  imap-send.c
 >     imap-send.c:376: error: static declaration of 'vasprintf' follows non-static declaration
 >     /usr/include/stdio.h:297: error: previous declaration of 'vasprintf' was here
 >     make: *** [imap-send.o] Error 1
 This should fix the build issues on Mac OS X.  Not tested on other
 (possibly) more important platforms, like Linux.  :-)
 generate-cmdlist.sh |    2 +-
 imap-send.c         |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

base 57f4a482a7fc31e31cafd31fe23f4a4779b2c2f0 last 6854050e1cdaf1b7ab352e1d4757ff5b29a5db93

diff --git a/generate-cmdlist.sh b/generate-cmdlist.sh
index 6ee85d5..76ba49c 100755
--- a/generate-cmdlist.sh
+++ b/generate-cmdlist.sh
@@ -42,7 +42,7 @@ EOF
 while read cmd
 do
     sed -n "/NAME/,/git-$cmd/H;
-	    \$ {x; s/.*git-$cmd - \\(.*\\)/  {\"$cmd\", \"\1\"},/; p}" \
+	    \$ {x; s/.*git-$cmd - \\(.*\\)/  {\"$cmd\", \"\1\"},/; p;}" \
 	"Documentation/git-$cmd.txt"
 done
 echo "};"
diff --git a/imap-send.c b/imap-send.c
index fddaac0..376929f 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -370,7 +370,7 @@ free_generic_messages( message_t *msgs )
 	}
 }
 
-static int
+int
 vasprintf( char **strp, const char *fmt, va_list ap )
 {
 	int len;
-- 
1.2.4.g806b
Randal L. Schwartz· Mar 13, 2006, 04:29 UTC · re: Shawn Pearce · lore

Re: [BUG] imap-send.c fails to build on OSX

>>>>> "Shawn" == Shawn Pearce <spearce@spearce.org> writes:

Shawn> Workarounds for compiling on MacOS X. Shawn> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Shawn> This should fix the build issues on Mac OS X. Not tested on other Shawn> (possibly) more important platforms, like Linux. :-)

My C is a bit rusty, but wouldn't that provide a definition for vasprintf when the libc is *also* providing a definition? Might that not also break other apps that want to link with this?

Maybe the right solution is to rename this local implementation so that it can't conflict, like "git_vasprintf", or to include it only when the libc doesn't provide it.

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
Shawn Pearce· Mar 13, 2006, 05:03 UTC · re: Randal L. Schwartz · lore

Re: [BUG] imap-send.c fails to build on OSX

"Randal L. Schwartz" <merlyn@stonehenge.com> wrote:
Show 15 quoted lines
> >>>>> "Shawn" == Shawn Pearce <spearce@spearce.org> writes:
> 
> Shawn> Workarounds for compiling on MacOS X.
> Shawn> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
> 
> Shawn>  This should fix the build issues on Mac OS X.  Not tested on other
> Shawn>  (possibly) more important platforms, like Linux.  :-)
> 
> My C is a bit rusty, but wouldn't that provide a definition for vasprintf when
> the libc is *also* providing a definition?  Might that not also break other
> apps that want to link with this?
> 
> Maybe the right solution is to rename this local implementation so that it
> can't conflict, like "git_vasprintf", or to include it only when the libc
> doesn't provide it.

Your right. But I figured it wasn't a big deal since this is just an application and not library code. Nobody should be linking against it.

Perhaps the better solution is to rename the provided implementation to git_; maybe even better to move it off to the compat library area where other should-have-been-provided-by-the-OS definitions are.

-- 
Shawn.

← back to recent threads