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