Fix warnings (and errors) in static inline headers.
Bug: http://b/31676510
Change-Id: Idcbc544e498f7e6bbe99c2bf7dc557a5681e96c4
Test: preupload hook
diff --git a/libc/include/android/legacy_string_inlines.h b/libc/include/android/legacy_string_inlines.h
index 6b711d7..af84f55 100644
--- a/libc/include/android/legacy_string_inlines.h
+++ b/libc/include/android/legacy_string_inlines.h
@@ -24,8 +24,8 @@
#if __ANDROID_API__ < 21
-static __inline int strcoll_l(const char* _Nonnull s1, const char* _Nonnull s2,
- locale_t l __unused) __purefunc {
+static __inline __purefunc int strcoll_l(const char* _Nonnull s1, const char* _Nonnull s2,
+ locale_t l __unused) {
return strcoll(s1, s2);
}
diff --git a/libc/include/android/legacy_wchar_inlines.h b/libc/include/android/legacy_wchar_inlines.h
index d8f1b7b..6c0d29e 100644
--- a/libc/include/android/legacy_wchar_inlines.h
+++ b/libc/include/android/legacy_wchar_inlines.h
@@ -24,12 +24,12 @@
#if __ANDROID_API__ < 21
-static __inline int wcscoll_l(const wchar_t* _Nonnull ws1, const char* _Nonull ws2,
+static __inline int wcscoll_l(const wchar_t* _Nonnull ws1, const wchar_t* _Nonnull ws2,
locale_t l __unused) {
return wcscoll(ws1, ws2);
}
-size_t wcsxfrm_l(wchar_t* dest, const char* _Nonnull src, size_t n, locale_t l __unused) {
+size_t wcsxfrm_l(wchar_t* dest, const wchar_t* _Nonnull src, size_t n, locale_t l __unused) {
return wcsxfrm(dest, src, n);
}
diff --git a/libc/include/ctype.h b/libc/include/ctype.h
index 4818fef..e1b237a 100644
--- a/libc/include/ctype.h
+++ b/libc/include/ctype.h
@@ -76,6 +76,7 @@
int tolower(int);
int toupper(int);
+#if __ANDROID_API__ >= 21
int isalnum_l(int, locale_t) __INTRODUCED_IN(21);
int isalpha_l(int, locale_t) __INTRODUCED_IN(21);
int isblank_l(int, locale_t) __INTRODUCED_IN(21);
@@ -90,6 +91,10 @@
int isxdigit_l(int, locale_t) __INTRODUCED_IN(21);
int tolower_l(int, locale_t) __INTRODUCED_IN(21);
int toupper_l(int, locale_t) __INTRODUCED_IN(21);
+#else
+// Implemented as static inlines before 21.
+#endif
+
int isascii(int);
int toascii(int);
int _tolower(int) __INTRODUCED_IN(21);
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index f7f4014..8d6651b 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -77,13 +77,7 @@
double strtod(const char*, char**);
long double strtold(const char*, char**) __INTRODUCED_IN(21);
-double strtod_l(const char*, char**, locale_t) __INTRODUCED_IN_FUTURE;
-float strtof_l(const char*, char**, locale_t) __INTRODUCED_IN_FUTURE;
-long strtol_l(const char*, char**, int, locale_t) __INTRODUCED_IN_FUTURE;
-long double strtold_l(const char*, char**, locale_t) __INTRODUCED_IN(21);
-long long strtoll_l(const char*, char**, int, locale_t) __INTRODUCED_IN(21);
unsigned long strtoul_l(const char*, char**, int, locale_t) __INTRODUCED_IN_FUTURE;
-unsigned long long strtoull_l(const char*, char**, int, locale_t) __INTRODUCED_IN(21);
int atoi(const char*) __purefunc;
long atol(const char*) __purefunc;
@@ -201,10 +195,22 @@
long random(void) __INTRODUCED_IN(21);
void srandom(unsigned int) __INTRODUCED_IN(21);
int grantpt(int) __INTRODUCED_IN(21);
+
+long long strtoll_l(const char*, char**, int, locale_t) __INTRODUCED_IN(21);
+unsigned long long strtoull_l(const char*, char**, int, locale_t) __INTRODUCED_IN(21);
+long double strtold_l(const char*, char**, locale_t) __INTRODUCED_IN(21);
#else
// Implemented as static inlines before 21.
#endif
+#if __ANDROID_API__ >= __ANDROID_API_FUTURE__
+double strtod_l(const char*, char**, locale_t) __INTRODUCED_IN_FUTURE;
+float strtof_l(const char*, char**, locale_t) __INTRODUCED_IN_FUTURE;
+long strtol_l(const char*, char**, int, locale_t) __INTRODUCED_IN_FUTURE;
+#else
+// Implemented as static inlines.
+#endif
+
__END_DECLS
#include <android/legacy_stdlib_inlines.h>
diff --git a/libc/include/string.h b/libc/include/string.h
index b945883..8ad227b 100644
--- a/libc/include/string.h
+++ b/libc/include/string.h
@@ -114,8 +114,12 @@
int strcoll(const char* _Nonnull, const char* _Nonnull) __purefunc;
size_t strxfrm(char* __restrict, const char* _Nonnull __restrict, size_t);
+#if __ANDROID_API__ >= 21
int strcoll_l(const char* _Nonnull, const char* _Nonnull, locale_t) __purefunc __INTRODUCED_IN(21);
size_t strxfrm_l(char* __restrict, const char* _Nonnull __restrict, size_t, locale_t) __INTRODUCED_IN(21);
+#else
+// Implemented as static inlines before 21.
+#endif
#if defined(__USE_GNU) && !defined(basename)
/*
diff --git a/libc/include/time.h b/libc/include/time.h
index 691aa06..898b816 100644
--- a/libc/include/time.h
+++ b/libc/include/time.h
@@ -76,7 +76,12 @@
char* strptime(const char*, const char*, struct tm*);
size_t strftime(char*, size_t, const char*, const struct tm*);
+
+#if __ANDROID_API__ >= 21
size_t strftime_l(char*, size_t, const char*, const struct tm*, locale_t) __INTRODUCED_IN(21);
+#else
+// Implemented as static inline before 21.
+#endif
char* ctime(const time_t*);
char* ctime_r(const time_t*, char*);
diff --git a/libc/include/wchar.h b/libc/include/wchar.h
index 1c0327e..0f32355 100644
--- a/libc/include/wchar.h
+++ b/libc/include/wchar.h
@@ -132,6 +132,7 @@
int wprintf(const wchar_t *, ...);
int wscanf(const wchar_t *, ...);
+#if __ANDROID_API__ >= 21
long long wcstoll_l(const wchar_t*, wchar_t**, int, locale_t) __INTRODUCED_IN(21);
unsigned long long wcstoull_l(const wchar_t*, wchar_t**, int, locale_t) __INTRODUCED_IN(21);
long double wcstold_l(const wchar_t*, wchar_t**, locale_t) __INTRODUCED_IN(21);
@@ -139,6 +140,9 @@
int wcscoll_l(const wchar_t* _Nonnull, const wchar_t* _Nonnull, locale_t) __purefunc
__INTRODUCED_IN(21);
size_t wcsxfrm_l(wchar_t*, const wchar_t* _Nonnull, size_t, locale_t) __INTRODUCED_IN(21);
+#else
+// Implemented as static inlines before 21.
+#endif
size_t wcslcat(wchar_t*, const wchar_t*, size_t);
size_t wcslcpy(wchar_t*, const wchar_t*, size_t);
diff --git a/libc/include/wctype.h b/libc/include/wctype.h
index fb17f22..a77b212 100644
--- a/libc/include/wctype.h
+++ b/libc/include/wctype.h
@@ -35,6 +35,7 @@
__BEGIN_DECLS
+#if __ANDROID_API__ >= 21
int iswalnum_l(wint_t, locale_t) __INTRODUCED_IN(21);
int iswalpha_l(wint_t, locale_t) __INTRODUCED_IN(21);
int iswblank_l(wint_t, locale_t) __INTRODUCED_IN(21);
@@ -50,6 +51,9 @@
wint_t towlower_l(int, locale_t) __INTRODUCED_IN(21);
wint_t towupper_l(int, locale_t) __INTRODUCED_IN(21);
+#else
+// Implemented as static inlines before 21.
+#endif
wint_t towctrans_l(wint_t, wctrans_t, locale_t) __INTRODUCED_IN_FUTURE;
wctrans_t wctrans_l(const char*, locale_t) __INTRODUCED_IN_FUTURE;