[PATCH v2] git-compat-util: undefine fileno if defined
- From
- Dan McGregor <dan.mcgregor@usask.ca>
- Date
- Feb 9, 2019, 02:36 UTC
- Message-ID
- <20190209023621.75255-1-dan.mcgregor@usask.ca>
- In-Reply-To
- <20190201193004.88736-1-dan.mcgregor@usask.ca>
Commit 8dd2e88a92 ("http: support file handles for HTTP_KEEP_ERROR", 2019-01-10) introduced an implicit assumption that rewind, fileno, and fflush are functions. At least on FreeBSD fileno is not, and as such passing a void * failed.
All systems tested (FreeBSD and NetBSD) that define fineo as a macro also have a function defined. Undefine the macro on these systems so that the function is used.
Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> --- git-compat-util.h | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/git-compat-util.h b/git-compat-util.h index 29a19902aa..b5489bbcf2 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -764,6 +764,15 @@ char *gitstrdup(const char *s); extern FILE *git_fopen(const char*, const char*); #endif +/* Some systems (the various BSDs for eaxmple) define + * fileno as a macro as an optimization. All systems I + * know about also define it as a real funcion, so use + * the real function to allow passing void *s to fileno. + */ +#ifdef fileno +# undef fileno +#endif + #ifdef SNPRINTF_RETURNS_BOGUS #ifdef snprintf #undef snprintf
-- 2.20.1