scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

commit ab077b6a7eb4f2d524d5cd53c49a3dde531cde4a
parent 3eedc954682df1ec5b47667cc27a9ab69642e7b1
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Tue,  4 Mar 2025 19:45:27 +0100

libc/wchar: Define mbstate_t correctly

The definition of the mbstate_t type depends of the target
platform, and it should be defined in the sys/cdefs.h files.

Diffstat:
Minclude/bits/darwin/sys/cdefs.h | 9++++++++-
Minclude/bits/dragonfly/sys/cdefs.h | 9++++++++-
Minclude/bits/freebsd/sys/cdefs.h | 9++++++++-
Minclude/bits/linux/sys/cdefs.h | 9++++++++-
Minclude/bits/netbsd/sys/cdefs.h | 9++++++++-
Minclude/bits/openbsd/sys/cdefs.h | 9++++++++-
Minclude/wchar.h | 7+------
7 files changed, 49 insertions(+), 12 deletions(-)

diff --git a/include/bits/darwin/sys/cdefs.h b/include/bits/darwin/sys/cdefs.h @@ -1 +1,8 @@ -/* nothing fpr darwin */ +#ifdef _NEED_MBSTATE_T +#ifndef _MBSTATE_T +typedef union { + char __mbstate8[128]; +} mbstate_t; +#define _MBSTATE_T +#endif +#endif diff --git a/include/bits/dragonfly/sys/cdefs.h b/include/bits/dragonfly/sys/cdefs.h @@ -1 +1,8 @@ -/* nothing for dragonfly */ +#ifdef _NEED_MBSTATE_T +#ifndef _MBSTATE_T +typedef union { + char __mbstate8[128]; +} mbstate_t; +#define _MBSTATE_T +#endif +#endif diff --git a/include/bits/freebsd/sys/cdefs.h b/include/bits/freebsd/sys/cdefs.h @@ -1 +1,8 @@ -/* nothing for Openbsd */ +#ifdef _NEED_MBSTATE_T +#ifndef _MBSTATE_T +typedef union { + char __mbstate8[128]; +} mbstate_t; +#define _MBSTATE_T +#endif +#endif diff --git a/include/bits/linux/sys/cdefs.h b/include/bits/linux/sys/cdefs.h @@ -1 +1,8 @@ -/* nothing for Linux */ +#ifdef _NEED_MBSTATE_T +#ifndef _MBSTATE_T +typedef struct __mbstate_t { + unsigned __opaque1, __opaque2; +} mbstate_t; +#define _MBSTATE_T +#endif +#endif diff --git a/include/bits/netbsd/sys/cdefs.h b/include/bits/netbsd/sys/cdefs.h @@ -1 +1,8 @@ -/* nothing for netbsd */ +#ifdef _NEED_MBSTATE_T +#ifndef _MBSTATE_T +typedef union { + char __mbstate8[128]; +} mbstate_t; +#define _MBSTATE_T +#endif +#endif diff --git a/include/bits/openbsd/sys/cdefs.h b/include/bits/openbsd/sys/cdefs.h @@ -1 +1,8 @@ -/* nothing for Openbsd */ +#ifdef _NEED_MBSTATE_T +#ifndef _MBSTATE_T +typedef union { + char __mbstate8[128]; +} mbstate_t; +#define _MBSTATE_T +#endif +#endif diff --git a/include/wchar.h b/include/wchar.h @@ -8,15 +8,10 @@ #define _NEED_WCHARLIM #define _NEED_WINT #define _NEED_VA_LIST +#define _NEED_MBSTATE_T #include <sys/cdefs.h> #include <arch/cdefs.h> -/* - * We only support utf8 as multibyte encoding and - * it does not have state. - */ -typedef int mbstate_t; - struct tm; struct _FILE;