summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libc/private/bionic_time.h7
-rw-r--r--libc/tzcode/localtime.c127
2 files changed, 41 insertions, 93 deletions
diff --git a/libc/private/bionic_time.h b/libc/private/bionic_time.h
index 464ab0f..ee82254 100644
--- a/libc/private/bionic_time.h
+++ b/libc/private/bionic_time.h
@@ -49,12 +49,7 @@ struct strftime_locale {
const char * date_fmt;
};
-/*
- * Note: you should consider these extensions deprecated and use managed code or icu4c instead.
- */
-extern size_t strftime_tz(char* s, size_t max, const char* format, const struct tm* tm, const struct strftime_locale* lc);
-extern time_t mktime_tz(struct tm* const tmp, char const* tz);
-extern void localtime_tz(const time_t* const timep, struct tm* tmp, const char* tz);
+extern size_t strftime_tz(char *s, size_t max, const char *format, const struct tm *tm, const struct strftime_locale* lc);
#endif /* _BIONIC_STRFTIME_TZ_DECLARED */
diff --git a/libc/tzcode/localtime.c b/libc/tzcode/localtime.c
index 6838180..e442a03 100644
--- a/libc/tzcode/localtime.c
+++ b/libc/tzcode/localtime.c
@@ -217,9 +217,9 @@ static const char * getoffset P((const char * strp, long * offsetp));
static const char * getrule P((const char * strp, struct rule * rulep));
static void gmtload P((struct state * sp));
static struct tm * gmtsub P((const time_t * timep, long offset,
- struct tm * tmp, const struct state * sp)); // android-changed: added sp.
+ struct tm * tmp));
static struct tm * localsub P((const time_t * timep, long offset,
- struct tm * tmp, const struct state * sp)); // android-changed: added sp.
+ struct tm * tmp));
static int increment_overflow P((int * number, int delta));
static int leaps_thru_end_of P((int y));
static int long_increment_overflow P((long * number, int delta));
@@ -230,16 +230,16 @@ static int normalize_overflow P((int * tensptr, int * unitsptr,
static void settzname P((void));
static time_t time1 P((struct tm * tmp,
struct tm * (*funcp) P((const time_t *,
- long, struct tm *, const struct state *)), // android-changed: added state*.
- long offset, const struct state * sp)); // android-changed: added sp.
+ long, struct tm *)),
+ long offset));
static time_t time2 P((struct tm *tmp,
struct tm * (*funcp) P((const time_t *,
- long, struct tm*, const struct state *)), // android-changed: added state*.
- long offset, int * okayp, const struct state * sp)); // android-changed: added sp.
+ long, struct tm*)),
+ long offset, int * okayp));
static time_t time2sub P((struct tm *tmp,
struct tm * (*funcp) P((const time_t *,
- long, struct tm*, const struct state *)), // android-changed: added state*.
- long offset, int * okayp, int do_norm_secs, const struct state * sp)); // android-change: added sp.
+ long, struct tm*)),
+ long offset, int * okayp, int do_norm_secs));
static struct tm * timesub P((const time_t * timep, long offset,
const struct state * sp, struct tm * tmp));
static int tmcomp P((const struct tm * atmp,
@@ -1331,25 +1331,21 @@ tzset P((void))
/*ARGSUSED*/
static struct tm *
-localsub(timep, offset, tmp, sp) // android-changed: added sp.
+localsub(timep, offset, tmp)
const time_t * const timep;
const long offset;
struct tm * const tmp;
-const struct state * sp; // android-added: added sp.
{
+ register struct state * sp;
register const struct ttinfo * ttisp;
register int i;
register struct tm * result;
const time_t t = *timep;
- // BEGIN android-changed: support user-supplied sp.
- if (sp == NULL) {
- sp = lclptr;
- }
- // END android-changed
+ sp = lclptr;
#ifdef ALL_STATE
if (sp == NULL)
- return gmtsub(timep, offset, tmp, sp); // android-changed: added sp.
+ return gmtsub(timep, offset, tmp);
#endif /* defined ALL_STATE */
if ((sp->goback && t < sp->ats[0]) ||
(sp->goahead && t > sp->ats[sp->timecnt - 1])) {
@@ -1376,7 +1372,7 @@ const struct state * sp; // android-added: added sp.
if (newt < sp->ats[0] ||
newt > sp->ats[sp->timecnt - 1])
return NULL; /* "cannot happen" */
- result = localsub(&newt, offset, tmp, sp); // android-changed: added sp.
+ result = localsub(&newt, offset, tmp);
if (result == tmp) {
register time_t newy;
@@ -1446,7 +1442,7 @@ struct tm * tmp;
_tzLock();
tzset_locked();
- result = localsub(timep, 0L, tmp, NULL); // android-changed: extra parameter.
+ result = localsub(timep, 0L, tmp);
_tzUnlock();
return result;
@@ -1457,16 +1453,13 @@ struct tm * tmp;
*/
static struct tm *
-gmtsub(timep, offset, tmp, sp) // android-changed: added sp.
+gmtsub(timep, offset, tmp)
const time_t * const timep;
const long offset;
struct tm * const tmp;
-const struct state * sp; // android-changed: added sp.
{
register struct tm * result;
- (void) sp; // android-added: unused.
-
if (!gmt_is_set) {
gmt_is_set = TRUE;
#ifdef ALL_STATE
@@ -1517,7 +1510,7 @@ struct tm * tmp;
struct tm* result;
_tzLock();
- result = gmtsub(timep, 0L, tmp, NULL); // android-changed: extra parameter.
+ result = gmtsub(timep, 0L, tmp);
_tzUnlock();
return result;
@@ -1530,7 +1523,7 @@ offtime(timep, offset)
const time_t * const timep;
const long offset;
{
- return gmtsub(timep, offset, &tmGlobal, NULL); // android-changed: extra parameter.
+ return gmtsub(timep, offset, &tmGlobal);
}
#endif /* 0 */
#endif /* defined STD_INSPIRED */
@@ -1803,14 +1796,14 @@ register const struct tm * const btmp;
}
static time_t
-time2sub(tmp, funcp, offset, okayp, do_norm_secs, sp) // android-changed: added sp
+time2sub(tmp, funcp, offset, okayp, do_norm_secs)
struct tm * const tmp;
-struct tm * (* const funcp) P((const time_t*, long, struct tm*, const struct state*)); // android-changed: added state*
+struct tm * (* const funcp) P((const time_t*, long, struct tm*));
const long offset;
int * const okayp;
const int do_norm_secs;
-const struct state * sp; // android-changed: added sp
{
+ register const struct state * sp;
register int dir;
register int i, j;
register int saved_seconds;
@@ -1912,7 +1905,7 @@ const struct state * sp; // android-changed: added sp
t = lo;
else if (t > hi)
t = hi;
- if ((*funcp)(&t, offset, &mytm, sp) == NULL) { // android-changed: added sp.
+ if ((*funcp)(&t, offset, &mytm) == NULL) {
/*
** Assume that t is too extreme to be represented in
** a struct tm; arrange things so that it is less
@@ -1950,13 +1943,9 @@ const struct state * sp; // android-changed: added sp
/*
** The (void *) casts are the benefit of SunOS 3.3 on Sun 2's.
*/
- // BEGIN android-changed: support user-supplied sp
- if (sp == NULL) {
- sp = (const struct state *)
- (((void *) funcp == (void *) localsub) ?
- lclptr : gmtptr);
- }
- // END android-changed
+ sp = (const struct state *)
+ (((void *) funcp == (void *) localsub) ?
+ lclptr : gmtptr);
#ifdef ALL_STATE
if (sp == NULL)
return WRONG;
@@ -1969,7 +1958,7 @@ const struct state * sp; // android-changed: added sp
continue;
newt = t + sp->ttis[j].tt_gmtoff -
sp->ttis[i].tt_gmtoff;
- if ((*funcp)(&newt, offset, &mytm, sp) == NULL) // android-changed: added sp.
+ if ((*funcp)(&newt, offset, &mytm) == NULL)
continue;
if (tmcomp(&mytm, &yourtm) != 0)
continue;
@@ -1989,19 +1978,17 @@ label:
if ((newt < t) != (saved_seconds < 0))
return WRONG;
t = newt;
- if ((*funcp)(&t, offset, tmp, sp)) // android-changed: added sp.
+ if ((*funcp)(&t, offset, tmp))
*okayp = TRUE;
return t;
}
-// BEGIN android-changed: added sp.
static time_t
-time2(tmp, funcp, offset, okayp, sp)
+time2(tmp, funcp, offset, okayp)
struct tm * const tmp;
-struct tm * (* const funcp) P((const time_t*, long, struct tm*, const struct state*));
+struct tm * (* const funcp) P((const time_t*, long, struct tm*));
const long offset;
int * const okayp;
-const struct state * sp;
{
time_t t;
@@ -2010,19 +1997,18 @@ const struct state * sp;
** (in case tm_sec contains a value associated with a leap second).
** If that fails, try with normalization of seconds.
*/
- t = time2sub(tmp, funcp, offset, okayp, FALSE, sp);
- return *okayp ? t : time2sub(tmp, funcp, offset, okayp, TRUE, sp);
+ t = time2sub(tmp, funcp, offset, okayp, FALSE);
+ return *okayp ? t : time2sub(tmp, funcp, offset, okayp, TRUE);
}
-// END android-changed
static time_t
-time1(tmp, funcp, offset, sp) // android-changed: added sp.
+time1(tmp, funcp, offset)
struct tm * const tmp;
-struct tm * (* const funcp) P((const time_t *, long, struct tm *, const struct state *));
+struct tm * (* const funcp) P((const time_t *, long, struct tm *));
const long offset;
-const struct state * sp; // android-changed: added sp.
{
register time_t t;
+ register const struct state * sp;
register int samei, otheri;
register int sameind, otherind;
register int i;
@@ -2033,7 +2019,7 @@ const struct state * sp; // android-changed: added sp.
if (tmp->tm_isdst > 1)
tmp->tm_isdst = 1;
- t = time2(tmp, funcp, offset, &okay, sp); // android-changed: added sp.
+ t = time2(tmp, funcp, offset, &okay);
#ifdef PCTS
/*
** PCTS code courtesy Grant Sullivan.
@@ -2056,12 +2042,8 @@ const struct state * sp; // android-changed: added sp.
/*
** The (void *) casts are the benefit of SunOS 3.3 on Sun 2's.
*/
- // BEGIN android-changed: support user-supplied sp.
- if (sp == NULL) {
- sp = (const struct state *) (((void *) funcp == (void *) localsub) ?
- lclptr : gmtptr);
- }
- // BEGIN android-changed
+ sp = (const struct state *) (((void *) funcp == (void *) localsub) ?
+ lclptr : gmtptr);
#ifdef ALL_STATE
if (sp == NULL)
return WRONG;
@@ -2085,7 +2067,7 @@ const struct state * sp; // android-changed: added sp.
tmp->tm_sec += sp->ttis[otheri].tt_gmtoff -
sp->ttis[samei].tt_gmtoff;
tmp->tm_isdst = !tmp->tm_isdst;
- t = time2(tmp, funcp, offset, &okay, sp); // android-changed: added sp.
+ t = time2(tmp, funcp, offset, &okay);
if (okay)
return t;
tmp->tm_sec -= sp->ttis[otheri].tt_gmtoff -
@@ -2103,40 +2085,11 @@ struct tm * const tmp;
time_t result;
_tzLock();
tzset_locked();
- result = time1(tmp, localsub, 0L, NULL); // android-changed: extra parameter.
+ result = time1(tmp, localsub, 0L);
_tzUnlock();
return result;
}
-// BEGIN android-added
-time_t
-mktime_tz(tmp, tz)
-struct tm * const tmp;
-char const * tz;
-{
- struct state st;
- if (tzload(tz, &st, TRUE) != 0) {
- // TODO: not sure what's best here, but for now, we fall back to gmt.
- gmtload(&st);
- }
- return time1(tmp, localsub, 0L, &st);
-}
-
-void
-localtime_tz(timep, tmp, tz)
-const time_t * const timep;
-struct tm * tmp;
-const char* tz;
-{
- struct state st;
- if (tzload(tz, &st, TRUE) != 0) {
- // TODO: not sure what's best here, but for now, we fall back to gmt.
- gmtload(&st);
- }
- localsub(timep, 0L, tmp, &st);
-}
-// END android-added
-
#ifdef STD_INSPIRED
time_t
@@ -2155,7 +2108,7 @@ struct tm * const tmp;
tmp->tm_isdst = 0;
_tzLock();
- result = time1(tmp, gmtsub, 0L, NULL); // android-changed: extra parameter.
+ result = time1(tmp, gmtsub, 0L);
_tzUnlock();
return result;
@@ -2171,7 +2124,7 @@ const long offset;
tmp->tm_isdst = 0;
_tzLock();
- result = time1(tmp, gmtsub, offset, NULL); // android-changed: extra parameter.
+ result = time1(tmp, gmtsub, offset);
_tzUnlock();
return result;