mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 22:22:45 +00:00 
			
		
		
		
	 ccb9cae8e9
			
		
	
	
		ccb9cae8e9
		
	
	
	
	
		
			
			The actual value is unchanged, but the previous `0xffffffff` was an unsigned value, which lead to clang getting mad at `foowc() == WEOF`. This commit makes it a signed int on clang, which *should* serve the same purpose and not lead to clang getting mad at us.
		
			
				
	
	
		
			115 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <bits/FILE.h>
 | |
| #include <stdarg.h>
 | |
| #include <stddef.h>
 | |
| #include <sys/cdefs.h>
 | |
| 
 | |
| __BEGIN_DECLS
 | |
| 
 | |
| // Note: wint_t is unsigned on gcc, and signed on clang.
 | |
| #ifndef WEOF
 | |
| #    ifdef __clang__
 | |
| #        define WEOF (-1)
 | |
| #    else
 | |
| #        define WEOF (0xffffffffu)
 | |
| #    endif
 | |
| #endif
 | |
| 
 | |
| #undef WCHAR_MAX
 | |
| #undef WCHAR_MIN
 | |
| #define WCHAR_MAX __WCHAR_MAX__
 | |
| #ifdef __WCHAR_MIN__
 | |
| #    define WCHAR_MIN __WCHAR_MIN__
 | |
| #else
 | |
| // Note: This assumes that wchar_t is a signed type.
 | |
| #    define WCHAR_MIN (-WCHAR_MAX - 1)
 | |
| #endif
 | |
| 
 | |
| typedef __WINT_TYPE__ wint_t;
 | |
| typedef unsigned long int wctype_t;
 | |
| 
 | |
| // A zero-initialized mbstate_t struct must be a valid initial state.
 | |
| typedef struct {
 | |
|     unsigned char bytes[4];
 | |
|     unsigned int stored_bytes;
 | |
| } mbstate_t;
 | |
| 
 | |
| struct tm;
 | |
| 
 | |
| size_t wcslen(const wchar_t*);
 | |
| wchar_t* wcscpy(wchar_t*, const wchar_t*);
 | |
| wchar_t* wcsdup(const wchar_t*);
 | |
| wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t);
 | |
| __attribute__((warn_unused_result)) size_t wcslcpy(wchar_t*, const wchar_t*, size_t);
 | |
| int wcscmp(const wchar_t*, const wchar_t*);
 | |
| int wcsncmp(const wchar_t*, const wchar_t*, size_t);
 | |
| wchar_t* wcschr(const wchar_t*, int);
 | |
| wchar_t* wcsrchr(const wchar_t*, wchar_t);
 | |
| wchar_t* wcscat(wchar_t*, const wchar_t*);
 | |
| wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t);
 | |
| wchar_t* wcstok(wchar_t*, const wchar_t*, wchar_t**);
 | |
| long wcstol(const wchar_t*, wchar_t**, int);
 | |
| long long wcstoll(const wchar_t*, wchar_t**, int);
 | |
| wint_t btowc(int c);
 | |
| size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*);
 | |
| size_t mbrlen(const char*, size_t, mbstate_t*);
 | |
| size_t wcrtomb(char*, wchar_t, mbstate_t*);
 | |
| int wcscoll(const wchar_t*, const wchar_t*);
 | |
| size_t wcsxfrm(wchar_t*, const wchar_t*, size_t);
 | |
| int wctob(wint_t);
 | |
| int mbsinit(const mbstate_t*);
 | |
| wchar_t* wcspbrk(const wchar_t*, const wchar_t*);
 | |
| wchar_t* wcsstr(const wchar_t*, const wchar_t*);
 | |
| wchar_t* wmemchr(const wchar_t*, wchar_t, size_t);
 | |
| wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t);
 | |
| wchar_t* wmemset(wchar_t*, wchar_t, size_t);
 | |
| wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t);
 | |
| unsigned long wcstoul(const wchar_t*, wchar_t**, int);
 | |
| unsigned long long wcstoull(const wchar_t*, wchar_t**, int);
 | |
| float wcstof(const wchar_t*, wchar_t**);
 | |
| double wcstod(const wchar_t*, wchar_t**);
 | |
| long double wcstold(const wchar_t*, wchar_t**);
 | |
| int wcwidth(wchar_t);
 | |
| size_t wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*);
 | |
| size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*);
 | |
| int wmemcmp(const wchar_t*, const wchar_t*, size_t);
 | |
| size_t wcsnrtombs(char*, const wchar_t**, size_t, size_t, mbstate_t*);
 | |
| size_t mbsnrtowcs(wchar_t*, const char**, size_t, size_t, mbstate_t*);
 | |
| size_t wcscspn(const wchar_t* wcs, const wchar_t* reject);
 | |
| size_t wcsspn(const wchar_t* wcs, const wchar_t* accept);
 | |
| 
 | |
| wint_t fgetwc(FILE* stream);
 | |
| wint_t getwc(FILE* stream);
 | |
| wint_t getwchar(void);
 | |
| wint_t fputwc(wchar_t wc, FILE* stream);
 | |
| wint_t putwc(wchar_t wc, FILE* stream);
 | |
| wint_t putwchar(wchar_t wc);
 | |
| wchar_t* fgetws(wchar_t* __restrict ws, int n, FILE* __restrict stream);
 | |
| int fputws(const wchar_t* __restrict ws, FILE* __restrict stream);
 | |
| wint_t ungetwc(wint_t wc, FILE* stream);
 | |
| int fwide(FILE* stream, int mode);
 | |
| 
 | |
| int wprintf(const wchar_t* __restrict format, ...);
 | |
| int fwprintf(FILE* __restrict stream, const wchar_t* __restrict format, ...);
 | |
| int swprintf(wchar_t* __restrict wcs, size_t maxlen, const wchar_t* __restrict format, ...);
 | |
| int vwprintf(const wchar_t* __restrict format, va_list args);
 | |
| int vfwprintf(FILE* __restrict stream, const wchar_t* __restrict format, va_list args);
 | |
| int vswprintf(wchar_t* __restrict wcs, size_t maxlen, const wchar_t* __restrict format, va_list args);
 | |
| 
 | |
| int fwscanf(FILE* __restrict stream, const wchar_t* __restrict format, ...);
 | |
| int swscanf(const wchar_t* __restrict ws, const wchar_t* __restrict format, ...);
 | |
| int wscanf(const wchar_t* __restrict format, ...);
 | |
| int vfwscanf(FILE* __restrict stream, const wchar_t* __restrict format, va_list arg);
 | |
| int vswscanf(const wchar_t* __restrict ws, const wchar_t* __restrict format, va_list arg);
 | |
| int vwscanf(const wchar_t* __restrict format, va_list arg);
 | |
| 
 | |
| size_t wcsftime(wchar_t* __restrict wcs, size_t maxsize, const wchar_t* __restrict format, const struct tm* __restrict timeptr);
 | |
| 
 | |
| __END_DECLS
 |