am 50a9630c: Merge "Start hiding "private/bionic_time.h"."

* commit '50a9630cc26cbc1e38e3ddc589f04fa5cd91697b':
  Start hiding "private/bionic_time.h".
This commit is contained in:
Elliott Hughes
2014-07-25 22:21:42 +00:00
committed by Android Git Automerger
6 changed files with 37 additions and 94 deletions

View File

@@ -68,7 +68,7 @@
#ifdef __LP64__
#define __LIBC64_HIDDEN__ __LIBC_HIDDEN__
#else
#define __LIBC64_HIDDEN__
#define __LIBC64_HIDDEN__ __LIBC_ABI_PUBLIC__
#endif
/* Used to tag non-static symbols that are public and exposed by the shared library. */

View File

@@ -33,32 +33,8 @@
__BEGIN_DECLS
#ifndef _BIONIC_STRFTIME_TZ_DECLARED
#define _BIONIC_STRFTIME_TZ_DECLARED
struct strftime_locale {
const char * mon[12];
const char * month[12];
const char * standalone_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;
};
/*
* Note: you should consider these extensions deprecated and use managed code or icu4c instead.
* We'd like to hide them but they're currently still used in frameworks code.
*/
extern size_t strftime_tz(char*, size_t, const char*, const struct tm*, const struct strftime_locale*);
extern time_t mktime_tz(struct tm* const, char const*);
extern void localtime_tz(const time_t* const, struct tm*, const char*);
#endif /* _BIONIC_STRFTIME_TZ_DECLARED */
// We can't remove this (and this file) until we fix MtpUtils.cpp.
time_t mktime_tz(struct tm* const, char const*);
__END_DECLS

View File

@@ -2293,7 +2293,8 @@ static int __bionic_tzload_cached(const char* name, struct state* const sp, cons
}
// Non-standard API: mktime(3) but with an explicit timezone parameter.
time_t __attribute__((visibility("default"))) mktime_tz(struct tm* const tmp, const char* tz) {
// This can't actually be hidden/removed until we fix MtpUtils.cpp
__attribute__((visibility("default"))) time_t mktime_tz(struct tm* const tmp, const char* tz) {
struct state* st = malloc(sizeof(*st));
time_t return_value;
@@ -2310,7 +2311,8 @@ time_t __attribute__((visibility("default"))) mktime_tz(struct tm* const tmp, co
}
// Non-standard API: localtime(3) but with an explicit timezone parameter.
void __attribute__((visibility("default"))) localtime_tz(const time_t* const timep, struct tm* tmp, const char* tz) {
#if !defined(__LP64__)
__attribute__((visibility("default"))) void localtime_tz(const time_t* const timep, struct tm* tmp, const char* tz) {
struct state* st = malloc(sizeof(*st));
if (st == NULL)
@@ -2322,5 +2324,6 @@ void __attribute__((visibility("default"))) localtime_tz(const time_t* const tim
localsub(timep, 0L, tmp, st);
free(st);
}
#endif
// END android-added

View File

@@ -29,16 +29,38 @@
#include "locale.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
/*
* This has an extra standalone_month array field compared to upstream.
* We only need to keep that if we leave the strftime_tz symbol exposed.
* Even then, this structure was never in an NDK header file.
*/
struct lc_time_T {
const char * mon[12];
const char * month[12];
const char * standalone_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;
};
/* LP32 had a 32-bit time_t, so we need to work around that here. */
#if defined(__LP64__)
#define time64_t time_t
#define mktime64 mktime
#else
#include <time64.h>
#endif
#include <ctype.h>
size_t strftime_tz(char*, size_t, const char*, const struct tm*, const struct lc_time_T*);
#else // not __ANDROID__
struct lc_time_T {
const char * mon[MONSPERYEAR];
@@ -116,7 +138,7 @@ static const struct lc_time_T C_time_locale = {
static char * _add(const char *, char *, const char *, int);
static char * _conv(int, const char *, char *, const char *);
static char * _fmt(const char *, const struct tm *, char *, const char *,
int *, const struct strftime_locale*);
int *, const struct lc_time_T*);
static char * _yconv(int, int, int, int, char *, const char *, int);
static char * getformat(int, char *, char *, char *, char *);
@@ -143,13 +165,12 @@ const struct tm * const t;
return strftime_tz(s, maxsize, format, t, Locale);
}
size_t
__attribute__((visibility("default"))) strftime_tz(s, maxsize, format, t, locale)
__LIBC64_HIDDEN__ size_t strftime_tz(s, maxsize, format, t, locale)
char * const s;
const size_t maxsize;
const char * const format;
const struct tm * const t;
const struct strftime_locale *locale;
const struct lc_time_T *locale;
{
char * p;
int warn;
@@ -202,7 +223,7 @@ const struct tm * const t;
char * pt;
const char * const ptlim;
int * warnp;
const struct strftime_locale* locale;
const struct lc_time_T* locale;
{
for ( ; *format; ++format) {
if (*format == '%') {