Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 May 2010 12:52:04 +0200
From:      Gabor PALI <pgj@FreeBSD.org>
To:        hackers@freebsd.org
Subject:   How to Include Headers for siginterrupt() and vsnprintf()
Message-ID:  <AANLkTinyDxZ19omwff0g4oF7Vf5FWR-M5p-_wP3WQ-J3@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hello there,

I have some sources developed on non-FreeBSD systems (the sources of
the run-time system for the Glasgow Haskell Compiler [1]) which try to
#include signal.h to use siginterrupt() and stdio.h to use
vsnprintf().  The problem is that they #define (or not) some constants
which makes them hidden so the prototypes are not seen by the
compiler.  How to cope with this kind of sources?  My naive solution
is to do something like that (rts/posix/Signals.c):

#if defined(HAVE_SIGNAL_H)
# if defined(freebsd_HOST_OS)
extern int siginterrupt(int,int);
# endif
# include <signal.h>
#endif

and that (rts/eventlog/EventLog.c):

#ifdef freebsd_HOST_OS
int vsnprintf(char * __restrict, size_t, const char *
__restrict,__va_list) __printflike(3, 0);
#endif


Thank you for the hints in advance.

Cheers,
:g


[1] http://darcs.haskell.org/cgi-bin/darcsweb.cgi?r=ghc;a=tree



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTinyDxZ19omwff0g4oF7Vf5FWR-M5p-_wP3WQ-J3>