/***************************************************************************** * JLWilkinson 25-Sep-1995 Use __VMS instead of VMS as trigger for VMS items * F.Macrides 24-Jul-1995 Don't typedef pid_t on VMS for DECC v5 or greater. */ /******************************************************************** * lindner * 3.34 * 1995/02/01 21:46:25 * /home/arcwelder/GopherSrc/CVS/gopher+/object/compatible.h,v * Exp * * Paul Lindner, University of Minnesota CIS. * * Copyright 1991, 1992 by the Regents of the University of Minnesota * see the file "Copyright" in the distribution for conditions of use. ********************************************************************* * MODULE: compatible.h * Header file to make things compatible and define stuff in compatible.c ********************************************************************* * Revision History: * compatible.h,v * Revision 3.34 1995/02/01 21:46:25 lindner * Remove f from fgetpwent prototype * * Revision 3.33 1995/02/01 21:43:55 lindner * Add ultrix to machines that don't have fgetpwent * * Revision 3.32 1994/12/15 17:30:16 lindner * A replacement fgetpwent * * Revision 3.31 1994/11/24 08:09:53 lindner * Back to regular * * Revision 3.30 1994/11/18 22:04:33 lindner * Fix for FreeWAIS on NeXT machines * * Revision 3.29 1994/10/13 05:26:58 lindner * Add case for sequents * * Revision 3.28 1994/08/19 16:27:07 lindner * mktime() addition, sequent handling * * Revision 3.27 1994/07/22 17:19:08 lindner * AUX doesn't have strcoll * * Revision 3.26 1994/07/21 22:18:07 lindner * Add NO_PUTENV, NO_STRCOLL * * Revision 3.25 1994/07/06 02:59:12 lindner * DECC has strftime() * * Revision 3.24 1994/06/29 06:40:57 lindner * ifndef NO_UNISTD_H, include it so we can use POSIX stuff * use POSIX alternatives for getdtablesize() * ifdef _POSIX_SOURCE use POSIX functions like getcwd(), etc. (Coopersmith) * * Revision 3.23 1994/05/14 04:14:40 lindner * Fix for svr4.2 on unisys * * Revision 3.22 1994/05/11 02:41:57 lindner * Automagically define NO_VFORK for SCO * * Revision 3.21 1994/04/25 03:36:17 lindner * eliminate redefinition of open to open_vmsopt() for ALPHA (Fote) * * Revision 3.20 1994/04/08 20:05:56 lindner * gcc -Wall fixes * * Revision 3.19 1994/04/01 04:44:49 lindner * Fix for VMS * * Revision 3.18 1994/03/17 04:38:21 lindner * VMS weird directory routines * * Revision 3.17 1994/03/08 07:28:42 lindner * Fix for vfork on Aix * * Revision 3.16 1994/03/08 03:23:50 lindner * Waitpid for vms * * Revision 3.15 1994/03/07 04:43:54 lindner * Add pid_t, vfork * * Revision 3.14 1993/11/05 07:24:15 lindner * Fixes for NeXTs * * Revision 3.13 1993/10/27 18:51:12 lindner * Updates for VMS files/records * * Revision 3.12 1993/09/28 19:23:56 lindner * update for VMS getwd() * * Revision 3.11 1993/08/16 19:40:58 lindner * Fixes for Sequent Dynix * * Revision 3.10 1993/08/03 20:57:42 lindner * Really fix it for hocky pucks * * Revision 3.9 1993/08/03 06:43:48 lindner * Compatibility fix for hpux and seteguid * * Revision 3.8 1993/07/27 05:30:29 lindner * Mondo Debug overhaul from Mitra * * Revision 3.7 1993/07/20 23:33:27 lindner * Fix for NeXTs and pid_t * * Revision 3.6 1993/07/14 20:37:40 lindner * Fixes for VMS * * Revision 3.5 1993/07/07 19:29:19 lindner * Added LINGER compatibility option * * Revision 3.4 1993/06/22 05:53:19 lindner * Added getdtablesize() option * * Revision 3.3 1993/06/15 06:12:14 lindner * Updates for Solaris * * Revision 3.2 1993/04/15 21:36:33 lindner * Emulation of geteuid calls for HPs * * Revision 3.1.1.1 1993/02/11 18:03:05 lindner * Gopher+1.2beta release * * Revision 1.7 1993/01/14 21:58:02 lindner * Added #define that makes compatible compile fine under UCX * * Revision 1.6 1993/01/11 19:56:20 lindner * Fixed prototype for strcasecmp * * Revision 1.5 1993/01/09 02:25:57 lindner * Added definition for SIG_ERR for systems that don't have it. * * Revision 1.4 1993/01/08 23:17:20 lindner * Added more mods for VMS. * * Revision 1.3 1993/01/06 23:09:44 lindner * Added definition for AIX370 for strdup() * * Revision 1.2 1992/12/31 04:42:02 lindner * Changes for VMS, new switch NO_STRCASECMP * * Revision 1.1 1992/12/10 23:27:52 lindner * gopher 1.1 release * * *********************************************************************/ /* * Protoize a little */ #ifndef compatible_h_ #define compatible_h_ /******************** get Unix standard definitions **/ #if defined(NO_UNISTD_H) || defined(NeXT) || defined(__VMS) # undef NO_UNISTD_H # define NO_UNISTD_H 1 #else # include #endif /******************** for SIG_ERR **/ #include #if !defined(SIG_ERR) && defined(sequent) && defined(BADSIG) # define SIG_ERR BADSIG #endif #ifndef SIG_ERR # if defined(sequent) && defined(BADSIG) # define SIG_ERR BADSIG # else # ifdef __STDC__ # define SIG_ERR ((void (*) (int))-1) # else # define SIG_ERR ((void (*) ())-1) # endif /* __STDC__ */ # endif #endif /* SIG_ERR */ /******************** for strstr() **/ #if defined(NOSTRSTR) || (defined(mips) && !defined(ultrix)) || defined(sequent) || defined(n16) || defined(sony_news) #undef NOSTRSTR #define NOSTRSTR char *strstr(); #endif /******************** for tempnam() **/ #if defined(__convex__) || defined(NeXT) || defined(sequent) || defined(__VMS) || defined(NO_TEMPNAM) #undef NO_TEMPNAM #define NO_TEMPNAM char *tempnam(); #endif /******************************** for strdup() **/ #if defined(mips) || defined(ultrix) || defined(NeXT) || defined(sony_news) || defined(sequent) || defined (__VMS) || defined(_AUX_SOURCE) || defined(_AIX370) || defined(NO_STRDUP) # undef NO_STRDUP # define NO_STRDUP char *strdup(); #endif /********************** For bzero()/bcopy() etc */ #if defined(USG) || defined(NO_BZERO) || defined(_SEQUENT_) || defined(__VMS) || defined(__svr4__) #define bzero(a,b) memset(a,'\0',b) #define bcopy(a,b,c) memcpy(b,a,c) #endif /********************* For getwd() */ #if defined(M_XENIX) || defined(hpux) || defined(USG) || defined(NO_GETWD) || defined(__svr4__) || defined(__VMS) || defined(_POSIX_SOURCE) # define getwd(a) getcwd(a,sizeof(a)) #endif /********************* For tzset() */ #if defined(NO_TZSET) || defined(sequent) #undef NO_TZSET #define NO_TZSET void tzset(); #endif /******************** For strcasecmp() */ #if defined(NO_STRCASECMP) || defined(__VMS) || defined(__USLC__) # undef NO_STRCASECMP # define NO_STRCASECMP int strcasecmp(); #endif /******************** For geteuid() */ #if defined(NO_SETEUID) || defined (__hpux) # undef NO_SETEUID # define NO_SETEUID #define seteuid(x) setresuid(-1,x,-1) #define setegid(x) setresgid(-1,x,-1) #endif #if defined(_SEQUENT_) # undef NO_SETEUID # define NO_SETEUID #define seteuid(x) setreuid(-1,x) #define setegid(x) setregid(-1,x) #endif /********************* For getdtablesize() **/ #if defined(NO_GETDTABLESIZE) || defined(_POSIX_SOURCE) || defined(_XOPEN_SOURCE) #undef NO_GETDTABLESIZE # ifdef _SC_OPEN_MAX /* prefered POSIX method */ # define getdtablesize() sysconf(_SC_OPEN_MAX) # else /* if !defined(systems_without_limits.h) */ # include # ifdef _POSIX_OPEN_MAX /* alternate POSIX method */ # define getdtablesize() (_POSIX_OPEN_MAX) # else # define NO_GETDTABLESIZE 1 int getdtablesize(); # endif # endif #endif /********************* For VMS */ #if defined(__VMS) # include # define popen(a,b) fopen(a,b) # define pclose(a) fclose(a) # define unlink delete # define fopen fopen_VMSopt FILE *fopen_VMSopt(); #ifndef __ALPHA # define open open_VMSopt int open_VMSopt(); #endif # if defined(UCX) # define closenet close # endif FILE *fopen_VAR(); FILE *fopen_FIX(); #else /* non-VMS systems don't need a special netclose either */ # define closenet close #endif /** VMS **/ /********** For linger setsockopt() ***/ #if defined(linux) || defined(_SEQUENT_) # define NO_LINGER #endif /********** For NeXTs **************/ #ifdef NeXT # define ANSI_LIKE /** freeWAIS bastards! **/ #endif /********* Systems that can't set proctitles *******/ #if defined(_AUX_SOURCE) || defined(__svr4__) || defined(apollo) # undef SETPROCTITLE #endif /********* Fix for old stat.h stuff on bsd (I think) ******/ #if defined(NeXT) || defined(sequent) || defined(NO_NEWSTATDOTH) #define S_IXUSR S_IEXEC #endif #if defined(NO_VFORK) || defined(_AUX_SOURCE) || defined(sgi) || defined(_AIX) || defined(M_XENIX) # define vfork fork #endif #ifdef __VMS #include #ifndef __DEV_T typedef int pid_t; #endif #endif #if defined(NeXT) || defined(sequent) || defined(NO_PID_T) typedef int pid_t; #endif /********* strftime() - should be present in ANSI C libraries ******/ #ifndef __DECC #if defined(sequent) || defined(NO_STRFTIME) || defined(__VMS) # undef NO_STRFTIME # define NO_STRFTIME int strftime(); #endif #endif /* __DECC */ /********* mktime() - should be present in ANSI C libraries ******/ #if defined(NO_MKTIME) || defined(sequent) # undef NO_MKTIME # define NO_MKTIME #endif /********* strcoll - should be present in ANSI C libraries ******/ #if defined(NO_STRCOLL) || defined(sequent) || defined(__VMS) || defined(_AUX_SOURCE) # define strcoll strcmp #endif /******** putenv, in most systems except old BSD... *********/ #if defined(NO_PUTENV) || defined(NeXT) || defined(sequent) # undef NO_PUTENV # define NO_PUTENV int putenv(); #endif /******* fgetpwent(), sortof non-standard BSD derived fcn *******/ #if defined(NO_FGETPWENT) || defined(_AIX) || defined(ultrix) # undef NO_FGETPWENT # define NO_FGETPWENT # include struct passwd *fgetpwent(); #endif #endif /* compatible_h_ */ .