[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: groff 1.17.2 fails to build under vax-dec-ultrix4.3

From: John David Anglin
Subject: Re: groff 1.17.2 fails to build under vax-dec-ultrix4.3
Date: Sun, 15 Jul 2001 23:11:53 -0400 (EDT)

> > /xxx/gnu/groff-1.17.2/src/libs/libgroff/tmpfile.cc:123: cannot convert `void
> >    (*)()' to `void (*)(...)' for argument `1' to `int atexit(void (*)(...))'
> > 
> > The atexit problem is a prototype problem which needs a fixincl
> > hack.
> What do you mean with `fixincl'?  Can you provide a small autoconf
> test to check the prototype of atexit (if in CC mode)?

This header problem should be fixed in gcc as it's going to be an ongoing
issue with g++.  An include hack needs to be developed to implement the
following change to the stdlib.h file installed in the gcc include
directory.  This will fix the above problem.  I will try to do this.

--- stdlib.h.orig       Sat Jul 14 21:15:43 2001
+++ stdlib.h    Sat Jul 14 21:27:34 2001
@@ -113,7 +113,7 @@
 void           abort( void );  
 int            abs( int __i );
-int            atexit( void (*__func)() );
+int            atexit( void (*__func)( void ) );
 double         atof( const char *__nptr );     
 int            atoi( const char *__nptr );
 long           atol( const char *__nptr );     

While a small autoconf check could detect the problem, it seems kind
of messy to work around.  Presumably, you want to include stdlib.h
and use atexit?

> > The system doesn't have either strdup or mkstemp.  It does have mktemp
> > although there is no prototype for it in any system include file.  The
> > man page says the function should not be used for "new" applications.
> Hehe.  What else do people on Ultrix use?  Only mkstemp() is secure.

What is available in libc is mktemp, tmpnam and tmpfile.  I don't know
enough about the security issues to make any recomendations.  You
might look at Jim Meyering's implementation of mkstemp.c in fileutils.
This is probably much better than what exists in ultrix 4.3.

> > Its ultrix prototype should be:
> > 
> > extern "C" {
> > extern char * mktemp (char *);
> > }
> What symbol do the C compilers on Ultrix use to identify the system?
> `__ultrix'?

That's fine.  Would have thought that a configure check for the declaration
of mktemp would be the way to go.

J. David Anglin                                  address@hidden
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]