Fix a few more compile issues with the new wide character support

This commit is contained in:
Gregory Nutt
2016-10-19 08:18:46 -06:00
parent b852bb3403
commit 54fd0f0a04
7 changed files with 65 additions and 73 deletions
-1
View File
@@ -45,7 +45,6 @@
#include <sys/types.h> #include <sys/types.h>
#include <stdint.h> #include <stdint.h>
#include <wchar.h>
/**************************************************************************** /****************************************************************************
* Pre-processor Definitions * Pre-processor Definitions
+2 -2
View File
@@ -191,6 +191,7 @@ typedef int16_t key_t;
typedef intptr_t ptrdiff_t; typedef intptr_t ptrdiff_t;
#ifndef CONFIG_WCHAR_BUILTIN
/* Wide, 16-bit character types. wchar_t is a built-in type in C++ and /* Wide, 16-bit character types. wchar_t is a built-in type in C++ and
* its declaration here may cause compilation errors on some compilers * its declaration here may cause compilation errors on some compilers
* if -DCONFIG_WCHAR_BUILTIN is not included in the CXXFLAGS. * if -DCONFIG_WCHAR_BUILTIN is not included in the CXXFLAGS.
@@ -198,7 +199,6 @@ typedef intptr_t ptrdiff_t;
* REVISIT: wchar_t belongs in stddef.h * REVISIT: wchar_t belongs in stddef.h
*/ */
#ifndef CONFIG_WCHAR_BUILTIN
typedef uint16_t wchar_t; typedef uint16_t wchar_t;
#endif #endif
@@ -215,9 +215,9 @@ typedef uint32_t blkcnt_t;
typedef int32_t off_t; typedef int32_t off_t;
typedef off_t fpos_t; typedef off_t fpos_t;
#ifdef CONFIG_HAVE_LONG_LONG
/* Large file versions */ /* Large file versions */
#ifdef CONFIG_HAVE_LONG_LONG
typedef int64_t off64_t; typedef int64_t off64_t;
typedef int64_t fpos64_t; typedef int64_t fpos64_t;
#endif #endif
+55 -61
View File
@@ -33,6 +33,9 @@
* *
****************************************************************************/ ****************************************************************************/
#ifndef __INCLUDE_WCHAR_H
#define __INCLUDE_WCHAR_H
/**************************************************************************** /****************************************************************************
* Included Files * Included Files
****************************************************************************/ ****************************************************************************/
@@ -47,14 +50,6 @@
#include <stdio.h> #include <stdio.h>
#include <stddef.h> #include <stddef.h>
/* REVISIT: Moving the idempotence to this location resolves a circular
* dependency problem with stdlib.h which gets included indirectly and
* needs wchar_t.
*/
#ifndef __INCLUDE_WCHAR_H
#define __INCLUDE_WCHAR_H
/**************************************************************************** /****************************************************************************
* Pre-processor Definitions * Pre-processor Definitions
****************************************************************************/ ****************************************************************************/
@@ -101,10 +96,11 @@ typedef int wint_t;
/* wctype_t /* wctype_t
* A scalar type of a data object that can hold values which represent * A scalar type of a data object that can hold values which represent
* locale-specific character classification. * locale-specific character classification.
* */
* Ddefined in wctype.h. Should be defined here.
* typedef int wctype_t;
* mbstate_t
/* mbstate_t
* An object type other than an array type that can hold the conversion * An object type other than an array type that can hold the conversion
* state information necessary to convert between sequences of (possibly * state information necessary to convert between sequences of (possibly
* multibyte) characters and wide-characters. If a codeset is being used * multibyte) characters and wide-characters. If a codeset is being used
@@ -158,10 +154,9 @@ extern "C"
* Reference: Opengroup.org * Reference: Opengroup.org
*/ */
#if 0 /* Not yet implemented */
wint_t btowc(int); wint_t btowc(int);
int fwprintf(FILE *, const wchar_t *, ...); int fwprintf(FILE *, FAR const wchar_t *, ...);
int fwscanf(FILE *, const wchar_t *, ...); int fwscanf(FILE *, FAR const wchar_t *, ...);
int iswalnum(wint_t); int iswalnum(wint_t);
int iswalpha(wint_t); int iswalpha(wint_t);
int iswcntrl(wint_t); int iswcntrl(wint_t);
@@ -175,68 +170,67 @@ int iswupper(wint_t);
int iswxdigit(wint_t); int iswxdigit(wint_t);
int iswctype(wint_t, wctype_t); int iswctype(wint_t, wctype_t);
wint_t fgetwc(FILE *); wint_t fgetwc(FILE *);
wchar_t *fgetws(wchar_t *, int, FILE *); FAR wchar_t *fgetws(wchar_t *, int, FILE *);
wint_t fputwc(wchar_t, FILE *); wint_t fputwc(wchar_t, FILE *);
int fputws(const wchar_t *, FILE *); int fputws(FAR const wchar_t *, FILE *);
int fwide(FILE *, int); int fwide(FILE *, int);
wint_t getwc(FILE *); wint_t getwc(FILE *);
wint_t getwchar(void); wint_t getwchar(void);
int mbsinit(const mbstate_t *); int mbsinit(FAR const mbstate_t *);
size_t mbrlen(const char *, size_t, mbstate_t *); size_t mbrlen(FAR const char *, size_t, FAR mbstate_t *);
size_t mbrtowc(wchar_t *, const char *, size_t, size_t mbrtowc(wchar_t *, FAR const char *, size_t,
mbstate_t *); mbstate_t *);
size_t mbsrtowcs(wchar_t *, const char **, size_t, size_t mbsrtowcs(wchar_t *, FAR const char **, size_t,
mbstate_t *); mbstate_t *);
wint_t putwc(wchar_t, FILE *); wint_t putwc(wchar_t, FILE *);
wint_t putwchar(wchar_t); wint_t putwchar(wchar_t);
int swprintf(wchar_t *, size_t, const wchar_t *, ...); int swprintf(FAR wchar_t *, size_t, FAR const wchar_t *, ...);
int swscanf(const wchar_t *, const wchar_t *, ...); int swscanf(FAR const wchar_t *, FAR const wchar_t *, ...);
wint_t towlower(wint_t); wint_t towlower(wint_t);
wint_t towupper(wint_t); wint_t towupper(wint_t);
wint_t ungetwc(wint_t, FILE *); wint_t ungetwc(wint_t, FILE *);
int vfwprintf(FILE *, const wchar_t *, va_list); int vfwprintf(FILE *, FAR const wchar_t *, va_list);
int vwprintf(const wchar_t *, va_list); int vwprintf(FAR const wchar_t *, va_list);
int vswprintf(wchar_t *, size_t, const wchar_t *, int vswprintf(wchar_t *, size_t, FAR const wchar_t *,
va_list); va_list);
size_t wcrtomb(char *, wchar_t, mbstate_t *); size_t wcrtomb(FAR char *, wchar_t, FAR mbstate_t *);
wchar_t *wcscat(wchar_t *, const wchar_t *); FAR wchar_t *wcscat(FAR wchar_t *, FAR const wchar_t *);
wchar_t *wcschr(const wchar_t *, wchar_t); FAR wchar_t *wcschr(FAR const wchar_t *, wchar_t);
int wcscmp(const wchar_t *, const wchar_t *); int wcscmp(FAR const wchar_t *, FAR const wchar_t *);
int wcscoll(const wchar_t *, const wchar_t *); int wcscoll(FAR const wchar_t *, FAR const wchar_t *);
wchar_t *wcscpy(wchar_t *, const wchar_t *); FAR wchar_t *wcscpy(FAR wchar_t *, FAR const wchar_t *);
size_t wcscspn(const wchar_t *, const wchar_t *); size_t wcscspn(FAR const wchar_t *, FAR const wchar_t *);
size_t wcsftime(wchar_t *, size_t, const wchar_t *, size_t wcsftime(FAR wchar_t *, size_t, FAR const wchar_t *,
const struct tm *); FAR const struct tm *);
size_t wcslen(const wchar_t *); size_t wcslen(FAR const wchar_t *);
size_t wcslcpy(FAR wchar_t *, FAR const wchar_t *, size_t); size_t wcslcpy(FAR wchar_t *, FAR const wchar_t *, size_t);
size_t wcslcat(FAR wchar_t *, FAR const wchar_t *, size_t); size_t wcslcat(FAR wchar_t *, FAR const wchar_t *, size_t);
wchar_t *wcsncat(wchar_t *, const wchar_t *, size_t); FAR wchar_t *wcsncat(FAR wchar_t *, FAR const wchar_t *, size_t);
int wcsncmp(const wchar_t *, const wchar_t *, size_t); int wcsncmp(FAR const wchar_t *, FAR const wchar_t *, size_t);
wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t); FAR wchar_t *wcsncpy(FAR wchar_t *, FAR const wchar_t *, size_t);
wchar_t *wcspbrk(const wchar_t *, const wchar_t *); FAR wchar_t *wcspbrk(FAR const wchar_t *, FAR const wchar_t *);
wchar_t *wcsrchr(const wchar_t *, wchar_t); FAR wchar_t *wcsrchr(FAR const wchar_t *, wchar_t);
size_t wcsrtombs(char *, const wchar_t **, size_t, size_t wcsrtombs(FAR char *, FAR const wchar_t **, size_t,
mbstate_t *); FAR mbstate_t *);
size_t wcsspn(const wchar_t *, const wchar_t *); size_t wcsspn(FAR const wchar_t *, FAR const wchar_t *);
wchar_t *wcsstr(const wchar_t *, const wchar_t *); FAR wchar_t *wcsstr(FAR const wchar_t *, FAR const wchar_t *);
double wcstod(const wchar_t *, wchar_t **); double wcstod(FAR const wchar_t *, FAR wchar_t **);
wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **); FAR wchar_t *wcstok(FAR wchar_t *, FAR const wchar_t *, FAR wchar_t **);
long int wcstol(const wchar_t *, wchar_t **, int); long int wcstol(FAR const wchar_t *, FAR wchar_t **, int);
unsigned long int wcstoul(const wchar_t *, wchar_t **, int); unsigned long int wcstoul(FAR const wchar_t *, FAR wchar_t **, int);
wchar_t *wcswcs(const wchar_t *, const wchar_t *); FAR wchar_t *wcswcs(FAR const wchar_t *, FAR const wchar_t *);
int wcswidth(const wchar_t *, size_t); int wcswidth(FAR const wchar_t *, size_t);
size_t wcsxfrm(wchar_t *, const wchar_t *, size_t); size_t wcsxfrm(wchar_t *, FAR const wchar_t *, size_t);
int wctob(wint_t); int wctob(wint_t);
wctype_t wctype(const char *); wctype_t wctype(FAR const char *);
int wcwidth(wchar_t); int wcwidth(wchar_t);
wchar_t *wmemchr(const wchar_t *, wchar_t, size_t); FAR wchar_t *wmemchr(FAR const wchar_t *, wchar_t, size_t);
int wmemcmp(const wchar_t *, const wchar_t *, size_t); int wmemcmp(FAR const wchar_t *, FAR const wchar_t *, size_t);
wchar_t *wmemcpy(wchar_t *, const wchar_t *, size_t); FAR wchar_t *wmemcpy(FAR wchar_t *, FAR const wchar_t *, size_t);
wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); FAR wchar_t *wmemmove(FAR wchar_t *, FAR const wchar_t *, size_t);
wchar_t *wmemset(wchar_t *, wchar_t, size_t); FAR wchar_t *wmemset(FAR wchar_t *, wchar_t, size_t);
int wprintf(const wchar_t *, ...); int wprintf(FAR const wchar_t *, ...);
int wscanf(const wchar_t *, ...); int wscanf(FAR const wchar_t *, ...);
#endif
#undef EXTERN #undef EXTERN
#ifdef __cplusplus #ifdef __cplusplus
+3 -7
View File
@@ -71,15 +71,11 @@
* Public Types * Public Types
****************************************************************************/ ****************************************************************************/
#ifndef _WCTYPE_T /* A scalar type that can hold values which represent locale-specific
# define _WCTYPE_T * character mappings.
typedef int wctype_t; */
#endif
#ifndef _WCTRANS_T
# define _WCTRANS_T
typedef int wctrans_t; typedef int wctrans_t;
#endif
/**************************************************************************** /****************************************************************************
* Public Function Prototypes * Public Function Prototypes
+1
View File
@@ -34,6 +34,7 @@
#include <nuttx/config.h> #include <nuttx/config.h>
#include <stddef.h>
#include <string.h> #include <string.h>
#include <wchar.h> #include <wchar.h>
+2 -1
View File
@@ -33,6 +33,7 @@
****************************************************************************/ ****************************************************************************/
#include <nuttx/config.h> #include <nuttx/config.h>
#include <string.h> #include <string.h>
#include <wchar.h> #include <wchar.h>
@@ -52,7 +53,7 @@
* *
****************************************************************************/ ****************************************************************************/
FAR wchar_t *wmemchr(FAR wchar_t *s, wchar_t c, size_t n) FAR wchar_t *wmemchr(FAR const wchar_t *s, wchar_t c, size_t n)
{ {
size_t i; size_t i;
+2 -1
View File
@@ -33,6 +33,7 @@
****************************************************************************/ ****************************************************************************/
#include <nuttx/config.h> #include <nuttx/config.h>
#include <string.h> #include <string.h>
#include <wchar.h> #include <wchar.h>
@@ -52,7 +53,7 @@
* *
****************************************************************************/ ****************************************************************************/
FAR wchar_t *wmemcpy(FAR wchar_t *d, FAR wchar_t *s, size_t n) FAR wchar_t *wmemcpy(FAR wchar_t *d, FAR const wchar_t *s, size_t n)
{ {
return (FAR wchar_t *) memcpy(d, s, n * sizeof(wchar_t)); return (FAR wchar_t *) memcpy(d, s, n * sizeof(wchar_t));
} }