chip@tct.com (Chip Salzenberg) (04/22/91)
The port of gdiff 1.15 to AIX 3.1 wasn't too hard. IBM's compiler is quirky, but it's mostly quite cool. Oddities include: 1. The system <limits.h> is just fine; don't use the one provided with gdiff. 2. System headers already define TRUE and FALSE. 3. In the extended (ANSI plus more) mode, __STDC__ is *not* defined. So features like prototypes need an additional define of ANSI. 4. Each module that uses alloca() needs "#pragma alloca" at the _very_top_ of that module. Here are the patches. Shar and enjoy. Index: diff.h *************** *** 72,77 **** #define EOS (0) ! #define FALSE (0) #define TRUE 1 #define min(a,b) ((a) <= (b) ? (a) : (b)) --- 72,84 ---- #define EOS (0) ! ! #ifdef TRUE ! #undef TRUE ! #endif ! #ifdef FALSE ! #undef FALSE ! #endif #define TRUE 1 + #define FALSE 0 #define min(a,b) ((a) <= (b) ? (a) : (b)) *************** *** 83,87 **** /* Support old-fashioned C compilers. */ ! #if defined (__STDC__) || defined (__GNUC__) #include "limits.h" #else --- 90,98 ---- /* Support old-fashioned C compilers. */ ! #if defined (__STDC__) || defined (__GNUC__) || defined(_AIX) ! # define ANSI 1 ! #endif ! ! #if ANSI #include "limits.h" #else *************** *** 91,95 **** /* Support old-fashioned C compilers. */ ! #if !defined (__STDC__) && !defined (__GNUC__) #define const #endif --- 102,106 ---- /* Support old-fashioned C compilers. */ ! #if !ANSI #define const #endif *************** *** 346,350 **** /* Declare various functions. */ ! #ifdef __STDC__ #define VOID void #else --- 357,361 ---- /* Declare various functions. */ ! #if ANSI #define VOID void #else Index: diff3.c *************** *** 19,23 **** /* Written by Randy Smith */ ! #ifdef __STDC__ #define VOID void #else --- 19,23 ---- /* Written by Randy Smith */ ! #if defined(__STDC__) || defined(__GNUC__) || defined(_AIX) #define VOID void #else Index: getopt.c *************** *** 16,20 **** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ ! #ifdef __STDC__ #define CONST const #else --- 16,25 ---- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ ! ! #ifdef _AIX ! #pragma alloca ! #endif ! ! #if defined(__STDC__) || defined(__GNUC__) || defined(_AIX) #define CONST const #else *************** *** 45,49 **** --- 50,56 ---- #include <alloca.h> #else + #ifndef _AIX char *alloca (); + #endif #endif #endif /* not __GNUC__ */ Index: getopt1.c *************** *** 18,22 **** #include "getopt.h" ! #ifdef __STDC__ #define CONST const #else --- 18,22 ---- #include "getopt.h" ! #if defined(__STDC__) || defined(__GNUC__) || defined(_AIX) #define CONST const #else Index: regex.c *************** *** 24,27 **** --- 24,30 ---- can run some tests we've already thought of. */ + #ifdef _AIX + #pragma alloca + #endif #ifdef emacs *************** *** 60,64 **** --- 63,69 ---- #include <alloca.h> #else + #ifndef _AIX char *alloca (); + #endif #endif #endif -- Brand X Industries Custodial, Refurbishing and Containment Service: When You Never, Ever Want To See It Again [tm] Chip Salzenberg <chip@tct.com>, <uunet!pdn!tct!chip>