summaryrefslogtreecommitdiffstats
path: root/contrib/tzcode
diff options
context:
space:
mode:
authoredwin <edwin@FreeBSD.org>2010-02-25 21:29:40 +0000
committeredwin <edwin@FreeBSD.org>2010-02-25 21:29:40 +0000
commit4978e0cc8cf7e45e66954379f057c0918c58fd7c (patch)
tree02c04d9ebe8255b6e36f79bf6c45a0010a11b6a9 /contrib/tzcode
parent89265a4363aa6c1a99939be91f6a5b200c414f38 (diff)
downloadFreeBSD-src-4978e0cc8cf7e45e66954379f057c0918c58fd7c.zip
FreeBSD-src-4978e0cc8cf7e45e66954379f057c0918c58fd7c.tar.gz
Remove non-contributed code.
Diffstat (limited to 'contrib/tzcode')
-rw-r--r--contrib/tzcode/stdtime/Makefile.inc18
-rw-r--r--contrib/tzcode/stdtime/Symbol.map35
-rw-r--r--contrib/tzcode/stdtime/strftime.3278
-rw-r--r--contrib/tzcode/stdtime/strftime.c634
-rw-r--r--contrib/tzcode/stdtime/strptime.3173
-rw-r--r--contrib/tzcode/stdtime/strptime.c566
-rw-r--r--contrib/tzcode/stdtime/time32.c100
-rw-r--r--contrib/tzcode/stdtime/timelocal.c117
-rw-r--r--contrib/tzcode/stdtime/timelocal.h55
9 files changed, 0 insertions, 1976 deletions
diff --git a/contrib/tzcode/stdtime/Makefile.inc b/contrib/tzcode/stdtime/Makefile.inc
deleted file mode 100644
index a58a8a2..0000000
--- a/contrib/tzcode/stdtime/Makefile.inc
+++ /dev/null
@@ -1,18 +0,0 @@
-# Makefile.inc,v 1.2 1994/09/13 21:26:01 wollman Exp
-# $FreeBSD$
-
-.PATH: ${.CURDIR}/stdtime ${.CURDIR}/../locale
-
-SRCS+= asctime.c difftime.c localtime.c strftime.c strptime.c timelocal.c \
- time32.c
-
-SYM_MAPS+= ${.CURDIR}/stdtime/Symbol.map
-
-MAN+= ctime.3 strftime.3 strptime.3 time2posix.3
-MAN+= tzfile.5
-
-MLINKS+=ctime.3 asctime.3 ctime.3 difftime.3 ctime.3 gmtime.3 \
- ctime.3 localtime.3 ctime.3 mktime.3 ctime.3 timegm.3 \
- ctime.3 ctime_r.3 ctime.3 localtime_r.3 ctime.3 gmtime_r.3 \
- ctime.3 asctime_r.3
-MLINKS+=time2posix.3 posix2time.3
diff --git a/contrib/tzcode/stdtime/Symbol.map b/contrib/tzcode/stdtime/Symbol.map
deleted file mode 100644
index 3bee3735..0000000
--- a/contrib/tzcode/stdtime/Symbol.map
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * $FreeBSD$
- */
-
-FBSD_1.0 {
- _time32_to_time;
- _time_to_time32;
- _time64_to_time;
- _time_to_time64;
- _time_to_long;
- _long_to_time;
- _time_to_int;
- _int_to_time;
- strptime;
- strftime;
- tzname;
- tzsetwall;
- tzset;
- localtime;
- localtime_r;
- gmtime;
- gmtime_r;
- offtime;
- ctime;
- ctime_r;
- mktime;
- timelocal;
- timegm;
- timeoff;
- time2posix;
- posix2time;
- difftime;
- asctime_r;
- asctime;
-};
diff --git a/contrib/tzcode/stdtime/strftime.3 b/contrib/tzcode/stdtime/strftime.3
deleted file mode 100644
index d5cdd7d..0000000
--- a/contrib/tzcode/stdtime/strftime.3
+++ /dev/null
@@ -1,278 +0,0 @@
-.\" Copyright (c) 1989, 1991, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" the American National Standards Committee X3, on Information
-.\" Processing Systems.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)strftime.3 8.1 (Berkeley) 6/4/93
-.\" $FreeBSD$
-.\"
-.Dd November 4, 2004
-.Dt STRFTIME 3
-.Os
-.Sh NAME
-.Nm strftime
-.Nd format date and time
-.Sh LIBRARY
-.Lb libc
-.Sh SYNOPSIS
-.In time.h
-.Ft size_t
-.Fo strftime
-.Fa "char * restrict buf"
-.Fa "size_t maxsize"
-.Fa "const char * restrict format"
-.Fa "const struct tm * restrict timeptr"
-.Fc
-.Sh DESCRIPTION
-The
-.Fn strftime
-function formats the information from
-.Fa timeptr
-into the buffer
-.Fa buf
-according to the string pointed to by
-.Fa format .
-.Pp
-The
-.Fa format
-string consists of zero or more conversion specifications and
-ordinary characters.
-All ordinary characters are copied directly into the buffer.
-A conversion specification consists of a percent sign
-.Dq Ql %
-and one other character.
-.Pp
-No more than
-.Fa maxsize
-characters will be placed into the array.
-If the total number of resulting characters, including the terminating
-NUL character, is not more than
-.Fa maxsize ,
-.Fn strftime
-returns the number of characters in the array, not counting the
-terminating NUL.
-Otherwise, zero is returned and the buffer contents are indeterminate.
-.Pp
-The conversion specifications are copied to the buffer after expansion
-as follows:-
-.Bl -tag -width "xxxx"
-.It Cm \&%A
-is replaced by national representation of the full weekday name.
-.It Cm %a
-is replaced by national representation of
-the abbreviated weekday name.
-.It Cm \&%B
-is replaced by national representation of the full month name.
-.It Cm %b
-is replaced by national representation of
-the abbreviated month name.
-.It Cm \&%C
-is replaced by (year / 100) as decimal number; single
-digits are preceded by a zero.
-.It Cm %c
-is replaced by national representation of time and date.
-.It Cm \&%D
-is equivalent to
-.Dq Li %m/%d/%y .
-.It Cm %d
-is replaced by the day of the month as a decimal number (01-31).
-.It Cm %E* %O*
-POSIX locale extensions.
-The sequences
-%Ec %EC %Ex %EX %Ey %EY
-%Od %Oe %OH %OI %Om %OM
-%OS %Ou %OU %OV %Ow %OW %Oy
-are supposed to provide alternate
-representations.
-.Pp
-Additionally %OB implemented
-to represent alternative months names
-(used standalone, without day mentioned).
-.It Cm %e
-is replaced by the day of the month as a decimal number (1-31); single
-digits are preceded by a blank.
-.It Cm \&%F
-is equivalent to
-.Dq Li %Y-%m-%d .
-.It Cm \&%G
-is replaced by a year as a decimal number with century.
-This year is the one that contains the greater part of
-the week (Monday as the first day of the week).
-.It Cm %g
-is replaced by the same year as in
-.Dq Li %G ,
-but as a decimal number without century (00-99).
-.It Cm \&%H
-is replaced by the hour (24-hour clock) as a decimal number (00-23).
-.It Cm %h
-the same as
-.Cm %b .
-.It Cm \&%I
-is replaced by the hour (12-hour clock) as a decimal number (01-12).
-.It Cm %j
-is replaced by the day of the year as a decimal number (001-366).
-.It Cm %k
-is replaced by the hour (24-hour clock) as a decimal number (0-23);
-single digits are preceded by a blank.
-.It Cm %l
-is replaced by the hour (12-hour clock) as a decimal number (1-12);
-single digits are preceded by a blank.
-.It Cm \&%M
-is replaced by the minute as a decimal number (00-59).
-.It Cm %m
-is replaced by the month as a decimal number (01-12).
-.It Cm %n
-is replaced by a newline.
-.It Cm %O*
-the same as
-.Cm %E* .
-.It Cm %p
-is replaced by national representation of either
-"ante meridiem" (a.m.)
-or
-"post meridiem" (p.m.)
-as appropriate.
-.It Cm \&%R
-is equivalent to
-.Dq Li %H:%M .
-.It Cm %r
-is equivalent to
-.Dq Li %I:%M:%S %p .
-.It Cm \&%S
-is replaced by the second as a decimal number (00-60).
-.It Cm %s
-is replaced by the number of seconds since the Epoch, UTC (see
-.Xr mktime 3 ) .
-.It Cm \&%T
-is equivalent to
-.Dq Li %H:%M:%S .
-.It Cm %t
-is replaced by a tab.
-.It Cm \&%U
-is replaced by the week number of the year (Sunday as the first day of
-the week) as a decimal number (00-53).
-.It Cm %u
-is replaced by the weekday (Monday as the first day of the week)
-as a decimal number (1-7).
-.It Cm \&%V
-is replaced by the week number of the year (Monday as the first day of
-the week) as a decimal number (01-53).
-If the week containing January
-1 has four or more days in the new year, then it is week 1; otherwise
-it is the last week of the previous year, and the next week is week 1.
-.It Cm %v
-is equivalent to
-.Dq Li %e-%b-%Y .
-.It Cm \&%W
-is replaced by the week number of the year (Monday as the first day of
-the week) as a decimal number (00-53).
-.It Cm %w
-is replaced by the weekday (Sunday as the first day of the week)
-as a decimal number (0-6).
-.It Cm \&%X
-is replaced by national representation of the time.
-.It Cm %x
-is replaced by national representation of the date.
-.It Cm \&%Y
-is replaced by the year with century as a decimal number.
-.It Cm %y
-is replaced by the year without century as a decimal number (00-99).
-.It Cm \&%Z
-is replaced by the time zone name.
-.It Cm %z
-is replaced by the time zone offset from UTC; a leading plus sign stands for
-east of UTC, a minus sign for west of UTC, hours and minutes follow
-with two digits each and no delimiter between them (common form for
-RFC 822 date headers).
-.It Cm %+
-is replaced by national representation of the date and time
-(the format is similar to that produced by
-.Xr date 1 ) .
-.It Cm %-*
-GNU libc extension.
-Do not do any padding when performing numerical outputs.
-.It Cm %_*
-GNU libc extension.
-Explicitly specify space for padding.
-.It Cm %0*
-GNU libc extension.
-Explicitly specify zero for padding.
-.It Cm %%
-is replaced by
-.Ql % .
-.El
-.Sh SEE ALSO
-.Xr date 1 ,
-.Xr printf 1 ,
-.Xr ctime 3 ,
-.Xr printf 3 ,
-.Xr strptime 3 ,
-.Xr wcsftime 3
-.Sh STANDARDS
-The
-.Fn strftime
-function
-conforms to
-.St -isoC
-with a lot of extensions including
-.Ql %C ,
-.Ql \&%D ,
-.Ql %E* ,
-.Ql %e ,
-.Ql %G ,
-.Ql %g ,
-.Ql %h ,
-.Ql %k ,
-.Ql %l ,
-.Ql %n ,
-.Ql %O* ,
-.Ql \&%R ,
-.Ql %r ,
-.Ql %s ,
-.Ql \&%T ,
-.Ql %t ,
-.Ql %u ,
-.Ql \&%V ,
-.Ql %z ,
-.Ql %+ .
-.Pp
-The peculiar week number and year in the replacements of
-.Ql %G ,
-.Ql %g
-and
-.Ql \&%V
-are defined in ISO 8601: 1988.
-.Sh BUGS
-There is no conversion specification for the phase of the moon.
-.Pp
-The
-.Fn strftime
-function does not correctly handle multibyte characters in the
-.Fa format
-argument.
diff --git a/contrib/tzcode/stdtime/strftime.c b/contrib/tzcode/stdtime/strftime.c
deleted file mode 100644
index dac910b..0000000
--- a/contrib/tzcode/stdtime/strftime.c
+++ /dev/null
@@ -1,634 +0,0 @@
-/*
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#ifndef lint
-#ifndef NOID
-static const char elsieid[] = "@(#)strftime.3 8.3";
-/*
-** Based on the UCB version with the ID appearing below.
-** This is ANSIish only when "multibyte character == plain character".
-*/
-#endif /* !defined NOID */
-#endif /* !defined lint */
-
-#include "namespace.h"
-#include "private.h"
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static const char sccsid[] = "@(#)strftime.c 5.4 (Berkeley) 3/14/89";
-#endif /* LIBC_SCCS and not lint */
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "tzfile.h"
-#include <fcntl.h>
-#include <sys/stat.h>
-#include "un-namespace.h"
-#include "timelocal.h"
-
-static char * _add(const char *, char *, const char *);
-static char * _conv(int, const char *, char *, const char *);
-static char * _fmt(const char *, const struct tm *, char *, const char *,
- int *);
-static char * _yconv(int, int, int, int, char *, const char *);
-
-extern char * tzname[];
-
-#ifndef YEAR_2000_NAME
-#define YEAR_2000_NAME "CHECK_STRFTIME_FORMATS_FOR_TWO_DIGIT_YEARS"
-#endif /* !defined YEAR_2000_NAME */
-
-#define IN_NONE 0
-#define IN_SOME 1
-#define IN_THIS 2
-#define IN_ALL 3
-
-#define PAD_DEFAULT 0
-#define PAD_LESS 1
-#define PAD_SPACE 2
-#define PAD_ZERO 3
-
-static const char* fmt_padding[][4] = {
- /* DEFAULT, LESS, SPACE, ZERO */
-#define PAD_FMT_MONTHDAY 0
-#define PAD_FMT_HMS 0
-#define PAD_FMT_CENTURY 0
-#define PAD_FMT_SHORTYEAR 0
-#define PAD_FMT_MONTH 0
-#define PAD_FMT_WEEKOFYEAR 0
-#define PAD_FMT_DAYOFMONTH 0
- { "%02d", "%d", "%2d", "%02d" },
-#define PAD_FMT_SDAYOFMONTH 1
-#define PAD_FMT_SHMS 1
- { "%2d", "%d", "%2d", "%02d" },
-#define PAD_FMT_DAYOFYEAR 2
- { "%03d", "%d", "%3d", "%03d" },
-#define PAD_FMT_YEAR 3
- { "%04d", "%d", "%4d", "%04d" }
-};
-
-size_t
-strftime(char * __restrict s, size_t maxsize, const char * __restrict format,
- const struct tm * __restrict t)
-{
- char * p;
- int warn;
-
- tzset();
- warn = IN_NONE;
- p = _fmt(((format == NULL) ? "%c" : format), t, s, s + maxsize, &warn);
-#ifndef NO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU
- if (warn != IN_NONE && getenv(YEAR_2000_NAME) != NULL) {
- (void) fprintf(stderr, "\n");
- if (format == NULL)
- (void) fprintf(stderr, "NULL strftime format ");
- else (void) fprintf(stderr, "strftime format \"%s\" ",
- format);
- (void) fprintf(stderr, "yields only two digits of years in ");
- if (warn == IN_SOME)
- (void) fprintf(stderr, "some locales");
- else if (warn == IN_THIS)
- (void) fprintf(stderr, "the current locale");
- else (void) fprintf(stderr, "all locales");
- (void) fprintf(stderr, "\n");
- }
-#endif /* !defined NO_RUN_TIME_WARNINGS_ABOUT_YEAR_2000_PROBLEMS_THANK_YOU */
- if (p == s + maxsize)
- return 0;
- *p = '\0';
- return p - s;
-}
-
-static char *
-_fmt(format, t, pt, ptlim, warnp)
-const char * format;
-const struct tm * const t;
-char * pt;
-const char * const ptlim;
-int * warnp;
-{
- int Ealternative, Oalternative, PadIndex;
- struct lc_time_T *tptr = __get_current_time_locale();
-
- for ( ; *format; ++format) {
- if (*format == '%') {
- Ealternative = 0;
- Oalternative = 0;
- PadIndex = PAD_DEFAULT;
-label:
- switch (*++format) {
- case '\0':
- --format;
- break;
- case 'A':
- pt = _add((t->tm_wday < 0 ||
- t->tm_wday >= DAYSPERWEEK) ?
- "?" : tptr->weekday[t->tm_wday],
- pt, ptlim);
- continue;
- case 'a':
- pt = _add((t->tm_wday < 0 ||
- t->tm_wday >= DAYSPERWEEK) ?
- "?" : tptr->wday[t->tm_wday],
- pt, ptlim);
- continue;
- case 'B':
- pt = _add((t->tm_mon < 0 ||
- t->tm_mon >= MONSPERYEAR) ?
- "?" : (Oalternative ? tptr->alt_month :
- tptr->month)[t->tm_mon],
- pt, ptlim);
- continue;
- case 'b':
- case 'h':
- pt = _add((t->tm_mon < 0 ||
- t->tm_mon >= MONSPERYEAR) ?
- "?" : tptr->mon[t->tm_mon],
- pt, ptlim);
- continue;
- case 'C':
- /*
- ** %C used to do a...
- ** _fmt("%a %b %e %X %Y", t);
- ** ...whereas now POSIX 1003.2 calls for
- ** something completely different.
- ** (ado, 1993-05-24)
- */
- pt = _yconv(t->tm_year, TM_YEAR_BASE, 1, 0,
- pt, ptlim);
- continue;
- case 'c':
- {
- int warn2 = IN_SOME;
-
- pt = _fmt(tptr->c_fmt, t, pt, ptlim, &warn2);
- if (warn2 == IN_ALL)
- warn2 = IN_THIS;
- if (warn2 > *warnp)
- *warnp = warn2;
- }
- continue;
- case 'D':
- pt = _fmt("%m/%d/%y", t, pt, ptlim, warnp);
- continue;
- case 'd':
- pt = _conv(t->tm_mday, fmt_padding[PAD_FMT_DAYOFMONTH][PadIndex],
- pt, ptlim);
- continue;
- case 'E':
- if (Ealternative || Oalternative)
- break;
- Ealternative++;
- goto label;
- case 'O':
- /*
- ** C99 locale modifiers.
- ** The sequences
- ** %Ec %EC %Ex %EX %Ey %EY
- ** %Od %oe %OH %OI %Om %OM
- ** %OS %Ou %OU %OV %Ow %OW %Oy
- ** are supposed to provide alternate
- ** representations.
- **
- ** FreeBSD extension
- ** %OB
- */
- if (Ealternative || Oalternative)
- break;
- Oalternative++;
- goto label;
- case 'e':
- pt = _conv(t->tm_mday,
- fmt_padding[PAD_FMT_SDAYOFMONTH][PadIndex], pt, ptlim);
- continue;
- case 'F':
- pt = _fmt("%Y-%m-%d", t, pt, ptlim, warnp);
- continue;
- case 'H':
- pt = _conv(t->tm_hour, fmt_padding[PAD_FMT_HMS][PadIndex],
- pt, ptlim);
- continue;
- case 'I':
- pt = _conv((t->tm_hour % 12) ?
- (t->tm_hour % 12) : 12,
- fmt_padding[PAD_FMT_HMS][PadIndex], pt, ptlim);
- continue;
- case 'j':
- pt = _conv(t->tm_yday + 1,
- fmt_padding[PAD_FMT_DAYOFYEAR][PadIndex], pt, ptlim);
- continue;
- case 'k':
- /*
- ** This used to be...
- ** _conv(t->tm_hour % 12 ?
- ** t->tm_hour % 12 : 12, 2, ' ');
- ** ...and has been changed to the below to
- ** match SunOS 4.1.1 and Arnold Robbins'
- ** strftime version 3.0. That is, "%k" and
- ** "%l" have been swapped.
- ** (ado, 1993-05-24)
- */
- pt = _conv(t->tm_hour, fmt_padding[PAD_FMT_SHMS][PadIndex],
- pt, ptlim);
- continue;
-#ifdef KITCHEN_SINK
- case 'K':
- /*
- ** After all this time, still unclaimed!
- */
- pt = _add("kitchen sink", pt, ptlim);
- continue;
-#endif /* defined KITCHEN_SINK */
- case 'l':
- /*
- ** This used to be...
- ** _conv(t->tm_hour, 2, ' ');
- ** ...and has been changed to the below to
- ** match SunOS 4.1.1 and Arnold Robbin's
- ** strftime version 3.0. That is, "%k" and
- ** "%l" have been swapped.
- ** (ado, 1993-05-24)
- */
- pt = _conv((t->tm_hour % 12) ?
- (t->tm_hour % 12) : 12,
- fmt_padding[PAD_FMT_SHMS][PadIndex], pt, ptlim);
- continue;
- case 'M':
- pt = _conv(t->tm_min, fmt_padding[PAD_FMT_HMS][PadIndex],
- pt, ptlim);
- continue;
- case 'm':
- pt = _conv(t->tm_mon + 1,
- fmt_padding[PAD_FMT_MONTH][PadIndex], pt, ptlim);
- continue;
- case 'n':
- pt = _add("\n", pt, ptlim);
- continue;
- case 'p':
- pt = _add((t->tm_hour >= (HOURSPERDAY / 2)) ?
- tptr->pm :
- tptr->am,
- pt, ptlim);
- continue;
- case 'R':
- pt = _fmt("%H:%M", t, pt, ptlim, warnp);
- continue;
- case 'r':
- pt = _fmt(tptr->ampm_fmt, t, pt, ptlim,
- warnp);
- continue;
- case 'S':
- pt = _conv(t->tm_sec, fmt_padding[PAD_FMT_HMS][PadIndex],
- pt, ptlim);
- continue;
- case 's':
- {
- struct tm tm;
- char buf[INT_STRLEN_MAXIMUM(
- time_t) + 1];
- time_t mkt;
-
- tm = *t;
- mkt = mktime(&tm);
- if (TYPE_SIGNED(time_t))
- (void) sprintf(buf, "%ld",
- (long) mkt);
- else (void) sprintf(buf, "%lu",
- (unsigned long) mkt);
- pt = _add(buf, pt, ptlim);
- }
- continue;
- case 'T':
- pt = _fmt("%H:%M:%S", t, pt, ptlim, warnp);
- continue;
- case 't':
- pt = _add("\t", pt, ptlim);
- continue;
- case 'U':
- pt = _conv((t->tm_yday + DAYSPERWEEK -
- t->tm_wday) / DAYSPERWEEK,
- fmt_padding[PAD_FMT_WEEKOFYEAR][PadIndex], pt, ptlim);
- continue;
- case 'u':
- /*
- ** From Arnold Robbins' strftime version 3.0:
- ** "ISO 8601: Weekday as a decimal number
- ** [1 (Monday) - 7]"
- ** (ado, 1993-05-24)
- */
- pt = _conv((t->tm_wday == 0) ?
- DAYSPERWEEK : t->tm_wday,
- "%d", pt, ptlim);
- continue;
- case 'V': /* ISO 8601 week number */
- case 'G': /* ISO 8601 year (four digits) */
- case 'g': /* ISO 8601 year (two digits) */
-/*
-** From Arnold Robbins' strftime version 3.0: "the week number of the
-** year (the first Monday as the first day of week 1) as a decimal number
-** (01-53)."
-** (ado, 1993-05-24)
-**
-** From "http://www.ft.uni-erlangen.de/~mskuhn/iso-time.html" by Markus Kuhn:
-** "Week 01 of a year is per definition the first week which has the
-** Thursday in this year, which is equivalent to the week which contains
-** the fourth day of January. In other words, the first week of a new year
-** is the week which has the majority of its days in the new year. Week 01
-** might also contain days from the previous year and the week before week
-** 01 of a year is the last week (52 or 53) of the previous year even if
-** it contains days from the new year. A week starts with Monday (day 1)
-** and ends with Sunday (day 7). For example, the first week of the year
-** 1997 lasts from 1996-12-30 to 1997-01-05..."
-** (ado, 1996-01-02)
-*/
- {
- int year;
- int base;
- int yday;
- int wday;
- int w;
-
- year = t->tm_year;
- base = TM_YEAR_BASE;
- yday = t->tm_yday;
- wday = t->tm_wday;
- for ( ; ; ) {
- int len;
- int bot;
- int top;
-
- len = isleap_sum(year, base) ?
- DAYSPERLYEAR :
- DAYSPERNYEAR;
- /*
- ** What yday (-3 ... 3) does
- ** the ISO year begin on?
- */
- bot = ((yday + 11 - wday) %
- DAYSPERWEEK) - 3;
- /*
- ** What yday does the NEXT
- ** ISO year begin on?
- */
- top = bot -
- (len % DAYSPERWEEK);
- if (top < -3)
- top += DAYSPERWEEK;
- top += len;
- if (yday >= top) {
- ++base;
- w = 1;
- break;
- }
- if (yday >= bot) {
- w = 1 + ((yday - bot) /
- DAYSPERWEEK);
- break;
- }
- --base;
- yday += isleap_sum(year, base) ?
- DAYSPERLYEAR :
- DAYSPERNYEAR;
- }
-#ifdef XPG4_1994_04_09
- if ((w == 52 &&
- t->tm_mon == TM_JANUARY) ||
- (w == 1 &&
- t->tm_mon == TM_DECEMBER))
- w = 53;
-#endif /* defined XPG4_1994_04_09 */
- if (*format == 'V')
- pt = _conv(w, fmt_padding[PAD_FMT_WEEKOFYEAR][PadIndex],
- pt, ptlim);
- else if (*format == 'g') {
- *warnp = IN_ALL;
- pt = _yconv(year, base, 0, 1,
- pt, ptlim);
- } else pt = _yconv(year, base, 1, 1,
- pt, ptlim);
- }
- continue;
- case 'v':
- /*
- ** From Arnold Robbins' strftime version 3.0:
- ** "date as dd-bbb-YYYY"
- ** (ado, 1993-05-24)
- */
- pt = _fmt("%e-%b-%Y", t, pt, ptlim, warnp);
- continue;
- case 'W':
- pt = _conv((t->tm_yday + DAYSPERWEEK -
- (t->tm_wday ?
- (t->tm_wday - 1) :
- (DAYSPERWEEK - 1))) / DAYSPERWEEK,
- fmt_padding[PAD_FMT_WEEKOFYEAR][PadIndex], pt, ptlim);
- continue;
- case 'w':
- pt = _conv(t->tm_wday, "%d", pt, ptlim);
- continue;
- case 'X':
- pt = _fmt(tptr->X_fmt, t, pt, ptlim, warnp);
- continue;
- case 'x':
- {
- int warn2 = IN_SOME;
-
- pt = _fmt(tptr->x_fmt, t, pt, ptlim, &warn2);
- if (warn2 == IN_ALL)
- warn2 = IN_THIS;
- if (warn2 > *warnp)
- *warnp = warn2;
- }
- continue;
- case 'y':
- *warnp = IN_ALL;
- pt = _yconv(t->tm_year, TM_YEAR_BASE, 0, 1,
- pt, ptlim);
- continue;
- case 'Y':
- pt = _yconv(t->tm_year, TM_YEAR_BASE, 1, 1,
- pt, ptlim);
- continue;
- case 'Z':
-#ifdef TM_ZONE
- if (t->TM_ZONE != NULL)
- pt = _add(t->TM_ZONE, pt, ptlim);
- else
-#endif /* defined TM_ZONE */
- if (t->tm_isdst >= 0)
- pt = _add(tzname[t->tm_isdst != 0],
- pt, ptlim);
- /*
- ** C99 says that %Z must be replaced by the
- ** empty string if the time zone is not
- ** determinable.
- */
- continue;
- case 'z':
- {
- int diff;
- char const * sign;
-
- if (t->tm_isdst < 0)
- continue;
-#ifdef TM_GMTOFF
- diff = t->TM_GMTOFF;
-#else /* !defined TM_GMTOFF */
- /*
- ** C99 says that the UTC offset must
- ** be computed by looking only at
- ** tm_isdst. This requirement is
- ** incorrect, since it means the code
- ** must rely on magic (in this case
- ** altzone and timezone), and the
- ** magic might not have the correct
- ** offset. Doing things correctly is
- ** tricky and requires disobeying C99;
- ** see GNU C strftime for details.
- ** For now, punt and conform to the
- ** standard, even though it's incorrect.
- **
- ** C99 says that %z must be replaced by the
- ** empty string if the time zone is not
- ** determinable, so output nothing if the
- ** appropriate variables are not available.
- */
- if (t->tm_isdst == 0)
-#ifdef USG_COMPAT
- diff = -timezone;
-#else /* !defined USG_COMPAT */
- continue;
-#endif /* !defined USG_COMPAT */
- else
-#ifdef ALTZONE
- diff = -altzone;
-#else /* !defined ALTZONE */
- continue;
-#endif /* !defined ALTZONE */
-#endif /* !defined TM_GMTOFF */
- if (diff < 0) {
- sign = "-";
- diff = -diff;
- } else sign = "+";
- pt = _add(sign, pt, ptlim);
- diff /= SECSPERMIN;
- diff = (diff / MINSPERHOUR) * 100 +
- (diff % MINSPERHOUR);
- pt = _conv(diff,
- fmt_padding[PAD_FMT_YEAR][PadIndex], pt, ptlim);
- }
- continue;
- case '+':
- pt = _fmt(tptr->date_fmt, t, pt, ptlim,
- warnp);
- continue;
- case '-':
- if (PadIndex != PAD_DEFAULT)
- break;
- PadIndex = PAD_LESS;
- goto label;
- case '_':
- if (PadIndex != PAD_DEFAULT)
- break;
- PadIndex = PAD_SPACE;
- goto label;
- case '0':
- if (PadIndex != PAD_DEFAULT)
- break;
- PadIndex = PAD_ZERO;
- goto label;
- case '%':
- /*
- ** X311J/88-090 (4.12.3.5): if conversion char is
- ** undefined, behavior is undefined. Print out the
- ** character itself as printf(3) also does.
- */
- default:
- break;
- }
- }
- if (pt == ptlim)
- break;
- *pt++ = *format;
- }
- return pt;
-}
-
-static char *
-_conv(n, format, pt, ptlim)
-const int n;
-const char * const format;
-char * const pt;
-const char * const ptlim;
-{
- char buf[INT_STRLEN_MAXIMUM(int) + 1];
-
- (void) sprintf(buf, format, n);
- return _add(buf, pt, ptlim);
-}
-
-static char *
-_add(str, pt, ptlim)
-const char * str;
-char * pt;
-const char * const ptlim;
-{
- while (pt < ptlim && (*pt = *str++) != '\0')
- ++pt;
- return pt;
-}
-
-/*
-** POSIX and the C Standard are unclear or inconsistent about
-** what %C and %y do if the year is negative or exceeds 9999.
-** Use the convention that %C concatenated with %y yields the
-** same output as %Y, and that %Y contains at least 4 bytes,
-** with more only if necessary.
-*/
-
-static char *
-_yconv(a, b, convert_top, convert_yy, pt, ptlim)
-const int a;
-const int b;
-const int convert_top;
-const int convert_yy;
-char * pt;
-const char * const ptlim;
-{
- register int lead;
- register int trail;
-
-#define DIVISOR 100
- trail = a % DIVISOR + b % DIVISOR;
- lead = a / DIVISOR + b / DIVISOR + trail / DIVISOR;
- trail %= DIVISOR;
- if (trail < 0 && lead > 0) {
- trail += DIVISOR;
- --lead;
- } else if (lead < 0 && trail > 0) {
- trail -= DIVISOR;
- ++lead;
- }
- if (convert_top) {
- if (lead == 0 && trail < 0)
- pt = _add("-0", pt, ptlim);
- else pt = _conv(lead, "%02d", pt, ptlim);
- }
- if (convert_yy)
- pt = _conv(((trail < 0) ? -trail : trail), "%02d", pt, ptlim);
- return pt;
-}
diff --git a/contrib/tzcode/stdtime/strptime.3 b/contrib/tzcode/stdtime/strptime.3
deleted file mode 100644
index 763696b..0000000
--- a/contrib/tzcode/stdtime/strptime.3
+++ /dev/null
@@ -1,173 +0,0 @@
-.\"
-.\" Copyright (c) 1997 Joerg Wunsch
-.\"
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
-.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\" "
-.Dd January 4, 2003
-.Dt STRPTIME 3
-.Os
-.Sh NAME
-.Nm strptime
-.Nd parse date and time string
-.Sh LIBRARY
-.Lb libc
-.Sh SYNOPSIS
-.In time.h
-.Ft char *
-.Fo strptime
-.Fa "const char * restrict buf"
-.Fa "const char * restrict format"
-.Fa "struct tm * restrict timeptr"
-.Fc
-.Sh DESCRIPTION
-The
-.Fn strptime
-function parses the string in the buffer
-.Fa buf
-according to the string pointed to by
-.Fa format ,
-and fills in the elements of the structure pointed to by
-.Fa timeptr .
-The resulting values will be relative to the local time zone.
-Thus, it can be considered the reverse operation of
-.Xr strftime 3 .
-.Pp
-The
-.Fa format
-string consists of zero or more conversion specifications and
-ordinary characters.
-All ordinary characters are matched exactly with the buffer, where
-white space in the format string will match any amount of white space
-in the buffer.
-All conversion specifications are identical to those described in
-.Xr strftime 3 .
-.Pp
-Two-digit year values, including formats
-.Fa %y
-and
-.Fa \&%D ,
-are now interpreted as beginning at 1969 per POSIX requirements.
-Years 69-00 are interpreted in the 20th century (1969-2000), years
-01-68 in the 21st century (2001-2068).
-.Pp
-If the
-.Fa format
-string does not contain enough conversion specifications to completely
-specify the resulting
-.Vt struct tm ,
-the unspecified members of
-.Va timeptr
-are left untouched.
-For example, if
-.Fa format
-is
-.Dq Li "%H:%M:%S" ,
-only
-.Va tm_hour ,
-.Va tm_sec
-and
-.Va tm_min
-will be modified.
-If time relative to today is desired, initialize the
-.Fa timeptr
-structure with today's date before passing it to
-.Fn strptime .
-.Sh RETURN VALUES
-Upon successful completion,
-.Fn strptime
-returns the pointer to the first character in
-.Fa buf
-that has not been required to satisfy the specified conversions in
-.Fa format .
-It returns
-.Dv NULL
-if one of the conversions failed.
-.Sh SEE ALSO
-.Xr date 1 ,
-.Xr scanf 3 ,
-.Xr strftime 3
-.Sh HISTORY
-The
-.Fn strptime
-function appeared in
-.Fx 3.0 .
-.Sh AUTHORS
-The
-.Fn strptime
-function has been contributed by Powerdog Industries.
-.Pp
-This man page was written by
-.An J\(:org Wunsch .
-.Sh BUGS
-Both the
-.Fa %e
-and
-.Fa %l
-format specifiers may incorrectly scan one too many digits
-if the intended values comprise only a single digit
-and that digit is followed immediately by another digit.
-Both specifiers accept zero-padded values,
-even though they are both defined as taking unpadded values.
-.Pp
-The
-.Fa %p
-format specifier has no effect unless it is parsed
-.Em after
-hour-related specifiers.
-Specifying
-.Fa %l
-without
-.Fa %p
-will produce undefined results.
-Note that 12AM
-(ante meridiem)
-is taken as midnight
-and 12PM
-(post meridiem)
-is taken as noon.
-.Pp
-The
-.Fa \&%U
-and
-.Fa %W
-format specifiers accept any value within the range 00 to 53
-without validating against other values supplied (like month
-or day of the year, for example).
-.Pp
-The
-.Fa %Z
-format specifier only accepts time zone abbreviations of the local time zone,
-or the value "GMT".
-This limitation is because of ambiguity due to of the over loading of time
-zone abbreviations.
-One such example is
-.Fa EST
-which is both Eastern Standard Time and Eastern Australia Summer Time.
-.Pp
-The
-.Fn strptime
-function does not correctly handle multibyte characters in the
-.Fa format
-argument.
diff --git a/contrib/tzcode/stdtime/strptime.c b/contrib/tzcode/stdtime/strptime.c
deleted file mode 100644
index 51d41ed..0000000
--- a/contrib/tzcode/stdtime/strptime.c
+++ /dev/null
@@ -1,566 +0,0 @@
-/*
- * Powerdog Industries kindly requests feedback from anyone modifying
- * this function:
- *
- * Date: Thu, 05 Jun 1997 23:17:17 -0400
- * From: Kevin Ruddy <kevin.ruddy@powerdog.com>
- * To: James FitzGibbon <james@nexis.net>
- * Subject: Re: Use of your strptime(3) code (fwd)
- *
- * The reason for the "no mod" clause was so that modifications would
- * come back and we could integrate them and reissue so that a wider
- * audience could use it (thereby spreading the wealth). This has
- * made it possible to get strptime to work on many operating systems.
- * I'm not sure why that's "plain unacceptable" to the FreeBSD team.
- *
- * Anyway, you can change it to "with or without modification" as
- * you see fit. Enjoy.
- *
- * Kevin Ruddy
- * Powerdog Industries, Inc.
- */
-/*
- * Copyright (c) 1994 Powerdog Industries. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * 3. All advertising materials mentioning features or use of this
- * software must display the following acknowledgement:
- * This product includes software developed by Powerdog Industries.
- * 4. The name of Powerdog Industries may not be used to endorse or
- * promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY POWERDOG INDUSTRIES ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE POWERDOG INDUSTRIES BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-#ifndef lint
-#ifndef NOID
-static char copyright[] __unused =
-"@(#) Copyright (c) 1994 Powerdog Industries. All rights reserved.";
-static char sccsid[] __unused = "@(#)strptime.c 0.1 (Powerdog) 94/03/27";
-#endif /* !defined NOID */
-#endif /* not lint */
-__FBSDID("$FreeBSD$");
-
-#include "namespace.h"
-#include <time.h>
-#include <ctype.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <pthread.h>
-#include "un-namespace.h"
-#include "libc_private.h"
-#include "timelocal.h"
-
-static char * _strptime(const char *, const char *, struct tm *, int *);
-
-#define asizeof(a) (sizeof (a) / sizeof ((a)[0]))
-
-static char *
-_strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp)
-{
- char c;
- const char *ptr;
- int i,
- len;
- int Ealternative, Oalternative;
- struct lc_time_T *tptr = __get_current_time_locale();
-
- ptr = fmt;
- while (*ptr != 0) {
- if (*buf == 0)
- break;
-
- c = *ptr++;
-
- if (c != '%') {
- if (isspace((unsigned char)c))
- while (*buf != 0 && isspace((unsigned char)*buf))
- buf++;
- else if (c != *buf++)
- return 0;
- continue;
- }
-
- Ealternative = 0;
- Oalternative = 0;
-label:
- c = *ptr++;
- switch (c) {
- case 0:
- case '%':
- if (*buf++ != '%')
- return 0;
- break;
-
- case '+':
- buf = _strptime(buf, tptr->date_fmt, tm, GMTp);
- if (buf == 0)
- return 0;
- break;
-
- case 'C':
- if (!isdigit((unsigned char)*buf))
- return 0;
-
- /* XXX This will break for 3-digit centuries. */
- len = 2;
- for (i = 0; len && *buf != 0 && isdigit((unsigned char)*buf); buf++) {
- i *= 10;
- i += *buf - '0';
- len--;
- }
- if (i < 19)
- return 0;
-
- tm->tm_year = i * 100 - 1900;
- break;
-
- case 'c':
- buf = _strptime(buf, tptr->c_fmt, tm, GMTp);
- if (buf == 0)
- return 0;
- break;
-
- case 'D':
- buf = _strptime(buf, "%m/%d/%y", tm, GMTp);
- if (buf == 0)
- return 0;
- break;
-
- case 'E':
- if (Ealternative || Oalternative)
- break;
- Ealternative++;
- goto label;
-
- case 'O':
- if (Ealternative || Oalternative)
- break;
- Oalternative++;
- goto label;
-
- case 'F':
- buf = _strptime(buf, "%Y-%m-%d", tm, GMTp);
- if (buf == 0)
- return 0;
- break;
-
- case 'R':
- buf = _strptime(buf, "%H:%M", tm, GMTp);
- if (buf == 0)
- return 0;
- break;
-
- case 'r':
- buf = _strptime(buf, tptr->ampm_fmt, tm, GMTp);
- if (buf == 0)
- return 0;
- break;
-
- case 'T':
- buf = _strptime(buf, "%H:%M:%S", tm, GMTp);
- if (buf == 0)
- return 0;
- break;
-
- case 'X':
- buf = _strptime(buf, tptr->X_fmt, tm, GMTp);
- if (buf == 0)
- return 0;
- break;
-
- case 'x':
- buf = _strptime(buf, tptr->x_fmt, tm, GMTp);
- if (buf == 0)
- return 0;
- break;
-
- case 'j':
- if (!isdigit((unsigned char)*buf))
- return 0;
-
- len = 3;
- for (i = 0; len && *buf != 0 && isdigit((unsigned char)*buf); buf++) {
- i *= 10;
- i += *buf - '0';
- len--;
- }
- if (i < 1 || i > 366)
- return 0;
-
- tm->tm_yday = i - 1;
- break;
-
- case 'M':
- case 'S':
- if (*buf == 0 || isspace((unsigned char)*buf))
- break;
-
- if (!isdigit((unsigned char)*buf))
- return 0;
-
- len = 2;
- for (i = 0; len && *buf != 0 && isdigit((unsigned char)*buf); buf++) {
- i *= 10;
- i += *buf - '0';
- len--;
- }
-
- if (c == 'M') {
- if (i > 59)
- return 0;
- tm->tm_min = i;
- } else {
- if (i > 60)
- return 0;
- tm->tm_sec = i;
- }
-
- if (*buf != 0 && isspace((unsigned char)*buf))
- while (*ptr != 0 && !isspace((unsigned char)*ptr))
- ptr++;
- break;
-
- case 'H':
- case 'I':
- case 'k':
- case 'l':
- /*
- * Of these, %l is the only specifier explicitly
- * documented as not being zero-padded. However,
- * there is no harm in allowing zero-padding.
- *
- * XXX The %l specifier may gobble one too many
- * digits if used incorrectly.
- */
- if (!isdigit((unsigned char)*buf))
- return 0;
-
- len = 2;
- for (i = 0; len && *buf != 0 && isdigit((unsigned char)*buf); buf++) {
- i *= 10;
- i += *buf - '0';
- len--;
- }
- if (c == 'H' || c == 'k') {
- if (i > 23)
- return 0;
- } else if (i > 12)
- return 0;
-
- tm->tm_hour = i;
-
- if (*buf != 0 && isspace((unsigned char)*buf))
- while (*ptr != 0 && !isspace((unsigned char)*ptr))
- ptr++;
- break;
-
- case 'p':
- /*
- * XXX This is bogus if parsed before hour-related
- * specifiers.
- */
- len = strlen(tptr->am);
- if (strncasecmp(buf, tptr->am, len) == 0) {
- if (tm->tm_hour > 12)
- return 0;
- if (tm->tm_hour == 12)
- tm->tm_hour = 0;
- buf += len;
- break;
- }
-
- len = strlen(tptr->pm);
- if (strncasecmp(buf, tptr->pm, len) == 0) {
- if (tm->tm_hour > 12)
- return 0;
- if (tm->tm_hour != 12)
- tm->tm_hour += 12;
- buf += len;
- break;
- }
-
- return 0;
-
- case 'A':
- case 'a':
- for (i = 0; i < asizeof(tptr->weekday); i++) {
- len = strlen(tptr->weekday[i]);
- if (strncasecmp(buf, tptr->weekday[i],
- len) == 0)
- break;
- len = strlen(tptr->wday[i]);
- if (strncasecmp(buf, tptr->wday[i],
- len) == 0)
- break;
- }
- if (i == asizeof(tptr->weekday))
- return 0;
-
- tm->tm_wday = i;
- buf += len;
- break;
-
- case 'U':
- case 'W':
- /*
- * XXX This is bogus, as we can not assume any valid
- * information present in the tm structure at this
- * point to calculate a real value, so just check the
- * range for now.
- */
- if (!isdigit((unsigned char)*buf))
- return 0;
-
- len = 2;
- for (i = 0; len && *buf != 0 && isdigit((unsigned char)*buf); buf++) {
- i *= 10;
- i += *buf - '0';
- len--;
- }
- if (i > 53)
- return 0;
-
- if (*buf != 0 && isspace((unsigned char)*buf))
- while (*ptr != 0 && !isspace((unsigned char)*ptr))
- ptr++;
- break;
-
- case 'w':
- if (!isdigit((unsigned char)*buf))
- return 0;
-
- i = *buf - '0';
- if (i > 6)
- return 0;
-
- tm->tm_wday = i;
-
- if (*buf != 0 && isspace((unsigned char)*buf))
- while (*ptr != 0 && !isspace((unsigned char)*ptr))
- ptr++;
- break;
-
- case 'd':
- case 'e':
- /*
- * The %e specifier is explicitly documented as not
- * being zero-padded but there is no harm in allowing
- * such padding.
- *
- * XXX The %e specifier may gobble one too many
- * digits if used incorrectly.
- */
- if (!isdigit((unsigned char)*buf))
- return 0;
-
- len = 2;
- for (i = 0; len && *buf != 0 && isdigit((unsigned char)*buf); buf++) {
- i *= 10;
- i += *buf - '0';
- len--;
- }
- if (i > 31)
- return 0;
-
- tm->tm_mday = i;
-
- if (*buf != 0 && isspace((unsigned char)*buf))
- while (*ptr != 0 && !isspace((unsigned char)*ptr))
- ptr++;
- break;
-
- case 'B':
- case 'b':
- case 'h':
- for (i = 0; i < asizeof(tptr->month); i++) {
- if (Oalternative) {
- if (c == 'B') {
- len = strlen(tptr->alt_month[i]);
- if (strncasecmp(buf,
- tptr->alt_month[i],
- len) == 0)
- break;
- }
- } else {
- len = strlen(tptr->month[i]);
- if (strncasecmp(buf, tptr->month[i],
- len) == 0)
- break;
- len = strlen(tptr->mon[i]);
- if (strncasecmp(buf, tptr->mon[i],
- len) == 0)
- break;
- }
- }
- if (i == asizeof(tptr->month))
- return 0;
-
- tm->tm_mon = i;
- buf += len;
- break;
-
- case 'm':
- if (!isdigit((unsigned char)*buf))
- return 0;
-
- len = 2;
- for (i = 0; len && *buf != 0 && isdigit((unsigned char)*buf); buf++) {
- i *= 10;
- i += *buf - '0';
- len--;
- }
- if (i < 1 || i > 12)
- return 0;
-
- tm->tm_mon = i - 1;
-
- if (*buf != 0 && isspace((unsigned char)*buf))
- while (*ptr != 0 && !isspace((unsigned char)*ptr))
- ptr++;
- break;
-
- case 's':
- {
- char *cp;
- int sverrno;
- long n;
- time_t t;
-
- sverrno = errno;
- errno = 0;
- n = strtol(buf, &cp, 10);
- if (errno == ERANGE || (long)(t = n) != n) {
- errno = sverrno;
- return 0;
- }
- errno = sverrno;
- buf = cp;
- gmtime_r(&t, tm);
- *GMTp = 1;
- }
- break;
-
- case 'Y':
- case 'y':
- if (*buf == 0 || isspace((unsigned char)*buf))
- break;
-
- if (!isdigit((unsigned char)*buf))
- return 0;
-
- len = (c == 'Y') ? 4 : 2;
- for (i = 0; len && *buf != 0 && isdigit((unsigned char)*buf); buf++) {
- i *= 10;
- i += *buf - '0';
- len--;
- }
- if (c == 'Y')
- i -= 1900;
- if (c == 'y' && i < 69)
- i += 100;
- if (i < 0)
- return 0;
-
- tm->tm_year = i;
-
- if (*buf != 0 && isspace((unsigned char)*buf))
- while (*ptr != 0 && !isspace((unsigned char)*ptr))
- ptr++;
- break;
-
- case 'Z':
- {
- const char *cp;
- char *zonestr;
-
- for (cp = buf; *cp && isupper((unsigned char)*cp); ++cp) {/*empty*/}
- if (cp - buf) {
- zonestr = alloca(cp - buf + 1);
- strncpy(zonestr, buf, cp - buf);
- zonestr[cp - buf] = '\0';
- tzset();
- if (0 == strcmp(zonestr, "GMT")) {
- *GMTp = 1;
- } else if (0 == strcmp(zonestr, tzname[0])) {
- tm->tm_isdst = 0;
- } else if (0 == strcmp(zonestr, tzname[1])) {
- tm->tm_isdst = 1;
- } else {
- return 0;
- }
- buf += cp - buf;
- }
- }
- break;
-
- case 'z':
- {
- int sign = 1;
-
- if (*buf != '+') {
- if (*buf == '-')
- sign = -1;
- else
- return 0;
- }
-
- buf++;
- i = 0;
- for (len = 4; len > 0; len--) {
- if (isdigit((unsigned char)*buf)) {
- i *= 10;
- i += *buf - '0';
- buf++;
- } else
- return 0;
- }
-
- tm->tm_hour -= sign * (i / 100);
- tm->tm_min -= sign * (i % 100);
- *GMTp = 1;
- }
- break;
- }
- }
- return (char *)buf;
-}
-
-
-char *
-strptime(const char * __restrict buf, const char * __restrict fmt,
- struct tm * __restrict tm)
-{
- char *ret;
- int gmt;
-
- gmt = 0;
- ret = _strptime(buf, fmt, tm, &gmt);
- if (ret && gmt) {
- time_t t = timegm(tm);
- localtime_r(&t, tm);
- }
-
- return (ret);
-}
diff --git a/contrib/tzcode/stdtime/time32.c b/contrib/tzcode/stdtime/time32.c
deleted file mode 100644
index e852a4f..0000000
--- a/contrib/tzcode/stdtime/time32.c
+++ /dev/null
@@ -1,100 +0,0 @@
-/*-
- * Copyright (c) 2001 FreeBSD Inc.
- * All rights reserved.
- *
- * These routines are for converting time_t to fixed-bit representations
- * for use in protocols or storage. When converting time to a larger
- * representation of time_t these routines are expected to assume temporal
- * locality and use the 50-year rule to properly set the msb bits. XXX
- *
- * Redistribution and use under the terms of the COPYRIGHT file at the
- * base of the source tree.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <timeconv.h>
-
-/*
- * Convert a 32 bit representation of time_t into time_t. XXX needs to
- * implement the 50-year rule to handle post-2038 conversions.
- */
-time_t
-_time32_to_time(__int32_t t32)
-{
- return((time_t)t32);
-}
-
-/*
- * Convert time_t to a 32 bit representation. If time_t is 64 bits we can
- * simply chop it down. The resulting 32 bit representation can be
- * converted back to a temporally local 64 bit time_t using time32_to_time.
- */
-__int32_t
-_time_to_time32(time_t t)
-{
- return((__int32_t)t);
-}
-
-/*
- * Convert a 64 bit representation of time_t into time_t. If time_t is
- * represented as 32 bits we can simply chop it and not support times
- * past 2038.
- */
-time_t
-_time64_to_time(__int64_t t64)
-{
- return((time_t)t64);
-}
-
-/*
- * Convert time_t to a 64 bit representation. If time_t is represented
- * as 32 bits we simply sign-extend and do not support times past 2038.
- */
-__int64_t
-_time_to_time64(time_t t)
-{
- return((__int64_t)t);
-}
-
-/*
- * Convert to/from 'long'. Depending on the sizeof(long) this may or
- * may not require using the 50-year rule.
- */
-long
-_time_to_long(time_t t)
-{
- if (sizeof(long) == sizeof(__int64_t))
- return(_time_to_time64(t));
- return((long)t);
-}
-
-time_t
-_long_to_time(long tlong)
-{
- if (sizeof(long) == sizeof(__int32_t))
- return(_time32_to_time(tlong));
- return((time_t)tlong);
-}
-
-/*
- * Convert to/from 'int'. Depending on the sizeof(int) this may or
- * may not require using the 50-year rule.
- */
-int
-_time_to_int(time_t t)
-{
- if (sizeof(int) == sizeof(__int64_t))
- return(_time_to_time64(t));
- return((int)t);
-}
-
-time_t
-_int_to_time(int tint)
-{
- if (sizeof(int) == sizeof(__int32_t))
- return(_time32_to_time(tint));
- return((time_t)tint);
-}
diff --git a/contrib/tzcode/stdtime/timelocal.c b/contrib/tzcode/stdtime/timelocal.c
deleted file mode 100644
index 6917e6b..0000000
--- a/contrib/tzcode/stdtime/timelocal.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*-
- * Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
- * Copyright (c) 1997 FreeBSD Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stddef.h>
-
-#include "ldpart.h"
-#include "timelocal.h"
-
-static struct lc_time_T _time_locale;
-static int _time_using_locale;
-static char *time_locale_buf;
-
-#define LCTIME_SIZE (sizeof(struct lc_time_T) / sizeof(char *))
-
-static const struct lc_time_T _C_time_locale = {
- {
- "Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
- }, {
- "January", "February", "March", "April", "May", "June",
- "July", "August", "September", "October", "November", "December"
- }, {
- "Sun", "Mon", "Tue", "Wed",
- "Thu", "Fri", "Sat"
- }, {
- "Sunday", "Monday", "Tuesday", "Wednesday",
- "Thursday", "Friday", "Saturday"
- },
-
- /* X_fmt */
- "%H:%M:%S",
-
- /*
- * x_fmt
- * Since the C language standard calls for
- * "date, using locale's date format," anything goes.
- * Using just numbers (as here) makes Quakers happier;
- * it's also compatible with SVR4.
- */
- "%m/%d/%y",
-
- /*
- * c_fmt
- */
- "%a %b %e %H:%M:%S %Y",
-
- /* am */
- "AM",
-
- /* pm */
- "PM",
-
- /* date_fmt */
- "%a %b %e %H:%M:%S %Z %Y",
-
- /* alt_month
- * Standalone months forms for %OB
- */
- {
- "January", "February", "March", "April", "May", "June",
- "July", "August", "September", "October", "November", "December"
- },
-
- /* md_order
- * Month / day order in dates
- */
- "md",
-
- /* ampm_fmt
- * To determine 12-hour clock format time (empty, if N/A)
- */
- "%I:%M:%S %p"
-};
-
-struct lc_time_T *
-__get_current_time_locale(void)
-{
- return (_time_using_locale
- ? &_time_locale
- : (struct lc_time_T *)&_C_time_locale);
-}
-
-int
-__time_load_locale(const char *name)
-{
- return (__part_load_locale(name, &_time_using_locale,
- &time_locale_buf, "LC_TIME",
- LCTIME_SIZE, LCTIME_SIZE,
- (const char **)&_time_locale));
-}
diff --git a/contrib/tzcode/stdtime/timelocal.h b/contrib/tzcode/stdtime/timelocal.h
deleted file mode 100644
index 5d26bf9..0000000
--- a/contrib/tzcode/stdtime/timelocal.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*-
- * Copyright (c) 1997-2002 FreeBSD Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _TIMELOCAL_H_
-#define _TIMELOCAL_H_
-
-/*
- * Private header file for the strftime and strptime localization
- * stuff.
- */
-struct lc_time_T {
- const char *mon[12];
- const char *month[12];
- const char *wday[7];
- const char *weekday[7];
- const char *X_fmt;
- const char *x_fmt;
- const char *c_fmt;
- const char *am;
- const char *pm;
- const char *date_fmt;
- const char *alt_month[12];
- const char *md_order;
- const char *ampm_fmt;
-};
-
-struct lc_time_T *__get_current_time_locale(void);
-int __time_load_locale(const char *);
-
-#endif /* !_TIMELOCAL_H_ */
OpenPOWER on IntegriCloud