1 #ifndef PRIVATE_H 2 3 #define PRIVATE_H 4 5 /* 6 ** This file is in the public domain, so clarified as of 7 ** June 5, 1996 by Arthur David Olson (arthur_david_olson (at) nih.gov). 8 */ 9 10 /* 11 ** This header is for use ONLY with the time conversion code. 12 ** There is no guarantee that it will remain unchanged, 13 ** or that it will remain at all. 14 ** Do NOT copy it to any system include directory. 15 ** Thank you! 16 */ 17 18 /* 19 ** ID 20 */ 21 22 #ifndef lint 23 #ifndef NOID 24 static char privatehid[] = "@(#)private.h 7.43"; 25 #endif /* !defined NOID */ 26 #endif /* !defined lint */ 27 28 /* 29 ** Defaults for preprocessor symbols. 30 ** You can override these in your C compiler options, e.g. `-DHAVE_ADJTIME=0'. 31 */ 32 33 #ifndef HAVE_ADJTIME 34 #define HAVE_ADJTIME 1 35 #endif /* !defined HAVE_ADJTIME */ 36 37 #ifndef HAVE_GETTEXT 38 #define HAVE_GETTEXT 0 39 #endif /* !defined HAVE_GETTEXT */ 40 41 #ifndef HAVE_SETTIMEOFDAY 42 #define HAVE_SETTIMEOFDAY 3 43 #endif /* !defined HAVE_SETTIMEOFDAY */ 44 45 #ifndef HAVE_STRERROR 46 #define HAVE_STRERROR 0 47 #endif /* !defined HAVE_STRERROR */ 48 49 #ifndef HAVE_UNISTD_H 50 #define HAVE_UNISTD_H 1 51 #endif /* !defined HAVE_UNISTD_H */ 52 53 #ifndef HAVE_UTMPX_H 54 #define HAVE_UTMPX_H 0 55 #endif /* !defined HAVE_UTMPX_H */ 56 57 #ifndef LOCALE_HOME 58 #define LOCALE_HOME "/usr/lib/locale" 59 #endif /* !defined LOCALE_HOME */ 60 61 /* 62 ** Nested includes 63 */ 64 65 #include "sys/types.h" /* for time_t */ 66 #include "stdio.h" 67 #include "errno.h" 68 #include "string.h" 69 #include "limits.h" /* for CHAR_BIT */ 70 #include "time.h" 71 #include "stdlib.h" 72 73 #if HAVE_GETTEXT - 0 74 #include "libintl.h" 75 #endif /* HAVE_GETTEXT - 0 */ 76 77 #if HAVE_UNISTD_H - 0 78 #include "unistd.h" /* for F_OK and R_OK */ 79 #endif /* HAVE_UNISTD_H - 0 */ 80 81 #if !(HAVE_UNISTD_H - 0) 82 #ifndef F_OK 83 #define F_OK 0 84 #endif /* !defined F_OK */ 85 #ifndef R_OK 86 #define R_OK 4 87 #endif /* !defined R_OK */ 88 #endif /* !(HAVE_UNISTD_H - 0) */ 89 90 /* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */ 91 #define is_digit(c) ((unsigned)(c) - '0' <= 9) 92 93 /* 94 ** Workarounds for compilers/systems. 95 */ 96 97 /* 98 ** SunOS 4.1.1 cc lacks const. 99 */ 100 101 #ifndef const 102 #ifndef __STDC__ 103 #define const 104 #endif /* !defined __STDC__ */ 105 #endif /* !defined const */ 106 107 /* 108 ** SunOS 4.1.1 cc lacks prototypes. 109 */ 110 111 #ifndef P 112 #ifdef __STDC__ 113 #define P(x) x 114 #endif /* defined __STDC__ */ 115 #ifndef __STDC__ 116 #define P(x) () 117 #endif /* !defined __STDC__ */ 118 #endif /* !defined P */ 119 120 /* 121 ** SunOS 4.1.1 headers lack EXIT_SUCCESS. 122 */ 123 124 #ifndef EXIT_SUCCESS 125 #define EXIT_SUCCESS 0 126 #endif /* !defined EXIT_SUCCESS */ 127 128 /* 129 ** SunOS 4.1.1 headers lack EXIT_FAILURE. 130 */ 131 132 #ifndef EXIT_FAILURE 133 #define EXIT_FAILURE 1 134 #endif /* !defined EXIT_FAILURE */ 135 136 /* 137 ** SunOS 4.1.1 headers lack FILENAME_MAX. 138 */ 139 140 #ifndef FILENAME_MAX 141 142 #ifndef MAXPATHLEN 143 #ifdef unix 144 #include "sys/param.h" 145 #endif /* defined unix */ 146 #endif /* !defined MAXPATHLEN */ 147 148 #ifdef MAXPATHLEN 149 #define FILENAME_MAX MAXPATHLEN 150 #endif /* defined MAXPATHLEN */ 151 #ifndef MAXPATHLEN 152 #define FILENAME_MAX 1024 /* Pure guesswork */ 153 #endif /* !defined MAXPATHLEN */ 154 155 #endif /* !defined FILENAME_MAX */ 156 157 /* 158 ** SunOS 4.1.1 libraries lack remove. 159 */ 160 161 #ifndef remove 162 extern int unlink P((const char * filename)); 163 #define remove unlink 164 #endif /* !defined remove */ 165 166 /* 167 ** Some ancient errno.h implementations don't declare errno. 168 ** But some newer errno.h implementations define it as a macro. 169 ** Fix the former without affecting the latter. 170 */ 171 #ifndef errno 172 extern int errno; 173 #endif /* !defined errno */ 174 175 /* 176 ** Finally, some convenience items. 177 */ 178 179 #ifndef TRUE 180 #define TRUE 1 181 #endif /* !defined TRUE */ 182 183 #ifndef FALSE 184 #define FALSE 0 185 #endif /* !defined FALSE */ 186 187 #ifndef TYPE_BIT 188 #define TYPE_BIT(type) (sizeof (type) * CHAR_BIT) 189 #endif /* !defined TYPE_BIT */ 190 191 #ifndef TYPE_SIGNED 192 #define TYPE_SIGNED(type) (((type) -1) < 0) 193 #endif /* !defined TYPE_SIGNED */ 194 195 #ifndef INT_STRLEN_MAXIMUM 196 /* 197 ** 302 / 1000 is log10(2.0) rounded up. 198 ** Subtract one for the sign bit if the type is signed; 199 ** add one for integer division truncation; 200 ** add one more for a minus sign if the type is signed. 201 */ 202 #define INT_STRLEN_MAXIMUM(type) \ 203 ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 100 + 1 + TYPE_SIGNED(type)) 204 #endif /* !defined INT_STRLEN_MAXIMUM */ 205 206 /* 207 ** INITIALIZE(x) 208 */ 209 210 #ifndef GNUC_or_lint 211 #ifdef lint 212 #define GNUC_or_lint 213 #endif /* defined lint */ 214 #ifndef lint 215 #ifdef __GNUC__ 216 #define GNUC_or_lint 217 #endif /* defined __GNUC__ */ 218 #endif /* !defined lint */ 219 #endif /* !defined GNUC_or_lint */ 220 221 #ifndef INITIALIZE 222 #ifdef GNUC_or_lint 223 #define INITIALIZE(x) ((x) = 0) 224 #endif /* defined GNUC_or_lint */ 225 #ifndef GNUC_or_lint 226 #define INITIALIZE(x) 227 #endif /* !defined GNUC_or_lint */ 228 #endif /* !defined INITIALIZE */ 229 230 /* 231 ** For the benefit of GNU folk... 232 ** `_(MSGID)' uses the current locale's message library string for MSGID. 233 ** The default is to use gettext if available, and use MSGID otherwise. 234 */ 235 236 #ifndef _ 237 #if HAVE_GETTEXT - 0 238 #define _(msgid) gettext(msgid) 239 #else /* !(HAVE_GETTEXT - 0) */ 240 #define _(msgid) msgid 241 #endif /* !(HAVE_GETTEXT - 0) */ 242 #endif /* !defined _ */ 243 244 #ifndef TZ_DOMAIN 245 #define TZ_DOMAIN "tz" 246 #endif /* !defined TZ_DOMAIN */ 247 248 /* 249 ** UNIX was a registered trademark of UNIX System Laboratories in 1993. 250 */ 251 252 #endif /* !defined PRIVATE_H */ 253