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