2002-08-23 09:56:05 +08:00
|
|
|
#ifndef _WCHAR_H_
|
|
|
|
#define _WCHAR_H_
|
|
|
|
|
2002-08-28 05:20:10 +08:00
|
|
|
#include <_ansi.h>
|
|
|
|
|
2003-12-06 04:51:57 +08:00
|
|
|
#include <sys/reent.h>
|
|
|
|
|
2002-08-23 09:56:05 +08:00
|
|
|
#define __need_size_t
|
|
|
|
#define __need_wchar_t
|
|
|
|
#define __need_wint_t
|
2012-11-01 19:51:12 +08:00
|
|
|
#define __need_NULL
|
2002-08-23 09:56:05 +08:00
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
/* For _mbstate_t definition. */
|
|
|
|
#include <sys/_types.h>
|
Implement BSD/GNU unlocked stdio extensions.
* libc/include/stdio.h (clearerr_unlocked, feof_unlocked,
ferror_unlocked, fflush_unlocked, fgetc_unlocked, fgets_unlocked,
fileno_unlocked, fputc_unlocked, fputs_unlocked, fread_unlocked,
fwrite_unlocked): Declare.
* libc/include/wchar.h (fgetwc_unlocked, fgetws_unlocked,
fputwc_unlocked, fputws_unlocked, getwc_unlocked, getwchar_unlocked,
putwc_unlocked, putwchar_unlocked): Declare.
* libc/stdio/Makefile.am (ELIX_4_SOURCES): Add clearerr_u.c,
feof_u.c, ferror_u.c, fflush_u.c, fgetc_u.c, fgets_u.c, fgetwc_u.c,
fgetws_u.c, fileno_u.c, fputc_u.c, fputs_u.c, fputwc_u.c, fputws_u.c,
fread_u.c, fwrite_u.c, getwc_u.c, getwchar_u.c, putwc_u.c, putwchar_u.c.
Add necessary dependencies.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/clearerr.c: Document unlocked variant.
* libc/stdio/clearerr_u.c: New file.
* libc/stdio/feof.c: Document unlocked variant.
* libc/stdio/feof_u.c: New file.
* libc/stdio/ferror.c: Document unlocked variant.
* libc/stdio/ferror_u.c: New file.
* libc/stdio/fflush.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fflush_u.c: New file.
* libc/stdio/fgetc.c: Document unlocked variants.
* libc/stdio/fgetc_u.c: New file.
* libc/stdio/fgets.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fgets_u.c: New file.
* libc/stdio/fgetwc.c: Document unlocked variants.
(__fgetwc): Make non-static.
* libc/stdio/fgetwc_u.c: New file.
* libc/stdio/fgetws.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fgetws_u.c: New file.
* libc/stdio/fileno.c: Document unlocked variant.
* libc/stdio/fileno_u.c: New file.
* libc/stdio/fputc.c: Document unlocked variants.
* libc/stdio/fputc_u.c: New file.
* libc/stdio/fputs.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fputs_u.c: New file.
* libc/stdio/fputwc.c: Document unlocked variants.
(__fputwc): Make non-static.
* libc/stdio/fputwc_u.c: New file.
* libc/stdio/fputws.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fputws_u.c: New file.
* libc/stdio/fread.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fread_u.c: New file.
* libc/stdio/fwrite.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fwrite_u.c: New file.
* libc/stdio/getwc_u.c: New file.
* libc/stdio/getwchar.c: Document unlocked variants.
* libc/stdio/getwchar_u.c: New file.
* libc/stdio/local.h: Define locking macros as empty ifdef
__IMPL_UNLOCKED__.
(__fgetwc, __fputwc): Declare.
* libc/stdio/putwc_u.c: New file.
* libc/stdio/putwchar.c: Document unlocked variants.
* libc/stdio/putwchar_u.c: New file.
2014-12-18 22:55:21 +08:00
|
|
|
#include <sys/cdefs.h>
|
2011-01-27 19:55:01 +08:00
|
|
|
/* For __STDC_ISO_10646__ */
|
|
|
|
#include <sys/features.h>
|
|
|
|
|
2016-08-12 16:16:52 +08:00
|
|
|
/* typedef only __gnuc_va_list, used throughout the header */
|
|
|
|
#define __need___va_list
|
|
|
|
#include <stdarg.h>
|
|
|
|
|
|
|
|
/* typedef va_list only when required */
|
|
|
|
#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE
|
|
|
|
#ifdef __GNUC__
|
|
|
|
#ifndef _VA_LIST_DEFINED
|
|
|
|
typedef __gnuc_va_list va_list;
|
|
|
|
#define _VA_LIST_DEFINED
|
|
|
|
#endif
|
|
|
|
#else /* !__GNUC__ */
|
|
|
|
#include <stdarg.h>
|
|
|
|
#endif
|
|
|
|
#endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */
|
|
|
|
|
2016-08-13 02:44:26 +08:00
|
|
|
#if __XSI_VISIBLE /* && __XSI_VISIBLE < 800 */ && !__GNU_VISIBLE
|
2016-08-12 05:33:43 +08:00
|
|
|
#include <wctype.h>
|
|
|
|
#endif
|
|
|
|
|
2002-08-23 09:56:05 +08:00
|
|
|
#ifndef WEOF
|
2002-08-30 03:38:25 +08:00
|
|
|
# define WEOF ((wint_t)-1)
|
2002-08-23 09:56:05 +08:00
|
|
|
#endif
|
|
|
|
|
2014-05-13 01:02:11 +08:00
|
|
|
/* This must match definition in <stdint.h> */
|
2002-09-05 02:16:55 +08:00
|
|
|
#ifndef WCHAR_MIN
|
2013-12-24 03:21:07 +08:00
|
|
|
#ifdef __WCHAR_MIN__
|
|
|
|
#define WCHAR_MIN __WCHAR_MIN__
|
|
|
|
#elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0)
|
|
|
|
#define WCHAR_MIN (0 + L'\0')
|
|
|
|
#else
|
|
|
|
#define WCHAR_MIN (-0x7fffffff - 1 + L'\0')
|
|
|
|
#endif
|
2002-09-05 02:16:55 +08:00
|
|
|
#endif
|
|
|
|
|
2014-05-13 01:02:11 +08:00
|
|
|
/* This must match definition in <stdint.h> */
|
2002-09-05 23:26:42 +08:00
|
|
|
#ifndef WCHAR_MAX
|
2002-09-05 02:16:55 +08:00
|
|
|
#ifdef __WCHAR_MAX__
|
|
|
|
#define WCHAR_MAX __WCHAR_MAX__
|
2013-12-24 03:21:07 +08:00
|
|
|
#elif defined(__WCHAR_UNSIGNED__) || (L'\0' - 1 > 0)
|
|
|
|
#define WCHAR_MAX (0xffffffffu + L'\0')
|
2002-09-05 02:16:55 +08:00
|
|
|
#else
|
2013-12-24 03:21:07 +08:00
|
|
|
#define WCHAR_MAX (0x7fffffff + L'\0')
|
2002-09-05 02:16:55 +08:00
|
|
|
#endif
|
2002-09-05 23:26:42 +08:00
|
|
|
#endif
|
2002-09-05 02:16:55 +08:00
|
|
|
|
2016-07-25 17:47:36 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200809
|
2019-06-13 04:31:14 +08:00
|
|
|
#include <sys/_locale.h>
|
2016-07-25 02:00:34 +08:00
|
|
|
#endif
|
|
|
|
|
2002-11-07 08:44:31 +08:00
|
|
|
_BEGIN_STD_C
|
2002-11-05 03:04:09 +08:00
|
|
|
|
2016-08-12 16:16:52 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200809 || _XSI_VISIBLE
|
2013-12-24 03:21:07 +08:00
|
|
|
/* As in stdio.h, <sys/reent.h> defines __FILE. */
|
2015-03-06 01:15:24 +08:00
|
|
|
#if !defined(__FILE_defined)
|
2013-12-24 03:21:07 +08:00
|
|
|
typedef __FILE FILE;
|
2015-03-06 01:15:24 +08:00
|
|
|
# define __FILE_defined
|
|
|
|
#endif
|
2016-08-12 16:16:52 +08:00
|
|
|
#endif
|
2013-12-24 03:21:07 +08:00
|
|
|
|
2009-10-15 16:23:27 +08:00
|
|
|
/* As required by POSIX.1-2008, declare tm as incomplete type.
|
|
|
|
The actual definition is in time.h. */
|
|
|
|
struct tm;
|
|
|
|
|
2002-09-17 02:55:25 +08:00
|
|
|
#ifndef _MBSTATE_T
|
|
|
|
#define _MBSTATE_T
|
2002-08-23 09:56:05 +08:00
|
|
|
typedef _mbstate_t mbstate_t;
|
2002-09-17 02:55:25 +08:00
|
|
|
#endif /* _MBSTATE_T */
|
2002-08-23 09:56:05 +08:00
|
|
|
|
2017-12-04 13:54:48 +08:00
|
|
|
wint_t btowc (int);
|
|
|
|
int wctob (wint_t);
|
|
|
|
size_t mbrlen (const char *__restrict, size_t, mbstate_t *__restrict);
|
|
|
|
size_t mbrtowc (wchar_t *__restrict, const char *__restrict, size_t,
|
|
|
|
mbstate_t *__restrict);
|
|
|
|
size_t _mbrtowc_r (struct _reent *, wchar_t * , const char * ,
|
|
|
|
size_t, mbstate_t *);
|
|
|
|
int mbsinit (const mbstate_t *);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200809
|
2017-12-04 13:54:48 +08:00
|
|
|
size_t mbsnrtowcs (wchar_t *__restrict, const char **__restrict,
|
|
|
|
size_t, size_t, mbstate_t *__restrict);
|
|
|
|
#endif
|
|
|
|
size_t _mbsnrtowcs_r (struct _reent *, wchar_t * , const char ** ,
|
|
|
|
size_t, size_t, mbstate_t *);
|
|
|
|
size_t mbsrtowcs (wchar_t *__restrict, const char **__restrict, size_t,
|
|
|
|
mbstate_t *__restrict);
|
|
|
|
size_t _mbsrtowcs_r (struct _reent *, wchar_t * , const char ** , size_t, mbstate_t *);
|
|
|
|
size_t wcrtomb (char *__restrict, wchar_t, mbstate_t *__restrict);
|
|
|
|
size_t _wcrtomb_r (struct _reent *, char * , wchar_t, mbstate_t *);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200809
|
2017-12-04 13:54:48 +08:00
|
|
|
size_t wcsnrtombs (char *__restrict, const wchar_t **__restrict,
|
|
|
|
size_t, size_t, mbstate_t *__restrict);
|
|
|
|
#endif
|
|
|
|
size_t _wcsnrtombs_r (struct _reent *, char * , const wchar_t ** ,
|
|
|
|
size_t, size_t, mbstate_t *);
|
|
|
|
size_t wcsrtombs (char *__restrict, const wchar_t **__restrict,
|
|
|
|
size_t, mbstate_t *__restrict);
|
|
|
|
size_t _wcsrtombs_r (struct _reent *, char * , const wchar_t ** ,
|
|
|
|
size_t, mbstate_t *);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200809
|
2017-12-04 13:54:48 +08:00
|
|
|
int wcscasecmp (const wchar_t *, const wchar_t *);
|
2016-08-11 03:47:35 +08:00
|
|
|
#endif
|
2017-12-04 13:54:48 +08:00
|
|
|
wchar_t *wcscat (wchar_t *__restrict, const wchar_t *__restrict);
|
|
|
|
wchar_t *wcschr (const wchar_t *, wchar_t);
|
|
|
|
int wcscmp (const wchar_t *, const wchar_t *);
|
|
|
|
int wcscoll (const wchar_t *, const wchar_t *);
|
|
|
|
wchar_t *wcscpy (wchar_t *__restrict, const wchar_t *__restrict);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200809
|
2017-12-04 13:54:48 +08:00
|
|
|
wchar_t *wcpcpy (wchar_t *__restrict,
|
|
|
|
const wchar_t *__restrict);
|
2018-09-28 17:12:48 +08:00
|
|
|
wchar_t *wcsdup (const wchar_t *) __malloc_like __result_use_check;
|
2017-12-04 13:54:48 +08:00
|
|
|
#endif
|
|
|
|
wchar_t *_wcsdup_r (struct _reent *, const wchar_t * );
|
|
|
|
size_t wcscspn (const wchar_t *, const wchar_t *);
|
|
|
|
size_t wcsftime (wchar_t *__restrict, size_t,
|
|
|
|
const wchar_t *__restrict, const struct tm *__restrict);
|
2016-08-23 23:41:50 +08:00
|
|
|
#if __GNU_VISIBLE
|
|
|
|
size_t wcsftime_l (wchar_t *__restrict, size_t, const wchar_t *__restrict,
|
|
|
|
const struct tm *__restrict, locale_t);
|
|
|
|
#endif
|
2017-12-04 13:54:48 +08:00
|
|
|
size_t wcslcat (wchar_t *, const wchar_t *, size_t);
|
|
|
|
size_t wcslcpy (wchar_t *, const wchar_t *, size_t);
|
|
|
|
size_t wcslen (const wchar_t *);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200809
|
2017-12-04 13:54:48 +08:00
|
|
|
int wcsncasecmp (const wchar_t *, const wchar_t *, size_t);
|
2016-08-11 03:47:35 +08:00
|
|
|
#endif
|
2017-12-04 13:54:48 +08:00
|
|
|
wchar_t *wcsncat (wchar_t *__restrict,
|
|
|
|
const wchar_t *__restrict, size_t);
|
|
|
|
int wcsncmp (const wchar_t *, const wchar_t *, size_t);
|
|
|
|
wchar_t *wcsncpy (wchar_t *__restrict,
|
|
|
|
const wchar_t *__restrict, size_t);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200809
|
2017-12-04 13:54:48 +08:00
|
|
|
wchar_t *wcpncpy (wchar_t *__restrict,
|
|
|
|
const wchar_t *__restrict, size_t);
|
|
|
|
size_t wcsnlen (const wchar_t *, size_t);
|
|
|
|
#endif
|
|
|
|
wchar_t *wcspbrk (const wchar_t *, const wchar_t *);
|
|
|
|
wchar_t *wcsrchr (const wchar_t *, wchar_t);
|
|
|
|
size_t wcsspn (const wchar_t *, const wchar_t *);
|
|
|
|
wchar_t *wcsstr (const wchar_t *__restrict,
|
|
|
|
const wchar_t *__restrict);
|
|
|
|
wchar_t *wcstok (wchar_t *__restrict, const wchar_t *__restrict,
|
|
|
|
wchar_t **__restrict);
|
|
|
|
double wcstod (const wchar_t *__restrict, wchar_t **__restrict);
|
|
|
|
double _wcstod_r (struct _reent *, const wchar_t *, wchar_t **);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2017-12-04 13:54:48 +08:00
|
|
|
float wcstof (const wchar_t *__restrict, wchar_t **__restrict);
|
2016-08-11 03:47:35 +08:00
|
|
|
#endif
|
2017-12-04 13:54:48 +08:00
|
|
|
float _wcstof_r (struct _reent *, const wchar_t *, wchar_t **);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __XSI_VISIBLE
|
2017-12-04 13:54:48 +08:00
|
|
|
int wcswidth (const wchar_t *, size_t);
|
2016-08-11 03:47:35 +08:00
|
|
|
#endif
|
2017-12-04 13:54:48 +08:00
|
|
|
size_t wcsxfrm (wchar_t *__restrict, const wchar_t *__restrict,
|
|
|
|
size_t);
|
2016-07-25 02:00:34 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200809
|
|
|
|
extern int wcscasecmp_l (const wchar_t *, const wchar_t *, locale_t);
|
|
|
|
extern int wcsncasecmp_l (const wchar_t *, const wchar_t *, size_t, locale_t);
|
|
|
|
extern int wcscoll_l (const wchar_t *, const wchar_t *, locale_t);
|
|
|
|
extern size_t wcsxfrm_l (wchar_t *__restrict, const wchar_t *__restrict, size_t,
|
|
|
|
locale_t);
|
|
|
|
#endif
|
|
|
|
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __XSI_VISIBLE
|
2017-12-04 13:54:48 +08:00
|
|
|
int wcwidth (const wchar_t);
|
2016-08-11 03:47:35 +08:00
|
|
|
#endif
|
2017-12-04 13:54:48 +08:00
|
|
|
wchar_t *wmemchr (const wchar_t *, wchar_t, size_t);
|
|
|
|
int wmemcmp (const wchar_t *, const wchar_t *, size_t);
|
|
|
|
wchar_t *wmemcpy (wchar_t *__restrict, const wchar_t *__restrict,
|
|
|
|
size_t);
|
|
|
|
wchar_t *wmemmove (wchar_t *, const wchar_t *, size_t);
|
2017-11-30 09:45:56 +08:00
|
|
|
#if __GNU_VISIBLE
|
2017-12-04 13:54:48 +08:00
|
|
|
wchar_t *wmempcpy (wchar_t *__restrict, const wchar_t *__restrict,
|
|
|
|
size_t);
|
2017-11-30 09:45:56 +08:00
|
|
|
#endif
|
2017-12-04 13:54:48 +08:00
|
|
|
wchar_t *wmemset (wchar_t *, wchar_t, size_t);
|
2002-08-23 09:56:05 +08:00
|
|
|
|
2017-12-04 13:54:48 +08:00
|
|
|
long wcstol (const wchar_t *__restrict, wchar_t **__restrict, int);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2017-12-04 13:54:48 +08:00
|
|
|
long long wcstoll (const wchar_t *__restrict, wchar_t **__restrict,
|
|
|
|
int);
|
2016-08-11 03:47:35 +08:00
|
|
|
#endif
|
2017-12-04 13:54:48 +08:00
|
|
|
unsigned long wcstoul (const wchar_t *__restrict, wchar_t **__restrict,
|
|
|
|
int);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2017-12-04 13:54:48 +08:00
|
|
|
unsigned long long wcstoull (const wchar_t *__restrict,
|
|
|
|
wchar_t **__restrict, int);
|
2016-08-11 03:47:35 +08:00
|
|
|
#endif
|
2017-12-04 13:54:48 +08:00
|
|
|
long _wcstol_r (struct _reent *, const wchar_t *, wchar_t **, int);
|
|
|
|
long long _wcstoll_r (struct _reent *, const wchar_t *, wchar_t **, int);
|
|
|
|
unsigned long _wcstoul_r (struct _reent *, const wchar_t *, wchar_t **, int);
|
|
|
|
unsigned long long _wcstoull_r (struct _reent *, const wchar_t *, wchar_t **, int);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999
|
2017-12-04 13:54:48 +08:00
|
|
|
long double wcstold (const wchar_t *, wchar_t **);
|
2016-08-11 03:47:35 +08:00
|
|
|
#endif
|
2007-07-07 04:03:28 +08:00
|
|
|
|
Implement strto[dflu]_l/wcsto[dflu]_l
Implement GNU extensions strtod_l, strtof_l, strtol_l, strtold_l, strtoll_l,
strtoul_l, strtoull_l, wcstod_l, wcstof_l, wcstol_l, wcstold_l, wcstoll_l,
wcstoul_l, wcstoull_l.
Export from Cygwin, fix posix.xml.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2016-08-10 22:30:46 +08:00
|
|
|
#if __GNU_VISIBLE
|
|
|
|
long wcstol_l (const wchar_t *__restrict, wchar_t **__restrict, int, locale_t);
|
|
|
|
long long wcstoll_l (const wchar_t *__restrict, wchar_t **__restrict, int,
|
|
|
|
locale_t);
|
|
|
|
unsigned long wcstoul_l (const wchar_t *__restrict, wchar_t **__restrict, int,
|
|
|
|
locale_t);
|
|
|
|
unsigned long long wcstoull_l (const wchar_t *__restrict, wchar_t **__restrict,
|
|
|
|
int, locale_t);
|
|
|
|
double wcstod_l (const wchar_t *, wchar_t **, locale_t);
|
|
|
|
float wcstof_l (const wchar_t *, wchar_t **, locale_t);
|
|
|
|
long double wcstold_l (const wchar_t *, wchar_t **, locale_t);
|
|
|
|
#endif
|
|
|
|
|
2017-12-04 13:54:48 +08:00
|
|
|
wint_t fgetwc (__FILE *);
|
|
|
|
wchar_t *fgetws (wchar_t *__restrict, int, __FILE *__restrict);
|
|
|
|
wint_t fputwc (wchar_t, __FILE *);
|
|
|
|
int fputws (const wchar_t *__restrict, __FILE *__restrict);
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500
|
2017-12-04 13:54:48 +08:00
|
|
|
int fwide (__FILE *, int);
|
|
|
|
#endif
|
|
|
|
wint_t getwc (__FILE *);
|
|
|
|
wint_t getwchar (void);
|
|
|
|
wint_t putwc (wchar_t, __FILE *);
|
|
|
|
wint_t putwchar (wchar_t);
|
|
|
|
wint_t ungetwc (wint_t wc, __FILE *);
|
|
|
|
|
|
|
|
wint_t _fgetwc_r (struct _reent *, __FILE *);
|
|
|
|
wint_t _fgetwc_unlocked_r (struct _reent *, __FILE *);
|
|
|
|
wchar_t *_fgetws_r (struct _reent *, wchar_t *, int, __FILE *);
|
|
|
|
wchar_t *_fgetws_unlocked_r (struct _reent *, wchar_t *, int, __FILE *);
|
|
|
|
wint_t _fputwc_r (struct _reent *, wchar_t, __FILE *);
|
|
|
|
wint_t _fputwc_unlocked_r (struct _reent *, wchar_t, __FILE *);
|
|
|
|
int _fputws_r (struct _reent *, const wchar_t *, __FILE *);
|
|
|
|
int _fputws_unlocked_r (struct _reent *, const wchar_t *, __FILE *);
|
|
|
|
int _fwide_r (struct _reent *, __FILE *, int);
|
|
|
|
wint_t _getwc_r (struct _reent *, __FILE *);
|
|
|
|
wint_t _getwc_unlocked_r (struct _reent *, __FILE *);
|
2020-10-01 18:46:51 +08:00
|
|
|
wint_t _getwchar_r (struct _reent *);
|
|
|
|
wint_t _getwchar_unlocked_r (struct _reent *);
|
2017-12-04 13:54:48 +08:00
|
|
|
wint_t _putwc_r (struct _reent *, wchar_t, __FILE *);
|
|
|
|
wint_t _putwc_unlocked_r (struct _reent *, wchar_t, __FILE *);
|
|
|
|
wint_t _putwchar_r (struct _reent *, wchar_t);
|
|
|
|
wint_t _putwchar_unlocked_r (struct _reent *, wchar_t);
|
|
|
|
wint_t _ungetwc_r (struct _reent *, wint_t wc, __FILE *);
|
2008-12-10 Corinna Vinschen <corinna@vinschen.de>
Implement basic wide char stdio functionality, based on FreeBSD.
* libc/include/stdio.h (__SORD): Define.
(__SWID): Define.
* libc/include/wchar.h: Add declarations for new wide char functions.
(getwc): Define as macro.
(getwchar): Ditto.
(putwc): Ditto.
(putwchar): Ditto.
* libc/include/sys/reent.h (struct __sFILE): Add _mbstate member.
(struct __sFILE64): Ditto.
* libc/stdio/Makefile.am (ELIX_4_SOURCES): Add fgetwc.c, fgetws.c,
fputwc.c, fputws.c, fwide.c, getwc.c, getwchar.c, putwc.c, putwchar.c
and ungetwc.c.
(CHEWOUT_FILES): Add fgetwc.def, fgetws.def, fputwc.def, fputws.def,
fwide.def, getwc.def, getwchar.def, putwc.def, putwchar.def and
ungetwc.def.
Add header dependency rules for the new files.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/fgetwc.c: New file, implementing fgetwc and _fgetwc_r.
* libc/stdio/fgetws.c: New file, implementing fgetws and _fgetws_r.
* libc/stdio/findfp.c (std): Initialize FILE's _mbstate member.
(__sfmoreglue): Ditto.
* libc/stdio/fputs.c (_fputs_r): Set stream orientation.
* libc/stdio/fputwc.c: New file, implementing fputwc and _fputwc_r.
* libc/stdio/fputws.c: New file, implementing fputws and _fputws_r.
* libc/stdio/fread.c (_fread_r): Set stream orientation.
* libc/stdio/freopen.c (_freopen_r): Reset stream orientation. Reset
_mbstate.
* libc/stdio/fseek.c (_fseek_r): Reset _mbstate.
* libc/stdio/fwide.c: New file, implementing fwide and _fwide_r.
* libc/stdio/fwrite.c (_fwrite_r): Set stream orientation.
* libc/stdio/getwc.c: New file, implementing getwc and _getwc_r.
* libc/stdio/getwchar.c: New file, implementing getwchar and
_getwchar_r.
* libc/stdio/local.h (ORIENT): New macro.
* libc/stdio/puts.c (_puts_r): Set stream orientation.
* libc/stdio/putwc.c: New file, implementing putwc and _putwc_r.
* libc/stdio/putwchar.c: New file, implementing putwchar and
_putwchar_r.
* libc/stdio/refill.c (__srefill_r): Set stream orientation.
* libc/stdio/stdio.tex: Add documentation for new functions.
* libc/stdio/ungetc.c (_ungetc_r): Set stream orientation.
* libc/stdio/ungetwc.c: New file, implementing ungetwc and _ungetwc_r.
* libc/stdio/vfscanf.c (__SVFSCANF_R): Set stream orientation.
* libc/stdio/wbuf.c (__swbuf_r): Ditto.
2008-12-11 07:43:12 +08:00
|
|
|
|
Implement BSD/GNU unlocked stdio extensions.
* libc/include/stdio.h (clearerr_unlocked, feof_unlocked,
ferror_unlocked, fflush_unlocked, fgetc_unlocked, fgets_unlocked,
fileno_unlocked, fputc_unlocked, fputs_unlocked, fread_unlocked,
fwrite_unlocked): Declare.
* libc/include/wchar.h (fgetwc_unlocked, fgetws_unlocked,
fputwc_unlocked, fputws_unlocked, getwc_unlocked, getwchar_unlocked,
putwc_unlocked, putwchar_unlocked): Declare.
* libc/stdio/Makefile.am (ELIX_4_SOURCES): Add clearerr_u.c,
feof_u.c, ferror_u.c, fflush_u.c, fgetc_u.c, fgets_u.c, fgetwc_u.c,
fgetws_u.c, fileno_u.c, fputc_u.c, fputs_u.c, fputwc_u.c, fputws_u.c,
fread_u.c, fwrite_u.c, getwc_u.c, getwchar_u.c, putwc_u.c, putwchar_u.c.
Add necessary dependencies.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/clearerr.c: Document unlocked variant.
* libc/stdio/clearerr_u.c: New file.
* libc/stdio/feof.c: Document unlocked variant.
* libc/stdio/feof_u.c: New file.
* libc/stdio/ferror.c: Document unlocked variant.
* libc/stdio/ferror_u.c: New file.
* libc/stdio/fflush.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fflush_u.c: New file.
* libc/stdio/fgetc.c: Document unlocked variants.
* libc/stdio/fgetc_u.c: New file.
* libc/stdio/fgets.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fgets_u.c: New file.
* libc/stdio/fgetwc.c: Document unlocked variants.
(__fgetwc): Make non-static.
* libc/stdio/fgetwc_u.c: New file.
* libc/stdio/fgetws.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fgetws_u.c: New file.
* libc/stdio/fileno.c: Document unlocked variant.
* libc/stdio/fileno_u.c: New file.
* libc/stdio/fputc.c: Document unlocked variants.
* libc/stdio/fputc_u.c: New file.
* libc/stdio/fputs.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fputs_u.c: New file.
* libc/stdio/fputwc.c: Document unlocked variants.
(__fputwc): Make non-static.
* libc/stdio/fputwc_u.c: New file.
* libc/stdio/fputws.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fputws_u.c: New file.
* libc/stdio/fread.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fread_u.c: New file.
* libc/stdio/fwrite.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fwrite_u.c: New file.
* libc/stdio/getwc_u.c: New file.
* libc/stdio/getwchar.c: Document unlocked variants.
* libc/stdio/getwchar_u.c: New file.
* libc/stdio/local.h: Define locking macros as empty ifdef
__IMPL_UNLOCKED__.
(__fgetwc, __fputwc): Declare.
* libc/stdio/putwc_u.c: New file.
* libc/stdio/putwchar.c: Document unlocked variants.
* libc/stdio/putwchar_u.c: New file.
2014-12-18 22:55:21 +08:00
|
|
|
#if __GNU_VISIBLE
|
2017-12-04 13:54:48 +08:00
|
|
|
wint_t fgetwc_unlocked (__FILE *);
|
|
|
|
wchar_t *fgetws_unlocked (wchar_t *__restrict, int, __FILE *__restrict);
|
|
|
|
wint_t fputwc_unlocked (wchar_t, __FILE *);
|
|
|
|
int fputws_unlocked (const wchar_t *__restrict, __FILE *__restrict);
|
|
|
|
wint_t getwc_unlocked (__FILE *);
|
|
|
|
wint_t getwchar_unlocked (void);
|
|
|
|
wint_t putwc_unlocked (wchar_t, __FILE *);
|
|
|
|
wint_t putwchar_unlocked (wchar_t);
|
Implement BSD/GNU unlocked stdio extensions.
* libc/include/stdio.h (clearerr_unlocked, feof_unlocked,
ferror_unlocked, fflush_unlocked, fgetc_unlocked, fgets_unlocked,
fileno_unlocked, fputc_unlocked, fputs_unlocked, fread_unlocked,
fwrite_unlocked): Declare.
* libc/include/wchar.h (fgetwc_unlocked, fgetws_unlocked,
fputwc_unlocked, fputws_unlocked, getwc_unlocked, getwchar_unlocked,
putwc_unlocked, putwchar_unlocked): Declare.
* libc/stdio/Makefile.am (ELIX_4_SOURCES): Add clearerr_u.c,
feof_u.c, ferror_u.c, fflush_u.c, fgetc_u.c, fgets_u.c, fgetwc_u.c,
fgetws_u.c, fileno_u.c, fputc_u.c, fputs_u.c, fputwc_u.c, fputws_u.c,
fread_u.c, fwrite_u.c, getwc_u.c, getwchar_u.c, putwc_u.c, putwchar_u.c.
Add necessary dependencies.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/clearerr.c: Document unlocked variant.
* libc/stdio/clearerr_u.c: New file.
* libc/stdio/feof.c: Document unlocked variant.
* libc/stdio/feof_u.c: New file.
* libc/stdio/ferror.c: Document unlocked variant.
* libc/stdio/ferror_u.c: New file.
* libc/stdio/fflush.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fflush_u.c: New file.
* libc/stdio/fgetc.c: Document unlocked variants.
* libc/stdio/fgetc_u.c: New file.
* libc/stdio/fgets.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fgets_u.c: New file.
* libc/stdio/fgetwc.c: Document unlocked variants.
(__fgetwc): Make non-static.
* libc/stdio/fgetwc_u.c: New file.
* libc/stdio/fgetws.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fgetws_u.c: New file.
* libc/stdio/fileno.c: Document unlocked variant.
* libc/stdio/fileno_u.c: New file.
* libc/stdio/fputc.c: Document unlocked variants.
* libc/stdio/fputc_u.c: New file.
* libc/stdio/fputs.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fputs_u.c: New file.
* libc/stdio/fputwc.c: Document unlocked variants.
(__fputwc): Make non-static.
* libc/stdio/fputwc_u.c: New file.
* libc/stdio/fputws.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fputws_u.c: New file.
* libc/stdio/fread.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fread_u.c: New file.
* libc/stdio/fwrite.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fwrite_u.c: New file.
* libc/stdio/getwc_u.c: New file.
* libc/stdio/getwchar.c: Document unlocked variants.
* libc/stdio/getwchar_u.c: New file.
* libc/stdio/local.h: Define locking macros as empty ifdef
__IMPL_UNLOCKED__.
(__fgetwc, __fputwc): Declare.
* libc/stdio/putwc_u.c: New file.
* libc/stdio/putwchar.c: Document unlocked variants.
* libc/stdio/putwchar_u.c: New file.
2014-12-18 22:55:21 +08:00
|
|
|
#endif
|
|
|
|
|
2016-03-15 06:24:48 +08:00
|
|
|
#if __POSIX_VISIBLE >= 200809
|
2017-12-04 13:54:48 +08:00
|
|
|
__FILE *open_wmemstream (wchar_t **, size_t *);
|
2016-03-15 06:24:48 +08:00
|
|
|
#endif
|
2017-12-04 13:54:48 +08:00
|
|
|
__FILE *_open_wmemstream_r (struct _reent *, wchar_t **, size_t *);
|
2009-02-19 01:35:24 +08:00
|
|
|
|
* libc/include/stdio.h (__VALIST): Guard against multiple definition.
* libc/include/wchar.h: Include stdarg.h.
(__VALIST): Define conditionally.
(fwprintf, swprintf, vfwprintf, vswprintf, vwprintf, wprintf: Declare.
(_fwprintf_r, _swprintf_r, _vfwprintf_r, _vswprintf_r, _vwprintf_r,
_wprintf_r): Declare.
* libc/stdio/Makefile.am: Add new files.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/fwprintf.c: New file.
* libc/stdio/local.h (_svfwprintf_r, _svfiwprintf_r): Declare.
(__CH_CLASS, __STATE, __ACTION): Move definition from vfprintf.c here
and move to the __ namespace.
(__chclass, __state_table, __action_table): Declare.
* libc/stdio/stdio.tex: Add new documentation references.
* libc/stdio/swprintf.c: New file.
* libc/stdio/vfprintf.c (__SPRINT): New macro to call the right
__sprint_r function according to compilation unit. Use throughout.
(__ssprint_r): Rename STRING_ONLY variant from __sprint_r.
Make externaly available. Only define if INTEGER_ONLY is defined.
(__sprint_r): Make externaly available. Only define if INTEGER_ONLY
is defined. Handle stream orientation.
(__sbprintf): Copy FILE's _flags2 member as well.
(__chclass, __state_table, __action_table): Prepend __ to name and
make externally available.
* libc/stdio/vfwprintf.c: New file.
* libc/stdio/vswprintf.c: New file.
* libc/stdio/vwprintf.c: New file.
* libc/stdio/wprintf.c: New file.
2009-03-06 17:55:52 +08:00
|
|
|
#ifndef __VALIST
|
|
|
|
#ifdef __GNUC__
|
|
|
|
#define __VALIST __gnuc_va_list
|
|
|
|
#else
|
|
|
|
#define __VALIST char*
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500
|
2017-12-04 13:54:48 +08:00
|
|
|
int fwprintf (__FILE *__restrict, const wchar_t *__restrict, ...);
|
|
|
|
int swprintf (wchar_t *__restrict, size_t,
|
|
|
|
const wchar_t *__restrict, ...);
|
|
|
|
int vfwprintf (__FILE *__restrict, const wchar_t *__restrict,
|
|
|
|
__VALIST);
|
|
|
|
int vswprintf (wchar_t *__restrict, size_t,
|
|
|
|
const wchar_t *__restrict, __VALIST);
|
|
|
|
int vwprintf (const wchar_t *__restrict, __VALIST);
|
|
|
|
int wprintf (const wchar_t *__restrict, ...);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
int _fwprintf_r (struct _reent *, __FILE *, const wchar_t *, ...);
|
|
|
|
int _swprintf_r (struct _reent *, wchar_t *, size_t, const wchar_t *, ...);
|
|
|
|
int _vfwprintf_r (struct _reent *, __FILE *, const wchar_t *, __VALIST);
|
|
|
|
int _vswprintf_r (struct _reent *, wchar_t *, size_t, const wchar_t *, __VALIST);
|
|
|
|
int _vwprintf_r (struct _reent *, const wchar_t *, __VALIST);
|
|
|
|
int _wprintf_r (struct _reent *, const wchar_t *, ...);
|
* libc/include/stdio.h (__VALIST): Guard against multiple definition.
* libc/include/wchar.h: Include stdarg.h.
(__VALIST): Define conditionally.
(fwprintf, swprintf, vfwprintf, vswprintf, vwprintf, wprintf: Declare.
(_fwprintf_r, _swprintf_r, _vfwprintf_r, _vswprintf_r, _vwprintf_r,
_wprintf_r): Declare.
* libc/stdio/Makefile.am: Add new files.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/fwprintf.c: New file.
* libc/stdio/local.h (_svfwprintf_r, _svfiwprintf_r): Declare.
(__CH_CLASS, __STATE, __ACTION): Move definition from vfprintf.c here
and move to the __ namespace.
(__chclass, __state_table, __action_table): Declare.
* libc/stdio/stdio.tex: Add new documentation references.
* libc/stdio/swprintf.c: New file.
* libc/stdio/vfprintf.c (__SPRINT): New macro to call the right
__sprint_r function according to compilation unit. Use throughout.
(__ssprint_r): Rename STRING_ONLY variant from __sprint_r.
Make externaly available. Only define if INTEGER_ONLY is defined.
(__sprint_r): Make externaly available. Only define if INTEGER_ONLY
is defined. Handle stream orientation.
(__sbprintf): Copy FILE's _flags2 member as well.
(__chclass, __state_table, __action_table): Prepend __ to name and
make externally available.
* libc/stdio/vfwprintf.c: New file.
* libc/stdio/vswprintf.c: New file.
* libc/stdio/vwprintf.c: New file.
* libc/stdio/wprintf.c: New file.
2009-03-06 17:55:52 +08:00
|
|
|
|
2016-08-11 03:47:35 +08:00
|
|
|
#if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500
|
2017-12-04 13:54:48 +08:00
|
|
|
int fwscanf (__FILE *__restrict, const wchar_t *__restrict, ...);
|
|
|
|
int swscanf (const wchar_t *__restrict,
|
|
|
|
const wchar_t *__restrict, ...);
|
|
|
|
int vfwscanf (__FILE *__restrict, const wchar_t *__restrict,
|
|
|
|
__VALIST);
|
|
|
|
int vswscanf (const wchar_t *__restrict, const wchar_t *__restrict,
|
|
|
|
__VALIST);
|
|
|
|
int vwscanf (const wchar_t *__restrict, __VALIST);
|
|
|
|
int wscanf (const wchar_t *__restrict, ...);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
int _fwscanf_r (struct _reent *, __FILE *, const wchar_t *, ...);
|
|
|
|
int _swscanf_r (struct _reent *, const wchar_t *, const wchar_t *, ...);
|
|
|
|
int _vfwscanf_r (struct _reent *, __FILE *, const wchar_t *, __VALIST);
|
|
|
|
int _vswscanf_r (struct _reent *, const wchar_t *, const wchar_t *, __VALIST);
|
|
|
|
int _vwscanf_r (struct _reent *, const wchar_t *, __VALIST);
|
|
|
|
int _wscanf_r (struct _reent *, const wchar_t *, ...);
|
* libc/include/wchar.h (fwscanf, swscanf, vfwscanf, vswscanf, vwscanf,
wscanf): Declare.
(_fwscanf_r, _swscanf_r, _vfwscanf_r, _vswscanf_r, _vwscanf_r,
_wscanf_r): Declare.
* libc/stdio/Makefile.am: Add new wscanf files.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/fwscanf.c: New file.
* libc/stdio/local.h (__svfwscanf_r, __ssvfwscanf_r, __svfiwscanf_r,
__ssvfiwscanf_r): Declare.
* libc/stdio/stdio.tex: Add new documentation references.
* libc/stdio/swscanf.c: New file.
* libc/stdio/vfwscanf.c: New file.
* libc/stdio/vswscanf.c: New file.
* libc/stdio/vwscanf.c: New file.
* libc/stdio/wscanf.c: New file.
* libc/stdio/vfscanf.c (_sungetc_r): Make externaly available. Only
define if INTEGER_ONLY is defined. Declare otherwise.
(__ssrefill_r): Ditto.
(_sfread_r): Ditto.
Remove static eofread/eofread1 functions and use __seofread
function instead, throughout.
* libc/stdio/local.h (__seofread): Declare.
* libc/stdio/stdio.c (__seofread): Define.
* libc/stdio/fgetwc.c (__fgetwc): Fix compiler warning.
* libc/stdio/fgetws.c (_fgetws_r): Ditto.
* libc/stdio/fread.c (_fread_r): Ditto.
* libc/stdio/vfprintf.c: Ditto.
* libc/stdio/vswprintf.c: Ditto.
2009-03-11 19:53:22 +08:00
|
|
|
|
2008-12-10 Corinna Vinschen <corinna@vinschen.de>
Implement basic wide char stdio functionality, based on FreeBSD.
* libc/include/stdio.h (__SORD): Define.
(__SWID): Define.
* libc/include/wchar.h: Add declarations for new wide char functions.
(getwc): Define as macro.
(getwchar): Ditto.
(putwc): Ditto.
(putwchar): Ditto.
* libc/include/sys/reent.h (struct __sFILE): Add _mbstate member.
(struct __sFILE64): Ditto.
* libc/stdio/Makefile.am (ELIX_4_SOURCES): Add fgetwc.c, fgetws.c,
fputwc.c, fputws.c, fwide.c, getwc.c, getwchar.c, putwc.c, putwchar.c
and ungetwc.c.
(CHEWOUT_FILES): Add fgetwc.def, fgetws.def, fputwc.def, fputws.def,
fwide.def, getwc.def, getwchar.def, putwc.def, putwchar.def and
ungetwc.def.
Add header dependency rules for the new files.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/fgetwc.c: New file, implementing fgetwc and _fgetwc_r.
* libc/stdio/fgetws.c: New file, implementing fgetws and _fgetws_r.
* libc/stdio/findfp.c (std): Initialize FILE's _mbstate member.
(__sfmoreglue): Ditto.
* libc/stdio/fputs.c (_fputs_r): Set stream orientation.
* libc/stdio/fputwc.c: New file, implementing fputwc and _fputwc_r.
* libc/stdio/fputws.c: New file, implementing fputws and _fputws_r.
* libc/stdio/fread.c (_fread_r): Set stream orientation.
* libc/stdio/freopen.c (_freopen_r): Reset stream orientation. Reset
_mbstate.
* libc/stdio/fseek.c (_fseek_r): Reset _mbstate.
* libc/stdio/fwide.c: New file, implementing fwide and _fwide_r.
* libc/stdio/fwrite.c (_fwrite_r): Set stream orientation.
* libc/stdio/getwc.c: New file, implementing getwc and _getwc_r.
* libc/stdio/getwchar.c: New file, implementing getwchar and
_getwchar_r.
* libc/stdio/local.h (ORIENT): New macro.
* libc/stdio/puts.c (_puts_r): Set stream orientation.
* libc/stdio/putwc.c: New file, implementing putwc and _putwc_r.
* libc/stdio/putwchar.c: New file, implementing putwchar and
_putwchar_r.
* libc/stdio/refill.c (__srefill_r): Set stream orientation.
* libc/stdio/stdio.tex: Add documentation for new functions.
* libc/stdio/ungetc.c (_ungetc_r): Set stream orientation.
* libc/stdio/ungetwc.c: New file, implementing ungetwc and _ungetwc_r.
* libc/stdio/vfscanf.c (__SVFSCANF_R): Set stream orientation.
* libc/stdio/wbuf.c (__swbuf_r): Ditto.
2008-12-11 07:43:12 +08:00
|
|
|
#define getwc(fp) fgetwc(fp)
|
|
|
|
#define putwc(wc,fp) fputwc((wc), (fp))
|
|
|
|
#define getwchar() fgetwc(_REENT->_stdin)
|
|
|
|
#define putwchar(wc) fputwc((wc), _REENT->_stdout)
|
|
|
|
|
Implement BSD/GNU unlocked stdio extensions.
* libc/include/stdio.h (clearerr_unlocked, feof_unlocked,
ferror_unlocked, fflush_unlocked, fgetc_unlocked, fgets_unlocked,
fileno_unlocked, fputc_unlocked, fputs_unlocked, fread_unlocked,
fwrite_unlocked): Declare.
* libc/include/wchar.h (fgetwc_unlocked, fgetws_unlocked,
fputwc_unlocked, fputws_unlocked, getwc_unlocked, getwchar_unlocked,
putwc_unlocked, putwchar_unlocked): Declare.
* libc/stdio/Makefile.am (ELIX_4_SOURCES): Add clearerr_u.c,
feof_u.c, ferror_u.c, fflush_u.c, fgetc_u.c, fgets_u.c, fgetwc_u.c,
fgetws_u.c, fileno_u.c, fputc_u.c, fputs_u.c, fputwc_u.c, fputws_u.c,
fread_u.c, fwrite_u.c, getwc_u.c, getwchar_u.c, putwc_u.c, putwchar_u.c.
Add necessary dependencies.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/clearerr.c: Document unlocked variant.
* libc/stdio/clearerr_u.c: New file.
* libc/stdio/feof.c: Document unlocked variant.
* libc/stdio/feof_u.c: New file.
* libc/stdio/ferror.c: Document unlocked variant.
* libc/stdio/ferror_u.c: New file.
* libc/stdio/fflush.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fflush_u.c: New file.
* libc/stdio/fgetc.c: Document unlocked variants.
* libc/stdio/fgetc_u.c: New file.
* libc/stdio/fgets.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fgets_u.c: New file.
* libc/stdio/fgetwc.c: Document unlocked variants.
(__fgetwc): Make non-static.
* libc/stdio/fgetwc_u.c: New file.
* libc/stdio/fgetws.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fgetws_u.c: New file.
* libc/stdio/fileno.c: Document unlocked variant.
* libc/stdio/fileno_u.c: New file.
* libc/stdio/fputc.c: Document unlocked variants.
* libc/stdio/fputc_u.c: New file.
* libc/stdio/fputs.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fputs_u.c: New file.
* libc/stdio/fputwc.c: Document unlocked variants.
(__fputwc): Make non-static.
* libc/stdio/fputwc_u.c: New file.
* libc/stdio/fputws.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fputws_u.c: New file.
* libc/stdio/fread.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fread_u.c: New file.
* libc/stdio/fwrite.c: Add __IMPL_UNLOCKED__ overrides.
Document unlocked variants.
* libc/stdio/fwrite_u.c: New file.
* libc/stdio/getwc_u.c: New file.
* libc/stdio/getwchar.c: Document unlocked variants.
* libc/stdio/getwchar_u.c: New file.
* libc/stdio/local.h: Define locking macros as empty ifdef
__IMPL_UNLOCKED__.
(__fgetwc, __fputwc): Declare.
* libc/stdio/putwc_u.c: New file.
* libc/stdio/putwchar.c: Document unlocked variants.
* libc/stdio/putwchar_u.c: New file.
2014-12-18 22:55:21 +08:00
|
|
|
#if __GNU_VISIBLE
|
|
|
|
#define getwc_unlocked(fp) fgetwc_unlocked(fp)
|
|
|
|
#define putwc_unlocked(wc,fp) fputwc_unlocked((wc), (fp))
|
|
|
|
#define getwchar_unlocked() fgetwc_unlocked(_REENT->_stdin)
|
|
|
|
#define putwchar_unlocked(wc) fputwc_unlocked((wc), _REENT->_stdout)
|
|
|
|
#endif
|
|
|
|
|
2002-11-07 08:44:31 +08:00
|
|
|
_END_STD_C
|
2002-11-05 03:04:09 +08:00
|
|
|
|
2017-12-02 02:45:14 +08:00
|
|
|
#if __SSP_FORTIFY_LEVEL > 0
|
|
|
|
#include <ssp/wchar.h>
|
|
|
|
#endif
|
|
|
|
|
2002-08-23 09:56:05 +08:00
|
|
|
#endif /* _WCHAR_H_ */
|