summaryrefslogtreecommitdiffstats
path: root/libc/tzcode
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2014-06-19 13:54:10 -0700
committerElliott Hughes <enh@google.com>2014-06-19 13:54:10 -0700
commit5f564540a953a670925e058dabc521f68ffb997c (patch)
tree0269b23ca27a57f847e39f59a6dc439928c4d410 /libc/tzcode
parent942fa486f669da8bb5db724d5c4fdc93b4fb65d9 (diff)
downloadbionic-5f564540a953a670925e058dabc521f68ffb997c.zip
bionic-5f564540a953a670925e058dabc521f68ffb997c.tar.gz
bionic-5f564540a953a670925e058dabc521f68ffb997c.tar.bz2
Build tzcode with -Werror.
Parts of this are just getting us in sync with upstream, but the 'const' stuff is our own mess. We should kill the *_tz functions and lose this difference from upstream. Change-Id: I17d26534ed3f54667143d78147a8c53be56d7b33
Diffstat (limited to 'libc/tzcode')
-rw-r--r--libc/tzcode/localtime.c43
-rw-r--r--libc/tzcode/private.h43
-rw-r--r--libc/tzcode/strftime.c41
3 files changed, 59 insertions, 68 deletions
diff --git a/libc/tzcode/localtime.c b/libc/tzcode/localtime.c
index 4ba2968..2581c12 100644
--- a/libc/tzcode/localtime.c
+++ b/libc/tzcode/localtime.c
@@ -159,9 +159,9 @@ static const char * getoffset(const char * strp, int_fast32_t * offsetp);
static const char * getrule(const char * strp, struct rule * rulep);
static void gmtload(struct state * sp);
static struct tm * gmtsub(const time_t * timep, int_fast32_t offset,
- struct tm * tmp, const struct state * sp); // android-changed: added sp.
+ struct tm * tmp, struct state * sp); // android-changed: added sp.
static struct tm * localsub(const time_t * timep, int_fast32_t offset,
- struct tm * tmp, const struct state * sp); // android-changed: added sp.
+ struct tm * tmp, struct state * sp); // android-changed: added sp.
static int increment_overflow(int * number, int delta);
static int leaps_thru_end_of(int y) ATTRIBUTE_PURE;
static int increment_overflow32(int_fast32_t * number, int delta);
@@ -173,16 +173,16 @@ static int normalize_overflow(int * tensptr, int * unitsptr,
static void settzname(void);
static time_t time1(struct tm * tmp,
struct tm * (*funcp)(const time_t *,
- int_fast32_t, struct tm *, const struct state *), // android-changed: added state*.
- int_fast32_t, const struct state * sp); // android-changed: added sp.
+ int_fast32_t, struct tm *, struct state *), // android-changed: added state*.
+ int_fast32_t, struct state * sp); // android-changed: added sp.
static time_t time2(struct tm * tmp,
struct tm * (*funcp)(const time_t *,
- int_fast32_t, struct tm*, const struct state *), // android-changed: added state*.
- int_fast32_t offset, int * okayp, const struct state * sp); // android-changed: added sp.
+ int_fast32_t, struct tm*, struct state *), // android-changed: added state*.
+ int_fast32_t offset, int * okayp, struct state * sp); // android-changed: added sp.
static time_t time2sub(struct tm *tmp,
struct tm * (*funcp) (const time_t *,
- int_fast32_t, struct tm*, const struct state *), // android-changed: added state*.
- int_fast32_t offset, int * okayp, int do_norm_secs, const struct state * sp); // android-change: added sp.
+ int_fast32_t, struct tm*, struct state *), // android-changed: added state*.
+ int_fast32_t offset, int * okayp, int do_norm_secs, struct state * sp); // android-change: added sp.
static struct tm * timesub(const time_t * timep, int_fast32_t offset,
const struct state * sp, struct tm * tmp);
static int tmcomp(const struct tm * atmp,
@@ -945,7 +945,6 @@ tzparse(const char * name, register struct state * const sp,
register int load_result;
static struct ttinfo zttinfo;
- INITIALIZE(dstname);
stdname = name;
if (lastditch) {
stdlen = strlen(name); /* length of standard zone name */
@@ -1284,7 +1283,7 @@ tzset(void)
/*ARGSUSED*/
static struct tm *
localsub(const time_t * const timep, const int_fast32_t offset,
- struct tm * const tmp, const struct state * sp) // android-changed: added sp.
+ struct tm * const tmp, struct state * sp) // android-changed: added sp.
{
register const struct ttinfo * ttisp;
register int i;
@@ -1390,16 +1389,18 @@ localtime_r(const time_t * const timep, struct tm * tmp)
static struct tm *
gmtsub(const time_t * const timep, const int_fast32_t offset,
- struct tm *const tmp, const struct state * sp __unused) // android-changed: added sp.
+ struct tm *const tmp, struct state * sp __unused) // android-changed: added sp.
{
register struct tm * result;
if (!gmt_is_set) {
- gmt_is_set = TRUE;
#ifdef ALL_STATE
gmtptr = malloc(sizeof *gmtptr);
+ gmt_is_set = gmtptr != NULL;
+#else
+ gmt_is_set = TRUE;
#endif /* defined ALL_STATE */
- if (gmtptr != NULL)
+ if (gmt_is_set)
gmtload(gmtptr);
}
result = timesub(timep, offset, gmtptr, tmp);
@@ -1710,10 +1711,10 @@ tmcomp(register const struct tm * const atmp,
static time_t
time2sub(struct tm * const tmp,
- struct tm *(*const funcp)(const time_t*, int_fast32_t, struct tm*, const struct state*),
+ struct tm *(*const funcp)(const time_t*, int_fast32_t, struct tm*, struct state*),
const int_fast32_t offset,
int * const okayp,
- const int do_norm_secs, const struct state * sp) // android-changed: added sp
+ const int do_norm_secs, struct state * sp) // android-changed: added sp
{
register int dir;
register int i, j;
@@ -1848,7 +1849,7 @@ time2sub(struct tm * const tmp,
*/
// BEGIN android-changed: support user-supplied sp
if (sp == NULL) {
- sp = (const struct state *)
+ sp = (struct state *)
((funcp == localsub) ? lclptr : gmtptr);
}
// END android-changed
@@ -1889,9 +1890,9 @@ label:
static time_t
time2(struct tm * const tmp,
- struct tm * (*const funcp)(const time_t *, int_fast32_t, struct tm *, const struct state *), // android-changed: added sp.
+ struct tm * (*const funcp)(const time_t *, int_fast32_t, struct tm *, struct state *), // android-changed: added sp.
const int_fast32_t offset,
- int *const okayp, const struct state* sp) // android-changed: added sp.
+ int *const okayp, struct state* sp) // android-changed: added sp.
{
time_t t;
@@ -1906,8 +1907,8 @@ time2(struct tm * const tmp,
static time_t
time1(struct tm * const tmp,
- struct tm * (* const funcp) (const time_t *, int_fast32_t, struct tm *, const struct state *), // android-changed: added sp.
- const int_fast32_t offset, const struct state * sp) // android-changed: added sp.
+ struct tm * (* const funcp) (const time_t *, int_fast32_t, struct tm *, struct state *), // android-changed: added sp.
+ const int_fast32_t offset, struct state * sp) // android-changed: added sp.
{
register time_t t;
register int samei, otheri;
@@ -1944,7 +1945,7 @@ time1(struct tm * const tmp,
*/
// BEGIN android-changed: support user-supplied sp.
if (sp == NULL) {
- sp = (const struct state *) ((funcp == localsub) ? lclptr : gmtptr);
+ sp = (struct state *) ((funcp == localsub) ? lclptr : gmtptr);
}
// BEGIN android-changed
if (sp == NULL)
diff --git a/libc/tzcode/private.h b/libc/tzcode/private.h
index 4eb0ab6..c30c711 100644
--- a/libc/tzcode/private.h
+++ b/libc/tzcode/private.h
@@ -19,7 +19,7 @@
/*
** Defaults for preprocessor symbols.
-** You can override these in your C compiler options, e.g. `-DHAVE_ADJTIME=0'.
+** You can override these in your C compiler options, e.g. '-DHAVE_ADJTIME=0'.
*/
#ifndef HAVE_ADJTIME
@@ -62,9 +62,11 @@
#define HAVE_UTMPX_H 0
#endif /* !defined HAVE_UTMPX_H */
+#if !defined(__ANDROID__)
#ifndef LOCALE_HOME
#define LOCALE_HOME "/usr/lib/locale"
#endif /* !defined LOCALE_HOME */
+#endif // __ANDROID__
#if HAVE_INCOMPATIBLE_CTIME_R
#define asctime_r _incompatible_asctime_r
@@ -120,8 +122,9 @@
*/
#ifndef HAVE_STDINT_H
#define HAVE_STDINT_H \
- (199901 <= __STDC_VERSION__ || \
- 2 < (__GLIBC__ + (0 < __GLIBC_MINOR__)))
+ (199901 <= __STDC_VERSION__ \
+ || 2 < __GLIBC__ + (1 <= __GLIBC_MINOR__) \
+ || __CYGWIN__)
#endif /* !defined HAVE_STDINT_H */
#if HAVE_STDINT_H
@@ -205,6 +208,10 @@ typedef unsigned long uintmax_t;
#define INT32_MIN (-1 - INT32_MAX)
#endif /* !defined INT32_MIN */
+#ifndef SIZE_MAX
+#define SIZE_MAX ((size_t) -1)
+#endif
+
#if 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
# define ATTRIBUTE_CONST __attribute__ ((const))
# define ATTRIBUTE_PURE __attribute__ ((__pure__))
@@ -347,29 +354,15 @@ static time_t const time_t_max =
** 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 */
+# define INITIALIZE(x) ((x) = 0)
+#else
+# define INITIALIZE(x)
+#endif
/*
** For the benefit of GNU folk...
-** `_(MSGID)' uses the current locale's message library string for MSGID.
+** '_(MSGID)' uses the current locale's message library string for MSGID.
** The default is to use gettext if available, and use MSGID otherwise.
*/
@@ -381,9 +374,9 @@ static time_t const time_t_max =
#endif /* !HAVE_GETTEXT */
#endif /* !defined _ */
-#ifndef TZ_DOMAIN
-#define TZ_DOMAIN "tz"
-#endif /* !defined TZ_DOMAIN */
+#if !defined TZ_DOMAIN && defined TZ_DOMAINDIR
+# define TZ_DOMAIN "tz"
+#endif
#if HAVE_INCOMPATIBLE_CTIME_R
#undef asctime_r
diff --git a/libc/tzcode/strftime.c b/libc/tzcode/strftime.c
index 967629d..a926164 100644
--- a/libc/tzcode/strftime.c
+++ b/libc/tzcode/strftime.c
@@ -1,12 +1,9 @@
-#ifndef lint
-#ifndef NOID
-static char elsieid[] = "@(#)strftime.c 8.1";
/*
-** Based on the UCB version with the ID appearing below.
+** Based on the UCB version with the copyright notice and sccsid
+** appearing below.
+**
** This is ANSIish only when "multibyte character == plain character".
*/
-#endif /* !defined NOID */
-#endif /* !defined lint */
#include "private.h"
@@ -22,35 +19,27 @@ static char elsieid[] = "@(#)strftime.c 8.1";
** 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
+** 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 LIBC_SCCS
-#ifndef lint
-static const char sccsid[] = "@(#)strftime.c 5.4 (Berkeley) 3/14/89";
-#endif /* !defined lint */
-#endif /* !defined LIBC_SCCS */
-
#include "tzfile.h"
#include "fcntl.h"
#include "locale.h"
-#include <ctype.h>
+
+#if __ANDROID__
+/* Android: struct lc_time_T is defined as strftime_locale in "bionic_time.h" */
+#include "private/bionic_time.h" /* for strftime_tz */
+#define lc_time_T strftime_locale
#if defined(__LP64__)
#define time64_t time_t
#define mktime64 mktime
#else
#include <time64.h>
#endif
-#include "private/bionic_time.h" /* for strftime_tz */
-
-/* struct lc_time_T is now defined as strftime_locale
- * in <time.h>
- */
-#if 1
-#define lc_time_T strftime_locale
-#else
+#include <ctype.h>
+#else // not __ANDROID__
struct lc_time_T {
const char * mon[MONSPERYEAR];
const char * month[MONSPERYEAR];
@@ -65,7 +54,15 @@ struct lc_time_T {
};
#endif
+#if LOCALE_HOME
+#include "sys/stat.h"
+static struct lc_time_T localebuf;
+static struct lc_time_T * _loc(void);
+#define Locale _loc()
+#endif /* defined LOCALE_HOME */
+#ifndef LOCALE_HOME
#define Locale (&C_time_locale)
+#endif /* !defined LOCALE_HOME */
static const struct lc_time_T C_time_locale = {
{