Subject: gcc with openssl on Solaris and NetBSD complains about prototypes
To: None <pkgsrc-users@NetBSD.org>
From: Klaus Heinz <k.heinz.maer.sechs@onlinehome.de>
List: pkgsrc-users
Date: 03/10/2006 00:20:47
Hi,

The actual problem I am trying to solve is using gcc from pkgsrc on
Solaris/sparc 10 with OpenSSL from pkgsrc to build a program.

On NetBSD/i386 3.0, the program builds fine with the native OpenSSL but
both on Solaris and NetBSD I see errors/warnings as soon as I use OpenSSL
from pkgsrc:

  /opt/pkg/include/openssl/ui.h:220: warning: function declaration isn't
  a prototype

The function prototype in question is almost perfect, but it has a function
pointer "void (*f)()" as a parameter and the missing void in "()" breaks gcc.

I have reduced the problem to the following short piece of code:

    #include <openssl/ui.h>

    int bla=1;

  $ uname -sr
  NetBSD 3.0
  $ gcc  -Werror -Wstrict-prototypes  -c foo.c -o foo.o
  $

  $ cp -pr /usr/include/openssl .
  $ gcc  -I. -Werror -Wstrict-prototypes  -c foo.c -o foo.o 
  In file included from foo.c:1:
  openssl/ui.h:220: warning: function declaration isn't a prototype

Why does this happen as soon as I use header files from a location other
than /usr/include? The missing "void" is never there but the error only
shows with the non-standard include path.

What am I missing here?

ciao
     Klaus