Subject: Re: [PATCH 1/1] imap-send: include strbuf.h

From: Junio C Hamano <[email-masked]>
Date: Wed, 17 May 2023 09:53:09 -0700

Taylor Blau <[email-masked]> writes:

> Here's the (gross) script I wrote up to check:
>
>     git grep -l -e '[^_]xstrdup(' -e 'strbuf_[a-z0-9A-Z_]*(' \*.c |
>     while read f
>     do
>         if ! gcc -I $(pwd) -E $f | grep -q 'struct strbuf {'
>         then
>             echo "==> $f NOT OK";
>         fi
>     done

I am a bit puzzled.

What does the above prove, more than what your regular compilation
that does not fail, tells us?  Doesn't -E expand recursively, so for
the case of imap-send.c, with your usual configuration, wouldn't it
have grabbed "struct strbuf" via inclusion of <http.h> indirectly
anyway?

> Here's the list:
>
>   ==> compat/fsmonitor/fsm-listen-darwin.c NOT OK
>   ==> compat/mingw.c NOT OK
>   ==> contrib/credential/osxkeychain/git-credential-osxkeychain.c NOT OK
>   ==> pager.c NOT OK
>   ==> refs/iterator.c NOT OK
>   ==> refs/ref-cache.c NOT OK
>   ==> string-list.c NOT OK
>   ==> t/helper/test-mktemp.c NOT OK
>
> The ones in compat are OK to ignore since they both fail to compile on
> my non-Windows machine (I am missing the `<dispatch/dispatch.h>` and
> `<windows.h>` headers, respectively).
>
> The one in contrib is fine to ignore, since it has its own definition of
> xstrdup().
>
> pager.c is OK, since it only needs xstrdup(), not any other parts of the
> strbuf API. It gets a declaration of xstrdup() from git-compat-util.h
> refs/iterator.c, refs/ref-cache.c, string-list.c, and
> t/helper/test-mktemp.c are all OK for the same reason.
>
> So I think that this is the only spot we need to worry about.