1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef PRIVATE_H 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 3ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define PRIVATE_H 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** This file is in the public domain, so clarified as of 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** 1996-06-05 by Arthur David Olson. 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** This header is for use ONLY with the time conversion code. 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** There is no guarantee that it will remain unchanged, 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** or that it will remain at all. 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Do NOT copy it to any system include directory. 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Thank you! 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** ID 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef lint 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef NOID 2485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hostatic char privatehid[] = "@(#)private.h 8.6"; 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined NOID */ 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined lint */ 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define GRANDPARENTED "Local time zone must be set--see zic manual page" 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Defaults for preprocessor symbols. 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** You can override these in your C compiler options, e.g. `-DHAVE_ADJTIME=0'. 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef HAVE_ADJTIME 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define HAVE_ADJTIME 1 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined HAVE_ADJTIME */ 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef HAVE_GETTEXT 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define HAVE_GETTEXT 0 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined HAVE_GETTEXT */ 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef HAVE_INCOMPATIBLE_CTIME_R 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define HAVE_INCOMPATIBLE_CTIME_R 0 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined INCOMPATIBLE_CTIME_R */ 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef HAVE_SETTIMEOFDAY 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define HAVE_SETTIMEOFDAY 3 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined HAVE_SETTIMEOFDAY */ 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef HAVE_SYMLINK 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define HAVE_SYMLINK 1 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined HAVE_SYMLINK */ 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef HAVE_SYS_STAT_H 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define HAVE_SYS_STAT_H 1 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined HAVE_SYS_STAT_H */ 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef HAVE_SYS_WAIT_H 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define HAVE_SYS_WAIT_H 1 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined HAVE_SYS_WAIT_H */ 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef HAVE_UNISTD_H 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define HAVE_UNISTD_H 1 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined HAVE_UNISTD_H */ 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef HAVE_UTMPX_H 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define HAVE_UTMPX_H 0 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined HAVE_UTMPX_H */ 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef LOCALE_HOME 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define LOCALE_HOME "/usr/lib/locale" 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined LOCALE_HOME */ 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if HAVE_INCOMPATIBLE_CTIME_R 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define asctime_r _incompatible_asctime_r 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define ctime_r _incompatible_ctime_r 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* HAVE_INCOMPATIBLE_CTIME_R */ 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Nested includes 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "sys/types.h" /* for time_t */ 85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "stdio.h" 86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "errno.h" 87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "string.h" 88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "limits.h" /* for CHAR_BIT et al. */ 89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "time.h" 90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "stdlib.h" 91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if HAVE_GETTEXT 93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "libintl.h" 94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* HAVE_GETTEXT */ 95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if HAVE_SYS_WAIT_H 97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */ 98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* HAVE_SYS_WAIT_H */ 99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef WIFEXITED 101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define WIFEXITED(status) (((status) & 0xff) == 0) 102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined WIFEXITED */ 103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef WEXITSTATUS 104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define WEXITSTATUS(status) (((status) >> 8) & 0xff) 105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined WEXITSTATUS */ 106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if HAVE_UNISTD_H 10885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "unistd.h" /* for F_OK, R_OK, and other POSIX goodness */ 109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* HAVE_UNISTD_H */ 110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef F_OK 112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define F_OK 0 113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined F_OK */ 114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef R_OK 115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define R_OK 4 116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined R_OK */ 117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */ 119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define is_digit(c) ((unsigned)(c) - '0' <= 9) 120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Define HAVE_STDINT_H's default value here, rather than at the 123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** start, since __GLIBC__'s value depends on previously-included 124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** files. 125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** (glibc 2.1 and later have stdint.h, even with pre-C99 compilers.) 126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef HAVE_STDINT_H 128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define HAVE_STDINT_H \ 129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru (199901 <= __STDC_VERSION__ || \ 130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 2 < (__GLIBC__ + (0 < __GLIBC_MINOR__))) 131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined HAVE_STDINT_H */ 132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if HAVE_STDINT_H 134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "stdint.h" 135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !HAVE_STDINT_H */ 136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef INT_FAST64_MAX 138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* Pre-C99 GCC compilers define __LONG_LONG_MAX__ instead of LLONG_MAX. */ 139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if defined LLONG_MAX || defined __LONG_LONG_MAX__ 140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef long long int_fast64_t; 141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#else /* ! (defined LLONG_MAX || defined __LONG_LONG_MAX__) */ 142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if (LONG_MAX >> 31) < 0xffffffff 143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruPlease use a compiler that supports a 64-bit integer type (or wider); 144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruyou may need to compile with "-DHAVE_STDINT_H". 145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* (LONG_MAX >> 31) < 0xffffffff */ 146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef long int_fast64_t; 147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* ! (defined LLONG_MAX || defined __LONG_LONG_MAX__) */ 148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined INT_FAST64_MAX */ 149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef INT32_MAX 151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define INT32_MAX 0x7fffffff 152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined INT32_MAX */ 153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef INT32_MIN 154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define INT32_MIN (-1 - INT32_MAX) 155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined INT32_MIN */ 156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Workarounds for compilers/systems. 159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Some time.h implementations don't declare asctime_r. 163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Others might define it as a macro. 164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Fix the former without affecting the latter. 165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef asctime_r 16885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoextern char * asctime_r(struct tm const *, char *); 169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Private function declarations. 173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 17585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hochar * icalloc(int nelem, int elsize); 17685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hochar * icatalloc(char * old, const char * new); 17785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hochar * icpyalloc(const char * string); 17885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hochar * imalloc(int n); 17985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid * irealloc(void * pointer, int size); 18085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid icfree(char * pointer); 18185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid ifree(char * pointer); 18285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoconst char * scheck(const char * string, const char * format); 183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Finally, some convenience items. 186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef TRUE 189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define TRUE 1 190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined TRUE */ 191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef FALSE 193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define FALSE 0 194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined FALSE */ 195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef TYPE_BIT 197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define TYPE_BIT(type) (sizeof (type) * CHAR_BIT) 198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined TYPE_BIT */ 199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef TYPE_SIGNED 201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define TYPE_SIGNED(type) (((type) -1) < 0) 202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined TYPE_SIGNED */ 203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Since the definition of TYPE_INTEGRAL contains floating point numbers, 206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** it cannot be used in preprocessor directives. 207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef TYPE_INTEGRAL 210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define TYPE_INTEGRAL(type) (((type) 0.5) != 0.5) 211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined TYPE_INTEGRAL */ 212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef INT_STRLEN_MAXIMUM 214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** 302 / 1000 is log10(2.0) rounded up. 216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** Subtract one for the sign bit if the type is signed; 217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** add one for integer division truncation; 218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** add one more for a minus sign if the type is signed. 219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define INT_STRLEN_MAXIMUM(type) \ 221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \ 222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 1 + TYPE_SIGNED(type)) 223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined INT_STRLEN_MAXIMUM */ 224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** INITIALIZE(x) 227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef GNUC_or_lint 230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifdef lint 231ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define GNUC_or_lint 232ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* defined lint */ 233ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef lint 234ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifdef __GNUC__ 235ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define GNUC_or_lint 236ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* defined __GNUC__ */ 237ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined lint */ 238ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined GNUC_or_lint */ 239ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 240ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef INITIALIZE 241ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifdef GNUC_or_lint 242ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define INITIALIZE(x) ((x) = 0) 243ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* defined GNUC_or_lint */ 244ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef GNUC_or_lint 245ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define INITIALIZE(x) 246ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined GNUC_or_lint */ 247ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined INITIALIZE */ 248ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 249ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 250ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** For the benefit of GNU folk... 251ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** `_(MSGID)' uses the current locale's message library string for MSGID. 252ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** The default is to use gettext if available, and use MSGID otherwise. 253ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 254ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 255ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef _ 256ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if HAVE_GETTEXT 257ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define _(msgid) gettext(msgid) 258ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#else /* !HAVE_GETTEXT */ 259ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define _(msgid) msgid 260ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !HAVE_GETTEXT */ 261ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined _ */ 262ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 263ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef TZ_DOMAIN 264ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define TZ_DOMAIN "tz" 265ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined TZ_DOMAIN */ 266ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 267ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if HAVE_INCOMPATIBLE_CTIME_R 268ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#undef asctime_r 269ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#undef ctime_r 27085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hochar *asctime_r(struct tm const *, char *); 27185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hochar *ctime_r(time_t const *, char *); 272ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* HAVE_INCOMPATIBLE_CTIME_R */ 273ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 274ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef YEARSPERREPEAT 275ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define YEARSPERREPEAT 400 /* years before a Gregorian repeat */ 276ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined YEARSPERREPEAT */ 277ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 278ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 279ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** The Gregorian year averages 365.2425 days, which is 31556952 seconds. 280ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 281ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 282ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef AVGSECSPERYEAR 283ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define AVGSECSPERYEAR 31556952L 284ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined AVGSECSPERYEAR */ 285ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 286ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef SECSPERREPEAT 287ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define SECSPERREPEAT ((int_fast64_t) YEARSPERREPEAT * (int_fast64_t) AVGSECSPERYEAR) 288ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined SECSPERREPEAT */ 28985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 290ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef SECSPERREPEAT_BITS 291ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define SECSPERREPEAT_BITS 34 /* ceil(log2(SECSPERREPEAT)) */ 292ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined SECSPERREPEAT_BITS */ 293ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 294ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 295ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru** UNIX was a registered trademark of The Open Group in 2003. 296ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 297ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 298ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* !defined PRIVATE_H */ 299