mirror of https://github.com/postgres/postgres
parent
7146eb0bc3
commit
e9a028f81f
@ -1,75 +1,75 @@ |
||||
#include "pgtz.h" |
||||
/*
|
||||
** This file is in the public domain, so clarified as of |
||||
** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). |
||||
*/ |
||||
|
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char elsieid[] = "@(#)asctime.c 7.9"; |
||||
#endif /* !defined NOID */ |
||||
#endif /* !defined lint */ |
||||
|
||||
/*LINTLIBRARY*/ |
||||
|
||||
#include "private.h" |
||||
#include "tzfile.h" |
||||
|
||||
/*
|
||||
** A la ISO/IEC 9945-1, ANSI/IEEE Std 1003.1, Second Edition, 1996-07-12. |
||||
*/ |
||||
|
||||
char * |
||||
asctime_r(timeptr, buf) |
||||
register const struct tm * timeptr; |
||||
char * buf; |
||||
{ |
||||
static const char wday_name[][3] = { |
||||
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" |
||||
}; |
||||
static const char mon_name[][3] = { |
||||
"Jan", "Feb", "Mar", "Apr", "May", "Jun", |
||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" |
||||
}; |
||||
register const char * wn; |
||||
register const char * mn; |
||||
|
||||
if (timeptr->tm_wday < 0 || timeptr->tm_wday >= DAYSPERWEEK) |
||||
wn = "???"; |
||||
else wn = wday_name[timeptr->tm_wday]; |
||||
if (timeptr->tm_mon < 0 || timeptr->tm_mon >= MONSPERYEAR) |
||||
mn = "???"; |
||||
else mn = mon_name[timeptr->tm_mon]; |
||||
/*
|
||||
** The X3J11-suggested format is |
||||
** "%.3s %.3s%3d %02.2d:%02.2d:%02.2d %d\n" |
||||
** Since the .2 in 02.2d is ignored, we drop it. |
||||
*/ |
||||
(void) sprintf(buf, "%.3s %.3s%3d %02d:%02d:%02d %d\n", |
||||
wn, mn, |
||||
timeptr->tm_mday, timeptr->tm_hour, |
||||
timeptr->tm_min, timeptr->tm_sec, |
||||
TM_YEAR_BASE + timeptr->tm_year); |
||||
return buf; |
||||
} |
||||
|
||||
/*
|
||||
** A la X3J11, with core dump avoidance. |
||||
*/ |
||||
|
||||
char * |
||||
asctime(timeptr) |
||||
register const struct tm * timeptr; |
||||
{ |
||||
/*
|
||||
** Big enough for something such as |
||||
** ??? ???-2147483648 -2147483648:-2147483648:-2147483648 -2147483648\n |
||||
** (two three-character abbreviations, five strings denoting integers, |
||||
** three explicit spaces, two explicit colons, a newline, |
||||
** and a trailing ASCII nul). |
||||
*/ |
||||
static char result[3 * 2 + 5 * INT_STRLEN_MAXIMUM(int) + |
||||
3 + 2 + 1 + 1]; |
||||
|
||||
return asctime_r(timeptr, result); |
||||
} |
||||
#include "pgtz.h" |
||||
/*
|
||||
** This file is in the public domain, so clarified as of |
||||
** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). |
||||
*/ |
||||
|
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char elsieid[] = "@(#)asctime.c 7.9"; |
||||
#endif /* !defined NOID */ |
||||
#endif /* !defined lint */ |
||||
|
||||
/*LINTLIBRARY*/ |
||||
|
||||
#include "private.h" |
||||
#include "tzfile.h" |
||||
|
||||
/*
|
||||
** A la ISO/IEC 9945-1, ANSI/IEEE Std 1003.1, Second Edition, 1996-07-12. |
||||
*/ |
||||
|
||||
char * |
||||
asctime_r(timeptr, buf) |
||||
register const struct tm * timeptr; |
||||
char * buf; |
||||
{ |
||||
static const char wday_name[][3] = { |
||||
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" |
||||
}; |
||||
static const char mon_name[][3] = { |
||||
"Jan", "Feb", "Mar", "Apr", "May", "Jun", |
||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" |
||||
}; |
||||
register const char * wn; |
||||
register const char * mn; |
||||
|
||||
if (timeptr->tm_wday < 0 || timeptr->tm_wday >= DAYSPERWEEK) |
||||
wn = "???"; |
||||
else wn = wday_name[timeptr->tm_wday]; |
||||
if (timeptr->tm_mon < 0 || timeptr->tm_mon >= MONSPERYEAR) |
||||
mn = "???"; |
||||
else mn = mon_name[timeptr->tm_mon]; |
||||
/*
|
||||
** The X3J11-suggested format is |
||||
** "%.3s %.3s%3d %02.2d:%02.2d:%02.2d %d\n" |
||||
** Since the .2 in 02.2d is ignored, we drop it. |
||||
*/ |
||||
(void) sprintf(buf, "%.3s %.3s%3d %02d:%02d:%02d %d\n", |
||||
wn, mn, |
||||
timeptr->tm_mday, timeptr->tm_hour, |
||||
timeptr->tm_min, timeptr->tm_sec, |
||||
TM_YEAR_BASE + timeptr->tm_year); |
||||
return buf; |
||||
} |
||||
|
||||
/*
|
||||
** A la X3J11, with core dump avoidance. |
||||
*/ |
||||
|
||||
char * |
||||
asctime(timeptr) |
||||
register const struct tm * timeptr; |
||||
{ |
||||
/*
|
||||
** Big enough for something such as |
||||
** ??? ???-2147483648 -2147483648:-2147483648:-2147483648 -2147483648\n |
||||
** (two three-character abbreviations, five strings denoting integers, |
||||
** three explicit spaces, two explicit colons, a newline, |
||||
** and a trailing ASCII nul). |
||||
*/ |
||||
static char result[3 * 2 + 5 * INT_STRLEN_MAXIMUM(int) + |
||||
3 + 2 + 1 + 1]; |
||||
|
||||
return asctime_r(timeptr, result); |
||||
} |
||||
|
@ -1,84 +1,84 @@ |
||||
#include "pgtz.h" |
||||
/*
|
||||
** This file is in the public domain, so clarified as of |
||||
** June 5, 1996 by Arthur David Olson (arthur_david_olson@nih.gov). |
||||
*/ |
||||
|
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char elsieid[] = "@(#)difftime.c 7.9"; |
||||
#endif /* !defined NOID */ |
||||
#endif /* !defined lint */ |
||||
|
||||
/*LINTLIBRARY*/ |
||||
|
||||
#include "private.h" |
||||
|
||||
/*
|
||||
** Algorithm courtesy Paul Eggert (eggert@twinsun.com). |
||||
*/ |
||||
|
||||
#ifdef HAVE_LONG_DOUBLE |
||||
#define long_double long double |
||||
#endif /* defined HAVE_LONG_DOUBLE */ |
||||
#ifndef HAVE_LONG_DOUBLE |
||||
#define long_double double |
||||
#endif /* !defined HAVE_LONG_DOUBLE */ |
||||
|
||||
double |
||||
difftime(time1, time0) |
||||
const time_t time1; |
||||
const time_t time0; |
||||
{ |
||||
time_t delta; |
||||
time_t hibit; |
||||
|
||||
{ |
||||
time_t tt; |
||||
double d; |
||||
long_double ld; |
||||
|
||||
if (sizeof tt < sizeof d) |
||||
return (double) time1 - (double) time0; |
||||
if (sizeof tt < sizeof ld) |
||||
return (long_double) time1 - (long_double) time0; |
||||
} |
||||
if (time1 < time0) |
||||
return -difftime(time0, time1); |
||||
/*
|
||||
** As much as possible, avoid loss of precision |
||||
** by computing the difference before converting to double. |
||||
*/ |
||||
delta = time1 - time0; |
||||
if (delta >= 0) |
||||
return delta; |
||||
/*
|
||||
** Repair delta overflow. |
||||
*/ |
||||
hibit = (~ (time_t) 0) << (TYPE_BIT(time_t) - 1); |
||||
/*
|
||||
** The following expression rounds twice, which means |
||||
** the result may not be the closest to the true answer. |
||||
** For example, suppose time_t is 64-bit signed int, |
||||
** long_double is IEEE 754 double with default rounding, |
||||
** time1 = 9223372036854775807 and time0 = -1536. |
||||
** Then the true difference is 9223372036854777343, |
||||
** which rounds to 9223372036854777856 |
||||
** with a total error of 513. |
||||
** But delta overflows to -9223372036854774273, |
||||
** which rounds to -9223372036854774784, and correcting |
||||
** this by subtracting 2 * (long_double) hibit |
||||
** (i.e. by adding 2**64 = 18446744073709551616) |
||||
** yields 9223372036854776832, which |
||||
** rounds to 9223372036854775808 |
||||
** with a total error of 1535 instead. |
||||
** This problem occurs only with very large differences. |
||||
** It's too painful to fix this portably. |
||||
** We are not alone in this problem; |
||||
** some C compilers round twice when converting |
||||
** large unsigned types to small floating types, |
||||
** so if time_t is unsigned the "return delta" above |
||||
** has the same double-rounding problem with those compilers. |
||||
*/ |
||||
return delta - 2 * (long_double) hibit; |
||||
} |
||||
#include "pgtz.h" |
||||
/*
|
||||
** This file is in the public domain, so clarified as of |
||||
** June 5, 1996 by Arthur David Olson (arthur_david_olson@nih.gov). |
||||
*/ |
||||
|
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char elsieid[] = "@(#)difftime.c 7.9"; |
||||
#endif /* !defined NOID */ |
||||
#endif /* !defined lint */ |
||||
|
||||
/*LINTLIBRARY*/ |
||||
|
||||
#include "private.h" |
||||
|
||||
/*
|
||||
** Algorithm courtesy Paul Eggert (eggert@twinsun.com). |
||||
*/ |
||||
|
||||
#ifdef HAVE_LONG_DOUBLE |
||||
#define long_double long double |
||||
#endif /* defined HAVE_LONG_DOUBLE */ |
||||
#ifndef HAVE_LONG_DOUBLE |
||||
#define long_double double |
||||
#endif /* !defined HAVE_LONG_DOUBLE */ |
||||
|
||||
double |
||||
difftime(time1, time0) |
||||
const time_t time1; |
||||
const time_t time0; |
||||
{ |
||||
time_t delta; |
||||
time_t hibit; |
||||
|
||||
{ |
||||
time_t tt; |
||||
double d; |
||||
long_double ld; |
||||
|
||||
if (sizeof tt < sizeof d) |
||||
return (double) time1 - (double) time0; |
||||
if (sizeof tt < sizeof ld) |
||||
return (long_double) time1 - (long_double) time0; |
||||
} |
||||
if (time1 < time0) |
||||
return -difftime(time0, time1); |
||||
/*
|
||||
** As much as possible, avoid loss of precision |
||||
** by computing the difference before converting to double. |
||||
*/ |
||||
delta = time1 - time0; |
||||
if (delta >= 0) |
||||
return delta; |
||||
/*
|
||||
** Repair delta overflow. |
||||
*/ |
||||
hibit = (~ (time_t) 0) << (TYPE_BIT(time_t) - 1); |
||||
/*
|
||||
** The following expression rounds twice, which means |
||||
** the result may not be the closest to the true answer. |
||||
** For example, suppose time_t is 64-bit signed int, |
||||
** long_double is IEEE 754 double with default rounding, |
||||
** time1 = 9223372036854775807 and time0 = -1536. |
||||
** Then the true difference is 9223372036854777343, |
||||
** which rounds to 9223372036854777856 |
||||
** with a total error of 513. |
||||
** But delta overflows to -9223372036854774273, |
||||
** which rounds to -9223372036854774784, and correcting |
||||
** this by subtracting 2 * (long_double) hibit |
||||
** (i.e. by adding 2**64 = 18446744073709551616) |
||||
** yields 9223372036854776832, which |
||||
** rounds to 9223372036854775808 |
||||
** with a total error of 1535 instead. |
||||
** This problem occurs only with very large differences. |
||||
** It's too painful to fix this portably. |
||||
** We are not alone in this problem; |
||||
** some C compilers round twice when converting |
||||
** large unsigned types to small floating types, |
||||
** so if time_t is unsigned the "return delta" above |
||||
** has the same double-rounding problem with those compilers. |
||||
*/ |
||||
return delta - 2 * (long_double) hibit; |
||||
} |
||||
|
@ -1,81 +1,81 @@ |
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char elsieid[] = "@(#)ialloc.c 8.29"; |
||||
#endif /* !defined NOID */ |
||||
#endif /* !defined lint */ |
||||
|
||||
/*LINTLIBRARY*/ |
||||
|
||||
#include "private.h" |
||||
|
||||
#define nonzero(n) (((n) == 0) ? 1 : (n)) |
||||
|
||||
char * |
||||
imalloc(n) |
||||
const int n; |
||||
{ |
||||
return malloc((size_t) nonzero(n)); |
||||
} |
||||
|
||||
char * |
||||
icalloc(nelem, elsize) |
||||
int nelem; |
||||
int elsize; |
||||
{ |
||||
if (nelem == 0 || elsize == 0) |
||||
nelem = elsize = 1; |
||||
return calloc((size_t) nelem, (size_t) elsize); |
||||
} |
||||
|
||||
void * |
||||
irealloc(pointer, size) |
||||
void * const pointer; |
||||
const int size; |
||||
{ |
||||
if (pointer == NULL) |
||||
return imalloc(size); |
||||
return realloc((void *) pointer, (size_t) nonzero(size)); |
||||
} |
||||
|
||||
char * |
||||
icatalloc(old, new) |
||||
char * const old; |
||||
const char * const new; |
||||
{ |
||||
register char * result; |
||||
register int oldsize, newsize; |
||||
|
||||
newsize = (new == NULL) ? 0 : strlen(new); |
||||
if (old == NULL) |
||||
oldsize = 0; |
||||
else if (newsize == 0) |
||||
return old; |
||||
else oldsize = strlen(old); |
||||
if ((result = irealloc(old, oldsize + newsize + 1)) != NULL) |
||||
if (new != NULL) |
||||
(void) strcpy(result + oldsize, new); |
||||
return result; |
||||
} |
||||
|
||||
char * |
||||
icpyalloc(string) |
||||
const char * const string; |
||||
{ |
||||
return icatalloc((char *) NULL, string); |
||||
} |
||||
|
||||
void |
||||
ifree(p) |
||||
char * const p; |
||||
{ |
||||
if (p != NULL) |
||||
(void) free(p); |
||||
} |
||||
|
||||
void |
||||
icfree(p) |
||||
char * const p; |
||||
{ |
||||
if (p != NULL) |
||||
(void) free(p); |
||||
} |
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char elsieid[] = "@(#)ialloc.c 8.29"; |
||||
#endif /* !defined NOID */ |
||||
#endif /* !defined lint */ |
||||
|
||||
/*LINTLIBRARY*/ |
||||
|
||||
#include "private.h" |
||||
|
||||
#define nonzero(n) (((n) == 0) ? 1 : (n)) |
||||
|
||||
char * |
||||
imalloc(n) |
||||
const int n; |
||||
{ |
||||
return malloc((size_t) nonzero(n)); |
||||
} |
||||
|
||||
char * |
||||
icalloc(nelem, elsize) |
||||
int nelem; |
||||
int elsize; |
||||
{ |
||||
if (nelem == 0 || elsize == 0) |
||||
nelem = elsize = 1; |
||||
return calloc((size_t) nelem, (size_t) elsize); |
||||
} |
||||
|
||||
void * |
||||
irealloc(pointer, size) |
||||
void * const pointer; |
||||
const int size; |
||||
{ |
||||
if (pointer == NULL) |
||||
return imalloc(size); |
||||
return realloc((void *) pointer, (size_t) nonzero(size)); |
||||
} |
||||
|
||||
char * |
||||
icatalloc(old, new) |
||||
char * const old; |
||||
const char * const new; |
||||
{ |
||||
register char * result; |
||||
register int oldsize, newsize; |
||||
|
||||
newsize = (new == NULL) ? 0 : strlen(new); |
||||
if (old == NULL) |
||||
oldsize = 0; |
||||
else if (newsize == 0) |
||||
return old; |
||||
else oldsize = strlen(old); |
||||
if ((result = irealloc(old, oldsize + newsize + 1)) != NULL) |
||||
if (new != NULL) |
||||
(void) strcpy(result + oldsize, new); |
||||
return result; |
||||
} |
||||
|
||||
char * |
||||
icpyalloc(string) |
||||
const char * const string; |
||||
{ |
||||
return icatalloc((char *) NULL, string); |
||||
} |
||||
|
||||
void |
||||
ifree(p) |
||||
char * const p; |
||||
{ |
||||
if (p != NULL) |
||||
(void) free(p); |
||||
} |
||||
|
||||
void |
||||
icfree(p) |
||||
char * const p; |
||||
{ |
||||
if (p != NULL) |
||||
(void) free(p); |
||||
} |
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,6 @@ |
||||
#include "postgres.h" |
||||
|
||||
#define NOID |
||||
#define HAVE_SYMLINK 0 |
||||
#define HAVE_SYS_WAIT_H 0 |
||||
#define TZDIR pgwin32_TZDIR() |
||||
|
||||
char *pgwin32_TZDIR(void); |
||||
|
@ -1,294 +1,294 @@ |
||||
#ifndef PRIVATE_H |
||||
|
||||
#define PRIVATE_H |
||||
|
||||
/*
|
||||
** This file is in the public domain, so clarified as of |
||||
** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). |
||||
*/ |
||||
|
||||
/*
|
||||
** This header is for use ONLY with the time conversion code. |
||||
** There is no guarantee that it will remain unchanged, |
||||
** or that it will remain at all. |
||||
** Do NOT copy it to any system include directory. |
||||
** Thank you! |
||||
*/ |
||||
|
||||
/*
|
||||
** ID |
||||
*/ |
||||
|
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char privatehid[] = "@(#)private.h 7.53"; |
||||
#endif /* !defined NOID */ |
||||
#endif /* !defined lint */ |
||||
|
||||
/*
|
||||
** Defaults for preprocessor symbols. |
||||
** You can override these in your C compiler options, e.g. `-DHAVE_ADJTIME=0'. |
||||
*/ |
||||
|
||||
#ifndef HAVE_ADJTIME |
||||
#define HAVE_ADJTIME 1 |
||||
#endif /* !defined HAVE_ADJTIME */ |
||||
|
||||
#ifndef HAVE_GETTEXT |
||||
#define HAVE_GETTEXT 0 |
||||
#endif /* !defined HAVE_GETTEXT */ |
||||
|
||||
#ifndef HAVE_INCOMPATIBLE_CTIME_R |
||||
#define HAVE_INCOMPATIBLE_CTIME_R 0 |
||||
#endif /* !defined INCOMPATIBLE_CTIME_R */ |
||||
|
||||
#ifndef HAVE_SETTIMEOFDAY |
||||
#define HAVE_SETTIMEOFDAY 3 |
||||
#endif /* !defined HAVE_SETTIMEOFDAY */ |
||||
|
||||
#ifndef HAVE_STRERROR |
||||
#define HAVE_STRERROR 1 |
||||
#endif /* !defined HAVE_STRERROR */ |
||||
|
||||
#ifndef HAVE_SYMLINK |
||||
#define HAVE_SYMLINK 1 |
||||
#endif /* !defined HAVE_SYMLINK */ |
||||
|
||||
#ifndef HAVE_SYS_STAT_H |
||||
#define HAVE_SYS_STAT_H 1 |
||||
#endif /* !defined HAVE_SYS_STAT_H */ |
||||
|
||||
#ifndef HAVE_SYS_WAIT_H |
||||
#define HAVE_SYS_WAIT_H 1 |
||||
#endif /* !defined HAVE_SYS_WAIT_H */ |
||||
|
||||
#ifndef HAVE_UNISTD_H |
||||
#define HAVE_UNISTD_H 1 |
||||
#endif /* !defined HAVE_UNISTD_H */ |
||||
|
||||
#ifndef HAVE_UTMPX_H |
||||
#define HAVE_UTMPX_H 0 |
||||
#endif /* !defined HAVE_UTMPX_H */ |
||||
|
||||
#ifndef LOCALE_HOME |
||||
#define LOCALE_HOME "/usr/lib/locale" |
||||
#endif /* !defined LOCALE_HOME */ |
||||
|
||||
#if HAVE_INCOMPATIBLE_CTIME_R |
||||
#define asctime_r _incompatible_asctime_r |
||||
#define ctime_r _incompatible_ctime_r |
||||
#endif /* HAVE_INCOMPATIBLE_CTIME_R */ |
||||
|
||||
/*
|
||||
** Nested includes |
||||
*/ |
||||
|
||||
#include "sys/types.h" /* for time_t */ |
||||
#include "stdio.h" |
||||
#include "errno.h" |
||||
#include "string.h" |
||||
#include "limits.h" /* for CHAR_BIT */ |
||||
#include "time.h" |
||||
#include "stdlib.h" |
||||
|
||||
#if HAVE_GETTEXT - 0 |
||||
#include "libintl.h" |
||||
#endif /* HAVE_GETTEXT - 0 */ |
||||
|
||||
#if HAVE_SYS_WAIT_H - 0 |
||||
#include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */ |
||||
#endif /* HAVE_SYS_WAIT_H - 0 */ |
||||
|
||||
#ifndef WIFEXITED |
||||
#define WIFEXITED(status) (((status) & 0xff) == 0) |
||||
#endif /* !defined WIFEXITED */ |
||||
#ifndef WEXITSTATUS |
||||
#define WEXITSTATUS(status) (((status) >> 8) & 0xff) |
||||
#endif /* !defined WEXITSTATUS */ |
||||
|
||||
#if HAVE_UNISTD_H - 0 |
||||
#include "unistd.h" /* for F_OK and R_OK */ |
||||
#endif /* HAVE_UNISTD_H - 0 */ |
||||
|
||||
#if !(HAVE_UNISTD_H - 0) |
||||
#ifndef F_OK |
||||
#define F_OK 0 |
||||
#endif /* !defined F_OK */ |
||||
#ifndef R_OK |
||||
#define R_OK 4 |
||||
#endif /* !defined R_OK */ |
||||
#endif /* !(HAVE_UNISTD_H - 0) */ |
||||
|
||||
/* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */ |
||||
#define is_digit(c) ((unsigned)(c) - '0' <= 9) |
||||
|
||||
/*
|
||||
** Workarounds for compilers/systems. |
||||
*/ |
||||
|
||||
/*
|
||||
** SunOS 4.1.1 cc lacks prototypes. |
||||
*/ |
||||
|
||||
#ifndef P |
||||
#ifdef __STDC__ |
||||
#define P(x) x |
||||
#endif /* defined __STDC__ */ |
||||
#ifndef __STDC__ |
||||
#define P(x) () |
||||
#endif /* !defined __STDC__ */ |
||||
#endif /* !defined P */ |
||||
|
||||
/*
|
||||
** SunOS 4.1.1 headers lack EXIT_SUCCESS. |
||||
*/ |
||||
|
||||
#ifndef EXIT_SUCCESS |
||||
#define EXIT_SUCCESS 0 |
||||
#endif /* !defined EXIT_SUCCESS */ |
||||
|
||||
/*
|
||||
** SunOS 4.1.1 headers lack EXIT_FAILURE. |
||||
*/ |
||||
|
||||
#ifndef EXIT_FAILURE |
||||
#define EXIT_FAILURE 1 |
||||
#endif /* !defined EXIT_FAILURE */ |
||||
|
||||
/*
|
||||
** SunOS 4.1.1 headers lack FILENAME_MAX. |
||||
*/ |
||||
|
||||
#ifndef FILENAME_MAX |
||||
|
||||
#ifndef MAXPATHLEN |
||||
#ifdef unix |
||||
#include "sys/param.h" |
||||
#endif /* defined unix */ |
||||
#endif /* !defined MAXPATHLEN */ |
||||
|
||||
#ifdef MAXPATHLEN |
||||
#define FILENAME_MAX MAXPATHLEN |
||||
#endif /* defined MAXPATHLEN */ |
||||
#ifndef MAXPATHLEN |
||||
#define FILENAME_MAX 1024 /* Pure guesswork */ |
||||
#endif /* !defined MAXPATHLEN */ |
||||
|
||||
#endif /* !defined FILENAME_MAX */ |
||||
|
||||
/*
|
||||
** SunOS 4.1.1 libraries lack remove. |
||||
*/ |
||||
|
||||
#ifndef remove |
||||
extern int unlink P((const char * filename)); |
||||
#define remove unlink |
||||
#endif /* !defined remove */ |
||||
|
||||
/*
|
||||
** Some ancient errno.h implementations don't declare errno. |
||||
** But some newer errno.h implementations define it as a macro. |
||||
** Fix the former without affecting the latter. |
||||
*/ |
||||
#ifndef errno |
||||
extern int errno; |
||||
#endif /* !defined errno */ |
||||
|
||||
/*
|
||||
** Private function declarations. |
||||
*/ |
||||
char * icalloc P((int nelem, int elsize)); |
||||
char * icatalloc P((char * old, const char * new)); |
||||
char * icpyalloc P((const char * string)); |
||||
char * imalloc P((int n)); |
||||
void * irealloc P((void * pointer, int size)); |
||||
void icfree P((char * pointer)); |
||||
void ifree P((char * pointer)); |
||||
char * scheck P((const char *string, const char *format)); |
||||
|
||||
|
||||
/*
|
||||
** Finally, some convenience items. |
||||
*/ |
||||
|
||||
#ifndef TRUE |
||||
#define TRUE 1 |
||||
#endif /* !defined TRUE */ |
||||
|
||||
#ifndef FALSE |
||||
#define FALSE 0 |
||||
#endif /* !defined FALSE */ |
||||
|
||||
#ifndef TYPE_BIT |
||||
#define TYPE_BIT(type) (sizeof (type) * CHAR_BIT) |
||||
#endif /* !defined TYPE_BIT */ |
||||
|
||||
#ifndef TYPE_SIGNED |
||||
#define TYPE_SIGNED(type) (((type) -1) < 0) |
||||
#endif /* !defined TYPE_SIGNED */ |
||||
|
||||
#ifndef INT_STRLEN_MAXIMUM |
||||
/*
|
||||
** 302 / 1000 is log10(2.0) rounded up. |
||||
** Subtract one for the sign bit if the type is signed; |
||||
** add one for integer division truncation; |
||||
** add one more for a minus sign if the type is signed. |
||||
*/ |
||||
#define INT_STRLEN_MAXIMUM(type) \ |
||||
((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + 1 + TYPE_SIGNED(type)) |
||||
#endif /* !defined INT_STRLEN_MAXIMUM */ |
||||
|
||||
/*
|
||||
** INITIALIZE(x) |
||||
*/ |
||||
|
||||
#ifndef GNUC_or_lint |
||||
#ifdef lint |
||||
#define GNUC_or_lint |
||||
#endif /* defined lint */ |
||||
#ifndef lint |
||||
#ifdef __GNUC__ |
||||
#define GNUC_or_lint |
||||
#endif /* defined __GNUC__ */ |
||||
#endif /* !defined lint */ |
||||
#endif /* !defined GNUC_or_lint */ |
||||
|
||||
#ifndef INITIALIZE |
||||
#ifdef GNUC_or_lint |
||||
#define INITIALIZE(x) ((x) = 0) |
||||
#endif /* defined GNUC_or_lint */ |
||||
#ifndef GNUC_or_lint |
||||
#define INITIALIZE(x) |
||||
#endif /* !defined GNUC_or_lint */ |
||||
#endif /* !defined INITIALIZE */ |
||||
|
||||
/*
|
||||
** For the benefit of GNU folk... |
||||
** `_(MSGID)' uses the current locale's message library string for MSGID. |
||||
** The default is to use gettext if available, and use MSGID otherwise. |
||||
*/ |
||||
|
||||
#ifndef _ |
||||
#if HAVE_GETTEXT - 0 |
||||
#define _(msgid) gettext(msgid) |
||||
#else /* !(HAVE_GETTEXT - 0) */ |
||||
#define _(msgid) msgid |
||||
#endif /* !(HAVE_GETTEXT - 0) */ |
||||
#endif /* !defined _ */ |
||||
|
||||
#ifndef TZ_DOMAIN |
||||
#define TZ_DOMAIN "tz" |
||||
#endif /* !defined TZ_DOMAIN */ |
||||
|
||||
#if HAVE_INCOMPATIBLE_CTIME_R |
||||
#undef asctime_r |
||||
#undef ctime_r |
||||
char *asctime_r P((struct tm const *, char *)); |
||||
char *ctime_r P((time_t const *, char *)); |
||||
#endif /* HAVE_INCOMPATIBLE_CTIME_R */ |
||||
|
||||
/*
|
||||
** UNIX was a registered trademark of The Open Group in 2003. |
||||
*/ |
||||
|
||||
#endif /* !defined PRIVATE_H */ |
||||
#ifndef PRIVATE_H |
||||
|
||||
#define PRIVATE_H |
||||
|
||||
/*
|
||||
** This file is in the public domain, so clarified as of |
||||
** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). |
||||
*/ |
||||
|
||||
/*
|
||||
** This header is for use ONLY with the time conversion code. |
||||
** There is no guarantee that it will remain unchanged, |
||||
** or that it will remain at all. |
||||
** Do NOT copy it to any system include directory. |
||||
** Thank you! |
||||
*/ |
||||
|
||||
/*
|
||||
** ID |
||||
*/ |
||||
|
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char privatehid[] = "@(#)private.h 7.53"; |
||||
#endif /* !defined NOID */ |
||||
#endif /* !defined lint */ |
||||
|
||||
/*
|
||||
** Defaults for preprocessor symbols. |
||||
** You can override these in your C compiler options, e.g. `-DHAVE_ADJTIME=0'. |
||||
*/ |
||||
|
||||
#ifndef HAVE_ADJTIME |
||||
#define HAVE_ADJTIME 1 |
||||
#endif /* !defined HAVE_ADJTIME */ |
||||
|
||||
#ifndef HAVE_GETTEXT |
||||
#define HAVE_GETTEXT 0 |
||||
#endif /* !defined HAVE_GETTEXT */ |
||||
|
||||
#ifndef HAVE_INCOMPATIBLE_CTIME_R |
||||
#define HAVE_INCOMPATIBLE_CTIME_R 0 |
||||
#endif /* !defined INCOMPATIBLE_CTIME_R */ |
||||
|
||||
#ifndef HAVE_SETTIMEOFDAY |
||||
#define HAVE_SETTIMEOFDAY 3 |
||||
#endif /* !defined HAVE_SETTIMEOFDAY */ |
||||
|
||||
#ifndef HAVE_STRERROR |
||||
#define HAVE_STRERROR 1 |
||||
#endif /* !defined HAVE_STRERROR */ |
||||
|
||||
#ifndef HAVE_SYMLINK |
||||
#define HAVE_SYMLINK 1 |
||||
#endif /* !defined HAVE_SYMLINK */ |
||||
|
||||
#ifndef HAVE_SYS_STAT_H |
||||
#define HAVE_SYS_STAT_H 1 |
||||
#endif /* !defined HAVE_SYS_STAT_H */ |
||||
|
||||
#ifndef HAVE_SYS_WAIT_H |
||||
#define HAVE_SYS_WAIT_H 1 |
||||
#endif /* !defined HAVE_SYS_WAIT_H */ |
||||
|
||||
#ifndef HAVE_UNISTD_H |
||||
#define HAVE_UNISTD_H 1 |
||||
#endif /* !defined HAVE_UNISTD_H */ |
||||
|
||||
#ifndef HAVE_UTMPX_H |
||||
#define HAVE_UTMPX_H 0 |
||||
#endif /* !defined HAVE_UTMPX_H */ |
||||
|
||||
#ifndef LOCALE_HOME |
||||
#define LOCALE_HOME "/usr/lib/locale" |
||||
#endif /* !defined LOCALE_HOME */ |
||||
|
||||
#if HAVE_INCOMPATIBLE_CTIME_R |
||||
#define asctime_r _incompatible_asctime_r |
||||
#define ctime_r _incompatible_ctime_r |
||||
#endif /* HAVE_INCOMPATIBLE_CTIME_R */ |
||||
|
||||
/*
|
||||
** Nested includes |
||||
*/ |
||||
|
||||
#include "sys/types.h" /* for time_t */ |
||||
#include "stdio.h" |
||||
#include "errno.h" |
||||
#include "string.h" |
||||
#include "limits.h" /* for CHAR_BIT */ |
||||
#include "time.h" |
||||
#include "stdlib.h" |
||||
|
||||
#if HAVE_GETTEXT - 0 |
||||
#include "libintl.h" |
||||
#endif /* HAVE_GETTEXT - 0 */ |
||||
|
||||
#if HAVE_SYS_WAIT_H - 0 |
||||
#include <sys/wait.h> /* for WIFEXITED and WEXITSTATUS */ |
||||
#endif /* HAVE_SYS_WAIT_H - 0 */ |
||||
|
||||
#ifndef WIFEXITED |
||||
#define WIFEXITED(status) (((status) & 0xff) == 0) |
||||
#endif /* !defined WIFEXITED */ |
||||
#ifndef WEXITSTATUS |
||||
#define WEXITSTATUS(status) (((status) >> 8) & 0xff) |
||||
#endif /* !defined WEXITSTATUS */ |
||||
|
||||
#if HAVE_UNISTD_H - 0 |
||||
#include "unistd.h" /* for F_OK and R_OK */ |
||||
#endif /* HAVE_UNISTD_H - 0 */ |
||||
|
||||
#if !(HAVE_UNISTD_H - 0) |
||||
#ifndef F_OK |
||||
#define F_OK 0 |
||||
#endif /* !defined F_OK */ |
||||
#ifndef R_OK |
||||
#define R_OK 4 |
||||
#endif /* !defined R_OK */ |
||||
#endif /* !(HAVE_UNISTD_H - 0) */ |
||||
|
||||
/* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */ |
||||
#define is_digit(c) ((unsigned)(c) - '0' <= 9) |
||||
|
||||
/*
|
||||
** Workarounds for compilers/systems. |
||||
*/ |
||||
|
||||
/*
|
||||
** SunOS 4.1.1 cc lacks prototypes. |
||||
*/ |
||||
|
||||
#ifndef P |
||||
#ifdef __STDC__ |
||||
#define P(x) x |
||||
#endif /* defined __STDC__ */ |
||||
#ifndef __STDC__ |
||||
#define P(x) () |
||||
#endif /* !defined __STDC__ */ |
||||
#endif /* !defined P */ |
||||
|
||||
/*
|
||||
** SunOS 4.1.1 headers lack EXIT_SUCCESS. |
||||
*/ |
||||
|
||||
#ifndef EXIT_SUCCESS |
||||
#define EXIT_SUCCESS 0 |
||||
#endif /* !defined EXIT_SUCCESS */ |
||||
|
||||
/*
|
||||
** SunOS 4.1.1 headers lack EXIT_FAILURE. |
||||
*/ |
||||
|
||||
#ifndef EXIT_FAILURE |
||||
#define EXIT_FAILURE 1 |
||||
#endif /* !defined EXIT_FAILURE */ |
||||
|
||||
/*
|
||||
** SunOS 4.1.1 headers lack FILENAME_MAX. |
||||
*/ |
||||
|
||||
#ifndef FILENAME_MAX |
||||
|
||||
#ifndef MAXPATHLEN |
||||
#ifdef unix |
||||
#include "sys/param.h" |
||||
#endif /* defined unix */ |
||||
#endif /* !defined MAXPATHLEN */ |
||||
|
||||
#ifdef MAXPATHLEN |
||||
#define FILENAME_MAX MAXPATHLEN |
||||
#endif /* defined MAXPATHLEN */ |
||||
#ifndef MAXPATHLEN |
||||
#define FILENAME_MAX 1024 /* Pure guesswork */ |
||||
#endif /* !defined MAXPATHLEN */ |
||||
|
||||
#endif /* !defined FILENAME_MAX */ |
||||
|
||||
/*
|
||||
** SunOS 4.1.1 libraries lack remove. |
||||
*/ |
||||
|
||||
#ifndef remove |
||||
extern int unlink P((const char * filename)); |
||||
#define remove unlink |
||||
#endif /* !defined remove */ |
||||
|
||||
/*
|
||||
** Some ancient errno.h implementations don't declare errno. |
||||
** But some newer errno.h implementations define it as a macro. |
||||
** Fix the former without affecting the latter. |
||||
*/ |
||||
#ifndef errno |
||||
extern int errno; |
||||
#endif /* !defined errno */ |
||||
|
||||
/*
|
||||
** Private function declarations. |
||||
*/ |
||||
char * icalloc P((int nelem, int elsize)); |
||||
char * icatalloc P((char * old, const char * new)); |
||||
char * icpyalloc P((const char * string)); |
||||
char * imalloc P((int n)); |
||||
void * irealloc P((void * pointer, int size)); |
||||
void icfree P((char * pointer)); |
||||
void ifree P((char * pointer)); |
||||
char * scheck P((const char *string, const char *format)); |
||||
|
||||
|
||||
/*
|
||||
** Finally, some convenience items. |
||||
*/ |
||||
|
||||
#ifndef TRUE |
||||
#define TRUE 1 |
||||
#endif /* !defined TRUE */ |
||||
|
||||
#ifndef FALSE |
||||
#define FALSE 0 |
||||
#endif /* !defined FALSE */ |
||||
|
||||
#ifndef TYPE_BIT |
||||
#define TYPE_BIT(type) (sizeof (type) * CHAR_BIT) |
||||
#endif /* !defined TYPE_BIT */ |
||||
|
||||
#ifndef TYPE_SIGNED |
||||
#define TYPE_SIGNED(type) (((type) -1) < 0) |
||||
#endif /* !defined TYPE_SIGNED */ |
||||
|
||||
#ifndef INT_STRLEN_MAXIMUM |
||||
/*
|
||||
** 302 / 1000 is log10(2.0) rounded up. |
||||
** Subtract one for the sign bit if the type is signed; |
||||
** add one for integer division truncation; |
||||
** add one more for a minus sign if the type is signed. |
||||
*/ |
||||
#define INT_STRLEN_MAXIMUM(type) \ |
||||
((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + 1 + TYPE_SIGNED(type)) |
||||
#endif /* !defined INT_STRLEN_MAXIMUM */ |
||||
|
||||
/*
|
||||
** INITIALIZE(x) |
||||
*/ |
||||
|
||||
#ifndef GNUC_or_lint |
||||
#ifdef lint |
||||
#define GNUC_or_lint |
||||
#endif /* defined lint */ |
||||
#ifndef lint |
||||
#ifdef __GNUC__ |
||||
#define GNUC_or_lint |
||||
#endif /* defined __GNUC__ */ |
||||
#endif /* !defined lint */ |
||||
#endif /* !defined GNUC_or_lint */ |
||||
|
||||
#ifndef INITIALIZE |
||||
#ifdef GNUC_or_lint |
||||
#define INITIALIZE(x) ((x) = 0) |
||||
#endif /* defined GNUC_or_lint */ |
||||
#ifndef GNUC_or_lint |
||||
#define INITIALIZE(x) |
||||
#endif /* !defined GNUC_or_lint */ |
||||
#endif /* !defined INITIALIZE */ |
||||
|
||||
/*
|
||||
** For the benefit of GNU folk... |
||||
** `_(MSGID)' uses the current locale's message library string for MSGID. |
||||
** The default is to use gettext if available, and use MSGID otherwise. |
||||
*/ |
||||
|
||||
#ifndef _ |
||||
#if HAVE_GETTEXT - 0 |
||||
#define _(msgid) gettext(msgid) |
||||
#else /* !(HAVE_GETTEXT - 0) */ |
||||
#define _(msgid) msgid |
||||
#endif /* !(HAVE_GETTEXT - 0) */ |
||||
#endif /* !defined _ */ |
||||
|
||||
#ifndef TZ_DOMAIN |
||||
#define TZ_DOMAIN "tz" |
||||
#endif /* !defined TZ_DOMAIN */ |
||||
|
||||
#if HAVE_INCOMPATIBLE_CTIME_R |
||||
#undef asctime_r |
||||
#undef ctime_r |
||||
char *asctime_r P((struct tm const *, char *)); |
||||
char *ctime_r P((time_t const *, char *)); |
||||
#endif /* HAVE_INCOMPATIBLE_CTIME_R */ |
||||
|
||||
/*
|
||||
** UNIX was a registered trademark of The Open Group in 2003. |
||||
*/ |
||||
|
||||
#endif /* !defined PRIVATE_H */ |
||||
|
@ -1,59 +1,59 @@ |
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char elsieid[] = "@(#)scheck.c 8.15"; |
||||
#endif /* !defined lint */ |
||||
#endif /* !defined NOID */ |
||||
|
||||
/*LINTLIBRARY*/ |
||||
|
||||
#include "private.h" |
||||
|
||||
char * |
||||
scheck(string, format) |
||||
const char * const string; |
||||
const char * const format; |
||||
{ |
||||
register char * fbuf; |
||||
register const char * fp; |
||||
register char * tp; |
||||
register int c; |
||||
register char * result; |
||||
char dummy; |
||||
static char nada; |
||||
|
||||
result = &nada; |
||||
if (string == NULL || format == NULL) |
||||
return result; |
||||
fbuf = imalloc((int) (2 * strlen(format) + 4)); |
||||
if (fbuf == NULL) |
||||
return result; |
||||
fp = format; |
||||
tp = fbuf; |
||||
while ((*tp++ = c = *fp++) != '\0') { |
||||
if (c != '%') |
||||
continue; |
||||
if (*fp == '%') { |
||||
*tp++ = *fp++; |
||||
continue; |
||||
} |
||||
*tp++ = '*'; |
||||
if (*fp == '*') |
||||
++fp; |
||||
while (is_digit(*fp)) |
||||
*tp++ = *fp++; |
||||
if (*fp == 'l' || *fp == 'h') |
||||
*tp++ = *fp++; |
||||
else if (*fp == '[') |
||||
do *tp++ = *fp++; |
||||
while (*fp != '\0' && *fp != ']'); |
||||
if ((*tp++ = *fp++) == '\0') |
||||
break; |
||||
} |
||||
*(tp - 1) = '%'; |
||||
*tp++ = 'c'; |
||||
*tp = '\0'; |
||||
if (sscanf(string, fbuf, &dummy) != 1) |
||||
result = (char *) format; |
||||
ifree(fbuf); |
||||
return result; |
||||
} |
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char elsieid[] = "@(#)scheck.c 8.15"; |
||||
#endif /* !defined lint */ |
||||
#endif /* !defined NOID */ |
||||
|
||||
/*LINTLIBRARY*/ |
||||
|
||||
#include "private.h" |
||||
|
||||
char * |
||||
scheck(string, format) |
||||
const char * const string; |
||||
const char * const format; |
||||
{ |
||||
register char * fbuf; |
||||
register const char * fp; |
||||
register char * tp; |
||||
register int c; |
||||
register char * result; |
||||
char dummy; |
||||
static char nada; |
||||
|
||||
result = &nada; |
||||
if (string == NULL || format == NULL) |
||||
return result; |
||||
fbuf = imalloc((int) (2 * strlen(format) + 4)); |
||||
if (fbuf == NULL) |
||||
return result; |
||||
fp = format; |
||||
tp = fbuf; |
||||
while ((*tp++ = c = *fp++) != '\0') { |
||||
if (c != '%') |
||||
continue; |
||||
if (*fp == '%') { |
||||
*tp++ = *fp++; |
||||
continue; |
||||
} |
||||
*tp++ = '*'; |
||||
if (*fp == '*') |
||||
++fp; |
||||
while (is_digit(*fp)) |
||||
*tp++ = *fp++; |
||||
if (*fp == 'l' || *fp == 'h') |
||||
*tp++ = *fp++; |
||||
else if (*fp == '[') |
||||
do *tp++ = *fp++; |
||||
while (*fp != '\0' && *fp != ']'); |
||||
if ((*tp++ = *fp++) == '\0') |
||||
break; |
||||
} |
||||
*(tp - 1) = '%'; |
||||
*tp++ = 'c'; |
||||
*tp = '\0'; |
||||
if (sscanf(string, fbuf, &dummy) != 1) |
||||
result = (char *) format; |
||||
ifree(fbuf); |
||||
return result; |
||||
} |
||||
|
@ -1,188 +1,188 @@ |
||||
#ifndef TZFILE_H |
||||
|
||||
#define TZFILE_H |
||||
|
||||
/*
|
||||
** This file is in the public domain, so clarified as of |
||||
** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). |
||||
*/ |
||||
|
||||
/*
|
||||
** This header is for use ONLY with the time conversion code. |
||||
** There is no guarantee that it will remain unchanged, |
||||
** or that it will remain at all. |
||||
** Do NOT copy it to any system include directory. |
||||
** Thank you! |
||||
*/ |
||||
|
||||
/*
|
||||
** ID |
||||
*/ |
||||
|
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char tzfilehid[] = "@(#)tzfile.h 7.14"; |
||||
#endif /* !defined NOID */ |
||||
#endif /* !defined lint */ |
||||
|
||||
/*
|
||||
** Information about time zone files. |
||||
*/ |
||||
|
||||
#ifndef TZDIR |
||||
#define TZDIR "/usr/local/etc/zoneinfo" /* Time zone object file directory */ |
||||
#endif /* !defined TZDIR */ |
||||
|
||||
#ifndef TZDEFAULT |
||||
#define TZDEFAULT "localtime" |
||||
#endif /* !defined TZDEFAULT */ |
||||
|
||||
#ifndef TZDEFRULES |
||||
#define TZDEFRULES "posixrules" |
||||
#endif /* !defined TZDEFRULES */ |
||||
|
||||
/*
|
||||
** Each file begins with. . . |
||||
*/ |
||||
|
||||
#define TZ_MAGIC "TZif" |
||||
|
||||
struct tzhead { |
||||
char tzh_magic[4]; /* TZ_MAGIC */ |
||||
char tzh_reserved[16]; /* reserved for future use */ |
||||
char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ |
||||
char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ |
||||
char tzh_leapcnt[4]; /* coded number of leap seconds */ |
||||
char tzh_timecnt[4]; /* coded number of transition times */ |
||||
char tzh_typecnt[4]; /* coded number of local time types */ |
||||
char tzh_charcnt[4]; /* coded number of abbr. chars */ |
||||
}; |
||||
|
||||
/*
|
||||
** . . .followed by. . . |
||||
** |
||||
** tzh_timecnt (char [4])s coded transition times a la time(2) |
||||
** tzh_timecnt (unsigned char)s types of local time starting at above |
||||
** tzh_typecnt repetitions of |
||||
** one (char [4]) coded UTC offset in seconds |
||||
** one (unsigned char) used to set tm_isdst |
||||
** one (unsigned char) that's an abbreviation list index |
||||
** tzh_charcnt (char)s '\0'-terminated zone abbreviations |
||||
** tzh_leapcnt repetitions of |
||||
** one (char [4]) coded leap second transition times |
||||
** one (char [4]) total correction after above |
||||
** tzh_ttisstdcnt (char)s indexed by type; if TRUE, transition |
||||
** time is standard time, if FALSE, |
||||
** transition time is wall clock time |
||||
** if absent, transition times are |
||||
** assumed to be wall clock time |
||||
** tzh_ttisgmtcnt (char)s indexed by type; if TRUE, transition |
||||
** time is UTC, if FALSE, |
||||
** transition time is local time |
||||
** if absent, transition times are |
||||
** assumed to be local time |
||||
*/ |
||||
|
||||
/*
|
||||
** In the current implementation, "tzset()" refuses to deal with files that |
||||
** exceed any of the limits below. |
||||
*/ |
||||
|
||||
#ifndef TZ_MAX_TIMES |
||||
/*
|
||||
** The TZ_MAX_TIMES value below is enough to handle a bit more than a |
||||
** year's worth of solar time (corrected daily to the nearest second) or |
||||
** 138 years of Pacific Presidential Election time |
||||
** (where there are three time zone transitions every fourth year). |
||||
*/ |
||||
#define TZ_MAX_TIMES 370 |
||||
#endif /* !defined TZ_MAX_TIMES */ |
||||
|
||||
#ifndef TZ_MAX_TYPES |
||||
#ifndef NOSOLAR |
||||
#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ |
||||
#endif /* !defined NOSOLAR */ |
||||
#ifdef NOSOLAR |
||||
/*
|
||||
** Must be at least 14 for Europe/Riga as of Jan 12 1995, |
||||
** as noted by Earl Chew <earl@hpato.aus.hp.com>. |
||||
*/ |
||||
#define TZ_MAX_TYPES 20 /* Maximum number of local time types */ |
||||
#endif /* !defined NOSOLAR */ |
||||
#endif /* !defined TZ_MAX_TYPES */ |
||||
|
||||
#ifndef TZ_MAX_CHARS |
||||
#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ |
||||
/* (limited by what unsigned chars can hold) */ |
||||
#endif /* !defined TZ_MAX_CHARS */ |
||||
|
||||
#ifndef TZ_MAX_LEAPS |
||||
#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ |
||||
#endif /* !defined TZ_MAX_LEAPS */ |
||||
|
||||
#define SECSPERMIN 60 |
||||
#define MINSPERHOUR 60 |
||||
#define HOURSPERDAY 24 |
||||
#define DAYSPERWEEK 7 |
||||
#define DAYSPERNYEAR 365 |
||||
#define DAYSPERLYEAR 366 |
||||
#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) |
||||
#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY) |
||||
#define MONSPERYEAR 12 |
||||
|
||||
#define TM_SUNDAY 0 |
||||
#define TM_MONDAY 1 |
||||
#define TM_TUESDAY 2 |
||||
#define TM_WEDNESDAY 3 |
||||
#define TM_THURSDAY 4 |
||||
#define TM_FRIDAY 5 |
||||
#define TM_SATURDAY 6 |
||||
|
||||
#define TM_JANUARY 0 |
||||
#define TM_FEBRUARY 1 |
||||
#define TM_MARCH 2 |
||||
#define TM_APRIL 3 |
||||
#define TM_MAY 4 |
||||
#define TM_JUNE 5 |
||||
#define TM_JULY 6 |
||||
#define TM_AUGUST 7 |
||||
#define TM_SEPTEMBER 8 |
||||
#define TM_OCTOBER 9 |
||||
#define TM_NOVEMBER 10 |
||||
#define TM_DECEMBER 11 |
||||
|
||||
#define TM_YEAR_BASE 1900 |
||||
|
||||
#define EPOCH_YEAR 1970 |
||||
#define EPOCH_WDAY TM_THURSDAY |
||||
|
||||
/*
|
||||
** Accurate only for the past couple of centuries; |
||||
** that will probably do. |
||||
*/ |
||||
|
||||
#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) |
||||
|
||||
#ifndef USG |
||||
|
||||
/*
|
||||
** Use of the underscored variants may cause problems if you move your code to |
||||
** certain System-V-based systems; for maximum portability, use the |
||||
** underscore-free variants. The underscored variants are provided for |
||||
** backward compatibility only; they may disappear from future versions of |
||||
** this file. |
||||
*/ |
||||
|
||||
#define SECS_PER_MIN SECSPERMIN |
||||
#define MINS_PER_HOUR MINSPERHOUR |
||||
#define HOURS_PER_DAY HOURSPERDAY |
||||
#define DAYS_PER_WEEK DAYSPERWEEK |
||||
#define DAYS_PER_NYEAR DAYSPERNYEAR |
||||
#define DAYS_PER_LYEAR DAYSPERLYEAR |
||||
#define SECS_PER_HOUR SECSPERHOUR |
||||
#define SECS_PER_DAY SECSPERDAY |
||||
#define MONS_PER_YEAR MONSPERYEAR |
||||
|
||||
#endif /* !defined USG */ |
||||
|
||||
#endif /* !defined TZFILE_H */ |
||||
#ifndef TZFILE_H |
||||
|
||||
#define TZFILE_H |
||||
|
||||
/*
|
||||
** This file is in the public domain, so clarified as of |
||||
** 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov). |
||||
*/ |
||||
|
||||
/*
|
||||
** This header is for use ONLY with the time conversion code. |
||||
** There is no guarantee that it will remain unchanged, |
||||
** or that it will remain at all. |
||||
** Do NOT copy it to any system include directory. |
||||
** Thank you! |
||||
*/ |
||||
|
||||
/*
|
||||
** ID |
||||
*/ |
||||
|
||||
#ifndef lint |
||||
#ifndef NOID |
||||
static char tzfilehid[] = "@(#)tzfile.h 7.14"; |
||||
#endif /* !defined NOID */ |
||||
#endif /* !defined lint */ |
||||
|
||||
/*
|
||||
** Information about time zone files. |
||||
*/ |
||||
|
||||
#ifndef TZDIR |
||||
#define TZDIR "/usr/local/etc/zoneinfo" /* Time zone object file directory */ |
||||
#endif /* !defined TZDIR */ |
||||
|
||||
#ifndef TZDEFAULT |
||||
#define TZDEFAULT "localtime" |
||||
#endif /* !defined TZDEFAULT */ |
||||
|
||||
#ifndef TZDEFRULES |
||||
#define TZDEFRULES "posixrules" |
||||
#endif /* !defined TZDEFRULES */ |
||||
|
||||
/*
|
||||
** Each file begins with. . . |
||||
*/ |
||||
|
||||
#define TZ_MAGIC "TZif" |
||||
|
||||
struct tzhead { |
||||
char tzh_magic[4]; /* TZ_MAGIC */ |
||||
char tzh_reserved[16]; /* reserved for future use */ |
||||
char tzh_ttisgmtcnt[4]; /* coded number of trans. time flags */ |
||||
char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ |
||||
char tzh_leapcnt[4]; /* coded number of leap seconds */ |
||||
char tzh_timecnt[4]; /* coded number of transition times */ |
||||
char tzh_typecnt[4]; /* coded number of local time types */ |
||||
char tzh_charcnt[4]; /* coded number of abbr. chars */ |
||||
}; |
||||
|
||||
/*
|
||||
** . . .followed by. . . |
||||
** |
||||
** tzh_timecnt (char [4])s coded transition times a la time(2) |
||||
** tzh_timecnt (unsigned char)s types of local time starting at above |
||||
** tzh_typecnt repetitions of |
||||
** one (char [4]) coded UTC offset in seconds |
||||
** one (unsigned char) used to set tm_isdst |
||||
** one (unsigned char) that's an abbreviation list index |
||||
** tzh_charcnt (char)s '\0'-terminated zone abbreviations |
||||
** tzh_leapcnt repetitions of |
||||
** one (char [4]) coded leap second transition times |
||||
** one (char [4]) total correction after above |
||||
** tzh_ttisstdcnt (char)s indexed by type; if TRUE, transition |
||||
** time is standard time, if FALSE, |
||||
** transition time is wall clock time |
||||
** if absent, transition times are |
||||
** assumed to be wall clock time |
||||
** tzh_ttisgmtcnt (char)s indexed by type; if TRUE, transition |
||||
** time is UTC, if FALSE, |
||||
** transition time is local time |
||||
** if absent, transition times are |
||||
** assumed to be local time |
||||
*/ |
||||
|
||||
/*
|
||||
** In the current implementation, "tzset()" refuses to deal with files that |
||||
** exceed any of the limits below. |
||||
*/ |
||||
|
||||
#ifndef TZ_MAX_TIMES |
||||
/*
|
||||
** The TZ_MAX_TIMES value below is enough to handle a bit more than a |
||||
** year's worth of solar time (corrected daily to the nearest second) or |
||||
** 138 years of Pacific Presidential Election time |
||||
** (where there are three time zone transitions every fourth year). |
||||
*/ |
||||
#define TZ_MAX_TIMES 370 |
||||
#endif /* !defined TZ_MAX_TIMES */ |
||||
|
||||
#ifndef TZ_MAX_TYPES |
||||
#ifndef NOSOLAR |
||||
#define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ |
||||
#endif /* !defined NOSOLAR */ |
||||
#ifdef NOSOLAR |
||||
/*
|
||||
** Must be at least 14 for Europe/Riga as of Jan 12 1995, |
||||
** as noted by Earl Chew <earl@hpato.aus.hp.com>. |
||||
*/ |
||||
#define TZ_MAX_TYPES 20 /* Maximum number of local time types */ |
||||
#endif /* !defined NOSOLAR */ |
||||
#endif /* !defined TZ_MAX_TYPES */ |
||||
|
||||
#ifndef TZ_MAX_CHARS |
||||
#define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ |
||||
/* (limited by what unsigned chars can hold) */ |
||||
#endif /* !defined TZ_MAX_CHARS */ |
||||
|
||||
#ifndef TZ_MAX_LEAPS |
||||
#define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ |
||||
#endif /* !defined TZ_MAX_LEAPS */ |
||||
|
||||
#define SECSPERMIN 60 |
||||
#define MINSPERHOUR 60 |
||||
#define HOURSPERDAY 24 |
||||
#define DAYSPERWEEK 7 |
||||
#define DAYSPERNYEAR 365 |
||||
#define DAYSPERLYEAR 366 |
||||
#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) |
||||
#define SECSPERDAY ((long) SECSPERHOUR * HOURSPERDAY) |
||||
#define MONSPERYEAR 12 |
||||
|
||||
#define TM_SUNDAY 0 |
||||
#define TM_MONDAY 1 |
||||
#define TM_TUESDAY 2 |
||||
#define TM_WEDNESDAY 3 |
||||
#define TM_THURSDAY 4 |
||||
#define TM_FRIDAY 5 |
||||
#define TM_SATURDAY 6 |
||||
|
||||
#define TM_JANUARY 0 |
||||
#define TM_FEBRUARY 1 |
||||
#define TM_MARCH 2 |
||||
#define TM_APRIL 3 |
||||
#define TM_MAY 4 |
||||
#define TM_JUNE 5 |
||||
#define TM_JULY 6 |
||||
#define TM_AUGUST 7 |
||||
#define TM_SEPTEMBER 8 |
||||
#define TM_OCTOBER 9 |
||||
#define TM_NOVEMBER 10 |
||||
#define TM_DECEMBER 11 |
||||
|
||||
#define TM_YEAR_BASE 1900 |
||||
|
||||
#define EPOCH_YEAR 1970 |
||||
#define EPOCH_WDAY TM_THURSDAY |
||||
|
||||
/*
|
||||
** Accurate only for the past couple of centuries; |
||||
** that will probably do. |
||||
*/ |
||||
|
||||
#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) |
||||
|
||||
#ifndef USG |
||||
|
||||
/*
|
||||
** Use of the underscored variants may cause problems if you move your code to |
||||
** certain System-V-based systems; for maximum portability, use the |
||||
** underscore-free variants. The underscored variants are provided for |
||||
** backward compatibility only; they may disappear from future versions of |
||||
** this file. |
||||
*/ |
||||
|
||||
#define SECS_PER_MIN SECSPERMIN |
||||
#define MINS_PER_HOUR MINSPERHOUR |
||||
#define HOURS_PER_DAY HOURSPERDAY |
||||
#define DAYS_PER_WEEK DAYSPERWEEK |
||||
#define DAYS_PER_NYEAR DAYSPERNYEAR |
||||
#define DAYS_PER_LYEAR DAYSPERLYEAR |
||||
#define SECS_PER_HOUR SECSPERHOUR |
||||
#define SECS_PER_DAY SECSPERDAY |
||||
#define MONS_PER_YEAR MONSPERYEAR |
||||
|
||||
#endif /* !defined USG */ |
||||
|
||||
#endif /* !defined TZFILE_H */ |
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue