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@xxxxxxxx> --- 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