Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!burl!ulysses!mhuxl!houxm!hogpc!houti!ariel!vax135!cornell!uw-beaver!tektronix!hplabs!sri-unix!gwyn@BRL-VLD.ARPA From: gwyn@BRL-VLD.ARPA@sri-unix.UUCP Newsgroups: net.lang.c Subject: Re: Shouldn't this work? Message-ID: <12753@sri-arpa.UUCP> Date: Thu, 23-Aug-84 19:14:59 EDT Article-I.D.: sri-arpa.12753 Posted: Thu Aug 23 19:14:59 1984 Date-Received: Thu, 30-Aug-84 01:11:11 EDT Lines: 19 From: Doug Gwyn (VLD/VMB) There is nothing wrong with your example. I suspect you are using an old (pre-UNIX System V) portable C compiler (e.g. UNIX System III or 4.[12]BSD); these do not correctly handle pointers to void- valued functions. Lint is built from PCC sources and has the same problem. Starting with Release 1.0 of UNIX System V, the portable C compiler and lint handled this correctly. I tried the Gould UTX C compiler on this very thing and it is better than usual, but not yet perfect. I believe that the reason that the signal() function has been misdefined for so long is that the compilers could not handle the correct type declaration. I urge the UNIX developers to FIX THIS now that their compilers are working: extern void (*signal())(); #define SIG_DFL (void (*)())0 #define SIG_IGN (void (*)())1