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

5 messages from 2006-03-12 to 2006-03-13. Participants: Randal L. Schwartz, Shawn Pearce.
Thread: https://gitlist.dev/t/3637

## Randal L. Schwartz, 2006-03-12 14:44

Subject: [BUG] imap-send.c fails to build on OSX
Message-ID: <863bhnlo3r.fsf@blue.stonehenge.com>
URL: https://gitlist.dev/e/863bhnlo3r.fsf%40blue.stonehenge.com

```

    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, 2006-03-12 19:08

Subject: Re: [BUG] imap-send.c fails to build on OSX
Message-ID: <86k6azjxb3.fsf@blue.stonehenge.com>
URL: https://gitlist.dev/e/86k6azjxb3.fsf%40blue.stonehenge.com
In-Reply-To: <863bhnlo3r.fsf@blue.stonehenge.com>

```
>>>>> "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, 2006-03-13 04:25

Subject: Re: [BUG] imap-send.c fails to build on OSX
Message-ID: <20060313042552.GA18136@spearce.org>
URL: https://gitlist.dev/e/20060313042552.GA18136%40spearce.org
In-Reply-To: <863bhnlo3r.fsf@blue.stonehenge.com>

```
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, 2006-03-13 04:29

Subject: Re: [BUG] imap-send.c fails to build on OSX
Message-ID: <86zmjvhsru.fsf@blue.stonehenge.com>
URL: https://gitlist.dev/e/86zmjvhsru.fsf%40blue.stonehenge.com
In-Reply-To: <20060313042552.GA18136@spearce.org>

```
>>>>> "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, 2006-03-13 05:03

Subject: Re: [BUG] imap-send.c fails to build on OSX
Message-ID: <20060313050338.GA18154@spearce.org>
URL: https://gitlist.dev/e/20060313050338.GA18154%40spearce.org
In-Reply-To: <86zmjvhsru.fsf@blue.stonehenge.com>

```
"Randal L. Schwartz" <merlyn@stonehenge.com> wrote:
> >>>>> "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.

```
