libc: Move MB_LEN_MAX from lib_wctob.c to limits.h

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I3a5addac99adb02f57aba05aa9fe2e6aaf31071d
This commit is contained in:
Xiang Xiao 2020-06-02 12:03:59 +08:00 committed by patacongo
parent 4fe35cc87c
commit 57caa4e121
3 changed files with 17 additions and 15 deletions

View File

@ -49,7 +49,9 @@
/******************************************************************************** /********************************************************************************
* Pre-processor Definitions * Pre-processor Definitions
********************************************************************************/ ********************************************************************************/
/* Default values for user configurable limits **********************************/ /* Default values for user configurable limits **********************************/
/* Maximum number of bytes in a filename (not including terminating null). */ /* Maximum number of bytes in a filename (not including terminating null). */
#ifndef CONFIG_NAME_MAX #ifndef CONFIG_NAME_MAX
@ -68,6 +70,13 @@
# endif # endif
#endif #endif
/* Maximum length of any multibyte character in any locale.
* We define this value here since the gcc header does not define
* the correct value.
*/
#define MB_LEN_MAX 1
/* Configurable limits required by POSIX **************************************** /* Configurable limits required by POSIX ****************************************
* *
* Required for all implementations: * Required for all implementations:
@ -303,6 +312,7 @@
#define SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX #define SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX
/* Required for readv() and writev() */ /* Required for readv() and writev() */
/* There really is no upper limit on the number of vectors */ /* There really is no upper limit on the number of vectors */
#define IOV_MAX INT_MAX #define IOV_MAX INT_MAX

View File

@ -55,14 +55,14 @@
* *
****************************************************************************/ ****************************************************************************/
size_t wcrtomb(FAR char *s, wchar_t wc, FAR mbstate_t * ps) size_t wcrtomb(FAR char *s, wchar_t wc, FAR mbstate_t *ps)
{ {
int retval = 0; int retval = 0;
char buf[10]; char buf[MB_LEN_MAX];
if (s == NULL) if (s == NULL)
{ {
retval = wctomb((char *)buf, L'\0'); retval = wctomb(buf, L'\0');
} }
else else
{ {
@ -71,11 +71,11 @@ size_t wcrtomb(FAR char *s, wchar_t wc, FAR mbstate_t * ps)
if (retval == -1) if (retval == -1)
{ {
return (size_t) (-1); return (size_t)(-1);
} }
else else
{ {
return (size_t) retval; return (size_t)retval;
} }
} }
#endif #endif

View File

@ -44,27 +44,19 @@
#ifdef CONFIG_LIBC_WCHAR #ifdef CONFIG_LIBC_WCHAR
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
#ifndef MB_LEN_MAX
# define MB_LEN_MAX 8
#endif
/**************************************************************************** /****************************************************************************
* Public Functions * Public Functions
****************************************************************************/ ****************************************************************************/
int wctob(wint_t wc) int wctob(wint_t wc)
{ {
unsigned char pmb[MB_LEN_MAX]; char pmb[MB_LEN_MAX];
if (wc == WEOF) if (wc == WEOF)
{ {
return EOF; return EOF;
} }
return wctomb((char *)pmb, wc) == 1 ? (int)pmb[0] : EOF; return wctomb(pmb, wc) == 1 ? (int)pmb[0] : EOF;
} }
#endif #endif