fix: replace black color with purple
Browse files
+13 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stdarg___gnuc_va_list.h new file mode 100644
| @@ -0,0 +1,13 @@ | ||
| 1 | +/*===---- __stdarg___gnuc_va_list.h - Definition of __gnuc_va_list ---------=== | |
| 2 | + * | |
| 3 | + * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| 4 | + * See https://llvm.org/LICENSE.txt for license information. | |
| 5 | + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| 6 | + * | |
| 7 | + *===-----------------------------------------------------------------------=== | |
| 8 | + */ | |
| 9 | + | |
| 10 | +#ifndef __GNUC_VA_LIST | |
| 11 | +#define __GNUC_VA_LIST | |
| 12 | +typedef __builtin_va_list __gnuc_va_list; | |
| 13 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stdarg___gnuc_va_list.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stdarg___gnuc_va_list.h.blob differ
+29 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stddef_null.h new file mode 100644
| @@ -0,0 +1,29 @@ | ||
| 1 | +/*===---- __stddef_null.h - Definition of NULL -----------------------------=== | |
| 2 | + * | |
| 3 | + * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| 4 | + * See https://llvm.org/LICENSE.txt for license information. | |
| 5 | + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| 6 | + * | |
| 7 | + *===-----------------------------------------------------------------------=== | |
| 8 | + */ | |
| 9 | + | |
| 10 | +#if !defined(NULL) || !__building_module(_Builtin_stddef) | |
| 11 | + | |
| 12 | +/* linux/stddef.h will define NULL to 0. glibc (and other) headers then define | |
| 13 | + * __need_NULL and rely on stddef.h to redefine NULL to the correct value again. | |
| 14 | + * Modules don't support redefining macros like that, but support that pattern | |
| 15 | + * in the non-modules case. | |
| 16 | + */ | |
| 17 | +#undef NULL | |
| 18 | + | |
| 19 | +#ifdef __cplusplus | |
| 20 | +#if !defined(__MINGW32__) && !defined(_MSC_VER) | |
| 21 | +#define NULL __null | |
| 22 | +#else | |
| 23 | +#define NULL 0 | |
| 24 | +#endif | |
| 25 | +#else | |
| 26 | +#define NULL ((void*)0) | |
| 27 | +#endif | |
| 28 | + | |
| 29 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stddef_null.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stddef_null.h.blob differ
+20 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stddef_size_t.h new file mode 100644
| @@ -0,0 +1,20 @@ | ||
| 1 | +/*===---- __stddef_size_t.h - Definition of size_t -------------------------=== | |
| 2 | + * | |
| 3 | + * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| 4 | + * See https://llvm.org/LICENSE.txt for license information. | |
| 5 | + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| 6 | + * | |
| 7 | + *===-----------------------------------------------------------------------=== | |
| 8 | + */ | |
| 9 | + | |
| 10 | +/* | |
| 11 | + * When -fbuiltin-headers-in-system-modules is set this is a non-modular header | |
| 12 | + * and needs to behave as if it was textual. | |
| 13 | + */ | |
| 14 | +#if !defined(_SIZE_T) || \ | |
| 15 | + (__has_feature(modules) && !__building_module(_Builtin_stddef)) | |
| 16 | +#define _SIZE_T | |
| 17 | + | |
| 18 | +typedef __SIZE_TYPE__ size_t; | |
| 19 | + | |
| 20 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stddef_size_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stddef_size_t.h.blob differ
+28 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stddef_wchar_t.h new file mode 100644
| @@ -0,0 +1,28 @@ | ||
| 1 | +/*===---- __stddef_wchar.h - Definition of wchar_t -------------------------=== | |
| 2 | + * | |
| 3 | + * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| 4 | + * See https://llvm.org/LICENSE.txt for license information. | |
| 5 | + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| 6 | + * | |
| 7 | + *===-----------------------------------------------------------------------=== | |
| 8 | + */ | |
| 9 | + | |
| 10 | +#if !defined(__cplusplus) || (defined(_MSC_VER) && !_NATIVE_WCHAR_T_DEFINED) | |
| 11 | + | |
| 12 | +/* | |
| 13 | + * When -fbuiltin-headers-in-system-modules is set this is a non-modular header | |
| 14 | + * and needs to behave as if it was textual. | |
| 15 | + */ | |
| 16 | +#if !defined(_WCHAR_T) || \ | |
| 17 | + (__has_feature(modules) && !__building_module(_Builtin_stddef)) | |
| 18 | +#define _WCHAR_T | |
| 19 | + | |
| 20 | +#ifdef _MSC_EXTENSIONS | |
| 21 | +#define _WCHAR_T_DEFINED | |
| 22 | +#endif | |
| 23 | + | |
| 24 | +typedef __WCHAR_TYPE__ wchar_t; | |
| 25 | + | |
| 26 | +#endif | |
| 27 | + | |
| 28 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stddef_wchar_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@__stddef_wchar_t.h.blob differ
+75 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@stdarg.h new file mode 100644
| @@ -0,0 +1,75 @@ | ||
| 1 | +/*===---- stdarg.h - Variable argument handling ----------------------------=== | |
| 2 | + * | |
| 3 | + * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| 4 | + * See https://llvm.org/LICENSE.txt for license information. | |
| 5 | + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| 6 | + * | |
| 7 | + *===-----------------------------------------------------------------------=== | |
| 8 | + */ | |
| 9 | + | |
| 10 | +/* | |
| 11 | + * This header is designed to be included multiple times. If any of the __need_ | |
| 12 | + * macros are defined, then only that subset of interfaces are provided. This | |
| 13 | + * can be useful for POSIX headers that need to not expose all of stdarg.h, but | |
| 14 | + * need to use some of its interfaces. Otherwise this header provides all of | |
| 15 | + * the expected interfaces. | |
| 16 | + * | |
| 17 | + * When clang modules are enabled, this header is a textual header to support | |
| 18 | + * the multiple include behavior. As such, it doesn't directly declare anything | |
| 19 | + * so that it doesn't add duplicate declarations to all of its includers' | |
| 20 | + * modules. | |
| 21 | + */ | |
| 22 | +#if defined(__MVS__) && __has_include_next(<stdarg.h>) | |
| 23 | +#undef __need___va_list | |
| 24 | +#undef __need_va_list | |
| 25 | +#undef __need_va_arg | |
| 26 | +#undef __need___va_copy | |
| 27 | +#undef __need_va_copy | |
| 28 | +#include <__stdarg_header_macro.h> | |
| 29 | +#include_next <stdarg.h> | |
| 30 | + | |
| 31 | +#else | |
| 32 | +#if !defined(__need___va_list) && !defined(__need_va_list) && \ | |
| 33 | + !defined(__need_va_arg) && !defined(__need___va_copy) && \ | |
| 34 | + !defined(__need_va_copy) | |
| 35 | +#define __need___va_list | |
| 36 | +#define __need_va_list | |
| 37 | +#define __need_va_arg | |
| 38 | +#define __need___va_copy | |
| 39 | +/* GCC always defines __va_copy, but does not define va_copy unless in c99 mode | |
| 40 | + * or -ansi is not specified, since it was not part of C90. | |
| 41 | + */ | |
| 42 | +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ | |
| 43 | + (defined(__cplusplus) && __cplusplus >= 201103L) || \ | |
| 44 | + !defined(__STRICT_ANSI__) | |
| 45 | +#define __need_va_copy | |
| 46 | +#endif | |
| 47 | +#include <__stdarg_header_macro.h> | |
| 48 | +#endif | |
| 49 | + | |
| 50 | +#ifdef __need___va_list | |
| 51 | +#include <__stdarg___gnuc_va_list.h> | |
| 52 | +#undef __need___va_list | |
| 53 | +#endif /* defined(__need___va_list) */ | |
| 54 | + | |
| 55 | +#ifdef __need_va_list | |
| 56 | +#include <__stdarg_va_list.h> | |
| 57 | +#undef __need_va_list | |
| 58 | +#endif /* defined(__need_va_list) */ | |
| 59 | + | |
| 60 | +#ifdef __need_va_arg | |
| 61 | +#include <__stdarg_va_arg.h> | |
| 62 | +#undef __need_va_arg | |
| 63 | +#endif /* defined(__need_va_arg) */ | |
| 64 | + | |
| 65 | +#ifdef __need___va_copy | |
| 66 | +#include <__stdarg___va_copy.h> | |
| 67 | +#undef __need___va_copy | |
| 68 | +#endif /* defined(__need___va_copy) */ | |
| 69 | + | |
| 70 | +#ifdef __need_va_copy | |
| 71 | +#include <__stdarg_va_copy.h> | |
| 72 | +#undef __need_va_copy | |
| 73 | +#endif /* defined(__need_va_copy) */ | |
| 74 | + | |
| 75 | +#endif /* __MVS__ */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@stdarg.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@stdarg.h.blob differ
+139 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@stddef.h new file mode 100644
| @@ -0,0 +1,139 @@ | ||
| 1 | +/*===---- stddef.h - Basic type definitions --------------------------------=== | |
| 2 | + * | |
| 3 | + * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| 4 | + * See https://llvm.org/LICENSE.txt for license information. | |
| 5 | + * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| 6 | + * | |
| 7 | + *===-----------------------------------------------------------------------=== | |
| 8 | + */ | |
| 9 | + | |
| 10 | +/* | |
| 11 | + * This header is designed to be included multiple times. If any of the __need_ | |
| 12 | + * macros are defined, then only that subset of interfaces are provided. This | |
| 13 | + * can be useful for POSIX headers that need to not expose all of stddef.h, but | |
| 14 | + * need to use some of its interfaces. Otherwise this header provides all of | |
| 15 | + * the expected interfaces. | |
| 16 | + * | |
| 17 | + * When clang modules are enabled, this header is a textual header to support | |
| 18 | + * the multiple include behavior. As such, it doesn't directly declare anything | |
| 19 | + * so that it doesn't add duplicate declarations to all of its includers' | |
| 20 | + * modules. | |
| 21 | + */ | |
| 22 | +#if defined(__MVS__) && __has_include_next(<stddef.h>) | |
| 23 | +#undef __need_ptrdiff_t | |
| 24 | +#undef __need_size_t | |
| 25 | +#undef __need_rsize_t | |
| 26 | +#undef __need_wchar_t | |
| 27 | +#undef __need_NULL | |
| 28 | +#undef __need_nullptr_t | |
| 29 | +#undef __need_unreachable | |
| 30 | +#undef __need_max_align_t | |
| 31 | +#undef __need_offsetof | |
| 32 | +#undef __need_wint_t | |
| 33 | +#include <__stddef_header_macro.h> | |
| 34 | +#include_next <stddef.h> | |
| 35 | + | |
| 36 | +#else | |
| 37 | + | |
| 38 | +#if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \ | |
| 39 | + !defined(__need_rsize_t) && !defined(__need_wchar_t) && \ | |
| 40 | + !defined(__need_NULL) && !defined(__need_nullptr_t) && \ | |
| 41 | + !defined(__need_unreachable) && !defined(__need_max_align_t) && \ | |
| 42 | + !defined(__need_offsetof) && !defined(__need_wint_t) | |
| 43 | +#define __need_ptrdiff_t | |
| 44 | +#define __need_size_t | |
| 45 | +/* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is | |
| 46 | + * enabled. */ | |
| 47 | +#if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 | |
| 48 | +#define __need_rsize_t | |
| 49 | +#endif | |
| 50 | +#define __need_wchar_t | |
| 51 | +#if !defined(__STDDEF_H) || __has_feature(modules) | |
| 52 | +/* | |
| 53 | + * __stddef_null.h is special when building without modules: if __need_NULL is | |
| 54 | + * set, then it will unconditionally redefine NULL. To avoid stepping on client | |
| 55 | + * definitions of NULL, __need_NULL should only be set the first time this | |
| 56 | + * header is included, that is when __STDDEF_H is not defined. However, when | |
| 57 | + * building with modules, this header is a textual header and needs to | |
| 58 | + * unconditionally include __stdef_null.h to support multiple submodules | |
| 59 | + * exporting _Builtin_stddef.null. Take module SM with submodules A and B, whose | |
| 60 | + * headers both include stddef.h When SM.A builds, __STDDEF_H will be defined. | |
| 61 | + * When SM.B builds, the definition from SM.A will leak when building without | |
| 62 | + * local submodule visibility. stddef.h wouldn't include __stddef_null.h, and | |
| 63 | + * SM.B wouldn't import _Builtin_stddef.null, and SM.B's `export *` wouldn't | |
| 64 | + * export NULL as expected. When building with modules, always include | |
| 65 | + * __stddef_null.h so that everything works as expected. | |
| 66 | + */ | |
| 67 | +#define __need_NULL | |
| 68 | +#endif | |
| 69 | +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || \ | |
| 70 | + defined(__cplusplus) | |
| 71 | +#define __need_nullptr_t | |
| 72 | +#endif | |
| 73 | +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L | |
| 74 | +#define __need_unreachable | |
| 75 | +#endif | |
| 76 | +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \ | |
| 77 | + (defined(__cplusplus) && __cplusplus >= 201103L) | |
| 78 | +#define __need_max_align_t | |
| 79 | +#endif | |
| 80 | +#define __need_offsetof | |
| 81 | +/* wint_t is provided by <wchar.h> and not <stddef.h>. It's here | |
| 82 | + * for compatibility, but must be explicitly requested. Therefore | |
| 83 | + * __need_wint_t is intentionally not defined here. */ | |
| 84 | +#include <__stddef_header_macro.h> | |
| 85 | +#endif | |
| 86 | + | |
| 87 | +#if defined(__need_ptrdiff_t) | |
| 88 | +#include <__stddef_ptrdiff_t.h> | |
| 89 | +#undef __need_ptrdiff_t | |
| 90 | +#endif /* defined(__need_ptrdiff_t) */ | |
| 91 | + | |
| 92 | +#if defined(__need_size_t) | |
| 93 | +#include <__stddef_size_t.h> | |
| 94 | +#undef __need_size_t | |
| 95 | +#endif /*defined(__need_size_t) */ | |
| 96 | + | |
| 97 | +#if defined(__need_rsize_t) | |
| 98 | +#include <__stddef_rsize_t.h> | |
| 99 | +#undef __need_rsize_t | |
| 100 | +#endif /* defined(__need_rsize_t) */ | |
| 101 | + | |
| 102 | +#if defined(__need_wchar_t) | |
| 103 | +#include <__stddef_wchar_t.h> | |
| 104 | +#undef __need_wchar_t | |
| 105 | +#endif /* defined(__need_wchar_t) */ | |
| 106 | + | |
| 107 | +#if defined(__need_NULL) | |
| 108 | +#include <__stddef_null.h> | |
| 109 | +#undef __need_NULL | |
| 110 | +#endif /* defined(__need_NULL) */ | |
| 111 | + | |
| 112 | +#if defined(__need_nullptr_t) | |
| 113 | +#include <__stddef_nullptr_t.h> | |
| 114 | +#undef __need_nullptr_t | |
| 115 | +#endif /* defined(__need_nullptr_t) */ | |
| 116 | + | |
| 117 | +#if defined(__need_unreachable) | |
| 118 | +#include <__stddef_unreachable.h> | |
| 119 | +#undef __need_unreachable | |
| 120 | +#endif /* defined(__need_unreachable) */ | |
| 121 | + | |
| 122 | +#if defined(__need_max_align_t) | |
| 123 | +#include <__stddef_max_align_t.h> | |
| 124 | +#undef __need_max_align_t | |
| 125 | +#endif /* defined(__need_max_align_t) */ | |
| 126 | + | |
| 127 | +#if defined(__need_offsetof) | |
| 128 | +#include <__stddef_offsetof.h> | |
| 129 | +#undef __need_offsetof | |
| 130 | +#endif /* defined(__need_offsetof) */ | |
| 131 | + | |
| 132 | +/* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use | |
| 133 | +__WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */ | |
| 134 | +#if defined(__need_wint_t) | |
| 135 | +#include <__stddef_wint_t.h> | |
| 136 | +#undef __need_wint_t | |
| 137 | +#endif /* __need_wint_t */ | |
| 138 | + | |
| 139 | +#endif /* __MVS__ */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@stddef.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@a3kjvvlm7f8abcmxh6f8dndiwc4vp726-clang-21.1.8-lib@lib@clang@21@include@stddef.h.blob differ
+40 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@alloca.h new file mode 100644
| @@ -0,0 +1,40 @@ | ||
| 1 | +/* Copyright (C) 1992-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +#ifndef _ALLOCA_H | |
| 19 | +#define _ALLOCA_H 1 | |
| 20 | + | |
| 21 | +#include <features.h> | |
| 22 | + | |
| 23 | +#define __need_size_t | |
| 24 | +#include <stddef.h> | |
| 25 | + | |
| 26 | +__BEGIN_DECLS | |
| 27 | + | |
| 28 | +/* Remove any previous definition. */ | |
| 29 | +#undef alloca | |
| 30 | + | |
| 31 | +/* Allocate a block that will be freed when the calling function exits. */ | |
| 32 | +extern void *alloca (size_t __size) __THROW; | |
| 33 | + | |
| 34 | +#ifdef __GNUC__ | |
| 35 | +# define alloca(size) __builtin_alloca (size) | |
| 36 | +#endif /* GCC. */ | |
| 37 | + | |
| 38 | +__END_DECLS | |
| 39 | + | |
| 40 | +#endif /* alloca.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@alloca.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@alloca.h.blob differ
+35 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@atomic_wide_counter.h new file mode 100644
| @@ -0,0 +1,35 @@ | ||
| 1 | +/* Monotonically increasing wide counters (at least 62 bits). | |
| 2 | + Copyright (C) 2016-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _BITS_ATOMIC_WIDE_COUNTER_H | |
| 20 | +#define _BITS_ATOMIC_WIDE_COUNTER_H | |
| 21 | + | |
| 22 | +/* Counter that is monotonically increasing (by less than 2**31 per | |
| 23 | + increment), with a single writer, and an arbitrary number of | |
| 24 | + readers. */ | |
| 25 | +typedef union | |
| 26 | +{ | |
| 27 | + __extension__ unsigned long long int __value64; | |
| 28 | + struct | |
| 29 | + { | |
| 30 | + unsigned int __low; | |
| 31 | + unsigned int __high; | |
| 32 | + } __value32; | |
| 33 | +} __atomic_wide_counter; | |
| 34 | + | |
| 35 | +#endif /* _BITS_ATOMIC_WIDE_COUNTER_H */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@atomic_wide_counter.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@atomic_wide_counter.h.blob differ
+79 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@byteswap.h new file mode 100644
| @@ -0,0 +1,79 @@ | ||
| 1 | +/* Macros and inline functions to swap the order of bytes in integer values. | |
| 2 | + Copyright (C) 1997-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H | |
| 20 | +# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead." | |
| 21 | +#endif | |
| 22 | + | |
| 23 | +#ifndef _BITS_BYTESWAP_H | |
| 24 | +#define _BITS_BYTESWAP_H 1 | |
| 25 | + | |
| 26 | +#include <features.h> | |
| 27 | +#include <bits/types.h> | |
| 28 | + | |
| 29 | +/* Swap bytes in 16-bit value. */ | |
| 30 | +#define __bswap_constant_16(x) \ | |
| 31 | + ((__uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) | |
| 32 | + | |
| 33 | +static __inline __uint16_t | |
| 34 | +__bswap_16 (__uint16_t __bsx) | |
| 35 | +{ | |
| 36 | +#if __GNUC_PREREQ (4, 8) | |
| 37 | + return __builtin_bswap16 (__bsx); | |
| 38 | +#else | |
| 39 | + return __bswap_constant_16 (__bsx); | |
| 40 | +#endif | |
| 41 | +} | |
| 42 | + | |
| 43 | +/* Swap bytes in 32-bit value. */ | |
| 44 | +#define __bswap_constant_32(x) \ | |
| 45 | + ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) \ | |
| 46 | + | (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24)) | |
| 47 | + | |
| 48 | +static __inline __uint32_t | |
| 49 | +__bswap_32 (__uint32_t __bsx) | |
| 50 | +{ | |
| 51 | +#if __GNUC_PREREQ (4, 3) | |
| 52 | + return __builtin_bswap32 (__bsx); | |
| 53 | +#else | |
| 54 | + return __bswap_constant_32 (__bsx); | |
| 55 | +#endif | |
| 56 | +} | |
| 57 | + | |
| 58 | +/* Swap bytes in 64-bit value. */ | |
| 59 | +#define __bswap_constant_64(x) \ | |
| 60 | + ((((x) & 0xff00000000000000ull) >> 56) \ | |
| 61 | + | (((x) & 0x00ff000000000000ull) >> 40) \ | |
| 62 | + | (((x) & 0x0000ff0000000000ull) >> 24) \ | |
| 63 | + | (((x) & 0x000000ff00000000ull) >> 8) \ | |
| 64 | + | (((x) & 0x00000000ff000000ull) << 8) \ | |
| 65 | + | (((x) & 0x0000000000ff0000ull) << 24) \ | |
| 66 | + | (((x) & 0x000000000000ff00ull) << 40) \ | |
| 67 | + | (((x) & 0x00000000000000ffull) << 56)) | |
| 68 | + | |
| 69 | +__extension__ static __inline __uint64_t | |
| 70 | +__bswap_64 (__uint64_t __bsx) | |
| 71 | +{ | |
| 72 | +#if __GNUC_PREREQ (4, 3) | |
| 73 | + return __builtin_bswap64 (__bsx); | |
| 74 | +#else | |
| 75 | + return __bswap_constant_64 (__bsx); | |
| 76 | +#endif | |
| 77 | +} | |
| 78 | + | |
| 79 | +#endif /* _BITS_BYTESWAP_H */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@byteswap.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@byteswap.h.blob differ
+49 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@endian.h new file mode 100644
| @@ -0,0 +1,49 @@ | ||
| 1 | +/* Endian macros for string.h functions | |
| 2 | + Copyright (C) 1992-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <http://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _BITS_ENDIAN_H | |
| 20 | +#define _BITS_ENDIAN_H 1 | |
| 21 | + | |
| 22 | +/* Definitions for byte order, according to significance of bytes, | |
| 23 | + from low addresses to high addresses. The value is what you get by | |
| 24 | + putting '4' in the most significant byte, '3' in the second most | |
| 25 | + significant byte, '2' in the second least significant byte, and '1' | |
| 26 | + in the least significant byte, and then writing down one digit for | |
| 27 | + each byte, starting with the byte at the lowest address at the left, | |
| 28 | + and proceeding to the byte with the highest address at the right. */ | |
| 29 | + | |
| 30 | +#define __LITTLE_ENDIAN 1234 | |
| 31 | +#define __BIG_ENDIAN 4321 | |
| 32 | +#define __PDP_ENDIAN 3412 | |
| 33 | + | |
| 34 | +/* This file defines `__BYTE_ORDER' for the particular machine. */ | |
| 35 | +#include <bits/endianness.h> | |
| 36 | + | |
| 37 | +/* Some machines may need to use a different endianness for floating point | |
| 38 | + values. */ | |
| 39 | +#ifndef __FLOAT_WORD_ORDER | |
| 40 | +# define __FLOAT_WORD_ORDER __BYTE_ORDER | |
| 41 | +#endif | |
| 42 | + | |
| 43 | +#if __BYTE_ORDER == __LITTLE_ENDIAN | |
| 44 | +# define __LONG_LONG_PAIR(HI, LO) LO, HI | |
| 45 | +#elif __BYTE_ORDER == __BIG_ENDIAN | |
| 46 | +# define __LONG_LONG_PAIR(HI, LO) HI, LO | |
| 47 | +#endif | |
| 48 | + | |
| 49 | +#endif /* bits/endian.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@endian.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@endian.h.blob differ
+11 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@endianness.h new file mode 100644
| @@ -0,0 +1,11 @@ | ||
| 1 | +#ifndef _BITS_ENDIANNESS_H | |
| 2 | +#define _BITS_ENDIANNESS_H 1 | |
| 3 | + | |
| 4 | +#ifndef _BITS_ENDIAN_H | |
| 5 | +# error "Never use <bits/endianness.h> directly; include <endian.h> instead." | |
| 6 | +#endif | |
| 7 | + | |
| 8 | +/* i386/x86_64 are little-endian. */ | |
| 9 | +#define __BYTE_ORDER __LITTLE_ENDIAN | |
| 10 | + | |
| 11 | +#endif /* bits/endianness.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@endianness.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@endianness.h.blob differ
+329 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@floatn-common.h new file mode 100644
| @@ -0,0 +1,329 @@ | ||
| 1 | +/* Macros to control TS 18661-3 glibc features where the same | |
| 2 | + definitions are appropriate for all platforms. | |
| 3 | + Copyright (C) 2017-2025 Free Software Foundation, Inc. | |
| 4 | + This file is part of the GNU C Library. | |
| 5 | + | |
| 6 | + The GNU C Library is free software; you can redistribute it and/or | |
| 7 | + modify it under the terms of the GNU Lesser General Public | |
| 8 | + License as published by the Free Software Foundation; either | |
| 9 | + version 2.1 of the License, or (at your option) any later version. | |
| 10 | + | |
| 11 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 12 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 14 | + Lesser General Public License for more details. | |
| 15 | + | |
| 16 | + You should have received a copy of the GNU Lesser General Public | |
| 17 | + License along with the GNU C Library; if not, see | |
| 18 | + <https://www.gnu.org/licenses/>. */ | |
| 19 | + | |
| 20 | +#ifndef _BITS_FLOATN_COMMON_H | |
| 21 | +#define _BITS_FLOATN_COMMON_H | |
| 22 | + | |
| 23 | +#include <features.h> | |
| 24 | +#include <bits/long-double.h> | |
| 25 | + | |
| 26 | +/* This header should be included at the bottom of each bits/floatn.h. | |
| 27 | + It defines the following macros for each _FloatN and _FloatNx type, | |
| 28 | + where the same definitions, or definitions based only on the macros | |
| 29 | + in bits/floatn.h, are appropriate for all glibc configurations. */ | |
| 30 | + | |
| 31 | +/* Defined to 1 if the current compiler invocation provides a | |
| 32 | + floating-point type with the right format for this type, and this | |
| 33 | + glibc includes corresponding *fN or *fNx interfaces for it. */ | |
| 34 | +#define __HAVE_FLOAT16 0 | |
| 35 | +#define __HAVE_FLOAT32 1 | |
| 36 | +#define __HAVE_FLOAT64 1 | |
| 37 | +#define __HAVE_FLOAT32X 1 | |
| 38 | +#define __HAVE_FLOAT128X 0 | |
| 39 | + | |
| 40 | +/* Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the | |
| 41 | + type is the first with its format in the sequence of (the default | |
| 42 | + choices for) float, double, long double, _Float16, _Float32, | |
| 43 | + _Float64, _Float128, _Float32x, _Float64x, _Float128x for this | |
| 44 | + glibc; that is, if functions present once per floating-point format | |
| 45 | + rather than once per type are present for this type. | |
| 46 | + | |
| 47 | + All configurations supported by glibc have _Float32 the same format | |
| 48 | + as float, _Float64 and _Float32x the same format as double, the | |
| 49 | + _Float64x the same format as either long double or _Float128. No | |
| 50 | + configurations support _Float128x or, as of GCC 7, have compiler | |
| 51 | + support for a type meeting the requirements for _Float128x. */ | |
| 52 | +#define __HAVE_DISTINCT_FLOAT16 __HAVE_FLOAT16 | |
| 53 | +#define __HAVE_DISTINCT_FLOAT32 0 | |
| 54 | +#define __HAVE_DISTINCT_FLOAT64 0 | |
| 55 | +#define __HAVE_DISTINCT_FLOAT32X 0 | |
| 56 | +#define __HAVE_DISTINCT_FLOAT64X 0 | |
| 57 | +#define __HAVE_DISTINCT_FLOAT128X __HAVE_FLOAT128X | |
| 58 | + | |
| 59 | +/* Defined to 1 if the corresponding _FloatN type is not binary compatible | |
| 60 | + with the corresponding ISO C type in the current compilation unit as | |
| 61 | + opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built | |
| 62 | + in glibc. */ | |
| 63 | +#define __HAVE_FLOAT128_UNLIKE_LDBL (__HAVE_DISTINCT_FLOAT128 \ | |
| 64 | + && __LDBL_MANT_DIG__ != 113) | |
| 65 | + | |
| 66 | +/* Defined to 1 if any _FloatN or _FloatNx types that are not | |
| 67 | + ABI-distinct are however distinct types at the C language level (so | |
| 68 | + for the purposes of __builtin_types_compatible_p and _Generic). */ | |
| 69 | +#if __GNUC_PREREQ (7, 0) && !defined __cplusplus | |
| 70 | +# define __HAVE_FLOATN_NOT_TYPEDEF 1 | |
| 71 | +#else | |
| 72 | +# define __HAVE_FLOATN_NOT_TYPEDEF 0 | |
| 73 | +#endif | |
| 74 | + | |
| 75 | +#ifndef __ASSEMBLER__ | |
| 76 | + | |
| 77 | +/* Defined to concatenate the literal suffix to be used with _FloatN | |
| 78 | + or _FloatNx types, if __HAVE_<type> is 1. The corresponding | |
| 79 | + literal suffixes exist since GCC 7, for C only. */ | |
| 80 | +# if __HAVE_FLOAT16 | |
| 81 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 82 | +/* No corresponding suffix available for this type. */ | |
| 83 | +# define __f16(x) ((_Float16) x##f) | |
| 84 | +# else | |
| 85 | +# define __f16(x) x##f16 | |
| 86 | +# endif | |
| 87 | +# endif | |
| 88 | + | |
| 89 | +# if __HAVE_FLOAT32 | |
| 90 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 91 | +# define __f32(x) x##f | |
| 92 | +# else | |
| 93 | +# define __f32(x) x##f32 | |
| 94 | +# endif | |
| 95 | +# endif | |
| 96 | + | |
| 97 | +# if __HAVE_FLOAT64 | |
| 98 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 99 | +# ifdef __NO_LONG_DOUBLE_MATH | |
| 100 | +# define __f64(x) x##l | |
| 101 | +# else | |
| 102 | +# define __f64(x) x | |
| 103 | +# endif | |
| 104 | +# else | |
| 105 | +# define __f64(x) x##f64 | |
| 106 | +# endif | |
| 107 | +# endif | |
| 108 | + | |
| 109 | +# if __HAVE_FLOAT32X | |
| 110 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 111 | +# define __f32x(x) x | |
| 112 | +# else | |
| 113 | +# define __f32x(x) x##f32x | |
| 114 | +# endif | |
| 115 | +# endif | |
| 116 | + | |
| 117 | +# if __HAVE_FLOAT64X | |
| 118 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 119 | +# if __HAVE_FLOAT64X_LONG_DOUBLE | |
| 120 | +# define __f64x(x) x##l | |
| 121 | +# else | |
| 122 | +# define __f64x(x) __f128 (x) | |
| 123 | +# endif | |
| 124 | +# else | |
| 125 | +# define __f64x(x) x##f64x | |
| 126 | +# endif | |
| 127 | +# endif | |
| 128 | + | |
| 129 | +# if __HAVE_FLOAT128X | |
| 130 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 131 | +# error "_Float128X supported but no constant suffix" | |
| 132 | +# else | |
| 133 | +# define __f128x(x) x##f128x | |
| 134 | +# endif | |
| 135 | +# endif | |
| 136 | + | |
| 137 | +/* Defined to a complex type if __HAVE_<type> is 1. */ | |
| 138 | +# if __HAVE_FLOAT16 | |
| 139 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 140 | +typedef _Complex float __cfloat16 __attribute__ ((__mode__ (__HC__))); | |
| 141 | +# define __CFLOAT16 __cfloat16 | |
| 142 | +# else | |
| 143 | +# define __CFLOAT16 _Complex _Float16 | |
| 144 | +# endif | |
| 145 | +# endif | |
| 146 | + | |
| 147 | +# if __HAVE_FLOAT32 | |
| 148 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 149 | +# define __CFLOAT32 _Complex float | |
| 150 | +# else | |
| 151 | +# define __CFLOAT32 _Complex _Float32 | |
| 152 | +# endif | |
| 153 | +# endif | |
| 154 | + | |
| 155 | +# if __HAVE_FLOAT64 | |
| 156 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 157 | +# ifdef __NO_LONG_DOUBLE_MATH | |
| 158 | +# define __CFLOAT64 _Complex long double | |
| 159 | +# else | |
| 160 | +# define __CFLOAT64 _Complex double | |
| 161 | +# endif | |
| 162 | +# else | |
| 163 | +# define __CFLOAT64 _Complex _Float64 | |
| 164 | +# endif | |
| 165 | +# endif | |
| 166 | + | |
| 167 | +# if __HAVE_FLOAT32X | |
| 168 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 169 | +# define __CFLOAT32X _Complex double | |
| 170 | +# else | |
| 171 | +# define __CFLOAT32X _Complex _Float32x | |
| 172 | +# endif | |
| 173 | +# endif | |
| 174 | + | |
| 175 | +# if __HAVE_FLOAT64X | |
| 176 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 177 | +# if __HAVE_FLOAT64X_LONG_DOUBLE | |
| 178 | +# define __CFLOAT64X _Complex long double | |
| 179 | +# else | |
| 180 | +# define __CFLOAT64X __CFLOAT128 | |
| 181 | +# endif | |
| 182 | +# else | |
| 183 | +# define __CFLOAT64X _Complex _Float64x | |
| 184 | +# endif | |
| 185 | +# endif | |
| 186 | + | |
| 187 | +# if __HAVE_FLOAT128X | |
| 188 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 189 | +# error "_Float128X supported but no complex type" | |
| 190 | +# else | |
| 191 | +# define __CFLOAT128X _Complex _Float128x | |
| 192 | +# endif | |
| 193 | +# endif | |
| 194 | + | |
| 195 | +/* The remaining of this file provides support for older compilers. */ | |
| 196 | +# if __HAVE_FLOAT16 | |
| 197 | + | |
| 198 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 199 | +typedef float _Float16 __attribute__ ((__mode__ (__HF__))); | |
| 200 | +# endif | |
| 201 | + | |
| 202 | +# if !__GNUC_PREREQ (7, 0) | |
| 203 | +# define __builtin_huge_valf16() ((_Float16) __builtin_huge_val ()) | |
| 204 | +# define __builtin_inff16() ((_Float16) __builtin_inf ()) | |
| 205 | +# define __builtin_nanf16(x) ((_Float16) __builtin_nan (x)) | |
| 206 | +# define __builtin_nansf16(x) ((_Float16) __builtin_nans (x)) | |
| 207 | +# endif | |
| 208 | + | |
| 209 | +# endif | |
| 210 | + | |
| 211 | +# if __HAVE_FLOAT32 | |
| 212 | + | |
| 213 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 214 | +typedef float _Float32; | |
| 215 | +# endif | |
| 216 | + | |
| 217 | +# if !__GNUC_PREREQ (7, 0) | |
| 218 | +# define __builtin_huge_valf32() (__builtin_huge_valf ()) | |
| 219 | +# define __builtin_inff32() (__builtin_inff ()) | |
| 220 | +# define __builtin_nanf32(x) (__builtin_nanf (x)) | |
| 221 | +# define __builtin_nansf32(x) (__builtin_nansf (x)) | |
| 222 | +# endif | |
| 223 | + | |
| 224 | +# endif | |
| 225 | + | |
| 226 | +# if __HAVE_FLOAT64 | |
| 227 | + | |
| 228 | +/* If double, long double and _Float64 all have the same set of | |
| 229 | + values, TS 18661-3 requires the usual arithmetic conversions on | |
| 230 | + long double and _Float64 to produce _Float64. For this to be the | |
| 231 | + case when building with a compiler without a distinct _Float64 | |
| 232 | + type, _Float64 must be a typedef for long double, not for | |
| 233 | + double. */ | |
| 234 | + | |
| 235 | +# ifdef __NO_LONG_DOUBLE_MATH | |
| 236 | + | |
| 237 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 238 | +typedef long double _Float64; | |
| 239 | +# endif | |
| 240 | + | |
| 241 | +# if !__GNUC_PREREQ (7, 0) | |
| 242 | +# define __builtin_huge_valf64() (__builtin_huge_vall ()) | |
| 243 | +# define __builtin_inff64() (__builtin_infl ()) | |
| 244 | +# define __builtin_nanf64(x) (__builtin_nanl (x)) | |
| 245 | +# define __builtin_nansf64(x) (__builtin_nansl (x)) | |
| 246 | +# endif | |
| 247 | + | |
| 248 | +# else | |
| 249 | + | |
| 250 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 251 | +typedef double _Float64; | |
| 252 | +# endif | |
| 253 | + | |
| 254 | +# if !__GNUC_PREREQ (7, 0) | |
| 255 | +# define __builtin_huge_valf64() (__builtin_huge_val ()) | |
| 256 | +# define __builtin_inff64() (__builtin_inf ()) | |
| 257 | +# define __builtin_nanf64(x) (__builtin_nan (x)) | |
| 258 | +# define __builtin_nansf64(x) (__builtin_nans (x)) | |
| 259 | +# endif | |
| 260 | + | |
| 261 | +# endif | |
| 262 | + | |
| 263 | +# endif | |
| 264 | + | |
| 265 | +# if __HAVE_FLOAT32X | |
| 266 | + | |
| 267 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 268 | +typedef double _Float32x; | |
| 269 | +# endif | |
| 270 | + | |
| 271 | +# if !__GNUC_PREREQ (7, 0) | |
| 272 | +# define __builtin_huge_valf32x() (__builtin_huge_val ()) | |
| 273 | +# define __builtin_inff32x() (__builtin_inf ()) | |
| 274 | +# define __builtin_nanf32x(x) (__builtin_nan (x)) | |
| 275 | +# define __builtin_nansf32x(x) (__builtin_nans (x)) | |
| 276 | +# endif | |
| 277 | + | |
| 278 | +# endif | |
| 279 | + | |
| 280 | +# if __HAVE_FLOAT64X | |
| 281 | + | |
| 282 | +# if __HAVE_FLOAT64X_LONG_DOUBLE | |
| 283 | + | |
| 284 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 285 | +typedef long double _Float64x; | |
| 286 | +# endif | |
| 287 | + | |
| 288 | +# if !__GNUC_PREREQ (7, 0) | |
| 289 | +# define __builtin_huge_valf64x() (__builtin_huge_vall ()) | |
| 290 | +# define __builtin_inff64x() (__builtin_infl ()) | |
| 291 | +# define __builtin_nanf64x(x) (__builtin_nanl (x)) | |
| 292 | +# define __builtin_nansf64x(x) (__builtin_nansl (x)) | |
| 293 | +# endif | |
| 294 | + | |
| 295 | +# else | |
| 296 | + | |
| 297 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 298 | +typedef _Float128 _Float64x; | |
| 299 | +# endif | |
| 300 | + | |
| 301 | +# if !__GNUC_PREREQ (7, 0) | |
| 302 | +# define __builtin_huge_valf64x() (__builtin_huge_valf128 ()) | |
| 303 | +# define __builtin_inff64x() (__builtin_inff128 ()) | |
| 304 | +# define __builtin_nanf64x(x) (__builtin_nanf128 (x)) | |
| 305 | +# define __builtin_nansf64x(x) (__builtin_nansf128 (x)) | |
| 306 | +# endif | |
| 307 | + | |
| 308 | +# endif | |
| 309 | + | |
| 310 | +# endif | |
| 311 | + | |
| 312 | +# if __HAVE_FLOAT128X | |
| 313 | + | |
| 314 | +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) | |
| 315 | +# error "_Float128x supported but no type" | |
| 316 | +# endif | |
| 317 | + | |
| 318 | +# if !__GNUC_PREREQ (7, 0) | |
| 319 | +# define __builtin_huge_valf128x() ((_Float128x) __builtin_huge_val ()) | |
| 320 | +# define __builtin_inff128x() ((_Float128x) __builtin_inf ()) | |
| 321 | +# define __builtin_nanf128x(x) ((_Float128x) __builtin_nan (x)) | |
| 322 | +# define __builtin_nansf128x(x) ((_Float128x) __builtin_nans (x)) | |
| 323 | +# endif | |
| 324 | + | |
| 325 | +# endif | |
| 326 | + | |
| 327 | +#endif /* !__ASSEMBLER__. */ | |
| 328 | + | |
| 329 | +#endif /* _BITS_FLOATN_COMMON_H */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@floatn-common.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@floatn-common.h.blob differ
+133 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@floatn.h new file mode 100644
| @@ -0,0 +1,133 @@ | ||
| 1 | +/* Macros to control TS 18661-3 glibc features on x86. | |
| 2 | + Copyright (C) 2017-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _BITS_FLOATN_H | |
| 20 | +#define _BITS_FLOATN_H | |
| 21 | + | |
| 22 | +#include <features.h> | |
| 23 | + | |
| 24 | +/* Defined to 1 if the current compiler invocation provides a | |
| 25 | + floating-point type with the IEEE 754 binary128 format, and this | |
| 26 | + glibc includes corresponding *f128 interfaces for it. The required | |
| 27 | + libgcc support was added some time after the basic compiler | |
| 28 | + support, for x86_64 and x86. Intel SYCL compiler doesn't support | |
| 29 | + _Float128: https://github.com/intel/llvm/issues/16903 | |
| 30 | + */ | |
| 31 | +#if (defined __x86_64__ \ | |
| 32 | + ? __GNUC_PREREQ (4, 3) \ | |
| 33 | + : (defined __GNU__ ? __GNUC_PREREQ (4, 5) : __GNUC_PREREQ (4, 4))) \ | |
| 34 | + || (__glibc_clang_prereq (3, 9) \ | |
| 35 | + && (!defined __INTEL_LLVM_COMPILER \ | |
| 36 | + || !defined SYCL_LANGUAGE_VERSION)) | |
| 37 | +# define __HAVE_FLOAT128 1 | |
| 38 | +#else | |
| 39 | +# define __HAVE_FLOAT128 0 | |
| 40 | +#endif | |
| 41 | + | |
| 42 | +/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct | |
| 43 | + from the default float, double and long double types in this glibc. */ | |
| 44 | +#if __HAVE_FLOAT128 | |
| 45 | +# define __HAVE_DISTINCT_FLOAT128 1 | |
| 46 | +#else | |
| 47 | +# define __HAVE_DISTINCT_FLOAT128 0 | |
| 48 | +#endif | |
| 49 | + | |
| 50 | +/* Defined to 1 if the current compiler invocation provides a | |
| 51 | + floating-point type with the right format for _Float64x, and this | |
| 52 | + glibc includes corresponding *f64x interfaces for it. */ | |
| 53 | +#define __HAVE_FLOAT64X 1 | |
| 54 | + | |
| 55 | +/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format | |
| 56 | + of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has | |
| 57 | + the format of _Float128, which must be different from that of long | |
| 58 | + double. */ | |
| 59 | +#define __HAVE_FLOAT64X_LONG_DOUBLE 1 | |
| 60 | + | |
| 61 | +#ifndef __ASSEMBLER__ | |
| 62 | + | |
| 63 | +/* Defined to concatenate the literal suffix to be used with _Float128 | |
| 64 | + types, if __HAVE_FLOAT128 is 1. */ | |
| 65 | +# if __HAVE_FLOAT128 | |
| 66 | +# if !__GNUC_PREREQ (7, 0) \ | |
| 67 | + || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) \ | |
| 68 | + || defined __clang__ | |
| 69 | +/* The literal suffix f128 exists only since GCC 7.0. */ | |
| 70 | +# define __f128(x) x##q | |
| 71 | +# else | |
| 72 | +# define __f128(x) x##f128 | |
| 73 | +# endif | |
| 74 | +# endif | |
| 75 | + | |
| 76 | +/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */ | |
| 77 | +# if __HAVE_FLOAT128 | |
| 78 | +# if !__GNUC_PREREQ (7, 0) \ | |
| 79 | + || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) \ | |
| 80 | + || defined __clang__ | |
| 81 | +/* Add a typedef for older GCC compilers which don't natively support | |
| 82 | + _Complex _Float128. */ | |
| 83 | +typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__))); | |
| 84 | +# define __CFLOAT128 __cfloat128 | |
| 85 | +# else | |
| 86 | +# define __CFLOAT128 _Complex _Float128 | |
| 87 | +# endif | |
| 88 | +# endif | |
| 89 | + | |
| 90 | +/* The remaining of this file provides support for older compilers. */ | |
| 91 | +# if __HAVE_FLOAT128 | |
| 92 | + | |
| 93 | +/* The type _Float128 exists only since GCC 7.0. */ | |
| 94 | +# if !__GNUC_PREREQ (7, 0) \ | |
| 95 | + || (defined __cplusplus && !__GNUC_PREREQ (13, 0)) \ | |
| 96 | + || __glibc_clang_prereq (3, 9) | |
| 97 | +typedef __float128 _Float128; | |
| 98 | +# endif | |
| 99 | + | |
| 100 | +/* __builtin_huge_valf128 doesn't exist before GCC 7.0 nor Clang 7.0. */ | |
| 101 | +# if !__GNUC_PREREQ (7, 0) && !__glibc_clang_prereq (7, 0) | |
| 102 | +# define __builtin_huge_valf128() ((_Float128) __builtin_huge_val ()) | |
| 103 | +# endif | |
| 104 | + | |
| 105 | +/* Older GCC has only a subset of built-in functions for _Float128 on | |
| 106 | + x86, and __builtin_infq is not usable in static initializers. | |
| 107 | + Converting a narrower sNaN to _Float128 produces a quiet NaN, so | |
| 108 | + attempts to use _Float128 sNaNs will not work properly with older | |
| 109 | + compilers. */ | |
| 110 | +# if !__GNUC_PREREQ (7, 0) && !defined __clang__ | |
| 111 | +# define __builtin_copysignf128 __builtin_copysignq | |
| 112 | +# define __builtin_fabsf128 __builtin_fabsq | |
| 113 | +# define __builtin_inff128() ((_Float128) __builtin_inf ()) | |
| 114 | +# define __builtin_nanf128(x) ((_Float128) __builtin_nan (x)) | |
| 115 | +# define __builtin_nansf128(x) ((_Float128) __builtin_nans (x)) | |
| 116 | +# endif | |
| 117 | + | |
| 118 | +/* In math/math.h, __MATH_TG will expand signbit to __builtin_signbit*, | |
| 119 | + e.g.: __builtin_signbitf128, before GCC 6. However, there has never | |
| 120 | + been a __builtin_signbitf128 in GCC and the type-generic builtin is | |
| 121 | + only available since GCC 6. signbit is expanded to __builtin_signbit | |
| 122 | + after Clang 3.3. */ | |
| 123 | +# if !__GNUC_PREREQ (6, 0) | |
| 124 | +# define __builtin_signbitf128 __signbitf128 | |
| 125 | +# endif | |
| 126 | + | |
| 127 | +# endif | |
| 128 | + | |
| 129 | +#endif /* !__ASSEMBLER__. */ | |
| 130 | + | |
| 131 | +#include <bits/floatn-common.h> | |
| 132 | + | |
| 133 | +#endif /* _BITS_FLOATN_H */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@floatn.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@floatn.h.blob differ
+110 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@libc-header-start.h new file mode 100644
| @@ -0,0 +1,110 @@ | ||
| 1 | +/* Handle feature test macros at the start of a header. | |
| 2 | + Copyright (C) 2016-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +/* This header is internal to glibc and should not be included outside | |
| 20 | + of glibc headers. Headers including it must define | |
| 21 | + __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header | |
| 22 | + cannot have multiple include guards because ISO C feature test | |
| 23 | + macros depend on the definition of the macro when an affected | |
| 24 | + header is included, not when the first system header is | |
| 25 | + included. */ | |
| 26 | + | |
| 27 | +#ifndef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION | |
| 28 | +# error "Never include <bits/libc-header-start.h> directly." | |
| 29 | +#endif | |
| 30 | + | |
| 31 | +#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION | |
| 32 | + | |
| 33 | +#include <features.h> | |
| 34 | + | |
| 35 | +/* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ | |
| 36 | + macro. */ | |
| 37 | +#undef __GLIBC_USE_LIB_EXT2 | |
| 38 | +#if (defined __USE_GNU \ | |
| 39 | + || (defined __STDC_WANT_LIB_EXT2__ && __STDC_WANT_LIB_EXT2__ > 0)) | |
| 40 | +# define __GLIBC_USE_LIB_EXT2 1 | |
| 41 | +#else | |
| 42 | +# define __GLIBC_USE_LIB_EXT2 0 | |
| 43 | +#endif | |
| 44 | + | |
| 45 | +/* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ | |
| 46 | + macro. Most but not all symbols enabled by that macro in TS | |
| 47 | + 18661-1 are enabled unconditionally in C23. In C23, the symbols in | |
| 48 | + Annex F still require a new feature test macro | |
| 49 | + __STDC_WANT_IEC_60559_EXT__ instead (C23 does not define | |
| 50 | + __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS | |
| 51 | + 18661-1 are not included in C23 (and thus should depend on | |
| 52 | + __STDC_WANT_IEC_60559_BFP_EXT__ even when C23 features are | |
| 53 | + enabled). | |
| 54 | + | |
| 55 | + __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS | |
| 56 | + 18661-1 not included in C23. | |
| 57 | + | |
| 58 | + __GLIBC_USE (IEC_60559_BFP_EXT_C23) controls those features from TS | |
| 59 | + 18661-1 that are also included in C23 (with no feature test macro | |
| 60 | + required in C23). | |
| 61 | + | |
| 62 | + __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1 | |
| 63 | + that are included in C23 but conditional on | |
| 64 | + __STDC_WANT_IEC_60559_EXT__. (There are currently no features | |
| 65 | + conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS | |
| 66 | + 18661-1.) */ | |
| 67 | +#undef __GLIBC_USE_IEC_60559_BFP_EXT | |
| 68 | +#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_BFP_EXT__ | |
| 69 | +# define __GLIBC_USE_IEC_60559_BFP_EXT 1 | |
| 70 | +#else | |
| 71 | +# define __GLIBC_USE_IEC_60559_BFP_EXT 0 | |
| 72 | +#endif | |
| 73 | +#undef __GLIBC_USE_IEC_60559_BFP_EXT_C23 | |
| 74 | +#if __GLIBC_USE (IEC_60559_BFP_EXT) || __GLIBC_USE (ISOC23) | |
| 75 | +# define __GLIBC_USE_IEC_60559_BFP_EXT_C23 1 | |
| 76 | +#else | |
| 77 | +# define __GLIBC_USE_IEC_60559_BFP_EXT_C23 0 | |
| 78 | +#endif | |
| 79 | +#undef __GLIBC_USE_IEC_60559_EXT | |
| 80 | +#if __GLIBC_USE (IEC_60559_BFP_EXT) || defined __STDC_WANT_IEC_60559_EXT__ | |
| 81 | +# define __GLIBC_USE_IEC_60559_EXT 1 | |
| 82 | +#else | |
| 83 | +# define __GLIBC_USE_IEC_60559_EXT 0 | |
| 84 | +#endif | |
| 85 | + | |
| 86 | +/* ISO/IEC TS 18661-4:2015 defines the | |
| 87 | + __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction | |
| 88 | + functions, the symbols from this TS are enabled unconditionally in | |
| 89 | + C23. */ | |
| 90 | +#undef __GLIBC_USE_IEC_60559_FUNCS_EXT | |
| 91 | +#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_FUNCS_EXT__ | |
| 92 | +# define __GLIBC_USE_IEC_60559_FUNCS_EXT 1 | |
| 93 | +#else | |
| 94 | +# define __GLIBC_USE_IEC_60559_FUNCS_EXT 0 | |
| 95 | +#endif | |
| 96 | +#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 | |
| 97 | +#if __GLIBC_USE (IEC_60559_FUNCS_EXT) || __GLIBC_USE (ISOC23) | |
| 98 | +# define __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 1 | |
| 99 | +#else | |
| 100 | +# define __GLIBC_USE_IEC_60559_FUNCS_EXT_C23 0 | |
| 101 | +#endif | |
| 102 | + | |
| 103 | +/* ISO/IEC TS 18661-3:2015 defines the | |
| 104 | + __STDC_WANT_IEC_60559_TYPES_EXT__ macro. */ | |
| 105 | +#undef __GLIBC_USE_IEC_60559_TYPES_EXT | |
| 106 | +#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_TYPES_EXT__ | |
| 107 | +# define __GLIBC_USE_IEC_60559_TYPES_EXT 1 | |
| 108 | +#else | |
| 109 | +# define __GLIBC_USE_IEC_60559_TYPES_EXT 0 | |
| 110 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@libc-header-start.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@libc-header-start.h.blob differ
+21 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@long-double.h new file mode 100644
| @@ -0,0 +1,21 @@ | ||
| 1 | +/* Properties of long double type. ldbl-96 version. | |
| 2 | + Copyright (C) 2016-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +/* long double is distinct from double, so there is nothing to | |
| 20 | + define here. */ | |
| 21 | +#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0 |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@long-double.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@long-double.h.blob differ
+55 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@pthreadtypes-arch.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,55 @@ | ||
| 1 | +/* Copyright (C) 2002-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +#ifndef _BITS_PTHREADTYPES_ARCH_H | |
| 19 | +#define _BITS_PTHREADTYPES_ARCH_H 1 | |
| 20 | + | |
| 21 | +#include <bits/wordsize.h> | |
| 22 | + | |
| 23 | +#ifdef __x86_64__ | |
| 24 | +# if __WORDSIZE == 64 | |
| 25 | +# define __SIZEOF_PTHREAD_MUTEX_T 40 | |
| 26 | +# define __SIZEOF_PTHREAD_ATTR_T 56 | |
| 27 | +# define __SIZEOF_PTHREAD_RWLOCK_T 56 | |
| 28 | +# define __SIZEOF_PTHREAD_BARRIER_T 32 | |
| 29 | +# else | |
| 30 | +# define __SIZEOF_PTHREAD_MUTEX_T 32 | |
| 31 | +# define __SIZEOF_PTHREAD_ATTR_T 32 | |
| 32 | +# define __SIZEOF_PTHREAD_RWLOCK_T 44 | |
| 33 | +# define __SIZEOF_PTHREAD_BARRIER_T 20 | |
| 34 | +# endif | |
| 35 | +#else | |
| 36 | +# define __SIZEOF_PTHREAD_MUTEX_T 24 | |
| 37 | +# define __SIZEOF_PTHREAD_ATTR_T 36 | |
| 38 | +# define __SIZEOF_PTHREAD_RWLOCK_T 32 | |
| 39 | +# define __SIZEOF_PTHREAD_BARRIER_T 20 | |
| 40 | +#endif | |
| 41 | +#define __SIZEOF_PTHREAD_MUTEXATTR_T 4 | |
| 42 | +#define __SIZEOF_PTHREAD_COND_T 48 | |
| 43 | +#define __SIZEOF_PTHREAD_CONDATTR_T 4 | |
| 44 | +#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 | |
| 45 | +#define __SIZEOF_PTHREAD_BARRIERATTR_T 4 | |
| 46 | + | |
| 47 | +#define __LOCK_ALIGNMENT | |
| 48 | +#define __ONCE_ALIGNMENT | |
| 49 | + | |
| 50 | +#ifndef __x86_64__ | |
| 51 | +/* Extra attributes for the cleanup functions. */ | |
| 52 | +# define __cleanup_fct_attribute __attribute__ ((__regparm__ (1))) | |
| 53 | +#endif | |
| 54 | + | |
| 55 | +#endif /* bits/pthreadtypes.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@pthreadtypes-arch.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@pthreadtypes-arch.h.blob differ Large diff collapsed, click to expand
+121 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@pthreadtypes.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,121 @@ | ||
| 1 | +/* Declaration of common pthread types for all architectures. | |
| 2 | + Copyright (C) 2017-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _BITS_PTHREADTYPES_COMMON_H | |
| 20 | +# define _BITS_PTHREADTYPES_COMMON_H 1 | |
| 21 | + | |
| 22 | +/* For internal mutex and condition variable definitions. */ | |
| 23 | +#include <bits/thread-shared-types.h> | |
| 24 | + | |
| 25 | +/* Thread identifiers. The structure of the attribute type is not | |
| 26 | + exposed on purpose. */ | |
| 27 | +typedef unsigned long int pthread_t; | |
| 28 | + | |
| 29 | + | |
| 30 | +/* Data structures for mutex handling. The structure of the attribute | |
| 31 | + type is not exposed on purpose. */ | |
| 32 | +typedef union | |
| 33 | +{ | |
| 34 | + char __size[__SIZEOF_PTHREAD_MUTEXATTR_T]; | |
| 35 | + int __align; | |
| 36 | +} pthread_mutexattr_t; | |
| 37 | + | |
| 38 | + | |
| 39 | +/* Data structure for condition variable handling. The structure of | |
| 40 | + the attribute type is not exposed on purpose. */ | |
| 41 | +typedef union | |
| 42 | +{ | |
| 43 | + char __size[__SIZEOF_PTHREAD_CONDATTR_T]; | |
| 44 | + int __align; | |
| 45 | +} pthread_condattr_t; | |
| 46 | + | |
| 47 | + | |
| 48 | +/* Keys for thread-specific data */ | |
| 49 | +typedef unsigned int pthread_key_t; | |
| 50 | + | |
| 51 | + | |
| 52 | +/* Once-only execution */ | |
| 53 | +typedef int __ONCE_ALIGNMENT pthread_once_t; | |
| 54 | + | |
| 55 | + | |
| 56 | +union pthread_attr_t | |
| 57 | +{ | |
| 58 | + char __size[__SIZEOF_PTHREAD_ATTR_T]; | |
| 59 | + long int __align; | |
| 60 | +}; | |
| 61 | +#ifndef __have_pthread_attr_t | |
| 62 | +typedef union pthread_attr_t pthread_attr_t; | |
| 63 | +# define __have_pthread_attr_t 1 | |
| 64 | +#endif | |
| 65 | + | |
| 66 | + | |
| 67 | +typedef union | |
| 68 | +{ | |
| 69 | + struct __pthread_mutex_s __data; | |
| 70 | + char __size[__SIZEOF_PTHREAD_MUTEX_T]; | |
| 71 | + long int __align; | |
| 72 | +} pthread_mutex_t; | |
| 73 | + | |
| 74 | + | |
| 75 | +typedef union | |
| 76 | +{ | |
| 77 | + struct __pthread_cond_s __data; | |
| 78 | + char __size[__SIZEOF_PTHREAD_COND_T]; | |
| 79 | + __extension__ long long int __align; | |
| 80 | +} pthread_cond_t; | |
| 81 | + | |
| 82 | + | |
| 83 | +#if defined __USE_UNIX98 || defined __USE_XOPEN2K | |
| 84 | +/* Data structure for reader-writer lock variable handling. The | |
| 85 | + structure of the attribute type is deliberately not exposed. */ | |
| 86 | +typedef union | |
| 87 | +{ | |
| 88 | + struct __pthread_rwlock_arch_t __data; | |
| 89 | + char __size[__SIZEOF_PTHREAD_RWLOCK_T]; | |
| 90 | + long int __align; | |
| 91 | +} pthread_rwlock_t; | |
| 92 | + | |
| 93 | +typedef union | |
| 94 | +{ | |
| 95 | + char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T]; | |
| 96 | + long int __align; | |
| 97 | +} pthread_rwlockattr_t; | |
| 98 | +#endif | |
| 99 | + | |
| 100 | + | |
| 101 | +#ifdef __USE_XOPEN2K | |
| 102 | +/* POSIX spinlock data type. */ | |
| 103 | +typedef volatile int pthread_spinlock_t; | |
| 104 | + | |
| 105 | + | |
| 106 | +/* POSIX barriers data type. The structure of the type is | |
| 107 | + deliberately not exposed. */ | |
| 108 | +typedef union | |
| 109 | +{ | |
| 110 | + char __size[__SIZEOF_PTHREAD_BARRIER_T]; | |
| 111 | + long int __align; | |
| 112 | +} pthread_barrier_t; | |
| 113 | + | |
| 114 | +typedef union | |
| 115 | +{ | |
| 116 | + char __size[__SIZEOF_PTHREAD_BARRIERATTR_T]; | |
| 117 | + int __align; | |
| 118 | +} pthread_barrierattr_t; | |
| 119 | +#endif | |
| 120 | + | |
| 121 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@pthreadtypes.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@pthreadtypes.h.blob differ Large diff collapsed, click to expand
+37 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@select.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,37 @@ | ||
| 1 | +/* Copyright (C) 1997-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +#ifndef _SYS_SELECT_H | |
| 19 | +# error "Never use <bits/select.h> directly; include <sys/select.h> instead." | |
| 20 | +#endif | |
| 21 | + | |
| 22 | + | |
| 23 | +/* We don't use `memset' because this would require a prototype and | |
| 24 | + the array isn't too big. */ | |
| 25 | +#define __FD_ZERO(s) \ | |
| 26 | + do { \ | |
| 27 | + unsigned int __i; \ | |
| 28 | + fd_set *__arr = (s); \ | |
| 29 | + for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ | |
| 30 | + __FDS_BITS (__arr)[__i] = 0; \ | |
| 31 | + } while (0) | |
| 32 | +#define __FD_SET(d, s) \ | |
| 33 | + ((void) (__FDS_BITS (s)[__FD_ELT(d)] |= __FD_MASK(d))) | |
| 34 | +#define __FD_CLR(d, s) \ | |
| 35 | + ((void) (__FDS_BITS (s)[__FD_ELT(d)] &= ~__FD_MASK(d))) | |
| 36 | +#define __FD_ISSET(d, s) \ | |
| 37 | + ((__FDS_BITS (s)[__FD_ELT (d)] & __FD_MASK (d)) != 0) |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@select.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@select.h.blob differ Large diff collapsed, click to expand
+29 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@stdint-intn.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,29 @@ | ||
| 1 | +/* Define intN_t types. | |
| 2 | + Copyright (C) 2017-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _BITS_STDINT_INTN_H | |
| 20 | +#define _BITS_STDINT_INTN_H 1 | |
| 21 | + | |
| 22 | +#include <bits/types.h> | |
| 23 | + | |
| 24 | +typedef __int8_t int8_t; | |
| 25 | +typedef __int16_t int16_t; | |
| 26 | +typedef __int32_t int32_t; | |
| 27 | +typedef __int64_t int64_t; | |
| 28 | + | |
| 29 | +#endif /* bits/stdint-intn.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@stdint-intn.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@stdint-intn.h.blob differ Large diff collapsed, click to expand
+28 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@stdio_lim.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,28 @@ | ||
| 1 | +/* System specific stdio.h definitions. Linux version. | |
| 2 | + Copyright (C) 2023-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _BITS_STDIO_LIM_H | |
| 20 | +#define _BITS_STDIO_LIM_H 1 | |
| 21 | + | |
| 22 | +#ifndef _STDIO_H | |
| 23 | +# error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead." | |
| 24 | +#endif | |
| 25 | + | |
| 26 | +#define FILENAME_MAX 4096 | |
| 27 | + | |
| 28 | +#endif /* bits/stdio_lim.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@stdio_lim.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@stdio_lim.h.blob differ Large diff collapsed, click to expand
+29 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@stdlib-float.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,29 @@ | ||
| 1 | +/* Floating-point inline functions for stdlib.h. | |
| 2 | + Copyright (C) 2012-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _STDLIB_H | |
| 20 | +# error "Never use <bits/stdlib-float.h> directly; include <stdlib.h> instead." | |
| 21 | +#endif | |
| 22 | + | |
| 23 | +#ifdef __USE_EXTERN_INLINES | |
| 24 | +__extern_inline double | |
| 25 | +__NTH (atof (const char *__nptr)) | |
| 26 | +{ | |
| 27 | + return strtod (__nptr, (char **) NULL); | |
| 28 | +} | |
| 29 | +#endif /* Optimizing and Inlining. */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@stdlib-float.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@stdlib-float.h.blob differ Large diff collapsed, click to expand
+63 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@struct_mutex.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,63 @@ | ||
| 1 | +/* x86 internal mutex struct definitions. | |
| 2 | + Copyright (C) 2019-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <http://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _THREAD_MUTEX_INTERNAL_H | |
| 20 | +#define _THREAD_MUTEX_INTERNAL_H 1 | |
| 21 | + | |
| 22 | +struct __pthread_mutex_s | |
| 23 | +{ | |
| 24 | + int __lock; | |
| 25 | + unsigned int __count; | |
| 26 | + int __owner; | |
| 27 | +#ifdef __x86_64__ | |
| 28 | + unsigned int __nusers; | |
| 29 | +#endif | |
| 30 | + /* KIND must stay at this position in the structure to maintain | |
| 31 | + binary compatibility with static initializers. */ | |
| 32 | + int __kind; | |
| 33 | +#ifdef __x86_64__ | |
| 34 | + short __spins; | |
| 35 | + short __elision; | |
| 36 | + __pthread_list_t __list; | |
| 37 | +# define __PTHREAD_MUTEX_HAVE_PREV 1 | |
| 38 | +#else | |
| 39 | + unsigned int __nusers; | |
| 40 | + __extension__ union | |
| 41 | + { | |
| 42 | + struct | |
| 43 | + { | |
| 44 | + short __espins; | |
| 45 | + short __eelision; | |
| 46 | +# define __spins __elision_data.__espins | |
| 47 | +# define __elision __elision_data.__eelision | |
| 48 | + } __elision_data; | |
| 49 | + __pthread_slist_t __list; | |
| 50 | + }; | |
| 51 | +# define __PTHREAD_MUTEX_HAVE_PREV 0 | |
| 52 | +#endif | |
| 53 | +}; | |
| 54 | + | |
| 55 | +#ifdef __x86_64__ | |
| 56 | +# define __PTHREAD_MUTEX_INITIALIZER(__kind) \ | |
| 57 | + 0, 0, 0, 0, __kind, 0, 0, { NULL, NULL } | |
| 58 | +#else | |
| 59 | +# define __PTHREAD_MUTEX_INITIALIZER(__kind) \ | |
| 60 | + 0, 0, 0, __kind, 0, { { 0, 0 } } | |
| 61 | +#endif | |
| 62 | + | |
| 63 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@struct_mutex.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@struct_mutex.h.blob differ Large diff collapsed, click to expand
+65 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@struct_rwlock.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,65 @@ | ||
| 1 | +/* x86 internal rwlock struct definitions. | |
| 2 | + Copyright (C) 2019-2025 Free Software Foundation, Inc. | |
| 3 | + | |
| 4 | + This file is part of the GNU C Library. | |
| 5 | + | |
| 6 | + The GNU C Library is free software; you can redistribute it and/or | |
| 7 | + modify it under the terms of the GNU Lesser General Public | |
| 8 | + License as published by the Free Software Foundation; either | |
| 9 | + version 2.1 of the License, or (at your option) any later version. | |
| 10 | + | |
| 11 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 12 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 14 | + Lesser General Public License for more details. | |
| 15 | + | |
| 16 | + You should have received a copy of the GNU Lesser General Public | |
| 17 | + License along with the GNU C Library; if not, see | |
| 18 | + <http://www.gnu.org/licenses/>. */ | |
| 19 | + | |
| 20 | +#ifndef _RWLOCK_INTERNAL_H | |
| 21 | +#define _RWLOCK_INTERNAL_H | |
| 22 | + | |
| 23 | +struct __pthread_rwlock_arch_t | |
| 24 | +{ | |
| 25 | + unsigned int __readers; | |
| 26 | + unsigned int __writers; | |
| 27 | + unsigned int __wrphase_futex; | |
| 28 | + unsigned int __writers_futex; | |
| 29 | + unsigned int __pad3; | |
| 30 | + unsigned int __pad4; | |
| 31 | +#ifdef __x86_64__ | |
| 32 | + int __cur_writer; | |
| 33 | + int __shared; | |
| 34 | + signed char __rwelision; | |
| 35 | +# ifdef __ILP32__ | |
| 36 | + unsigned char __pad1[3]; | |
| 37 | +# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, { 0, 0, 0 } | |
| 38 | +# else | |
| 39 | + unsigned char __pad1[7]; | |
| 40 | +# define __PTHREAD_RWLOCK_ELISION_EXTRA 0, { 0, 0, 0, 0, 0, 0, 0 } | |
| 41 | +# endif | |
| 42 | + unsigned long int __pad2; | |
| 43 | + /* FLAGS must stay at this position in the structure to maintain | |
| 44 | + binary compatibility. */ | |
| 45 | + unsigned int __flags; | |
| 46 | +#else /* __x86_64__ */ | |
| 47 | + /* FLAGS must stay at this position in the structure to maintain | |
| 48 | + binary compatibility. */ | |
| 49 | + unsigned char __flags; | |
| 50 | + unsigned char __shared; | |
| 51 | + signed char __rwelision; | |
| 52 | + unsigned char __pad2; | |
| 53 | + int __cur_writer; | |
| 54 | +#endif | |
| 55 | +}; | |
| 56 | + | |
| 57 | +#ifdef __x86_64__ | |
| 58 | +# define __PTHREAD_RWLOCK_INITIALIZER(__flags) \ | |
| 59 | + 0, 0, 0, 0, 0, 0, 0, 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, __flags | |
| 60 | +#else | |
| 61 | +# define __PTHREAD_RWLOCK_INITIALIZER(__flags) \ | |
| 62 | + 0, 0, 0, 0, 0, 0, __flags, 0, 0, 0, 0 | |
| 63 | +#endif | |
| 64 | + | |
| 65 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@struct_rwlock.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@struct_rwlock.h.blob differ Large diff collapsed, click to expand
+116 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@thread-shared-types.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,116 @@ | ||
| 1 | +/* Common threading primitives definitions for both POSIX and C11. | |
| 2 | + Copyright (C) 2017-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _THREAD_SHARED_TYPES_H | |
| 20 | +#define _THREAD_SHARED_TYPES_H 1 | |
| 21 | + | |
| 22 | +/* Arch-specific definitions. Each architecture must define the following | |
| 23 | + macros to define the expected sizes of pthread data types: | |
| 24 | + | |
| 25 | + __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t. | |
| 26 | + __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t. | |
| 27 | + __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t. | |
| 28 | + __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t. | |
| 29 | + __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t. | |
| 30 | + __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t. | |
| 31 | + __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t. | |
| 32 | + __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t. | |
| 33 | + __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t. | |
| 34 | + | |
| 35 | + The additional macro defines any constraint for the lock alignment | |
| 36 | + inside the thread structures: | |
| 37 | + | |
| 38 | + __LOCK_ALIGNMENT - for internal lock/futex usage. | |
| 39 | + | |
| 40 | + Same idea but for the once locking primitive: | |
| 41 | + | |
| 42 | + __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition. */ | |
| 43 | + | |
| 44 | +#include <bits/pthreadtypes-arch.h> | |
| 45 | + | |
| 46 | +#include <bits/atomic_wide_counter.h> | |
| 47 | + | |
| 48 | + | |
| 49 | +/* Common definition of pthread_mutex_t. */ | |
| 50 | + | |
| 51 | +typedef struct __pthread_internal_list | |
| 52 | +{ | |
| 53 | + struct __pthread_internal_list *__prev; | |
| 54 | + struct __pthread_internal_list *__next; | |
| 55 | +} __pthread_list_t; | |
| 56 | + | |
| 57 | +typedef struct __pthread_internal_slist | |
| 58 | +{ | |
| 59 | + struct __pthread_internal_slist *__next; | |
| 60 | +} __pthread_slist_t; | |
| 61 | + | |
| 62 | +/* Arch-specific mutex definitions. A generic implementation is provided | |
| 63 | + by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture | |
| 64 | + can override it by defining: | |
| 65 | + | |
| 66 | + 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t | |
| 67 | + definition). It should contains at least the internal members | |
| 68 | + defined in the generic version. | |
| 69 | + | |
| 70 | + 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with | |
| 71 | + atomic operations. | |
| 72 | + | |
| 73 | + 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization. | |
| 74 | + It should initialize the mutex internal flag. */ | |
| 75 | + | |
| 76 | +#include <bits/struct_mutex.h> | |
| 77 | + | |
| 78 | +/* Arch-sepecific read-write lock definitions. A generic implementation is | |
| 79 | + provided by struct_rwlock.h. If required, an architecture can override it | |
| 80 | + by defining: | |
| 81 | + | |
| 82 | + 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition). | |
| 83 | + It should contain at least the internal members defined in the | |
| 84 | + generic version. | |
| 85 | + | |
| 86 | + 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization. | |
| 87 | + It should initialize the rwlock internal type. */ | |
| 88 | + | |
| 89 | +#include <bits/struct_rwlock.h> | |
| 90 | + | |
| 91 | + | |
| 92 | +/* Common definition of pthread_cond_t. */ | |
| 93 | + | |
| 94 | +struct __pthread_cond_s | |
| 95 | +{ | |
| 96 | + __atomic_wide_counter __wseq; | |
| 97 | + __atomic_wide_counter __g1_start; | |
| 98 | + unsigned int __g_size[2] __LOCK_ALIGNMENT; | |
| 99 | + unsigned int __g1_orig_size; | |
| 100 | + unsigned int __wrefs; | |
| 101 | + unsigned int __g_signals[2]; | |
| 102 | + unsigned int __unused_initialized_1; | |
| 103 | + unsigned int __unused_initialized_2; | |
| 104 | +}; | |
| 105 | + | |
| 106 | +typedef unsigned int __tss_t; | |
| 107 | +typedef unsigned long int __thrd_t; | |
| 108 | + | |
| 109 | +typedef struct | |
| 110 | +{ | |
| 111 | + int __data __ONCE_ALIGNMENT; | |
| 112 | +} __once_flag; | |
| 113 | + | |
| 114 | +#define __ONCE_FLAG_INIT { 0 } | |
| 115 | + | |
| 116 | +#endif /* _THREAD_SHARED_TYPES_H */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@thread-shared-types.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@thread-shared-types.h.blob differ Large diff collapsed, click to expand
+36 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@time64.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,36 @@ | ||
| 1 | +/* bits/time64.h -- underlying types for __time64_t. Generic version. | |
| 2 | + Copyright (C) 2018-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _BITS_TYPES_H | |
| 20 | +# error "Never include <bits/time64.h> directly; use <sys/types.h> instead." | |
| 21 | +#endif | |
| 22 | + | |
| 23 | +#ifndef _BITS_TIME64_H | |
| 24 | +#define _BITS_TIME64_H 1 | |
| 25 | + | |
| 26 | +/* Define __TIME64_T_TYPE so that it is always a 64-bit type. */ | |
| 27 | + | |
| 28 | +#if __TIMESIZE == 64 | |
| 29 | +/* If we already have 64-bit time type then use it. */ | |
| 30 | +# define __TIME64_T_TYPE __TIME_T_TYPE | |
| 31 | +#else | |
| 32 | +/* Define a 64-bit time type alongsize the 32-bit one. */ | |
| 33 | +# define __TIME64_T_TYPE __SQUAD_TYPE | |
| 34 | +#endif | |
| 35 | + | |
| 36 | +#endif /* bits/time64.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@time64.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@time64.h.blob differ Large diff collapsed, click to expand
+27 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@timesize.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,27 @@ | ||
| 1 | +/* Bit size of the time_t type at glibc build time, x86-64 and x32 case. | |
| 2 | + Copyright (C) 2018-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#include <bits/wordsize.h> | |
| 20 | + | |
| 21 | +#if defined __x86_64__ && defined __ILP32__ | |
| 22 | +/* For x32, time is 64-bit even though word size is 32-bit. */ | |
| 23 | +# define __TIMESIZE 64 | |
| 24 | +#else | |
| 25 | +/* For others, time size is word size. */ | |
| 26 | +# define __TIMESIZE __WORDSIZE | |
| 27 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@timesize.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@timesize.h.blob differ Large diff collapsed, click to expand
+228 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,228 @@ | ||
| 1 | +/* bits/types.h -- definitions of __*_t types underlying *_t types. | |
| 2 | + Copyright (C) 2002-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +/* | |
| 20 | + * Never include this file directly; use <sys/types.h> instead. | |
| 21 | + */ | |
| 22 | + | |
| 23 | +#ifndef _BITS_TYPES_H | |
| 24 | +#define _BITS_TYPES_H 1 | |
| 25 | + | |
| 26 | +#include <features.h> | |
| 27 | +#include <bits/wordsize.h> | |
| 28 | +#include <bits/timesize.h> | |
| 29 | + | |
| 30 | +/* Convenience types. */ | |
| 31 | +typedef unsigned char __u_char; | |
| 32 | +typedef unsigned short int __u_short; | |
| 33 | +typedef unsigned int __u_int; | |
| 34 | +typedef unsigned long int __u_long; | |
| 35 | + | |
| 36 | +/* Fixed-size types, underlying types depend on word size and compiler. */ | |
| 37 | +typedef signed char __int8_t; | |
| 38 | +typedef unsigned char __uint8_t; | |
| 39 | +typedef signed short int __int16_t; | |
| 40 | +typedef unsigned short int __uint16_t; | |
| 41 | +typedef signed int __int32_t; | |
| 42 | +typedef unsigned int __uint32_t; | |
| 43 | +#if __WORDSIZE == 64 | |
| 44 | +typedef signed long int __int64_t; | |
| 45 | +typedef unsigned long int __uint64_t; | |
| 46 | +#else | |
| 47 | +__extension__ typedef signed long long int __int64_t; | |
| 48 | +__extension__ typedef unsigned long long int __uint64_t; | |
| 49 | +#endif | |
| 50 | + | |
| 51 | +/* Smallest types with at least a given width. */ | |
| 52 | +typedef __int8_t __int_least8_t; | |
| 53 | +typedef __uint8_t __uint_least8_t; | |
| 54 | +typedef __int16_t __int_least16_t; | |
| 55 | +typedef __uint16_t __uint_least16_t; | |
| 56 | +typedef __int32_t __int_least32_t; | |
| 57 | +typedef __uint32_t __uint_least32_t; | |
| 58 | +typedef __int64_t __int_least64_t; | |
| 59 | +typedef __uint64_t __uint_least64_t; | |
| 60 | + | |
| 61 | +/* quad_t is also 64 bits. */ | |
| 62 | +#if __WORDSIZE == 64 | |
| 63 | +typedef long int __quad_t; | |
| 64 | +typedef unsigned long int __u_quad_t; | |
| 65 | +#else | |
| 66 | +__extension__ typedef long long int __quad_t; | |
| 67 | +__extension__ typedef unsigned long long int __u_quad_t; | |
| 68 | +#endif | |
| 69 | + | |
| 70 | +/* Largest integral types. */ | |
| 71 | +#if __WORDSIZE == 64 | |
| 72 | +typedef long int __intmax_t; | |
| 73 | +typedef unsigned long int __uintmax_t; | |
| 74 | +#else | |
| 75 | +__extension__ typedef long long int __intmax_t; | |
| 76 | +__extension__ typedef unsigned long long int __uintmax_t; | |
| 77 | +#endif | |
| 78 | + | |
| 79 | + | |
| 80 | +/* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE | |
| 81 | + macros for each of the OS types we define below. The definitions | |
| 82 | + of those macros must use the following macros for underlying types. | |
| 83 | + We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned | |
| 84 | + variants of each of the following integer types on this machine. | |
| 85 | + | |
| 86 | + 16 -- "natural" 16-bit type (always short) | |
| 87 | + 32 -- "natural" 32-bit type (always int) | |
| 88 | + 64 -- "natural" 64-bit type (long or long long) | |
| 89 | + LONG32 -- 32-bit type, traditionally long | |
| 90 | + QUAD -- 64-bit type, traditionally long long | |
| 91 | + WORD -- natural type of __WORDSIZE bits (int or long) | |
| 92 | + LONGWORD -- type of __WORDSIZE bits, traditionally long | |
| 93 | + | |
| 94 | + We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the | |
| 95 | + conventional uses of `long' or `long long' type modifiers match the | |
| 96 | + types we define, even when a less-adorned type would be the same size. | |
| 97 | + This matters for (somewhat) portably writing printf/scanf formats for | |
| 98 | + these types, where using the appropriate l or ll format modifiers can | |
| 99 | + make the typedefs and the formats match up across all GNU platforms. If | |
| 100 | + we used `long' when it's 64 bits where `long long' is expected, then the | |
| 101 | + compiler would warn about the formats not matching the argument types, | |
| 102 | + and the programmer changing them to shut up the compiler would break the | |
| 103 | + program's portability. | |
| 104 | + | |
| 105 | + Here we assume what is presently the case in all the GCC configurations | |
| 106 | + we support: long long is always 64 bits, long is always word/address size, | |
| 107 | + and int is always 32 bits. */ | |
| 108 | + | |
| 109 | +#define __S16_TYPE short int | |
| 110 | +#define __U16_TYPE unsigned short int | |
| 111 | +#define __S32_TYPE int | |
| 112 | +#define __U32_TYPE unsigned int | |
| 113 | +#define __SLONGWORD_TYPE long int | |
| 114 | +#define __ULONGWORD_TYPE unsigned long int | |
| 115 | +#if __WORDSIZE == 32 | |
| 116 | +# define __SQUAD_TYPE __int64_t | |
| 117 | +# define __UQUAD_TYPE __uint64_t | |
| 118 | +# define __SWORD_TYPE int | |
| 119 | +# define __UWORD_TYPE unsigned int | |
| 120 | +# define __SLONG32_TYPE long int | |
| 121 | +# define __ULONG32_TYPE unsigned long int | |
| 122 | +# define __S64_TYPE __int64_t | |
| 123 | +# define __U64_TYPE __uint64_t | |
| 124 | +/* We want __extension__ before typedef's that use nonstandard base types | |
| 125 | + such as `long long' in C89 mode. */ | |
| 126 | +# define __STD_TYPE __extension__ typedef | |
| 127 | +#elif __WORDSIZE == 64 | |
| 128 | +# define __SQUAD_TYPE long int | |
| 129 | +# define __UQUAD_TYPE unsigned long int | |
| 130 | +# define __SWORD_TYPE long int | |
| 131 | +# define __UWORD_TYPE unsigned long int | |
| 132 | +# define __SLONG32_TYPE int | |
| 133 | +# define __ULONG32_TYPE unsigned int | |
| 134 | +# define __S64_TYPE long int | |
| 135 | +# define __U64_TYPE unsigned long int | |
| 136 | +/* No need to mark the typedef with __extension__. */ | |
| 137 | +# define __STD_TYPE typedef | |
| 138 | +#else | |
| 139 | +# error | |
| 140 | +#endif | |
| 141 | +#include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */ | |
| 142 | +#include <bits/time64.h> /* Defines __TIME*_T_TYPE macros. */ | |
| 143 | + | |
| 144 | + | |
| 145 | +__STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */ | |
| 146 | +__STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */ | |
| 147 | +__STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */ | |
| 148 | +__STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */ | |
| 149 | +__STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/ | |
| 150 | +__STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */ | |
| 151 | +__STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */ | |
| 152 | +__STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */ | |
| 153 | +__STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */ | |
| 154 | +__STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */ | |
| 155 | +__STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */ | |
| 156 | +__STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */ | |
| 157 | +__STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */ | |
| 158 | +__STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */ | |
| 159 | +__STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */ | |
| 160 | +__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */ | |
| 161 | +__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */ | |
| 162 | +__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */ | |
| 163 | +__STD_TYPE __SUSECONDS64_T_TYPE __suseconds64_t; | |
| 164 | + | |
| 165 | +__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */ | |
| 166 | +__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */ | |
| 167 | + | |
| 168 | +/* Clock ID used in clock and timer functions. */ | |
| 169 | +__STD_TYPE __CLOCKID_T_TYPE __clockid_t; | |
| 170 | + | |
| 171 | +/* Timer ID returned by `timer_create'. */ | |
| 172 | +__STD_TYPE __TIMER_T_TYPE __timer_t; | |
| 173 | + | |
| 174 | +/* Type to represent block size. */ | |
| 175 | +__STD_TYPE __BLKSIZE_T_TYPE __blksize_t; | |
| 176 | + | |
| 177 | +/* Types from the Large File Support interface. */ | |
| 178 | + | |
| 179 | +/* Type to count number of disk blocks. */ | |
| 180 | +__STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; | |
| 181 | +__STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t; | |
| 182 | + | |
| 183 | +/* Type to count file system blocks. */ | |
| 184 | +__STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; | |
| 185 | +__STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; | |
| 186 | + | |
| 187 | +/* Type to count file system nodes. */ | |
| 188 | +__STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; | |
| 189 | +__STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; | |
| 190 | + | |
| 191 | +/* Type of miscellaneous file system fields. */ | |
| 192 | +__STD_TYPE __FSWORD_T_TYPE __fsword_t; | |
| 193 | + | |
| 194 | +__STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */ | |
| 195 | + | |
| 196 | +/* Signed long type used in system calls. */ | |
| 197 | +__STD_TYPE __SYSCALL_SLONG_TYPE __syscall_slong_t; | |
| 198 | +/* Unsigned long type used in system calls. */ | |
| 199 | +__STD_TYPE __SYSCALL_ULONG_TYPE __syscall_ulong_t; | |
| 200 | + | |
| 201 | +/* These few don't really vary by system, they always correspond | |
| 202 | + to one of the other defined types. */ | |
| 203 | +typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */ | |
| 204 | +typedef char *__caddr_t; | |
| 205 | + | |
| 206 | +/* Duplicates info from stdint.h but this is used in unistd.h. */ | |
| 207 | +__STD_TYPE __SWORD_TYPE __intptr_t; | |
| 208 | + | |
| 209 | +/* Duplicate info from sys/socket.h. */ | |
| 210 | +__STD_TYPE __U32_TYPE __socklen_t; | |
| 211 | + | |
| 212 | +/* C99: An integer type that can be accessed as an atomic entity, | |
| 213 | + even in the presence of asynchronous interrupts. | |
| 214 | + It is not currently necessary for this to be machine-specific. */ | |
| 215 | +typedef int __sig_atomic_t; | |
| 216 | + | |
| 217 | +/* Seconds since the Epoch, visible to user code when time_t is too | |
| 218 | + narrow only for consistency with the old way of widening too-narrow | |
| 219 | + types. User code should never use __time64_t. */ | |
| 220 | +#if __TIMESIZE == 64 && defined __LIBC | |
| 221 | +# define __time64_t __time_t | |
| 222 | +#elif __TIMESIZE != 64 | |
| 223 | +__STD_TYPE __TIME64_T_TYPE __time64_t; | |
| 224 | +#endif | |
| 225 | + | |
| 226 | +#undef __STD_TYPE | |
| 227 | + | |
| 228 | +#endif /* bits/types.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types.h.blob differ Large diff collapsed, click to expand
+9 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@FILE.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,9 @@ | ||
| 1 | +#ifndef __FILE_defined | |
| 2 | +#define __FILE_defined 1 | |
| 3 | + | |
| 4 | +struct _IO_FILE; | |
| 5 | + | |
| 6 | +/* The opaque type of streams. This is the definition used elsewhere. */ | |
| 7 | +typedef struct _IO_FILE FILE; | |
| 8 | + | |
| 9 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@FILE.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@FILE.h.blob differ Large diff collapsed, click to expand
+7 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__FILE.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,7 @@ | ||
| 1 | +#ifndef ____FILE_defined | |
| 2 | +#define ____FILE_defined 1 | |
| 3 | + | |
| 4 | +struct _IO_FILE; | |
| 5 | +typedef struct _IO_FILE __FILE; | |
| 6 | + | |
| 7 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__FILE.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__FILE.h.blob differ Large diff collapsed, click to expand
+16 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__fpos64_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,16 @@ | ||
| 1 | +#ifndef _____fpos64_t_defined | |
| 2 | +#define _____fpos64_t_defined 1 | |
| 3 | + | |
| 4 | +#include <bits/types.h> | |
| 5 | +#include <bits/types/__mbstate_t.h> | |
| 6 | + | |
| 7 | +/* The tag name of this struct is _G_fpos64_t to preserve historic | |
| 8 | + C++ mangled names for functions taking fpos_t and/or fpos64_t | |
| 9 | + arguments. That name should not be used in new code. */ | |
| 10 | +typedef struct _G_fpos64_t | |
| 11 | +{ | |
| 12 | + __off64_t __pos; | |
| 13 | + __mbstate_t __state; | |
| 14 | +} __fpos64_t; | |
| 15 | + | |
| 16 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__fpos64_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__fpos64_t.h.blob differ Large diff collapsed, click to expand
+16 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__fpos_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,16 @@ | ||
| 1 | +#ifndef _____fpos_t_defined | |
| 2 | +#define _____fpos_t_defined 1 | |
| 3 | + | |
| 4 | +#include <bits/types.h> | |
| 5 | +#include <bits/types/__mbstate_t.h> | |
| 6 | + | |
| 7 | +/* The tag name of this struct is _G_fpos_t to preserve historic | |
| 8 | + C++ mangled names for functions taking fpos_t arguments. | |
| 9 | + That name should not be used in new code. */ | |
| 10 | +typedef struct _G_fpos_t | |
| 11 | +{ | |
| 12 | + __off_t __pos; | |
| 13 | + __mbstate_t __state; | |
| 14 | +} __fpos_t; | |
| 15 | + | |
| 16 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__fpos_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__fpos_t.h.blob differ Large diff collapsed, click to expand
+43 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__locale_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,43 @@ | ||
| 1 | +/* Definition of struct __locale_struct and __locale_t. | |
| 2 | + Copyright (C) 1997-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _BITS_TYPES___LOCALE_T_H | |
| 20 | +#define _BITS_TYPES___LOCALE_T_H 1 | |
| 21 | + | |
| 22 | +/* POSIX.1-2008: the locale_t type, representing a locale context | |
| 23 | + (implementation-namespace version). This type should be treated | |
| 24 | + as opaque by applications; some details are exposed for the sake of | |
| 25 | + efficiency in e.g. ctype functions. */ | |
| 26 | + | |
| 27 | +struct __locale_struct | |
| 28 | +{ | |
| 29 | + /* Note: LC_ALL is not a valid index into this array. */ | |
| 30 | + struct __locale_data *__locales[13]; /* 13 = __LC_LAST. */ | |
| 31 | + | |
| 32 | + /* To increase the speed of this solution we add some special members. */ | |
| 33 | + const unsigned short int *__ctype_b; | |
| 34 | + const int *__ctype_tolower; | |
| 35 | + const int *__ctype_toupper; | |
| 36 | + | |
| 37 | + /* Note: LC_ALL is not a valid index into this array. */ | |
| 38 | + const char *__names[13]; | |
| 39 | +}; | |
| 40 | + | |
| 41 | +typedef struct __locale_struct *__locale_t; | |
| 42 | + | |
| 43 | +#endif /* bits/types/__locale_t.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__locale_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__locale_t.h.blob differ Large diff collapsed, click to expand
+23 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__mbstate_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,23 @@ | ||
| 1 | +#ifndef ____mbstate_t_defined | |
| 2 | +#define ____mbstate_t_defined 1 | |
| 3 | + | |
| 4 | +/* Integral type unchanged by default argument promotions that can | |
| 5 | + hold any value corresponding to members of the extended character | |
| 6 | + set, as well as at least one value that does not correspond to any | |
| 7 | + member of the extended character set. */ | |
| 8 | +#ifndef __WINT_TYPE__ | |
| 9 | +# define __WINT_TYPE__ unsigned int | |
| 10 | +#endif | |
| 11 | + | |
| 12 | +/* Conversion state information. */ | |
| 13 | +typedef struct | |
| 14 | +{ | |
| 15 | + int __count; | |
| 16 | + union | |
| 17 | + { | |
| 18 | + __WINT_TYPE__ __wch; | |
| 19 | + char __wchb[4]; | |
| 20 | + } __value; /* Value so far. */ | |
| 21 | +} __mbstate_t; | |
| 22 | + | |
| 23 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__mbstate_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__mbstate_t.h.blob differ Large diff collapsed, click to expand
+10 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__sigset_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,10 @@ | ||
| 1 | +#ifndef ____sigset_t_defined | |
| 2 | +#define ____sigset_t_defined | |
| 3 | + | |
| 4 | +#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int))) | |
| 5 | +typedef struct | |
| 6 | +{ | |
| 7 | + unsigned long int __val[_SIGSET_NWORDS]; | |
| 8 | +} __sigset_t; | |
| 9 | + | |
| 10 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__sigset_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@__sigset_t.h.blob differ Large diff collapsed, click to expand
+9 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@clock_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,9 @@ | ||
| 1 | +#ifndef __clock_t_defined | |
| 2 | +#define __clock_t_defined 1 | |
| 3 | + | |
| 4 | +#include <bits/types.h> | |
| 5 | + | |
| 6 | +/* Returned by `clock'. */ | |
| 7 | +typedef __clock_t clock_t; | |
| 8 | + | |
| 9 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@clock_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@clock_t.h.blob differ Large diff collapsed, click to expand
+9 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@clockid_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,9 @@ | ||
| 1 | +#ifndef __clockid_t_defined | |
| 2 | +#define __clockid_t_defined 1 | |
| 3 | + | |
| 4 | +#include <bits/types.h> | |
| 5 | + | |
| 6 | +/* Clock ID used in clock and timer functions. */ | |
| 7 | +typedef __clockid_t clockid_t; | |
| 8 | + | |
| 9 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@clockid_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@clockid_t.h.blob differ Large diff collapsed, click to expand
+63 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@cookie_io_functions_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,63 @@ | ||
| 1 | +/* Copyright (C) 1991-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +#ifndef __cookie_io_functions_t_defined | |
| 19 | +#define __cookie_io_functions_t_defined 1 | |
| 20 | + | |
| 21 | +#include <bits/types.h> | |
| 22 | + | |
| 23 | +/* Functions to do I/O and file management for a stream. */ | |
| 24 | + | |
| 25 | +/* Read NBYTES bytes from COOKIE into a buffer pointed to by BUF. | |
| 26 | + Return number of bytes read. */ | |
| 27 | +typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, | |
| 28 | + size_t __nbytes); | |
| 29 | + | |
| 30 | +/* Write NBYTES bytes pointed to by BUF to COOKIE. Write all NBYTES bytes | |
| 31 | + unless there is an error. Return number of bytes written. If | |
| 32 | + there is an error, return 0 and do not write anything. If the file | |
| 33 | + has been opened for append (__mode.__append set), then set the file | |
| 34 | + pointer to the end of the file and then do the write; if not, just | |
| 35 | + write at the current file pointer. */ | |
| 36 | +typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, | |
| 37 | + size_t __nbytes); | |
| 38 | + | |
| 39 | +/* Move COOKIE's file position to *POS bytes from the | |
| 40 | + beginning of the file (if W is SEEK_SET), | |
| 41 | + the current position (if W is SEEK_CUR), | |
| 42 | + or the end of the file (if W is SEEK_END). | |
| 43 | + Set *POS to the new file position. | |
| 44 | + Returns zero if successful, nonzero if not. */ | |
| 45 | +typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); | |
| 46 | + | |
| 47 | +/* Close COOKIE. */ | |
| 48 | +typedef int cookie_close_function_t (void *__cookie); | |
| 49 | + | |
| 50 | +/* The structure with the cookie function pointers. | |
| 51 | + The tag name of this struct is _IO_cookie_io_functions_t to | |
| 52 | + preserve historic C++ mangled names for functions taking | |
| 53 | + cookie_io_functions_t arguments. That name should not be used in | |
| 54 | + new code. */ | |
| 55 | +typedef struct _IO_cookie_io_functions_t | |
| 56 | +{ | |
| 57 | + cookie_read_function_t *read; /* Read bytes. */ | |
| 58 | + cookie_write_function_t *write; /* Write bytes. */ | |
| 59 | + cookie_seek_function_t *seek; /* Seek/tell file position. */ | |
| 60 | + cookie_close_function_t *close; /* Close file. */ | |
| 61 | +} cookie_io_functions_t; | |
| 62 | + | |
| 63 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@cookie_io_functions_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@cookie_io_functions_t.h.blob differ Large diff collapsed, click to expand
+26 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@locale_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,26 @@ | ||
| 1 | +/* Definition of locale_t. | |
| 2 | + Copyright (C) 2017-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _BITS_TYPES_LOCALE_T_H | |
| 20 | +#define _BITS_TYPES_LOCALE_T_H 1 | |
| 21 | + | |
| 22 | +#include <bits/types/__locale_t.h> | |
| 23 | + | |
| 24 | +typedef __locale_t locale_t; | |
| 25 | + | |
| 26 | +#endif /* bits/types/locale_t.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@locale_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@locale_t.h.blob differ Large diff collapsed, click to expand
+9 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@sigset_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,9 @@ | ||
| 1 | +#ifndef __sigset_t_defined | |
| 2 | +#define __sigset_t_defined 1 | |
| 3 | + | |
| 4 | +#include <bits/types/__sigset_t.h> | |
| 5 | + | |
| 6 | +/* A set of signals to be blocked, unblocked, or waited for. */ | |
| 7 | +typedef __sigset_t sigset_t; | |
| 8 | + | |
| 9 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@sigset_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@sigset_t.h.blob differ Large diff collapsed, click to expand
+131 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@struct_FILE.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,131 @@ | ||
| 1 | +/* Copyright (C) 1991-2025 Free Software Foundation, Inc. | |
| 2 | + Copyright The GNU Toolchain Authors. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef __struct_FILE_defined | |
| 20 | +#define __struct_FILE_defined 1 | |
| 21 | + | |
| 22 | +/* Caution: The contents of this file are not part of the official | |
| 23 | + stdio.h API. However, much of it is part of the official *binary* | |
| 24 | + interface, and therefore cannot be changed. */ | |
| 25 | + | |
| 26 | +#if defined _IO_USE_OLD_IO_FILE && !defined _LIBC | |
| 27 | +# error "_IO_USE_OLD_IO_FILE should only be defined when building libc itself" | |
| 28 | +#endif | |
| 29 | + | |
| 30 | +#if defined _IO_lock_t_defined && !defined _LIBC | |
| 31 | +# error "_IO_lock_t_defined should only be defined when building libc itself" | |
| 32 | +#endif | |
| 33 | + | |
| 34 | +#include <bits/types.h> | |
| 35 | +#include <bits/wordsize.h> | |
| 36 | + | |
| 37 | +struct _IO_FILE; | |
| 38 | +struct _IO_marker; | |
| 39 | +struct _IO_codecvt; | |
| 40 | +struct _IO_wide_data; | |
| 41 | + | |
| 42 | +/* During the build of glibc itself, _IO_lock_t will already have been | |
| 43 | + defined by internal headers. */ | |
| 44 | +#ifndef _IO_lock_t_defined | |
| 45 | +typedef void _IO_lock_t; | |
| 46 | +#endif | |
| 47 | + | |
| 48 | +/* The tag name of this struct is _IO_FILE to preserve historic | |
| 49 | + C++ mangled names for functions taking FILE* arguments. | |
| 50 | + That name should not be used in new code. */ | |
| 51 | +struct _IO_FILE | |
| 52 | +{ | |
| 53 | + int _flags; /* High-order word is _IO_MAGIC; rest is flags. */ | |
| 54 | + | |
| 55 | + /* The following pointers correspond to the C++ streambuf protocol. */ | |
| 56 | + char *_IO_read_ptr; /* Current read pointer */ | |
| 57 | + char *_IO_read_end; /* End of get area. */ | |
| 58 | + char *_IO_read_base; /* Start of putback+get area. */ | |
| 59 | + char *_IO_write_base; /* Start of put area. */ | |
| 60 | + char *_IO_write_ptr; /* Current put pointer. */ | |
| 61 | + char *_IO_write_end; /* End of put area. */ | |
| 62 | + char *_IO_buf_base; /* Start of reserve area. */ | |
| 63 | + char *_IO_buf_end; /* End of reserve area. */ | |
| 64 | + | |
| 65 | + /* The following fields are used to support backing up and undo. */ | |
| 66 | + char *_IO_save_base; /* Pointer to start of non-current get area. */ | |
| 67 | + char *_IO_backup_base; /* Pointer to first valid character of backup area */ | |
| 68 | + char *_IO_save_end; /* Pointer to end of non-current get area. */ | |
| 69 | + | |
| 70 | + struct _IO_marker *_markers; | |
| 71 | + | |
| 72 | + struct _IO_FILE *_chain; | |
| 73 | + | |
| 74 | + int _fileno; | |
| 75 | + int _flags2:24; | |
| 76 | + /* Fallback buffer to use when malloc fails to allocate one. */ | |
| 77 | + char _short_backupbuf[1]; | |
| 78 | + __off_t _old_offset; /* This used to be _offset but it's too small. */ | |
| 79 | + | |
| 80 | + /* 1+column number of pbase(); 0 is unknown. */ | |
| 81 | + unsigned short _cur_column; | |
| 82 | + signed char _vtable_offset; | |
| 83 | + char _shortbuf[1]; | |
| 84 | + | |
| 85 | + _IO_lock_t *_lock; | |
| 86 | +#ifdef _IO_USE_OLD_IO_FILE | |
| 87 | +}; | |
| 88 | + | |
| 89 | +struct _IO_FILE_complete | |
| 90 | +{ | |
| 91 | + struct _IO_FILE _file; | |
| 92 | +#endif | |
| 93 | + __off64_t _offset; | |
| 94 | + /* Wide character stream stuff. */ | |
| 95 | + struct _IO_codecvt *_codecvt; | |
| 96 | + struct _IO_wide_data *_wide_data; | |
| 97 | + struct _IO_FILE *_freeres_list; | |
| 98 | + void *_freeres_buf; | |
| 99 | + struct _IO_FILE **_prevchain; | |
| 100 | + int _mode; | |
| 101 | +#if __WORDSIZE == 64 | |
| 102 | + int _unused3; | |
| 103 | +#endif | |
| 104 | + __uint64_t _total_written; | |
| 105 | +#if __WORDSIZE == 32 | |
| 106 | + int _unused3; | |
| 107 | +#endif | |
| 108 | + /* Make sure we don't get into trouble again. */ | |
| 109 | + char _unused2[12 * sizeof (int) - 5 * sizeof (void *)]; | |
| 110 | +}; | |
| 111 | + | |
| 112 | +/* These macros are used by bits/stdio.h and internal headers. */ | |
| 113 | +#define __getc_unlocked_body(_fp) \ | |
| 114 | + (__glibc_unlikely ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end) \ | |
| 115 | + ? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++) | |
| 116 | + | |
| 117 | +#define __putc_unlocked_body(_ch, _fp) \ | |
| 118 | + (__glibc_unlikely ((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end) \ | |
| 119 | + ? __overflow (_fp, (unsigned char) (_ch)) \ | |
| 120 | + : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch))) | |
| 121 | + | |
| 122 | +#define _IO_EOF_SEEN 0x0010 | |
| 123 | +#define __feof_unlocked_body(_fp) (((_fp)->_flags & _IO_EOF_SEEN) != 0) | |
| 124 | + | |
| 125 | +#define _IO_ERR_SEEN 0x0020 | |
| 126 | +#define __ferror_unlocked_body(_fp) (((_fp)->_flags & _IO_ERR_SEEN) != 0) | |
| 127 | + | |
| 128 | +#define _IO_USER_LOCK 0x8000 | |
| 129 | +/* Many more flag bits are defined internally. */ | |
| 130 | + | |
| 131 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@struct_FILE.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@struct_FILE.h.blob differ Large diff collapsed, click to expand
+33 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@struct_timespec.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,33 @@ | ||
| 1 | +/* NB: Include guard matches what <linux/time.h> uses. */ | |
| 2 | +#ifndef _STRUCT_TIMESPEC | |
| 3 | +#define _STRUCT_TIMESPEC 1 | |
| 4 | + | |
| 5 | +#include <bits/types.h> | |
| 6 | +#include <bits/endian.h> | |
| 7 | +#include <bits/types/time_t.h> | |
| 8 | + | |
| 9 | +/* POSIX.1b structure for a time value. This is like a `struct timeval' but | |
| 10 | + has nanoseconds instead of microseconds. */ | |
| 11 | +struct timespec | |
| 12 | +{ | |
| 13 | +#ifdef __USE_TIME64_REDIRECTS | |
| 14 | + __time64_t tv_sec; /* Seconds. */ | |
| 15 | +#else | |
| 16 | + __time_t tv_sec; /* Seconds. */ | |
| 17 | +#endif | |
| 18 | +#if __WORDSIZE == 64 \ | |
| 19 | + || (defined __SYSCALL_WORDSIZE && __SYSCALL_WORDSIZE == 64) \ | |
| 20 | + || (__TIMESIZE == 32 && !defined __USE_TIME64_REDIRECTS) | |
| 21 | + __syscall_slong_t tv_nsec; /* Nanoseconds. */ | |
| 22 | +#else | |
| 23 | +# if __BYTE_ORDER == __BIG_ENDIAN | |
| 24 | + int: 32; /* Padding. */ | |
| 25 | + long int tv_nsec; /* Nanoseconds. */ | |
| 26 | +# else | |
| 27 | + long int tv_nsec; /* Nanoseconds. */ | |
| 28 | + int: 32; /* Padding. */ | |
| 29 | +# endif | |
| 30 | +#endif | |
| 31 | +}; | |
| 32 | + | |
| 33 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@struct_timespec.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@struct_timespec.h.blob differ Large diff collapsed, click to expand
+18 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@struct_timeval.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,18 @@ | ||
| 1 | +#ifndef __timeval_defined | |
| 2 | +#define __timeval_defined 1 | |
| 3 | + | |
| 4 | +#include <bits/types.h> | |
| 5 | + | |
| 6 | +/* A time value that is accurate to the nearest | |
| 7 | + microsecond but also has a range of years. */ | |
| 8 | +struct timeval | |
| 9 | +{ | |
| 10 | +#ifdef __USE_TIME64_REDIRECTS | |
| 11 | + __time64_t tv_sec; /* Seconds. */ | |
| 12 | + __suseconds64_t tv_usec; /* Microseconds. */ | |
| 13 | +#else | |
| 14 | + __time_t tv_sec; /* Seconds. */ | |
| 15 | + __suseconds_t tv_usec; /* Microseconds. */ | |
| 16 | +#endif | |
| 17 | +}; | |
| 18 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@struct_timeval.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@struct_timeval.h.blob differ Large diff collapsed, click to expand
+13 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@time_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,13 @@ | ||
| 1 | +#ifndef __time_t_defined | |
| 2 | +#define __time_t_defined 1 | |
| 3 | + | |
| 4 | +#include <bits/types.h> | |
| 5 | + | |
| 6 | +/* Returned by `time'. */ | |
| 7 | +#ifdef __USE_TIME64_REDIRECTS | |
| 8 | +typedef __time64_t time_t; | |
| 9 | +#else | |
| 10 | +typedef __time_t time_t; | |
| 11 | +#endif | |
| 12 | + | |
| 13 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@time_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@time_t.h.blob differ Large diff collapsed, click to expand
+9 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@timer_t.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,9 @@ | ||
| 1 | +#ifndef __timer_t_defined | |
| 2 | +#define __timer_t_defined 1 | |
| 3 | + | |
| 4 | +#include <bits/types.h> | |
| 5 | + | |
| 6 | +/* Timer ID returned by `timer_create'. */ | |
| 7 | +typedef __timer_t timer_t; | |
| 8 | + | |
| 9 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@timer_t.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@types@timer_t.h.blob differ Large diff collapsed, click to expand
+106 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@typesizes.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,106 @@ | ||
| 1 | +/* bits/typesizes.h -- underlying types for *_t. Linux/x86-64 version. | |
| 2 | + Copyright (C) 2012-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _BITS_TYPES_H | |
| 20 | +# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead." | |
| 21 | +#endif | |
| 22 | + | |
| 23 | +#ifndef _BITS_TYPESIZES_H | |
| 24 | +#define _BITS_TYPESIZES_H 1 | |
| 25 | + | |
| 26 | +/* See <bits/types.h> for the meaning of these macros. This file exists so | |
| 27 | + that <bits/types.h> need not vary across different GNU platforms. */ | |
| 28 | + | |
| 29 | +/* X32 kernel interface is 64-bit. */ | |
| 30 | +#if defined __x86_64__ && defined __ILP32__ | |
| 31 | +# define __SYSCALL_SLONG_TYPE __SQUAD_TYPE | |
| 32 | +# define __SYSCALL_ULONG_TYPE __UQUAD_TYPE | |
| 33 | +#else | |
| 34 | +# define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE | |
| 35 | +# define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE | |
| 36 | +#endif | |
| 37 | + | |
| 38 | +#define __DEV_T_TYPE __UQUAD_TYPE | |
| 39 | +#define __UID_T_TYPE __U32_TYPE | |
| 40 | +#define __GID_T_TYPE __U32_TYPE | |
| 41 | +#define __INO_T_TYPE __SYSCALL_ULONG_TYPE | |
| 42 | +#define __INO64_T_TYPE __UQUAD_TYPE | |
| 43 | +#define __MODE_T_TYPE __U32_TYPE | |
| 44 | +#ifdef __x86_64__ | |
| 45 | +# define __NLINK_T_TYPE __SYSCALL_ULONG_TYPE | |
| 46 | +# define __FSWORD_T_TYPE __SYSCALL_SLONG_TYPE | |
| 47 | +#else | |
| 48 | +# define __NLINK_T_TYPE __UWORD_TYPE | |
| 49 | +# define __FSWORD_T_TYPE __SWORD_TYPE | |
| 50 | +#endif | |
| 51 | +#define __OFF_T_TYPE __SYSCALL_SLONG_TYPE | |
| 52 | +#define __OFF64_T_TYPE __SQUAD_TYPE | |
| 53 | +#define __PID_T_TYPE __S32_TYPE | |
| 54 | +#define __RLIM_T_TYPE __SYSCALL_ULONG_TYPE | |
| 55 | +#define __RLIM64_T_TYPE __UQUAD_TYPE | |
| 56 | +#define __BLKCNT_T_TYPE __SYSCALL_SLONG_TYPE | |
| 57 | +#define __BLKCNT64_T_TYPE __SQUAD_TYPE | |
| 58 | +#define __FSBLKCNT_T_TYPE __SYSCALL_ULONG_TYPE | |
| 59 | +#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE | |
| 60 | +#define __FSFILCNT_T_TYPE __SYSCALL_ULONG_TYPE | |
| 61 | +#define __FSFILCNT64_T_TYPE __UQUAD_TYPE | |
| 62 | +#define __ID_T_TYPE __U32_TYPE | |
| 63 | +#define __CLOCK_T_TYPE __SYSCALL_SLONG_TYPE | |
| 64 | +#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE | |
| 65 | +#define __USECONDS_T_TYPE __U32_TYPE | |
| 66 | +#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE | |
| 67 | +#define __SUSECONDS64_T_TYPE __SQUAD_TYPE | |
| 68 | +#define __DADDR_T_TYPE __S32_TYPE | |
| 69 | +#define __KEY_T_TYPE __S32_TYPE | |
| 70 | +#define __CLOCKID_T_TYPE __S32_TYPE | |
| 71 | +#define __TIMER_T_TYPE void * | |
| 72 | +#define __BLKSIZE_T_TYPE __SYSCALL_SLONG_TYPE | |
| 73 | +#define __FSID_T_TYPE struct { int __val[2]; } | |
| 74 | +#define __SSIZE_T_TYPE __SWORD_TYPE | |
| 75 | +#define __CPU_MASK_TYPE __SYSCALL_ULONG_TYPE | |
| 76 | + | |
| 77 | +#ifdef __x86_64__ | |
| 78 | +/* Tell the libc code that off_t and off64_t are actually the same type | |
| 79 | + for all ABI purposes, even if possibly expressed as different base types | |
| 80 | + for C type-checking purposes. */ | |
| 81 | +# define __OFF_T_MATCHES_OFF64_T 1 | |
| 82 | + | |
| 83 | +/* Same for ino_t and ino64_t. */ | |
| 84 | +# define __INO_T_MATCHES_INO64_T 1 | |
| 85 | + | |
| 86 | +/* And for __rlim_t and __rlim64_t. */ | |
| 87 | +# define __RLIM_T_MATCHES_RLIM64_T 1 | |
| 88 | + | |
| 89 | +/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */ | |
| 90 | +# define __STATFS_MATCHES_STATFS64 1 | |
| 91 | + | |
| 92 | +/* And for getitimer, setitimer and rusage */ | |
| 93 | +# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1 | |
| 94 | +#else | |
| 95 | +# define __RLIM_T_MATCHES_RLIM64_T 0 | |
| 96 | + | |
| 97 | +# define __STATFS_MATCHES_STATFS64 0 | |
| 98 | + | |
| 99 | +# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0 | |
| 100 | +#endif | |
| 101 | + | |
| 102 | +/* Number of descriptors that can fit in an `fd_set'. */ | |
| 103 | +#define __FD_SETSIZE 1024 | |
| 104 | + | |
| 105 | + | |
| 106 | +#endif /* bits/typesizes.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@typesizes.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@typesizes.h.blob differ Large diff collapsed, click to expand
+50 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@uintn-identity.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,50 @@ | ||
| 1 | +/* Inline functions to return unsigned integer values unchanged. | |
| 2 | + Copyright (C) 2017-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#if !defined _NETINET_IN_H && !defined _ENDIAN_H | |
| 20 | +# error "Never use <bits/uintn-identity.h> directly; include <netinet/in.h> or <endian.h> instead." | |
| 21 | +#endif | |
| 22 | + | |
| 23 | +#ifndef _BITS_UINTN_IDENTITY_H | |
| 24 | +#define _BITS_UINTN_IDENTITY_H 1 | |
| 25 | + | |
| 26 | +#include <bits/types.h> | |
| 27 | + | |
| 28 | +/* These inline functions are to ensure the appropriate type | |
| 29 | + conversions and associated diagnostics from macros that convert to | |
| 30 | + a given endianness. */ | |
| 31 | + | |
| 32 | +static __inline __uint16_t | |
| 33 | +__uint16_identity (__uint16_t __x) | |
| 34 | +{ | |
| 35 | + return __x; | |
| 36 | +} | |
| 37 | + | |
| 38 | +static __inline __uint32_t | |
| 39 | +__uint32_identity (__uint32_t __x) | |
| 40 | +{ | |
| 41 | + return __x; | |
| 42 | +} | |
| 43 | + | |
| 44 | +static __inline __uint64_t | |
| 45 | +__uint64_identity (__uint64_t __x) | |
| 46 | +{ | |
| 47 | + return __x; | |
| 48 | +} | |
| 49 | + | |
| 50 | +#endif /* _BITS_UINTN_IDENTITY_H. */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@uintn-identity.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@uintn-identity.h.blob differ Large diff collapsed, click to expand
+28 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@utsname.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,28 @@ | ||
| 1 | +/* Copyright (C) 1995-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +#ifndef _SYS_UTSNAME_H | |
| 19 | +# error "Never include <bits/utsname.h> directly; use <sys/utsname.h> instead." | |
| 20 | +#endif | |
| 21 | + | |
| 22 | +/* Length of the entries in `struct utsname' is 65. */ | |
| 23 | +#define _UTSNAME_LENGTH 65 | |
| 24 | + | |
| 25 | +/* Linux provides as additional information in the `struct utsname' | |
| 26 | + the name of the current domain. Define _UTSNAME_DOMAIN_LENGTH | |
| 27 | + to a value != 0 to activate this entry. */ | |
| 28 | +#define _UTSNAME_DOMAIN_LENGTH _UTSNAME_LENGTH |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@utsname.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@utsname.h.blob differ Large diff collapsed, click to expand
+39 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@waitflags.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,39 @@ | ||
| 1 | +/* Definitions of flag bits for `waitpid' et al. | |
| 2 | + Copyright (C) 1992-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#if !defined _SYS_WAIT_H && !defined _STDLIB_H | |
| 20 | +# error "Never include <bits/waitflags.h> directly; use <sys/wait.h> instead." | |
| 21 | +#endif | |
| 22 | + | |
| 23 | + | |
| 24 | +/* Bits in the third argument to `waitpid'. */ | |
| 25 | +#define WNOHANG 1 /* Don't block waiting. */ | |
| 26 | +#define WUNTRACED 2 /* Report status of stopped children. */ | |
| 27 | + | |
| 28 | +/* Bits in the fourth argument to `waitid'. */ | |
| 29 | +#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 | |
| 30 | +# define WSTOPPED 2 /* Report stopped child (same as WUNTRACED). */ | |
| 31 | +# define WEXITED 4 /* Report dead child. */ | |
| 32 | +# define WCONTINUED 8 /* Report continued child. */ | |
| 33 | +# define WNOWAIT 0x01000000 /* Don't reap, just poll status. */ | |
| 34 | +#endif | |
| 35 | + | |
| 36 | +#define __WNOTHREAD 0x20000000 /* Don't wait on children of other threads | |
| 37 | + in this group */ | |
| 38 | +#define __WALL 0x40000000 /* Wait for any child. */ | |
| 39 | +#define __WCLONE 0x80000000 /* Wait for cloned process. */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@waitflags.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@waitflags.h.blob differ Large diff collapsed, click to expand
+59 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@waitstatus.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,59 @@ | ||
| 1 | +/* Definitions of status bits for `wait' et al. | |
| 2 | + Copyright (C) 1992-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#if !defined _SYS_WAIT_H && !defined _STDLIB_H | |
| 20 | +# error "Never include <bits/waitstatus.h> directly; use <sys/wait.h> instead." | |
| 21 | +#endif | |
| 22 | + | |
| 23 | + | |
| 24 | +/* Everything extant so far uses these same bits. */ | |
| 25 | + | |
| 26 | + | |
| 27 | +/* If WIFEXITED(STATUS), the low-order 8 bits of the status. */ | |
| 28 | +#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8) | |
| 29 | + | |
| 30 | +/* If WIFSIGNALED(STATUS), the terminating signal. */ | |
| 31 | +#define __WTERMSIG(status) ((status) & 0x7f) | |
| 32 | + | |
| 33 | +/* If WIFSTOPPED(STATUS), the signal that stopped the child. */ | |
| 34 | +#define __WSTOPSIG(status) __WEXITSTATUS(status) | |
| 35 | + | |
| 36 | +/* Nonzero if STATUS indicates normal termination. */ | |
| 37 | +#define __WIFEXITED(status) (__WTERMSIG(status) == 0) | |
| 38 | + | |
| 39 | +/* Nonzero if STATUS indicates termination by a signal. */ | |
| 40 | +#define __WIFSIGNALED(status) \ | |
| 41 | + (((signed char) (((status) & 0x7f) + 1) >> 1) > 0) | |
| 42 | + | |
| 43 | +/* Nonzero if STATUS indicates the child is stopped. */ | |
| 44 | +#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f) | |
| 45 | + | |
| 46 | +/* Nonzero if STATUS indicates the child continued after a stop. We only | |
| 47 | + define this if <bits/waitflags.h> provides the WCONTINUED flag bit. */ | |
| 48 | +#ifdef WCONTINUED | |
| 49 | +# define __WIFCONTINUED(status) ((status) == __W_CONTINUED) | |
| 50 | +#endif | |
| 51 | + | |
| 52 | +/* Nonzero if STATUS indicates the child dumped core. */ | |
| 53 | +#define __WCOREDUMP(status) ((status) & __WCOREFLAG) | |
| 54 | + | |
| 55 | +/* Macros for constructing status values. */ | |
| 56 | +#define __W_EXITCODE(ret, sig) ((ret) << 8 | (sig)) | |
| 57 | +#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f) | |
| 58 | +#define __W_CONTINUED 0xffff | |
| 59 | +#define __WCOREFLAG 0x80 |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@waitstatus.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@waitstatus.h.blob differ Large diff collapsed, click to expand
+16 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@wordsize.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,16 @@ | ||
| 1 | +/* Determine the wordsize from the preprocessor defines. */ | |
| 2 | + | |
| 3 | +#if defined __x86_64__ && !defined __ILP32__ | |
| 4 | +# define __WORDSIZE 64 | |
| 5 | +#else | |
| 6 | +# define __WORDSIZE 32 | |
| 7 | +#define __WORDSIZE32_SIZE_ULONG 0 | |
| 8 | +#define __WORDSIZE32_PTRDIFF_LONG 0 | |
| 9 | +#endif | |
| 10 | + | |
| 11 | +#define __WORDSIZE_TIME64_COMPAT32 1 | |
| 12 | + | |
| 13 | +#ifdef __x86_64__ | |
| 14 | +/* Both x86-64 and x32 use the 64-bit system call interface. */ | |
| 15 | +# define __SYSCALL_WORDSIZE 64 | |
| 16 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@wordsize.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@bits@wordsize.h.blob differ Large diff collapsed, click to expand
+72 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@endian.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,72 @@ | ||
| 1 | +/* Copyright (C) 1992-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +#ifndef _ENDIAN_H | |
| 19 | +#define _ENDIAN_H 1 | |
| 20 | + | |
| 21 | +#include <features.h> | |
| 22 | + | |
| 23 | +/* Get the definitions of __*_ENDIAN, __BYTE_ORDER, and __FLOAT_WORD_ORDER. */ | |
| 24 | +#include <bits/endian.h> | |
| 25 | + | |
| 26 | +#ifdef __USE_MISC | |
| 27 | +# define LITTLE_ENDIAN __LITTLE_ENDIAN | |
| 28 | +# define BIG_ENDIAN __BIG_ENDIAN | |
| 29 | +# define PDP_ENDIAN __PDP_ENDIAN | |
| 30 | +# define BYTE_ORDER __BYTE_ORDER | |
| 31 | +#endif | |
| 32 | + | |
| 33 | +#if defined __USE_MISC && !defined __ASSEMBLER__ | |
| 34 | +/* Conversion interfaces. */ | |
| 35 | +# include <bits/byteswap.h> | |
| 36 | +# include <bits/uintn-identity.h> | |
| 37 | + | |
| 38 | +# if __BYTE_ORDER == __LITTLE_ENDIAN | |
| 39 | +# define htobe16(x) __bswap_16 (x) | |
| 40 | +# define htole16(x) __uint16_identity (x) | |
| 41 | +# define be16toh(x) __bswap_16 (x) | |
| 42 | +# define le16toh(x) __uint16_identity (x) | |
| 43 | + | |
| 44 | +# define htobe32(x) __bswap_32 (x) | |
| 45 | +# define htole32(x) __uint32_identity (x) | |
| 46 | +# define be32toh(x) __bswap_32 (x) | |
| 47 | +# define le32toh(x) __uint32_identity (x) | |
| 48 | + | |
| 49 | +# define htobe64(x) __bswap_64 (x) | |
| 50 | +# define htole64(x) __uint64_identity (x) | |
| 51 | +# define be64toh(x) __bswap_64 (x) | |
| 52 | +# define le64toh(x) __uint64_identity (x) | |
| 53 | + | |
| 54 | +# else | |
| 55 | +# define htobe16(x) __uint16_identity (x) | |
| 56 | +# define htole16(x) __bswap_16 (x) | |
| 57 | +# define be16toh(x) __uint16_identity (x) | |
| 58 | +# define le16toh(x) __bswap_16 (x) | |
| 59 | + | |
| 60 | +# define htobe32(x) __uint32_identity (x) | |
| 61 | +# define htole32(x) __bswap_32 (x) | |
| 62 | +# define be32toh(x) __uint32_identity (x) | |
| 63 | +# define le32toh(x) __bswap_32 (x) | |
| 64 | + | |
| 65 | +# define htobe64(x) __uint64_identity (x) | |
| 66 | +# define htole64(x) __bswap_64 (x) | |
| 67 | +# define be64toh(x) __uint64_identity (x) | |
| 68 | +# define le64toh(x) __bswap_64 (x) | |
| 69 | +# endif | |
| 70 | +#endif | |
| 71 | + | |
| 72 | +#endif /* endian.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@endian.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@endian.h.blob differ Large diff collapsed, click to expand
+42 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@features-time64.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,42 @@ | ||
| 1 | +/* Features part to handle 64-bit time_t support. | |
| 2 | + Copyright (C) 2021-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +/* We need to know the word size in order to check the time size. */ | |
| 20 | +#include <bits/wordsize.h> | |
| 21 | +#include <bits/timesize.h> | |
| 22 | + | |
| 23 | +#if defined _TIME_BITS | |
| 24 | +# if _TIME_BITS == 64 | |
| 25 | +# if ! defined (_FILE_OFFSET_BITS) || _FILE_OFFSET_BITS != 64 | |
| 26 | +# error "_TIME_BITS=64 is allowed only with _FILE_OFFSET_BITS=64" | |
| 27 | +# endif | |
| 28 | +# define __USE_TIME_BITS64 1 | |
| 29 | +# elif _TIME_BITS == 32 | |
| 30 | +# if __TIMESIZE > 32 | |
| 31 | +# error "_TIME_BITS=32 is not compatible with __TIMESIZE > 32" | |
| 32 | +# endif | |
| 33 | +# else | |
| 34 | +# error Invalid _TIME_BITS value (can only be 32 or 64-bit) | |
| 35 | +# endif | |
| 36 | +#elif __TIMESIZE == 64 | |
| 37 | +# define __USE_TIME_BITS64 1 | |
| 38 | +#endif | |
| 39 | + | |
| 40 | +#if defined __USE_TIME_BITS64 && __TIMESIZE == 32 | |
| 41 | +# define __USE_TIME64_REDIRECTS 1 | |
| 42 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@features-time64.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@features-time64.h.blob differ Large diff collapsed, click to expand
+551 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@features.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,551 @@ | ||
| 1 | +/* Copyright (C) 1991-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +#ifndef _FEATURES_H | |
| 19 | +#define _FEATURES_H 1 | |
| 20 | + | |
| 21 | +/* These are defined by the user (or the compiler) | |
| 22 | + to specify the desired environment: | |
| 23 | + | |
| 24 | + __STRICT_ANSI__ ISO Standard C. | |
| 25 | + _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. | |
| 26 | + _ISOC11_SOURCE Extensions to ISO C99 from ISO C11. | |
| 27 | + _ISOC23_SOURCE Extensions to ISO C99 from ISO C23. | |
| 28 | + _ISOC2X_SOURCE Old name for _ISOC23_SOURCE. | |
| 29 | + _ISOC2Y_SOURCE Extensions to ISO C23 from ISO C2Y. | |
| 30 | + __STDC_WANT_LIB_EXT2__ | |
| 31 | + Extensions to ISO C99 from TR 27431-2:2010. | |
| 32 | + __STDC_WANT_IEC_60559_BFP_EXT__ | |
| 33 | + Extensions to ISO C11 from TS 18661-1:2014. | |
| 34 | + __STDC_WANT_IEC_60559_FUNCS_EXT__ | |
| 35 | + Extensions to ISO C11 from TS 18661-4:2015. | |
| 36 | + __STDC_WANT_IEC_60559_TYPES_EXT__ | |
| 37 | + Extensions to ISO C11 from TS 18661-3:2015. | |
| 38 | + __STDC_WANT_IEC_60559_EXT__ | |
| 39 | + ISO C23 interfaces defined only in Annex F. | |
| 40 | + | |
| 41 | + _POSIX_SOURCE IEEE Std 1003.1. | |
| 42 | + _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; | |
| 43 | + if >=199309L, add IEEE Std 1003.1b-1993; | |
| 44 | + if >=199506L, add IEEE Std 1003.1c-1995; | |
| 45 | + if >=200112L, all of IEEE 1003.1-2004 | |
| 46 | + if >=200809L, all of IEEE 1003.1-2008 | |
| 47 | + _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if | |
| 48 | + Single Unix conformance is wanted, to 600 for the | |
| 49 | + sixth revision, to 700 for the seventh revision. | |
| 50 | + _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. | |
| 51 | + _LARGEFILE_SOURCE Some more functions for correct standard I/O. | |
| 52 | + _LARGEFILE64_SOURCE Additional functionality from LFS for large files. | |
| 53 | + _FILE_OFFSET_BITS=N Select default filesystem interface. | |
| 54 | + _ATFILE_SOURCE Additional *at interfaces. | |
| 55 | + _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant) | |
| 56 | + MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN. | |
| 57 | + _GNU_SOURCE All of the above, plus GNU extensions. | |
| 58 | + _DEFAULT_SOURCE The default set of features (taking precedence over | |
| 59 | + __STRICT_ANSI__). | |
| 60 | + | |
| 61 | + _FORTIFY_SOURCE Add security hardening to many library functions. | |
| 62 | + Set to 1, 2 or 3; 3 performs stricter checks than 2, which | |
| 63 | + performs stricter checks than 1. | |
| 64 | + | |
| 65 | + _REENTRANT, _THREAD_SAFE | |
| 66 | + Obsolete; equivalent to _POSIX_C_SOURCE=199506L. | |
| 67 | + | |
| 68 | + The `-ansi' switch to the GNU C compiler, and standards conformance | |
| 69 | + options such as `-std=c99', define __STRICT_ANSI__. If none of | |
| 70 | + these are defined, or if _DEFAULT_SOURCE is defined, the default is | |
| 71 | + to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to | |
| 72 | + 200809L, as well as enabling miscellaneous functions from BSD and | |
| 73 | + SVID. If more than one of these are defined, they accumulate. For | |
| 74 | + example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together | |
| 75 | + give you ISO C, 1003.1, and 1003.2, but nothing else. | |
| 76 | + | |
| 77 | + These are defined by this file and are used by the | |
| 78 | + header files to decide what to declare or define: | |
| 79 | + | |
| 80 | + __GLIBC_USE (F) Define things from feature set F. This is defined | |
| 81 | + to 1 or 0; the subsequent macros are either defined | |
| 82 | + or undefined, and those tests should be moved to | |
| 83 | + __GLIBC_USE. | |
| 84 | + __USE_ISOC11 Define ISO C11 things. | |
| 85 | + __USE_ISOC99 Define ISO C99 things. | |
| 86 | + __USE_ISOC95 Define ISO C90 AMD1 (C95) things. | |
| 87 | + __USE_ISOCXX11 Define ISO C++11 things. | |
| 88 | + __USE_POSIX Define IEEE Std 1003.1 things. | |
| 89 | + __USE_POSIX2 Define IEEE Std 1003.2 things. | |
| 90 | + __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. | |
| 91 | + __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. | |
| 92 | + __USE_XOPEN Define XPG things. | |
| 93 | + __USE_XOPEN_EXTENDED Define X/Open Unix things. | |
| 94 | + __USE_UNIX98 Define Single Unix V2 things. | |
| 95 | + __USE_XOPEN2K Define XPG6 things. | |
| 96 | + __USE_XOPEN2KXSI Define XPG6 XSI things. | |
| 97 | + __USE_XOPEN2K8 Define XPG7 things. | |
| 98 | + __USE_XOPEN2K8XSI Define XPG7 XSI things. | |
| 99 | + __USE_LARGEFILE Define correct standard I/O things. | |
| 100 | + __USE_LARGEFILE64 Define LFS things with separate names. | |
| 101 | + __USE_FILE_OFFSET64 Define 64bit interface as default. | |
| 102 | + __USE_MISC Define things from 4.3BSD or System V Unix. | |
| 103 | + __USE_ATFILE Define *at interfaces and AT_* constants for them. | |
| 104 | + __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant) | |
| 105 | + MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN. | |
| 106 | + __USE_GNU Define GNU extensions. | |
| 107 | + __USE_FORTIFY_LEVEL Additional security measures used, according to level. | |
| 108 | + | |
| 109 | + The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are | |
| 110 | + defined by this file unconditionally. `__GNU_LIBRARY__' is provided | |
| 111 | + only for compatibility. All new code should use the other symbols | |
| 112 | + to test for features. | |
| 113 | + | |
| 114 | + All macros listed above as possibly being defined by this file are | |
| 115 | + explicitly undefined if they are not explicitly defined. | |
| 116 | + Feature-test macros that are not defined by the user or compiler | |
| 117 | + but are implied by the other feature-test macros defined (or by the | |
| 118 | + lack of any definitions) are defined by the file. | |
| 119 | + | |
| 120 | + ISO C feature test macros depend on the definition of the macro | |
| 121 | + when an affected header is included, not when the first system | |
| 122 | + header is included, and so they are handled in | |
| 123 | + <bits/libc-header-start.h>, which does not have a multiple include | |
| 124 | + guard. Feature test macros that can be handled from the first | |
| 125 | + system header included are handled here. */ | |
| 126 | + | |
| 127 | + | |
| 128 | +/* Undefine everything, so we get a clean slate. */ | |
| 129 | +#undef __USE_ISOC11 | |
| 130 | +#undef __USE_ISOC99 | |
| 131 | +#undef __USE_ISOC95 | |
| 132 | +#undef __USE_ISOCXX11 | |
| 133 | +#undef __USE_POSIX | |
| 134 | +#undef __USE_POSIX2 | |
| 135 | +#undef __USE_POSIX199309 | |
| 136 | +#undef __USE_POSIX199506 | |
| 137 | +#undef __USE_XOPEN | |
| 138 | +#undef __USE_XOPEN_EXTENDED | |
| 139 | +#undef __USE_UNIX98 | |
| 140 | +#undef __USE_XOPEN2K | |
| 141 | +#undef __USE_XOPEN2KXSI | |
| 142 | +#undef __USE_XOPEN2K8 | |
| 143 | +#undef __USE_XOPEN2K8XSI | |
| 144 | +#undef __USE_LARGEFILE | |
| 145 | +#undef __USE_LARGEFILE64 | |
| 146 | +#undef __USE_FILE_OFFSET64 | |
| 147 | +#undef __USE_MISC | |
| 148 | +#undef __USE_ATFILE | |
| 149 | +#undef __USE_DYNAMIC_STACK_SIZE | |
| 150 | +#undef __USE_GNU | |
| 151 | +#undef __USE_FORTIFY_LEVEL | |
| 152 | +#undef __KERNEL_STRICT_NAMES | |
| 153 | +#undef __GLIBC_USE_ISOC23 | |
| 154 | +#undef __GLIBC_USE_ISOC2Y | |
| 155 | +#undef __GLIBC_USE_DEPRECATED_GETS | |
| 156 | +#undef __GLIBC_USE_DEPRECATED_SCANF | |
| 157 | +#undef __GLIBC_USE_C23_STRTOL | |
| 158 | + | |
| 159 | +/* Suppress kernel-name space pollution unless user expressedly asks | |
| 160 | + for it. */ | |
| 161 | +#ifndef _LOOSE_KERNEL_NAMES | |
| 162 | +# define __KERNEL_STRICT_NAMES | |
| 163 | +#endif | |
| 164 | + | |
| 165 | +/* Convenience macro to test the version of gcc. | |
| 166 | + Use like this: | |
| 167 | + #if __GNUC_PREREQ (2,8) | |
| 168 | + ... code requiring gcc 2.8 or later ... | |
| 169 | + #endif | |
| 170 | + Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was | |
| 171 | + added in 2.0. */ | |
| 172 | +#if defined __GNUC__ && defined __GNUC_MINOR__ | |
| 173 | +# define __GNUC_PREREQ(maj, min) \ | |
| 174 | + ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) | |
| 175 | +#else | |
| 176 | +# define __GNUC_PREREQ(maj, min) 0 | |
| 177 | +#endif | |
| 178 | + | |
| 179 | +/* Similarly for clang. Features added to GCC after version 4.2 may | |
| 180 | + or may not also be available in clang, and clang's definitions of | |
| 181 | + __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such | |
| 182 | + features can be queried via __has_extension/__has_feature. */ | |
| 183 | +#if defined __clang_major__ && defined __clang_minor__ | |
| 184 | +# define __glibc_clang_prereq(maj, min) \ | |
| 185 | + ((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min)) | |
| 186 | +#else | |
| 187 | +# define __glibc_clang_prereq(maj, min) 0 | |
| 188 | +#endif | |
| 189 | + | |
| 190 | +/* Whether to use feature set F. */ | |
| 191 | +#define __GLIBC_USE(F) __GLIBC_USE_ ## F | |
| 192 | + | |
| 193 | +/* _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for | |
| 194 | + _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not | |
| 195 | + issue a warning; the expectation is that the source is being | |
| 196 | + transitioned to use the new macro. */ | |
| 197 | +#if (defined _BSD_SOURCE || defined _SVID_SOURCE) \ | |
| 198 | + && !defined _DEFAULT_SOURCE | |
| 199 | +# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" | |
| 200 | +# undef _DEFAULT_SOURCE | |
| 201 | +# define _DEFAULT_SOURCE 1 | |
| 202 | +#endif | |
| 203 | + | |
| 204 | +/* Remap the old name _ISOC2X_SOURCE to _ISOC23_SOURCE. */ | |
| 205 | +#ifdef _ISOC2X_SOURCE | |
| 206 | +# undef _ISOC2X_SOURCE | |
| 207 | +# undef _ISOC23_SOURCE | |
| 208 | +# define _ISOC23_SOURCE 1 | |
| 209 | +#endif | |
| 210 | + | |
| 211 | +/* If _GNU_SOURCE was defined by the user, turn on all the other features. */ | |
| 212 | +#ifdef _GNU_SOURCE | |
| 213 | +# undef _ISOC95_SOURCE | |
| 214 | +# define _ISOC95_SOURCE 1 | |
| 215 | +# undef _ISOC99_SOURCE | |
| 216 | +# define _ISOC99_SOURCE 1 | |
| 217 | +# undef _ISOC11_SOURCE | |
| 218 | +# define _ISOC11_SOURCE 1 | |
| 219 | +# undef _ISOC23_SOURCE | |
| 220 | +# define _ISOC23_SOURCE 1 | |
| 221 | +# undef _ISOC2Y_SOURCE | |
| 222 | +# define _ISOC2Y_SOURCE 1 | |
| 223 | +# undef _POSIX_SOURCE | |
| 224 | +# define _POSIX_SOURCE 1 | |
| 225 | +# undef _POSIX_C_SOURCE | |
| 226 | +# define _POSIX_C_SOURCE 200809L | |
| 227 | +# undef _XOPEN_SOURCE | |
| 228 | +# define _XOPEN_SOURCE 700 | |
| 229 | +# undef _XOPEN_SOURCE_EXTENDED | |
| 230 | +# define _XOPEN_SOURCE_EXTENDED 1 | |
| 231 | +# undef _LARGEFILE64_SOURCE | |
| 232 | +# define _LARGEFILE64_SOURCE 1 | |
| 233 | +# undef _DEFAULT_SOURCE | |
| 234 | +# define _DEFAULT_SOURCE 1 | |
| 235 | +# undef _ATFILE_SOURCE | |
| 236 | +# define _ATFILE_SOURCE 1 | |
| 237 | +# undef _DYNAMIC_STACK_SIZE_SOURCE | |
| 238 | +# define _DYNAMIC_STACK_SIZE_SOURCE 1 | |
| 239 | +#endif | |
| 240 | + | |
| 241 | +/* If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined, | |
| 242 | + define _DEFAULT_SOURCE. */ | |
| 243 | +#if (defined _DEFAULT_SOURCE \ | |
| 244 | + || (!defined __STRICT_ANSI__ \ | |
| 245 | + && !defined _ISOC99_SOURCE && !defined _ISOC11_SOURCE \ | |
| 246 | + && !defined _ISOC23_SOURCE && !defined _ISOC2Y_SOURCE \ | |
| 247 | + && !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE \ | |
| 248 | + && !defined _XOPEN_SOURCE)) | |
| 249 | +# undef _DEFAULT_SOURCE | |
| 250 | +# define _DEFAULT_SOURCE 1 | |
| 251 | +#endif | |
| 252 | + | |
| 253 | +/* This is to enable the ISO C2Y extension. */ | |
| 254 | +#if (defined _ISOC2Y_SOURCE \ | |
| 255 | + || (defined __STDC_VERSION__ && __STDC_VERSION__ > 202311L)) | |
| 256 | +# define __GLIBC_USE_ISOC2Y 1 | |
| 257 | +#else | |
| 258 | +# define __GLIBC_USE_ISOC2Y 0 | |
| 259 | +#endif | |
| 260 | + | |
| 261 | +/* This is to enable the ISO C23 extension. */ | |
| 262 | +#if (defined _ISOC23_SOURCE || defined _ISOC2Y_SOURCE \ | |
| 263 | + || (defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L)) | |
| 264 | +# define __GLIBC_USE_ISOC23 1 | |
| 265 | +#else | |
| 266 | +# define __GLIBC_USE_ISOC23 0 | |
| 267 | +#endif | |
| 268 | + | |
| 269 | +/* This is to enable the ISO C11 extension. */ | |
| 270 | +#if (defined _ISOC11_SOURCE || defined _ISOC23_SOURCE \ | |
| 271 | + || defined _ISOC2Y_SOURCE \ | |
| 272 | + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L)) | |
| 273 | +# define __USE_ISOC11 1 | |
| 274 | +#endif | |
| 275 | + | |
| 276 | +/* This is to enable the ISO C99 extension. */ | |
| 277 | +#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \ | |
| 278 | + || defined _ISOC23_SOURCE || defined _ISOC2Y_SOURCE \ | |
| 279 | + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)) | |
| 280 | +# define __USE_ISOC99 1 | |
| 281 | +#endif | |
| 282 | + | |
| 283 | +/* This is to enable the ISO C90 Amendment 1:1995 extension. */ | |
| 284 | +#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \ | |
| 285 | + || defined _ISOC23_SOURCE || defined _ISOC2Y_SOURCE \ | |
| 286 | + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L)) | |
| 287 | +# define __USE_ISOC95 1 | |
| 288 | +#endif | |
| 289 | + | |
| 290 | +#ifdef __cplusplus | |
| 291 | +/* This is to enable compatibility for ISO C++17. */ | |
| 292 | +# if __cplusplus >= 201703L | |
| 293 | +# define __USE_ISOC11 1 | |
| 294 | +# endif | |
| 295 | +/* This is to enable compatibility for ISO C++11. | |
| 296 | + Check the temporary macro for now, too. */ | |
| 297 | +# if __cplusplus >= 201103L || defined __GXX_EXPERIMENTAL_CXX0X__ | |
| 298 | +# define __USE_ISOCXX11 1 | |
| 299 | +# define __USE_ISOC99 1 | |
| 300 | +# endif | |
| 301 | +#endif | |
| 302 | + | |
| 303 | +/* If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE | |
| 304 | + is defined, use POSIX.1-2008 (or another version depending on | |
| 305 | + _XOPEN_SOURCE). */ | |
| 306 | +#ifdef _DEFAULT_SOURCE | |
| 307 | +# if !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE | |
| 308 | +# define __USE_POSIX_IMPLICITLY 1 | |
| 309 | +# endif | |
| 310 | +# undef _POSIX_SOURCE | |
| 311 | +# define _POSIX_SOURCE 1 | |
| 312 | +# undef _POSIX_C_SOURCE | |
| 313 | +# define _POSIX_C_SOURCE 200809L | |
| 314 | +#endif | |
| 315 | + | |
| 316 | +#if ((!defined __STRICT_ANSI__ \ | |
| 317 | + || (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500)) \ | |
| 318 | + && !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE) | |
| 319 | +# define _POSIX_SOURCE 1 | |
| 320 | +# if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500 | |
| 321 | +# define _POSIX_C_SOURCE 2 | |
| 322 | +# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 600 | |
| 323 | +# define _POSIX_C_SOURCE 199506L | |
| 324 | +# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 700 | |
| 325 | +# define _POSIX_C_SOURCE 200112L | |
| 326 | +# else | |
| 327 | +# define _POSIX_C_SOURCE 200809L | |
| 328 | +# endif | |
| 329 | +# define __USE_POSIX_IMPLICITLY 1 | |
| 330 | +#endif | |
| 331 | + | |
| 332 | +/* Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be | |
| 333 | + defined in all multithreaded code. GNU libc has not required this | |
| 334 | + for many years. We now treat them as compatibility synonyms for | |
| 335 | + _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with | |
| 336 | + comprehensive support for multithreaded code. Using them never | |
| 337 | + lowers the selected level of POSIX conformance, only raises it. */ | |
| 338 | +#if ((!defined _POSIX_C_SOURCE || (_POSIX_C_SOURCE - 0) < 199506L) \ | |
| 339 | + && (defined _REENTRANT || defined _THREAD_SAFE)) | |
| 340 | +# define _POSIX_SOURCE 1 | |
| 341 | +# undef _POSIX_C_SOURCE | |
| 342 | +# define _POSIX_C_SOURCE 199506L | |
| 343 | +#endif | |
| 344 | + | |
| 345 | +#if (defined _POSIX_SOURCE \ | |
| 346 | + || (defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 1) \ | |
| 347 | + || defined _XOPEN_SOURCE) | |
| 348 | +# define __USE_POSIX 1 | |
| 349 | +#endif | |
| 350 | + | |
| 351 | +#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE | |
| 352 | +# define __USE_POSIX2 1 | |
| 353 | +#endif | |
| 354 | + | |
| 355 | +#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L | |
| 356 | +# define __USE_POSIX199309 1 | |
| 357 | +#endif | |
| 358 | + | |
| 359 | +#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199506L | |
| 360 | +# define __USE_POSIX199506 1 | |
| 361 | +#endif | |
| 362 | + | |
| 363 | +#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200112L | |
| 364 | +# define __USE_XOPEN2K 1 | |
| 365 | +# undef __USE_ISOC95 | |
| 366 | +# define __USE_ISOC95 1 | |
| 367 | +# undef __USE_ISOC99 | |
| 368 | +# define __USE_ISOC99 1 | |
| 369 | +#endif | |
| 370 | + | |
| 371 | +#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L | |
| 372 | +# define __USE_XOPEN2K8 1 | |
| 373 | +# undef _ATFILE_SOURCE | |
| 374 | +# define _ATFILE_SOURCE 1 | |
| 375 | +#endif | |
| 376 | + | |
| 377 | +#ifdef _XOPEN_SOURCE | |
| 378 | +# define __USE_XOPEN 1 | |
| 379 | +# if (_XOPEN_SOURCE - 0) >= 500 | |
| 380 | +# define __USE_XOPEN_EXTENDED 1 | |
| 381 | +# define __USE_UNIX98 1 | |
| 382 | +# undef _LARGEFILE_SOURCE | |
| 383 | +# define _LARGEFILE_SOURCE 1 | |
| 384 | +# if (_XOPEN_SOURCE - 0) >= 600 | |
| 385 | +# if (_XOPEN_SOURCE - 0) >= 700 | |
| 386 | +# define __USE_XOPEN2K8 1 | |
| 387 | +# define __USE_XOPEN2K8XSI 1 | |
| 388 | +# endif | |
| 389 | +# define __USE_XOPEN2K 1 | |
| 390 | +# define __USE_XOPEN2KXSI 1 | |
| 391 | +# undef __USE_ISOC95 | |
| 392 | +# define __USE_ISOC95 1 | |
| 393 | +# undef __USE_ISOC99 | |
| 394 | +# define __USE_ISOC99 1 | |
| 395 | +# endif | |
| 396 | +# else | |
| 397 | +# ifdef _XOPEN_SOURCE_EXTENDED | |
| 398 | +# define __USE_XOPEN_EXTENDED 1 | |
| 399 | +# endif | |
| 400 | +# endif | |
| 401 | +#endif | |
| 402 | + | |
| 403 | +#ifdef _LARGEFILE_SOURCE | |
| 404 | +# define __USE_LARGEFILE 1 | |
| 405 | +#endif | |
| 406 | + | |
| 407 | +#ifdef _LARGEFILE64_SOURCE | |
| 408 | +# define __USE_LARGEFILE64 1 | |
| 409 | +#endif | |
| 410 | + | |
| 411 | +#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64 | |
| 412 | +# define __USE_FILE_OFFSET64 1 | |
| 413 | +#endif | |
| 414 | + | |
| 415 | +#include <features-time64.h> | |
| 416 | + | |
| 417 | +#if defined _DEFAULT_SOURCE | |
| 418 | +# define __USE_MISC 1 | |
| 419 | +#endif | |
| 420 | + | |
| 421 | +#ifdef _ATFILE_SOURCE | |
| 422 | +# define __USE_ATFILE 1 | |
| 423 | +#endif | |
| 424 | + | |
| 425 | +#ifdef _DYNAMIC_STACK_SIZE_SOURCE | |
| 426 | +# define __USE_DYNAMIC_STACK_SIZE 1 | |
| 427 | +#endif | |
| 428 | + | |
| 429 | +#ifdef _GNU_SOURCE | |
| 430 | +# define __USE_GNU 1 | |
| 431 | +#endif | |
| 432 | + | |
| 433 | +#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 | |
| 434 | +# if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0 | |
| 435 | +# warning _FORTIFY_SOURCE requires compiling with optimization (-O) | |
| 436 | +# elif !__GNUC_PREREQ (4, 1) | |
| 437 | +# warning _FORTIFY_SOURCE requires GCC 4.1 or later | |
| 438 | +# elif _FORTIFY_SOURCE > 2 && (__glibc_clang_prereq (9, 0) \ | |
| 439 | + || __GNUC_PREREQ (12, 0)) | |
| 440 | + | |
| 441 | +# if _FORTIFY_SOURCE > 3 | |
| 442 | +# warning _FORTIFY_SOURCE > 3 is treated like 3 on this platform | |
| 443 | +# endif | |
| 444 | +# define __USE_FORTIFY_LEVEL 3 | |
| 445 | +# elif _FORTIFY_SOURCE > 1 | |
| 446 | +# if _FORTIFY_SOURCE > 2 | |
| 447 | +# warning _FORTIFY_SOURCE > 2 is treated like 2 on this platform | |
| 448 | +# endif | |
| 449 | +# define __USE_FORTIFY_LEVEL 2 | |
| 450 | +# else | |
| 451 | +# define __USE_FORTIFY_LEVEL 1 | |
| 452 | +# endif | |
| 453 | +#endif | |
| 454 | +#ifndef __USE_FORTIFY_LEVEL | |
| 455 | +# define __USE_FORTIFY_LEVEL 0 | |
| 456 | +#endif | |
| 457 | + | |
| 458 | +/* The function 'gets' existed in C89, but is impossible to use | |
| 459 | + safely. It has been removed from ISO C11 and ISO C++14. Note: for | |
| 460 | + compatibility with various implementations of <cstdio>, this test | |
| 461 | + must consider only the value of __cplusplus when compiling C++. */ | |
| 462 | +#if defined __cplusplus ? __cplusplus >= 201402L : defined __USE_ISOC11 | |
| 463 | +# define __GLIBC_USE_DEPRECATED_GETS 0 | |
| 464 | +#else | |
| 465 | +# define __GLIBC_USE_DEPRECATED_GETS 1 | |
| 466 | +#endif | |
| 467 | + | |
| 468 | +/* GNU formerly extended the scanf functions with modified format | |
| 469 | + specifiers %as, %aS, and %a[...] that allocate a buffer for the | |
| 470 | + input using malloc. This extension conflicts with ISO C99, which | |
| 471 | + defines %a as a standalone format specifier that reads a floating- | |
| 472 | + point number; moreover, POSIX.1-2008 provides the same feature | |
| 473 | + using the modifier letter 'm' instead (%ms, %mS, %m[...]). | |
| 474 | + | |
| 475 | + We now follow C99 unless GNU extensions are active and the compiler | |
| 476 | + is specifically in C89 or C++98 mode (strict or not). For | |
| 477 | + instance, with GCC, -std=gnu11 will have C99-compliant scanf with | |
| 478 | + or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the | |
| 479 | + old extension. */ | |
| 480 | +#if (defined __USE_GNU \ | |
| 481 | + && (defined __cplusplus \ | |
| 482 | + ? (__cplusplus < 201103L && !defined __GXX_EXPERIMENTAL_CXX0X__) \ | |
| 483 | + : (!defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L))) | |
| 484 | +# define __GLIBC_USE_DEPRECATED_SCANF 1 | |
| 485 | +#else | |
| 486 | +# define __GLIBC_USE_DEPRECATED_SCANF 0 | |
| 487 | +#endif | |
| 488 | + | |
| 489 | +/* ISO C23 added support for a 0b or 0B prefix on binary constants as | |
| 490 | + inputs to strtol-family functions (base 0 or 2). This macro is | |
| 491 | + used to condition redirection in headers to allow that redirection | |
| 492 | + to be disabled when building those functions, despite _GNU_SOURCE | |
| 493 | + being defined. */ | |
| 494 | +#if __GLIBC_USE (ISOC23) | |
| 495 | +# define __GLIBC_USE_C23_STRTOL 1 | |
| 496 | +#else | |
| 497 | +# define __GLIBC_USE_C23_STRTOL 0 | |
| 498 | +#endif | |
| 499 | + | |
| 500 | +/* Get definitions of __STDC_* predefined macros, if the compiler has | |
| 501 | + not preincluded this header automatically. */ | |
| 502 | +#include <stdc-predef.h> | |
| 503 | + | |
| 504 | +/* This macro indicates that the installed library is the GNU C Library. | |
| 505 | + For historic reasons the value now is 6 and this will stay from now | |
| 506 | + on. The use of this variable is deprecated. Use __GLIBC__ and | |
| 507 | + __GLIBC_MINOR__ now (see below) when you want to test for a specific | |
| 508 | + GNU C library version and use the values in <gnu/lib-names.h> to get | |
| 509 | + the sonames of the shared libraries. */ | |
| 510 | +#undef __GNU_LIBRARY__ | |
| 511 | +#define __GNU_LIBRARY__ 6 | |
| 512 | + | |
| 513 | +/* Major and minor version number of the GNU C library package. Use | |
| 514 | + these macros to test for features in specific releases. */ | |
| 515 | +#define __GLIBC__ 2 | |
| 516 | +#define __GLIBC_MINOR__ 42 | |
| 517 | + | |
| 518 | +#define __GLIBC_PREREQ(maj, min) \ | |
| 519 | + ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) | |
| 520 | + | |
| 521 | +/* This is here only because every header file already includes this one. */ | |
| 522 | +#ifndef __ASSEMBLER__ | |
| 523 | +# ifndef _SYS_CDEFS_H | |
| 524 | +# include <sys/cdefs.h> | |
| 525 | +# endif | |
| 526 | + | |
| 527 | +/* If we don't have __REDIRECT, prototypes will be missing if | |
| 528 | + __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */ | |
| 529 | +# if defined __USE_FILE_OFFSET64 && !defined __REDIRECT | |
| 530 | +# define __USE_LARGEFILE 1 | |
| 531 | +# define __USE_LARGEFILE64 1 | |
| 532 | +# endif | |
| 533 | + | |
| 534 | +#endif /* !ASSEMBLER */ | |
| 535 | + | |
| 536 | +/* Decide whether we can define 'extern inline' functions in headers. */ | |
| 537 | +#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \ | |
| 538 | + && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ \ | |
| 539 | + && defined __extern_inline | |
| 540 | +# define __USE_EXTERN_INLINES 1 | |
| 541 | +#endif | |
| 542 | + | |
| 543 | + | |
| 544 | +/* This is here only because every header file already includes this one. | |
| 545 | + Get the definitions of all the appropriate `__stub_FUNCTION' symbols. | |
| 546 | + <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub | |
| 547 | + that will always return failure (and set errno to ENOSYS). */ | |
| 548 | +#include <gnu/stubs.h> | |
| 549 | + | |
| 550 | + | |
| 551 | +#endif /* features.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@features.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@features.h.blob differ Large diff collapsed, click to expand
+17 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@gnu@stubs-64.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,17 @@ | ||
| 1 | +/* This file is automatically generated. | |
| 2 | + It defines a symbol `__stub_FUNCTION' for each function | |
| 3 | + in the C library which is a stub, meaning it will fail | |
| 4 | + every time called, usually setting errno to ENOSYS. */ | |
| 5 | + | |
| 6 | +#ifdef _LIBC | |
| 7 | + #error Applications may not define the macro _LIBC | |
| 8 | +#endif | |
| 9 | + | |
| 10 | +#define __stub___compat_bdflush | |
| 11 | +#define __stub_chflags | |
| 12 | +#define __stub_fchflags | |
| 13 | +#define __stub_gtty | |
| 14 | +#define __stub_revoke | |
| 15 | +#define __stub_setlogin | |
| 16 | +#define __stub_sigreturn | |
| 17 | +#define __stub_stty |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@gnu@stubs-64.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@gnu@stubs-64.h.blob differ Large diff collapsed, click to expand
+14 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@gnu@stubs.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,14 @@ | ||
| 1 | +/* This file is automatically generated. | |
| 2 | + This file selects the right generated file of `__stub_FUNCTION' macros | |
| 3 | + based on the architecture being compiled for. */ | |
| 4 | + | |
| 5 | + | |
| 6 | +#if !defined __x86_64__ | |
| 7 | +# include <gnu/stubs-32.h> | |
| 8 | +#endif | |
| 9 | +#if defined __x86_64__ && defined __LP64__ | |
| 10 | +# include <gnu/stubs-64.h> | |
| 11 | +#endif | |
| 12 | +#if defined __x86_64__ && defined __ILP32__ | |
| 13 | +# include <gnu/stubs-x32.h> | |
| 14 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@gnu@stubs.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@gnu@stubs.h.blob differ Large diff collapsed, click to expand
+64 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@stdc-predef.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,64 @@ | ||
| 1 | +/* Copyright (C) 1991-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +#ifndef _STDC_PREDEF_H | |
| 19 | +#define _STDC_PREDEF_H 1 | |
| 20 | + | |
| 21 | +/* This header is separate from features.h so that the compiler can | |
| 22 | + include it implicitly at the start of every compilation. It must | |
| 23 | + not itself include <features.h> or any other header that includes | |
| 24 | + <features.h> because the implicit include comes before any feature | |
| 25 | + test macros that may be defined in a source file before it first | |
| 26 | + explicitly includes a system header. GCC knows the name of this | |
| 27 | + header in order to preinclude it. */ | |
| 28 | + | |
| 29 | +/* glibc's intent is to support the IEC 559 math functionality, real | |
| 30 | + and complex. If the GCC (4.9 and later) predefined macros | |
| 31 | + specifying compiler intent are available, use them to determine | |
| 32 | + whether the overall intent is to support these features; otherwise, | |
| 33 | + presume an older compiler has intent to support these features and | |
| 34 | + define these macros by default. */ | |
| 35 | + | |
| 36 | +#ifdef __GCC_IEC_559 | |
| 37 | +# if __GCC_IEC_559 > 0 | |
| 38 | +# define __STDC_IEC_559__ 1 | |
| 39 | +# define __STDC_IEC_60559_BFP__ 201404L | |
| 40 | +# endif | |
| 41 | +#else | |
| 42 | +# define __STDC_IEC_559__ 1 | |
| 43 | +# define __STDC_IEC_60559_BFP__ 201404L | |
| 44 | +#endif | |
| 45 | + | |
| 46 | +#ifdef __GCC_IEC_559_COMPLEX | |
| 47 | +# if __GCC_IEC_559_COMPLEX > 0 | |
| 48 | +# define __STDC_IEC_559_COMPLEX__ 1 | |
| 49 | +# define __STDC_IEC_60559_COMPLEX__ 201404L | |
| 50 | +# endif | |
| 51 | +#else | |
| 52 | +# define __STDC_IEC_559_COMPLEX__ 1 | |
| 53 | +# define __STDC_IEC_60559_COMPLEX__ 201404L | |
| 54 | +#endif | |
| 55 | + | |
| 56 | +/* wchar_t uses Unicode 10.0.0. Version 10.0 of the Unicode Standard is | |
| 57 | + synchronized with ISO/IEC 10646:2017, fifth edition, plus | |
| 58 | + the following additions from Amendment 1 to the fifth edition: | |
| 59 | + - 56 emoji characters | |
| 60 | + - 285 hentaigana | |
| 61 | + - 3 additional Zanabazar Square characters */ | |
| 62 | +#define __STDC_ISO_10646__ 201706L | |
| 63 | + | |
| 64 | +#endif |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@stdc-predef.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@stdc-predef.h.blob differ Large diff collapsed, click to expand
+975 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@stdio.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,975 @@ | ||
| 1 | +/* Define ISO C stdio on top of C++ iostreams. | |
| 2 | + Copyright (C) 1991-2025 Free Software Foundation, Inc. | |
| 3 | + Copyright The GNU Toolchain Authors. | |
| 4 | + This file is part of the GNU C Library. | |
| 5 | + | |
| 6 | + The GNU C Library is free software; you can redistribute it and/or | |
| 7 | + modify it under the terms of the GNU Lesser General Public | |
| 8 | + License as published by the Free Software Foundation; either | |
| 9 | + version 2.1 of the License, or (at your option) any later version. | |
| 10 | + | |
| 11 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 12 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 14 | + Lesser General Public License for more details. | |
| 15 | + | |
| 16 | + You should have received a copy of the GNU Lesser General Public | |
| 17 | + License along with the GNU C Library; if not, see | |
| 18 | + <https://www.gnu.org/licenses/>. */ | |
| 19 | + | |
| 20 | +/* | |
| 21 | + * ISO C99 Standard: 7.19 Input/output <stdio.h> | |
| 22 | + */ | |
| 23 | + | |
| 24 | +#ifndef _STDIO_H | |
| 25 | +#define _STDIO_H 1 | |
| 26 | + | |
| 27 | +#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION | |
| 28 | +#include <bits/libc-header-start.h> | |
| 29 | + | |
| 30 | +__BEGIN_DECLS | |
| 31 | + | |
| 32 | +#define __need_size_t | |
| 33 | +#define __need_NULL | |
| 34 | +#include <stddef.h> | |
| 35 | + | |
| 36 | +#define __need___va_list | |
| 37 | +#include <stdarg.h> | |
| 38 | + | |
| 39 | +#include <bits/types.h> | |
| 40 | +#include <bits/types/__fpos_t.h> | |
| 41 | +#include <bits/types/__fpos64_t.h> | |
| 42 | +#include <bits/types/__FILE.h> | |
| 43 | +#include <bits/types/FILE.h> | |
| 44 | +#include <bits/types/struct_FILE.h> | |
| 45 | + | |
| 46 | +#ifdef __USE_MISC | |
| 47 | +# include <bits/types/cookie_io_functions_t.h> | |
| 48 | +#endif | |
| 49 | + | |
| 50 | +#if defined __USE_XOPEN || defined __USE_XOPEN2K8 | |
| 51 | +# ifdef __GNUC__ | |
| 52 | +# ifndef _VA_LIST_DEFINED | |
| 53 | +typedef __gnuc_va_list va_list; | |
| 54 | +# define _VA_LIST_DEFINED | |
| 55 | +# endif | |
| 56 | +# else | |
| 57 | +# include <stdarg.h> | |
| 58 | +# endif | |
| 59 | +#endif | |
| 60 | + | |
| 61 | +#if defined __USE_UNIX98 || defined __USE_XOPEN2K | |
| 62 | +# ifndef __off_t_defined | |
| 63 | +# ifndef __USE_FILE_OFFSET64 | |
| 64 | +typedef __off_t off_t; | |
| 65 | +# else | |
| 66 | +typedef __off64_t off_t; | |
| 67 | +# endif | |
| 68 | +# define __off_t_defined | |
| 69 | +# endif | |
| 70 | +# if defined __USE_LARGEFILE64 && !defined __off64_t_defined | |
| 71 | +typedef __off64_t off64_t; | |
| 72 | +# define __off64_t_defined | |
| 73 | +# endif | |
| 74 | +#endif | |
| 75 | + | |
| 76 | +#ifdef __USE_XOPEN2K8 | |
| 77 | +# ifndef __ssize_t_defined | |
| 78 | +typedef __ssize_t ssize_t; | |
| 79 | +# define __ssize_t_defined | |
| 80 | +# endif | |
| 81 | +#endif | |
| 82 | + | |
| 83 | +/* The type of the second argument to `fgetpos' and `fsetpos'. */ | |
| 84 | +#ifndef __USE_FILE_OFFSET64 | |
| 85 | +typedef __fpos_t fpos_t; | |
| 86 | +#else | |
| 87 | +typedef __fpos64_t fpos_t; | |
| 88 | +#endif | |
| 89 | +#ifdef __USE_LARGEFILE64 | |
| 90 | +typedef __fpos64_t fpos64_t; | |
| 91 | +#endif | |
| 92 | + | |
| 93 | +/* The possibilities for the third argument to `setvbuf'. */ | |
| 94 | +#define _IOFBF 0 /* Fully buffered. */ | |
| 95 | +#define _IOLBF 1 /* Line buffered. */ | |
| 96 | +#define _IONBF 2 /* No buffering. */ | |
| 97 | + | |
| 98 | + | |
| 99 | +/* Default buffer size. */ | |
| 100 | +#define BUFSIZ 8192 | |
| 101 | + | |
| 102 | + | |
| 103 | +/* The value returned by fgetc and similar functions to indicate the | |
| 104 | + end of the file. */ | |
| 105 | +#define EOF (-1) | |
| 106 | + | |
| 107 | + | |
| 108 | +/* The possibilities for the third argument to `fseek'. | |
| 109 | + These values should not be changed. */ | |
| 110 | +#define SEEK_SET 0 /* Seek from beginning of file. */ | |
| 111 | +#define SEEK_CUR 1 /* Seek from current position. */ | |
| 112 | +#define SEEK_END 2 /* Seek from end of file. */ | |
| 113 | +#ifdef __USE_GNU | |
| 114 | +# define SEEK_DATA 3 /* Seek to next data. */ | |
| 115 | +# define SEEK_HOLE 4 /* Seek to next hole. */ | |
| 116 | +#endif | |
| 117 | + | |
| 118 | + | |
| 119 | +#if defined __USE_MISC || defined __USE_XOPEN | |
| 120 | +/* Default path prefix for `tempnam' and `tmpnam'. */ | |
| 121 | +# define P_tmpdir "/tmp" | |
| 122 | +#endif | |
| 123 | + | |
| 124 | +#define L_tmpnam 20 | |
| 125 | +#define TMP_MAX 238328 | |
| 126 | + | |
| 127 | +/* Get the values: | |
| 128 | + FILENAME_MAX Maximum length of a filename. */ | |
| 129 | +#include <bits/stdio_lim.h> | |
| 130 | + | |
| 131 | +#ifdef __USE_POSIX | |
| 132 | +# define L_ctermid 9 | |
| 133 | +# if !defined __USE_XOPEN2K || defined __USE_GNU | |
| 134 | +# define L_cuserid 9 | |
| 135 | +# endif | |
| 136 | +#endif | |
| 137 | + | |
| 138 | +#undef FOPEN_MAX | |
| 139 | +#define FOPEN_MAX 16 | |
| 140 | + | |
| 141 | + | |
| 142 | +#if __GLIBC_USE (ISOC23) | |
| 143 | +/* Maximum length of printf output for a NaN. */ | |
| 144 | +# define _PRINTF_NAN_LEN_MAX 4 | |
| 145 | +#endif | |
| 146 | + | |
| 147 | + | |
| 148 | +/* Standard streams. */ | |
| 149 | +extern FILE *stdin; /* Standard input stream. */ | |
| 150 | +extern FILE *stdout; /* Standard output stream. */ | |
| 151 | +extern FILE *stderr; /* Standard error output stream. */ | |
| 152 | +/* C89/C99 say they're macros. Make them happy. */ | |
| 153 | +#define stdin stdin | |
| 154 | +#define stdout stdout | |
| 155 | +#define stderr stderr | |
| 156 | + | |
| 157 | +/* Remove file FILENAME. */ | |
| 158 | +extern int remove (const char *__filename) __THROW; | |
| 159 | +/* Rename file OLD to NEW. */ | |
| 160 | +extern int rename (const char *__old, const char *__new) __THROW; | |
| 161 | + | |
| 162 | +#ifdef __USE_ATFILE | |
| 163 | +/* Rename file OLD relative to OLDFD to NEW relative to NEWFD. */ | |
| 164 | +extern int renameat (int __oldfd, const char *__old, int __newfd, | |
| 165 | + const char *__new) __THROW; | |
| 166 | +#endif | |
| 167 | + | |
| 168 | +#ifdef __USE_GNU | |
| 169 | +/* Flags for renameat2. */ | |
| 170 | +# define RENAME_NOREPLACE (1 << 0) | |
| 171 | +# define AT_RENAME_NOREPLACE 0x0001 | |
| 172 | +# define RENAME_EXCHANGE (1 << 1) | |
| 173 | +# define AT_RENAME_EXCHANGE 0x0002 | |
| 174 | +# define RENAME_WHITEOUT (1 << 2) | |
| 175 | +# define AT_RENAME_WHITEOUT 0x0004 | |
| 176 | + | |
| 177 | +/* Rename file OLD relative to OLDFD to NEW relative to NEWFD, with | |
| 178 | + additional flags. */ | |
| 179 | +extern int renameat2 (int __oldfd, const char *__old, int __newfd, | |
| 180 | + const char *__new, unsigned int __flags) __THROW; | |
| 181 | +#endif | |
| 182 | + | |
| 183 | +/* Close STREAM. | |
| 184 | + | |
| 185 | + This function is a possible cancellation point and therefore not | |
| 186 | + marked with __THROW. */ | |
| 187 | +extern int fclose (FILE *__stream) __nonnull ((1)); | |
| 188 | + | |
| 189 | +#undef __attr_dealloc_fclose | |
| 190 | +#define __attr_dealloc_fclose __attr_dealloc (fclose, 1) | |
| 191 | + | |
| 192 | +/* Create a temporary file and open it read/write. | |
| 193 | + | |
| 194 | + This function is a possible cancellation point and therefore not | |
| 195 | + marked with __THROW. */ | |
| 196 | +#ifndef __USE_FILE_OFFSET64 | |
| 197 | +extern FILE *tmpfile (void) | |
| 198 | + __attribute_malloc__ __attr_dealloc_fclose __wur; | |
| 199 | +#else | |
| 200 | +# ifdef __REDIRECT | |
| 201 | +extern FILE *__REDIRECT (tmpfile, (void), tmpfile64) | |
| 202 | + __attribute_malloc__ __attr_dealloc_fclose __wur; | |
| 203 | +# else | |
| 204 | +# define tmpfile tmpfile64 | |
| 205 | +# endif | |
| 206 | +#endif | |
| 207 | + | |
| 208 | +#ifdef __USE_LARGEFILE64 | |
| 209 | +extern FILE *tmpfile64 (void) | |
| 210 | + __attribute_malloc__ __attr_dealloc_fclose __wur; | |
| 211 | +#endif | |
| 212 | + | |
| 213 | +/* Generate a temporary filename. */ | |
| 214 | +extern char *tmpnam (char[L_tmpnam]) __THROW __wur; | |
| 215 | + | |
| 216 | +#ifdef __USE_MISC | |
| 217 | +/* This is the reentrant variant of `tmpnam'. The only difference is | |
| 218 | + that it does not allow S to be NULL. */ | |
| 219 | +extern char *tmpnam_r (char __s[L_tmpnam]) __THROW __wur; | |
| 220 | +#endif | |
| 221 | + | |
| 222 | + | |
| 223 | +#if defined __USE_MISC || defined __USE_XOPEN | |
| 224 | +/* Generate a unique temporary filename using up to five characters of PFX | |
| 225 | + if it is not NULL. The directory to put this file in is searched for | |
| 226 | + as follows: First the environment variable "TMPDIR" is checked. | |
| 227 | + If it contains the name of a writable directory, that directory is used. | |
| 228 | + If not and if DIR is not NULL, that value is checked. If that fails, | |
| 229 | + P_tmpdir is tried and finally "/tmp". The storage for the filename | |
| 230 | + is allocated by `malloc'. */ | |
| 231 | +extern char *tempnam (const char *__dir, const char *__pfx) | |
| 232 | + __THROW __attribute_malloc__ __wur __attr_dealloc_free; | |
| 233 | +#endif | |
| 234 | + | |
| 235 | +/* Flush STREAM, or all streams if STREAM is NULL. | |
| 236 | + | |
| 237 | + This function is a possible cancellation point and therefore not | |
| 238 | + marked with __THROW. */ | |
| 239 | +extern int fflush (FILE *__stream); | |
| 240 | + | |
| 241 | +#ifdef __USE_MISC | |
| 242 | +/* Faster versions when locking is not required. | |
| 243 | + | |
| 244 | + This function is not part of POSIX and therefore no official | |
| 245 | + cancellation point. But due to similarity with an POSIX interface | |
| 246 | + or due to the implementation it is a cancellation point and | |
| 247 | + therefore not marked with __THROW. */ | |
| 248 | +extern int fflush_unlocked (FILE *__stream); | |
| 249 | +#endif | |
| 250 | + | |
| 251 | +#ifdef __USE_GNU | |
| 252 | +/* Close all streams. | |
| 253 | + | |
| 254 | + This function is not part of POSIX and therefore no official | |
| 255 | + cancellation point. But due to similarity with an POSIX interface | |
| 256 | + or due to the implementation it is a cancellation point and | |
| 257 | + therefore not marked with __THROW. */ | |
| 258 | +extern int fcloseall (void); | |
| 259 | +#endif | |
| 260 | + | |
| 261 | + | |
| 262 | +#ifndef __USE_FILE_OFFSET64 | |
| 263 | +/* Open a file and create a new stream for it. | |
| 264 | + | |
| 265 | + This function is a possible cancellation point and therefore not | |
| 266 | + marked with __THROW. */ | |
| 267 | +extern FILE *fopen (const char *__restrict __filename, | |
| 268 | + const char *__restrict __modes) | |
| 269 | + __attribute_malloc__ __attr_dealloc_fclose __wur; | |
| 270 | +/* Open a file, replacing an existing stream with it. | |
| 271 | + | |
| 272 | + This function is a possible cancellation point and therefore not | |
| 273 | + marked with __THROW. */ | |
| 274 | +extern FILE *freopen (const char *__restrict __filename, | |
| 275 | + const char *__restrict __modes, | |
| 276 | + FILE *__restrict __stream) __wur __nonnull ((3)); | |
| 277 | +#else | |
| 278 | +# ifdef __REDIRECT | |
| 279 | +extern FILE *__REDIRECT (fopen, (const char *__restrict __filename, | |
| 280 | + const char *__restrict __modes), fopen64) | |
| 281 | + __attribute_malloc__ __attr_dealloc_fclose __wur; | |
| 282 | +extern FILE *__REDIRECT (freopen, (const char *__restrict __filename, | |
| 283 | + const char *__restrict __modes, | |
| 284 | + FILE *__restrict __stream), freopen64) | |
| 285 | + __wur __nonnull ((3)); | |
| 286 | +# else | |
| 287 | +# define fopen fopen64 | |
| 288 | +# define freopen freopen64 | |
| 289 | +# endif | |
| 290 | +#endif | |
| 291 | +#ifdef __USE_LARGEFILE64 | |
| 292 | +extern FILE *fopen64 (const char *__restrict __filename, | |
| 293 | + const char *__restrict __modes) | |
| 294 | + __attribute_malloc__ __attr_dealloc_fclose __wur; | |
| 295 | +extern FILE *freopen64 (const char *__restrict __filename, | |
| 296 | + const char *__restrict __modes, | |
| 297 | + FILE *__restrict __stream) __wur __nonnull ((3)); | |
| 298 | +#endif | |
| 299 | + | |
| 300 | +#ifdef __USE_POSIX | |
| 301 | +/* Create a new stream that refers to an existing system file descriptor. */ | |
| 302 | +extern FILE *fdopen (int __fd, const char *__modes) __THROW | |
| 303 | + __attribute_malloc__ __attr_dealloc_fclose __wur; | |
| 304 | +#endif | |
| 305 | + | |
| 306 | +#ifdef __USE_MISC | |
| 307 | +/* Create a new stream that refers to the given magic cookie, | |
| 308 | + and uses the given functions for input and output. */ | |
| 309 | +extern FILE *fopencookie (void *__restrict __magic_cookie, | |
| 310 | + const char *__restrict __modes, | |
| 311 | + cookie_io_functions_t __io_funcs) __THROW | |
| 312 | + __attribute_malloc__ __attr_dealloc_fclose __wur; | |
| 313 | +#endif | |
| 314 | + | |
| 315 | +#if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2) | |
| 316 | +/* Create a new stream that refers to a memory buffer. */ | |
| 317 | +extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) | |
| 318 | + __THROW __attribute_malloc__ __attr_dealloc_fclose __wur; | |
| 319 | + | |
| 320 | +/* Open a stream that writes into a malloc'd buffer that is expanded as | |
| 321 | + necessary. *BUFLOC and *SIZELOC are updated with the buffer's location | |
| 322 | + and the number of characters written on fflush or fclose. */ | |
| 323 | +extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __THROW | |
| 324 | + __attribute_malloc__ __attr_dealloc_fclose __wur; | |
| 325 | + | |
| 326 | +#ifdef _WCHAR_H | |
| 327 | +/* Like OPEN_MEMSTREAM, but the stream is wide oriented and produces | |
| 328 | + a wide character string. Declared here only to add attribute malloc | |
| 329 | + and only if <wchar.h> has been previously #included. */ | |
| 330 | +extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) __THROW | |
| 331 | + __attribute_malloc__ __attr_dealloc_fclose; | |
| 332 | +# endif | |
| 333 | +#endif | |
| 334 | + | |
| 335 | +/* If BUF is NULL, make STREAM unbuffered. | |
| 336 | + Else make it use buffer BUF, of size BUFSIZ. */ | |
| 337 | +extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __THROW | |
| 338 | + __nonnull ((1)); | |
| 339 | +/* Make STREAM use buffering mode MODE. | |
| 340 | + If BUF is not NULL, use N bytes of it for buffering; | |
| 341 | + else allocate an internal buffer N bytes long. */ | |
| 342 | +extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, | |
| 343 | + int __modes, size_t __n) __THROW __nonnull ((1)); | |
| 344 | + | |
| 345 | +#ifdef __USE_MISC | |
| 346 | +/* If BUF is NULL, make STREAM unbuffered. | |
| 347 | + Else make it use SIZE bytes of BUF for buffering. */ | |
| 348 | +extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, | |
| 349 | + size_t __size) __THROW __nonnull ((1)); | |
| 350 | + | |
| 351 | +/* Make STREAM line-buffered. */ | |
| 352 | +extern void setlinebuf (FILE *__stream) __THROW __nonnull ((1)); | |
| 353 | +#endif | |
| 354 | + | |
| 355 | + | |
| 356 | +/* Write formatted output to STREAM. | |
| 357 | + | |
| 358 | + This function is a possible cancellation point and therefore not | |
| 359 | + marked with __THROW. */ | |
| 360 | +extern int fprintf (FILE *__restrict __stream, | |
| 361 | + const char *__restrict __format, ...) __nonnull ((1)); | |
| 362 | +/* Write formatted output to stdout. | |
| 363 | + | |
| 364 | + This function is a possible cancellation point and therefore not | |
| 365 | + marked with __THROW. */ | |
| 366 | +extern int printf (const char *__restrict __format, ...); | |
| 367 | +/* Write formatted output to S. */ | |
| 368 | +extern int sprintf (char *__restrict __s, | |
| 369 | + const char *__restrict __format, ...) __THROWNL; | |
| 370 | + | |
| 371 | +/* Write formatted output to S from argument list ARG. | |
| 372 | + | |
| 373 | + This function is a possible cancellation point and therefore not | |
| 374 | + marked with __THROW. */ | |
| 375 | +extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, | |
| 376 | + __gnuc_va_list __arg) __nonnull ((1)); | |
| 377 | +/* Write formatted output to stdout from argument list ARG. | |
| 378 | + | |
| 379 | + This function is a possible cancellation point and therefore not | |
| 380 | + marked with __THROW. */ | |
| 381 | +extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); | |
| 382 | +/* Write formatted output to S from argument list ARG. */ | |
| 383 | +extern int vsprintf (char *__restrict __s, const char *__restrict __format, | |
| 384 | + __gnuc_va_list __arg) __THROWNL; | |
| 385 | + | |
| 386 | +#if defined __USE_ISOC99 || defined __USE_UNIX98 | |
| 387 | +/* Maximum chars of output to write in MAXLEN. */ | |
| 388 | +extern int snprintf (char *__restrict __s, size_t __maxlen, | |
| 389 | + const char *__restrict __format, ...) | |
| 390 | + __THROWNL __attribute__ ((__format__ (__printf__, 3, 4))); | |
| 391 | + | |
| 392 | +extern int vsnprintf (char *__restrict __s, size_t __maxlen, | |
| 393 | + const char *__restrict __format, __gnuc_va_list __arg) | |
| 394 | + __THROWNL __attribute__ ((__format__ (__printf__, 3, 0))); | |
| 395 | +#endif | |
| 396 | + | |
| 397 | +#if defined (__USE_MISC) || __GLIBC_USE (LIB_EXT2) | |
| 398 | +/* Write formatted output to a string dynamically allocated with `malloc'. | |
| 399 | + Store the address of the string in *PTR. */ | |
| 400 | +extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, | |
| 401 | + __gnuc_va_list __arg) | |
| 402 | + __THROWNL __attribute__ ((__format__ (__printf__, 2, 0))) __wur; | |
| 403 | +extern int __asprintf (char **__restrict __ptr, | |
| 404 | + const char *__restrict __fmt, ...) | |
| 405 | + __THROWNL __attribute__ ((__format__ (__printf__, 2, 3))) __wur; | |
| 406 | +extern int asprintf (char **__restrict __ptr, | |
| 407 | + const char *__restrict __fmt, ...) | |
| 408 | + __THROWNL __attribute__ ((__format__ (__printf__, 2, 3))) __wur; | |
| 409 | +#endif | |
| 410 | + | |
| 411 | +#ifdef __USE_XOPEN2K8 | |
| 412 | +/* Write formatted output to a file descriptor. */ | |
| 413 | +extern int vdprintf (int __fd, const char *__restrict __fmt, | |
| 414 | + __gnuc_va_list __arg) | |
| 415 | + __attribute__ ((__format__ (__printf__, 2, 0))); | |
| 416 | +extern int dprintf (int __fd, const char *__restrict __fmt, ...) | |
| 417 | + __attribute__ ((__format__ (__printf__, 2, 3))); | |
| 418 | +#endif | |
| 419 | + | |
| 420 | + | |
| 421 | +/* Read formatted input from STREAM. | |
| 422 | + | |
| 423 | + This function is a possible cancellation point and therefore not | |
| 424 | + marked with __THROW. */ | |
| 425 | +extern int fscanf (FILE *__restrict __stream, | |
| 426 | + const char *__restrict __format, ...) __wur __nonnull ((1)); | |
| 427 | +/* Read formatted input from stdin. | |
| 428 | + | |
| 429 | + This function is a possible cancellation point and therefore not | |
| 430 | + marked with __THROW. */ | |
| 431 | +extern int scanf (const char *__restrict __format, ...) __wur; | |
| 432 | +/* Read formatted input from S. */ | |
| 433 | +extern int sscanf (const char *__restrict __s, | |
| 434 | + const char *__restrict __format, ...) __THROW; | |
| 435 | + | |
| 436 | +/* For historical reasons, the C99-compliant versions of the scanf | |
| 437 | + functions are at alternative names. When __LDBL_COMPAT or | |
| 438 | + __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI are in effect, this is handled in | |
| 439 | + bits/stdio-ldbl.h. */ | |
| 440 | +#include <bits/floatn.h> | |
| 441 | +#if !__GLIBC_USE (DEPRECATED_SCANF) && !defined __LDBL_COMPAT \ | |
| 442 | + && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0 | |
| 443 | +# if __GLIBC_USE (C23_STRTOL) | |
| 444 | +# ifdef __REDIRECT | |
| 445 | +extern int __REDIRECT (fscanf, (FILE *__restrict __stream, | |
| 446 | + const char *__restrict __format, ...), | |
| 447 | + __isoc23_fscanf) __wur __nonnull ((1)); | |
| 448 | +extern int __REDIRECT (scanf, (const char *__restrict __format, ...), | |
| 449 | + __isoc23_scanf) __wur; | |
| 450 | +extern int __REDIRECT_NTH (sscanf, (const char *__restrict __s, | |
| 451 | + const char *__restrict __format, ...), | |
| 452 | + __isoc23_sscanf); | |
| 453 | +# else | |
| 454 | +extern int __isoc23_fscanf (FILE *__restrict __stream, | |
| 455 | + const char *__restrict __format, ...) __wur | |
| 456 | + __nonnull ((1)); | |
| 457 | +extern int __isoc23_scanf (const char *__restrict __format, ...) __wur; | |
| 458 | +extern int __isoc23_sscanf (const char *__restrict __s, | |
| 459 | + const char *__restrict __format, ...) __THROW; | |
| 460 | +# define fscanf __isoc23_fscanf | |
| 461 | +# define scanf __isoc23_scanf | |
| 462 | +# define sscanf __isoc23_sscanf | |
| 463 | +# endif | |
| 464 | +# else | |
| 465 | +# ifdef __REDIRECT | |
| 466 | +extern int __REDIRECT (fscanf, (FILE *__restrict __stream, | |
| 467 | + const char *__restrict __format, ...), | |
| 468 | + __isoc99_fscanf) __wur __nonnull ((1)); | |
| 469 | +extern int __REDIRECT (scanf, (const char *__restrict __format, ...), | |
| 470 | + __isoc99_scanf) __wur; | |
| 471 | +extern int __REDIRECT_NTH (sscanf, (const char *__restrict __s, | |
| 472 | + const char *__restrict __format, ...), | |
| 473 | + __isoc99_sscanf); | |
| 474 | +# else | |
| 475 | +extern int __isoc99_fscanf (FILE *__restrict __stream, | |
| 476 | + const char *__restrict __format, ...) __wur | |
| 477 | + __nonnull ((1)); | |
| 478 | +extern int __isoc99_scanf (const char *__restrict __format, ...) __wur; | |
| 479 | +extern int __isoc99_sscanf (const char *__restrict __s, | |
| 480 | + const char *__restrict __format, ...) __THROW; | |
| 481 | +# define fscanf __isoc99_fscanf | |
| 482 | +# define scanf __isoc99_scanf | |
| 483 | +# define sscanf __isoc99_sscanf | |
| 484 | +# endif | |
| 485 | +# endif | |
| 486 | +#endif | |
| 487 | + | |
| 488 | +#ifdef __USE_ISOC99 | |
| 489 | +/* Read formatted input from S into argument list ARG. | |
| 490 | + | |
| 491 | + This function is a possible cancellation point and therefore not | |
| 492 | + marked with __THROW. */ | |
| 493 | +extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, | |
| 494 | + __gnuc_va_list __arg) | |
| 495 | + __attribute__ ((__format__ (__scanf__, 2, 0))) __wur __nonnull ((1)); | |
| 496 | + | |
| 497 | +/* Read formatted input from stdin into argument list ARG. | |
| 498 | + | |
| 499 | + This function is a possible cancellation point and therefore not | |
| 500 | + marked with __THROW. */ | |
| 501 | +extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) | |
| 502 | + __attribute__ ((__format__ (__scanf__, 1, 0))) __wur; | |
| 503 | + | |
| 504 | +/* Read formatted input from S into argument list ARG. */ | |
| 505 | +extern int vsscanf (const char *__restrict __s, | |
| 506 | + const char *__restrict __format, __gnuc_va_list __arg) | |
| 507 | + __THROW __attribute__ ((__format__ (__scanf__, 2, 0))); | |
| 508 | + | |
| 509 | +/* Same redirection as above for the v*scanf family. */ | |
| 510 | +# if !__GLIBC_USE (DEPRECATED_SCANF) | |
| 511 | +# if __GLIBC_USE (C23_STRTOL) | |
| 512 | +# if defined __REDIRECT && !defined __LDBL_COMPAT \ | |
| 513 | + && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0 | |
| 514 | +extern int __REDIRECT (vfscanf, | |
| 515 | + (FILE *__restrict __s, | |
| 516 | + const char *__restrict __format, __gnuc_va_list __arg), | |
| 517 | + __isoc23_vfscanf) | |
| 518 | + __attribute__ ((__format__ (__scanf__, 2, 0))) __wur __nonnull ((1)); | |
| 519 | +extern int __REDIRECT (vscanf, (const char *__restrict __format, | |
| 520 | + __gnuc_va_list __arg), __isoc23_vscanf) | |
| 521 | + __attribute__ ((__format__ (__scanf__, 1, 0))) __wur; | |
| 522 | +extern int __REDIRECT_NTH (vsscanf, | |
| 523 | + (const char *__restrict __s, | |
| 524 | + const char *__restrict __format, | |
| 525 | + __gnuc_va_list __arg), __isoc23_vsscanf) | |
| 526 | + __attribute__ ((__format__ (__scanf__, 2, 0))); | |
| 527 | +# elif !defined __REDIRECT | |
| 528 | +extern int __isoc23_vfscanf (FILE *__restrict __s, | |
| 529 | + const char *__restrict __format, | |
| 530 | + __gnuc_va_list __arg) __wur __nonnull ((1)); | |
| 531 | +extern int __isoc23_vscanf (const char *__restrict __format, | |
| 532 | + __gnuc_va_list __arg) __wur; | |
| 533 | +extern int __isoc23_vsscanf (const char *__restrict __s, | |
| 534 | + const char *__restrict __format, | |
| 535 | + __gnuc_va_list __arg) __THROW; | |
| 536 | +# define vfscanf __isoc23_vfscanf | |
| 537 | +# define vscanf __isoc23_vscanf | |
| 538 | +# define vsscanf __isoc23_vsscanf | |
| 539 | +# endif | |
| 540 | +# else | |
| 541 | +# if defined __REDIRECT && !defined __LDBL_COMPAT \ | |
| 542 | + && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0 | |
| 543 | +extern int __REDIRECT (vfscanf, | |
| 544 | + (FILE *__restrict __s, | |
| 545 | + const char *__restrict __format, __gnuc_va_list __arg), | |
| 546 | + __isoc99_vfscanf) | |
| 547 | + __attribute__ ((__format__ (__scanf__, 2, 0))) __wur __nonnull ((1)); | |
| 548 | +extern int __REDIRECT (vscanf, (const char *__restrict __format, | |
| 549 | + __gnuc_va_list __arg), __isoc99_vscanf) | |
| 550 | + __attribute__ ((__format__ (__scanf__, 1, 0))) __wur; | |
| 551 | +extern int __REDIRECT_NTH (vsscanf, | |
| 552 | + (const char *__restrict __s, | |
| 553 | + const char *__restrict __format, | |
| 554 | + __gnuc_va_list __arg), __isoc99_vsscanf) | |
| 555 | + __attribute__ ((__format__ (__scanf__, 2, 0))); | |
| 556 | +# elif !defined __REDIRECT | |
| 557 | +extern int __isoc99_vfscanf (FILE *__restrict __s, | |
| 558 | + const char *__restrict __format, | |
| 559 | + __gnuc_va_list __arg) __wur __nonnull ((1)); | |
| 560 | +extern int __isoc99_vscanf (const char *__restrict __format, | |
| 561 | + __gnuc_va_list __arg) __wur; | |
| 562 | +extern int __isoc99_vsscanf (const char *__restrict __s, | |
| 563 | + const char *__restrict __format, | |
| 564 | + __gnuc_va_list __arg) __THROW; | |
| 565 | +# define vfscanf __isoc99_vfscanf | |
| 566 | +# define vscanf __isoc99_vscanf | |
| 567 | +# define vsscanf __isoc99_vsscanf | |
| 568 | +# endif | |
| 569 | +# endif | |
| 570 | +# endif | |
| 571 | +#endif /* Use ISO C9x. */ | |
| 572 | + | |
| 573 | + | |
| 574 | +/* Read a character from STREAM. | |
| 575 | + | |
| 576 | + These functions are possible cancellation points and therefore not | |
| 577 | + marked with __THROW. */ | |
| 578 | +extern int fgetc (FILE *__stream) __nonnull ((1)); | |
| 579 | +extern int getc (FILE *__stream) __nonnull ((1)); | |
| 580 | + | |
| 581 | +/* Read a character from stdin. | |
| 582 | + | |
| 583 | + This function is a possible cancellation point and therefore not | |
| 584 | + marked with __THROW. */ | |
| 585 | +extern int getchar (void); | |
| 586 | + | |
| 587 | +#ifdef __USE_POSIX199506 | |
| 588 | +/* These are defined in POSIX.1:1996. | |
| 589 | + | |
| 590 | + These functions are possible cancellation points and therefore not | |
| 591 | + marked with __THROW. */ | |
| 592 | +extern int getc_unlocked (FILE *__stream) __nonnull ((1)); | |
| 593 | +extern int getchar_unlocked (void); | |
| 594 | +#endif /* Use POSIX. */ | |
| 595 | + | |
| 596 | +#ifdef __USE_MISC | |
| 597 | +/* Faster version when locking is not necessary. | |
| 598 | + | |
| 599 | + This function is not part of POSIX and therefore no official | |
| 600 | + cancellation point. But due to similarity with an POSIX interface | |
| 601 | + or due to the implementation it is a cancellation point and | |
| 602 | + therefore not marked with __THROW. */ | |
| 603 | +extern int fgetc_unlocked (FILE *__stream) __nonnull ((1)); | |
| 604 | +#endif /* Use MISC. */ | |
| 605 | + | |
| 606 | + | |
| 607 | +/* Write a character to STREAM. | |
| 608 | + | |
| 609 | + These functions are possible cancellation points and therefore not | |
| 610 | + marked with __THROW. */ | |
| 611 | +extern int fputc (int __c, FILE *__stream) __nonnull ((2)); | |
| 612 | +extern int putc (int __c, FILE *__stream) __nonnull ((2)); | |
| 613 | + | |
| 614 | +/* Write a character to stdout. | |
| 615 | + | |
| 616 | + This function is a possible cancellation point and therefore not | |
| 617 | + marked with __THROW. */ | |
| 618 | +extern int putchar (int __c); | |
| 619 | + | |
| 620 | +#ifdef __USE_MISC | |
| 621 | +/* Faster version when locking is not necessary. | |
| 622 | + | |
| 623 | + This function is not part of POSIX and therefore no official | |
| 624 | + cancellation point. But due to similarity with an POSIX interface | |
| 625 | + or due to the implementation it is a cancellation point and | |
| 626 | + therefore not marked with __THROW. */ | |
| 627 | +extern int fputc_unlocked (int __c, FILE *__stream) __nonnull ((2)); | |
| 628 | +#endif /* Use MISC. */ | |
| 629 | + | |
| 630 | +#ifdef __USE_POSIX199506 | |
| 631 | +/* These are defined in POSIX.1:1996. | |
| 632 | + | |
| 633 | + These functions are possible cancellation points and therefore not | |
| 634 | + marked with __THROW. */ | |
| 635 | +extern int putc_unlocked (int __c, FILE *__stream) __nonnull ((2)); | |
| 636 | +extern int putchar_unlocked (int __c); | |
| 637 | +#endif /* Use POSIX. */ | |
| 638 | + | |
| 639 | + | |
| 640 | +#if defined __USE_MISC \ | |
| 641 | + || (defined __USE_XOPEN && !defined __USE_XOPEN2K) | |
| 642 | +/* Get a word (int) from STREAM. */ | |
| 643 | +extern int getw (FILE *__stream) __nonnull ((1)); | |
| 644 | + | |
| 645 | +/* Write a word (int) to STREAM. */ | |
| 646 | +extern int putw (int __w, FILE *__stream) __nonnull ((2)); | |
| 647 | +#endif | |
| 648 | + | |
| 649 | + | |
| 650 | +/* Get a newline-terminated string of finite length from STREAM. | |
| 651 | + | |
| 652 | + This function is a possible cancellation point and therefore not | |
| 653 | + marked with __THROW. */ | |
| 654 | +extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) | |
| 655 | + __wur __fortified_attr_access (__write_only__, 1, 2) __nonnull ((3)); | |
| 656 | + | |
| 657 | +#if __GLIBC_USE (DEPRECATED_GETS) | |
| 658 | +/* Get a newline-terminated string from stdin, removing the newline. | |
| 659 | + | |
| 660 | + This function is impossible to use safely. It has been officially | |
| 661 | + removed from ISO C11 and ISO C++14, and we have also removed it | |
| 662 | + from the _GNU_SOURCE feature list. It remains available when | |
| 663 | + explicitly using an old ISO C, Unix, or POSIX standard. | |
| 664 | + | |
| 665 | + This function is a possible cancellation point and therefore not | |
| 666 | + marked with __THROW. */ | |
| 667 | +extern char *gets (char *__s) __wur __attribute_deprecated__; | |
| 668 | +#endif | |
| 669 | + | |
| 670 | +#ifdef __USE_GNU | |
| 671 | +/* This function does the same as `fgets' but does not lock the stream. | |
| 672 | + | |
| 673 | + This function is not part of POSIX and therefore no official | |
| 674 | + cancellation point. But due to similarity with an POSIX interface | |
| 675 | + or due to the implementation it is a cancellation point and | |
| 676 | + therefore not marked with __THROW. */ | |
| 677 | +extern char *fgets_unlocked (char *__restrict __s, int __n, | |
| 678 | + FILE *__restrict __stream) __wur | |
| 679 | + __fortified_attr_access (__write_only__, 1, 2) __nonnull ((3)); | |
| 680 | +#endif | |
| 681 | + | |
| 682 | + | |
| 683 | +#if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2) | |
| 684 | +/* Read up to (and including) a DELIMITER from STREAM into *LINEPTR | |
| 685 | + (and null-terminate it). *LINEPTR is a pointer returned from malloc (or | |
| 686 | + NULL), pointing to *N characters of space. It is realloc'd as | |
| 687 | + necessary. Returns the number of characters read (not including the | |
| 688 | + null terminator), or -1 on error or EOF. */ | |
| 689 | +extern __ssize_t __getdelim (char **__restrict __lineptr, | |
| 690 | + size_t *__restrict __n, int __delimiter, | |
| 691 | + FILE *__restrict __stream) __wur __nonnull ((4)); | |
| 692 | +extern __ssize_t getdelim (char **__restrict __lineptr, | |
| 693 | + size_t *__restrict __n, int __delimiter, | |
| 694 | + FILE *__restrict __stream) __wur __nonnull ((4)); | |
| 695 | + | |
| 696 | +/* Like `getdelim', but reads up to a newline. */ | |
| 697 | +extern __ssize_t getline (char **__restrict __lineptr, | |
| 698 | + size_t *__restrict __n, | |
| 699 | + FILE *__restrict __stream) __wur __nonnull ((3)); | |
| 700 | +#endif | |
| 701 | + | |
| 702 | + | |
| 703 | +/* Write a string to STREAM. | |
| 704 | + | |
| 705 | + This function is a possible cancellation point and therefore not | |
| 706 | + marked with __THROW. */ | |
| 707 | +extern int fputs (const char *__restrict __s, FILE *__restrict __stream) | |
| 708 | + __nonnull ((2)); | |
| 709 | + | |
| 710 | +/* Write a string, followed by a newline, to stdout. | |
| 711 | + | |
| 712 | + This function is a possible cancellation point and therefore not | |
| 713 | + marked with __THROW. */ | |
| 714 | +extern int puts (const char *__s); | |
| 715 | + | |
| 716 | + | |
| 717 | +/* Push a character back onto the input buffer of STREAM. | |
| 718 | + | |
| 719 | + This function is a possible cancellation point and therefore not | |
| 720 | + marked with __THROW. */ | |
| 721 | +extern int ungetc (int __c, FILE *__stream) __nonnull ((2)); | |
| 722 | + | |
| 723 | + | |
| 724 | +/* Read chunks of generic data from STREAM. | |
| 725 | + | |
| 726 | + This function is a possible cancellation point and therefore not | |
| 727 | + marked with __THROW. */ | |
| 728 | +extern size_t fread (void *__restrict __ptr, size_t __size, | |
| 729 | + size_t __n, FILE *__restrict __stream) __wur | |
| 730 | + __nonnull((4)); | |
| 731 | +/* Write chunks of generic data to STREAM. | |
| 732 | + | |
| 733 | + This function is a possible cancellation point and therefore not | |
| 734 | + marked with __THROW. */ | |
| 735 | +extern size_t fwrite (const void *__restrict __ptr, size_t __size, | |
| 736 | + size_t __n, FILE *__restrict __s) __nonnull((4)); | |
| 737 | + | |
| 738 | +#ifdef __USE_GNU | |
| 739 | +/* This function does the same as `fputs' but does not lock the stream. | |
| 740 | + | |
| 741 | + This function is not part of POSIX and therefore no official | |
| 742 | + cancellation point. But due to similarity with an POSIX interface | |
| 743 | + or due to the implementation it is a cancellation point and | |
| 744 | + therefore not marked with __THROW. */ | |
| 745 | +extern int fputs_unlocked (const char *__restrict __s, | |
| 746 | + FILE *__restrict __stream) __nonnull ((2)); | |
| 747 | +#endif | |
| 748 | + | |
| 749 | +#ifdef __USE_MISC | |
| 750 | +/* Faster versions when locking is not necessary. | |
| 751 | + | |
| 752 | + These functions are not part of POSIX and therefore no official | |
| 753 | + cancellation point. But due to similarity with an POSIX interface | |
| 754 | + or due to the implementation they are cancellation points and | |
| 755 | + therefore not marked with __THROW. */ | |
| 756 | +extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, | |
| 757 | + size_t __n, FILE *__restrict __stream) __wur | |
| 758 | + __nonnull ((4)); | |
| 759 | +extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, | |
| 760 | + size_t __n, FILE *__restrict __stream) | |
| 761 | + __nonnull ((4)); | |
| 762 | +#endif | |
| 763 | + | |
| 764 | + | |
| 765 | +/* Seek to a certain position on STREAM. | |
| 766 | + | |
| 767 | + This function is a possible cancellation point and therefore not | |
| 768 | + marked with __THROW. */ | |
| 769 | +extern int fseek (FILE *__stream, long int __off, int __whence) | |
| 770 | + __nonnull ((1)); | |
| 771 | +/* Return the current position of STREAM. | |
| 772 | + | |
| 773 | + This function is a possible cancellation point and therefore not | |
| 774 | + marked with __THROW. */ | |
| 775 | +extern long int ftell (FILE *__stream) __wur __nonnull ((1)); | |
| 776 | +/* Rewind to the beginning of STREAM. | |
| 777 | + | |
| 778 | + This function is a possible cancellation point and therefore not | |
| 779 | + marked with __THROW. */ | |
| 780 | +extern void rewind (FILE *__stream) __nonnull ((1)); | |
| 781 | + | |
| 782 | +/* The Single Unix Specification, Version 2, specifies an alternative, | |
| 783 | + more adequate interface for the two functions above which deal with | |
| 784 | + file offset. `long int' is not the right type. These definitions | |
| 785 | + are originally defined in the Large File Support API. */ | |
| 786 | + | |
| 787 | +#if defined __USE_LARGEFILE || defined __USE_XOPEN2K | |
| 788 | +# ifndef __USE_FILE_OFFSET64 | |
| 789 | +/* Seek to a certain position on STREAM. | |
| 790 | + | |
| 791 | + This function is a possible cancellation point and therefore not | |
| 792 | + marked with __THROW. */ | |
| 793 | +extern int fseeko (FILE *__stream, __off_t __off, int __whence) | |
| 794 | + __nonnull ((1)); | |
| 795 | +/* Return the current position of STREAM. | |
| 796 | + | |
| 797 | + This function is a possible cancellation point and therefore not | |
| 798 | + marked with __THROW. */ | |
| 799 | +extern __off_t ftello (FILE *__stream) __wur __nonnull ((1)); | |
| 800 | +# else | |
| 801 | +# ifdef __REDIRECT | |
| 802 | +extern int __REDIRECT (fseeko, | |
| 803 | + (FILE *__stream, __off64_t __off, int __whence), | |
| 804 | + fseeko64) __nonnull ((1)); | |
| 805 | +extern __off64_t __REDIRECT (ftello, (FILE *__stream), ftello64) | |
| 806 | + __nonnull ((1)); | |
| 807 | +# else | |
| 808 | +# define fseeko fseeko64 | |
| 809 | +# define ftello ftello64 | |
| 810 | +# endif | |
| 811 | +# endif | |
| 812 | +#endif | |
| 813 | + | |
| 814 | +#ifndef __USE_FILE_OFFSET64 | |
| 815 | +/* Get STREAM's position. | |
| 816 | + | |
| 817 | + This function is a possible cancellation point and therefore not | |
| 818 | + marked with __THROW. */ | |
| 819 | +extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) | |
| 820 | + __nonnull ((1)); | |
| 821 | +/* Set STREAM's position. | |
| 822 | + | |
| 823 | + This function is a possible cancellation point and therefore not | |
| 824 | + marked with __THROW. */ | |
| 825 | +extern int fsetpos (FILE *__stream, const fpos_t *__pos) __nonnull ((1)); | |
| 826 | +#else | |
| 827 | +# ifdef __REDIRECT | |
| 828 | +extern int __REDIRECT (fgetpos, (FILE *__restrict __stream, | |
| 829 | + fpos_t *__restrict __pos), fgetpos64) | |
| 830 | + __nonnull ((1)); | |
| 831 | +extern int __REDIRECT (fsetpos, | |
| 832 | + (FILE *__stream, const fpos_t *__pos), fsetpos64) | |
| 833 | + __nonnull ((1)); | |
| 834 | +# else | |
| 835 | +# define fgetpos fgetpos64 | |
| 836 | +# define fsetpos fsetpos64 | |
| 837 | +# endif | |
| 838 | +#endif | |
| 839 | + | |
| 840 | +#ifdef __USE_LARGEFILE64 | |
| 841 | +extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) | |
| 842 | + __nonnull ((1)); | |
| 843 | +extern __off64_t ftello64 (FILE *__stream) __wur __nonnull ((1)); | |
| 844 | +extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos) | |
| 845 | + __nonnull ((1)); | |
| 846 | +extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos) __nonnull ((1)); | |
| 847 | +#endif | |
| 848 | + | |
| 849 | +/* Clear the error and EOF indicators for STREAM. */ | |
| 850 | +extern void clearerr (FILE *__stream) __THROW __nonnull ((1)); | |
| 851 | +/* Return the EOF indicator for STREAM. */ | |
| 852 | +extern int feof (FILE *__stream) __THROW __wur __nonnull ((1)); | |
| 853 | +/* Return the error indicator for STREAM. */ | |
| 854 | +extern int ferror (FILE *__stream) __THROW __wur __nonnull ((1)); | |
| 855 | + | |
| 856 | +#ifdef __USE_MISC | |
| 857 | +/* Faster versions when locking is not required. */ | |
| 858 | +extern void clearerr_unlocked (FILE *__stream) __THROW __nonnull ((1)); | |
| 859 | +extern int feof_unlocked (FILE *__stream) __THROW __wur __nonnull ((1)); | |
| 860 | +extern int ferror_unlocked (FILE *__stream) __THROW __wur __nonnull ((1)); | |
| 861 | +#endif | |
| 862 | + | |
| 863 | + | |
| 864 | +/* Print a message describing the meaning of the value of errno. | |
| 865 | + | |
| 866 | + This function is a possible cancellation point and therefore not | |
| 867 | + marked with __THROW. */ | |
| 868 | +extern void perror (const char *__s) __COLD; | |
| 869 | + | |
| 870 | + | |
| 871 | +#ifdef __USE_POSIX | |
| 872 | +/* Return the system file descriptor for STREAM. */ | |
| 873 | +extern int fileno (FILE *__stream) __THROW __wur __nonnull ((1)); | |
| 874 | +#endif /* Use POSIX. */ | |
| 875 | + | |
| 876 | +#ifdef __USE_MISC | |
| 877 | +/* Faster version when locking is not required. */ | |
| 878 | +extern int fileno_unlocked (FILE *__stream) __THROW __wur __nonnull ((1)); | |
| 879 | +#endif | |
| 880 | + | |
| 881 | + | |
| 882 | +#ifdef __USE_POSIX2 | |
| 883 | +/* Close a stream opened by popen and return the status of its child. | |
| 884 | + | |
| 885 | + This function is a possible cancellation point and therefore not | |
| 886 | + marked with __THROW. */ | |
| 887 | +extern int pclose (FILE *__stream) __nonnull ((1)); | |
| 888 | + | |
| 889 | +/* Create a new stream connected to a pipe running the given command. | |
| 890 | + | |
| 891 | + This function is a possible cancellation point and therefore not | |
| 892 | + marked with __THROW. */ | |
| 893 | +extern FILE *popen (const char *__command, const char *__modes) | |
| 894 | + __attribute_malloc__ __attr_dealloc (pclose, 1) __wur; | |
| 895 | + | |
| 896 | +#endif | |
| 897 | + | |
| 898 | + | |
| 899 | +#ifdef __USE_POSIX | |
| 900 | +/* Return the name of the controlling terminal. */ | |
| 901 | +extern char *ctermid (char *__s) __THROW | |
| 902 | + __attr_access ((__write_only__, 1)); | |
| 903 | +#endif /* Use POSIX. */ | |
| 904 | + | |
| 905 | + | |
| 906 | +#if (defined __USE_XOPEN && !defined __USE_XOPEN2K) || defined __USE_GNU | |
| 907 | +/* Return the name of the current user. */ | |
| 908 | +extern char *cuserid (char *__s) | |
| 909 | + __attr_access ((__write_only__, 1)); | |
| 910 | +#endif /* Use X/Open, but not issue 6. */ | |
| 911 | + | |
| 912 | + | |
| 913 | +#ifdef __USE_GNU | |
| 914 | +struct obstack; /* See <obstack.h>. */ | |
| 915 | + | |
| 916 | +/* Write formatted output to an obstack. */ | |
| 917 | +extern int obstack_printf (struct obstack *__restrict __obstack, | |
| 918 | + const char *__restrict __format, ...) | |
| 919 | + __THROWNL __attribute__ ((__format__ (__printf__, 2, 3))); | |
| 920 | +extern int obstack_vprintf (struct obstack *__restrict __obstack, | |
| 921 | + const char *__restrict __format, | |
| 922 | + __gnuc_va_list __args) | |
| 923 | + __THROWNL __attribute__ ((__format__ (__printf__, 2, 0))); | |
| 924 | +#endif /* Use GNU. */ | |
| 925 | + | |
| 926 | + | |
| 927 | +#ifdef __USE_POSIX199506 | |
| 928 | +/* These are defined in POSIX.1:1996. */ | |
| 929 | + | |
| 930 | +/* Acquire ownership of STREAM. */ | |
| 931 | +extern void flockfile (FILE *__stream) __THROW __nonnull ((1)); | |
| 932 | + | |
| 933 | +/* Try to acquire ownership of STREAM but do not block if it is not | |
| 934 | + possible. */ | |
| 935 | +extern int ftrylockfile (FILE *__stream) __THROW __wur __nonnull ((1)); | |
| 936 | + | |
| 937 | +/* Relinquish the ownership granted for STREAM. */ | |
| 938 | +extern void funlockfile (FILE *__stream) __THROW __nonnull ((1)); | |
| 939 | +#endif /* POSIX */ | |
| 940 | + | |
| 941 | +#if defined __USE_XOPEN && !defined __USE_XOPEN2K && !defined __USE_GNU | |
| 942 | +/* X/Open Issues 1-5 required getopt to be declared in this | |
| 943 | + header. It was removed in Issue 6. GNU follows Issue 6. */ | |
| 944 | +# include <bits/getopt_posix.h> | |
| 945 | +#endif | |
| 946 | + | |
| 947 | +/* Slow-path routines used by the optimized inline functions in | |
| 948 | + bits/stdio.h. */ | |
| 949 | +extern int __uflow (FILE *); | |
| 950 | +extern int __overflow (FILE *, int); | |
| 951 | + | |
| 952 | +#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function | |
| 953 | +/* Declare all functions from bits/stdio2-decl.h first. */ | |
| 954 | +# include <bits/stdio2-decl.h> | |
| 955 | +#endif | |
| 956 | + | |
| 957 | +/* The following headers provide asm redirections. These redirections must | |
| 958 | + appear before the first usage of these functions, e.g. in bits/stdio.h. */ | |
| 959 | +#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 | |
| 960 | +# include <bits/stdio-ldbl.h> | |
| 961 | +#endif | |
| 962 | + | |
| 963 | +/* If we are compiling with optimizing read this file. It contains | |
| 964 | + several optimizing inline functions and macros. */ | |
| 965 | +#ifdef __USE_EXTERN_INLINES | |
| 966 | +# include <bits/stdio.h> | |
| 967 | +#endif | |
| 968 | +#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function | |
| 969 | +/* Now include the function definitions and redirects too. */ | |
| 970 | +# include <bits/stdio2.h> | |
| 971 | +#endif | |
| 972 | + | |
| 973 | +__END_DECLS | |
| 974 | + | |
| 975 | +#endif /* <stdio.h> included. */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@stdio.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@stdio.h.blob differ Large diff collapsed, click to expand
+1175 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@stdlib.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,1175 @@ | ||
| 1 | +/* Copyright (C) 1991-2025 Free Software Foundation, Inc. | |
| 2 | + Copyright The GNU Toolchain Authors. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +/* | |
| 20 | + * ISO C99 Standard: 7.20 General utilities <stdlib.h> | |
| 21 | + */ | |
| 22 | + | |
| 23 | +#ifndef _STDLIB_H | |
| 24 | + | |
| 25 | +#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION | |
| 26 | +#include <bits/libc-header-start.h> | |
| 27 | + | |
| 28 | +/* Get size_t, wchar_t and NULL from <stddef.h>. */ | |
| 29 | +#define __need_size_t | |
| 30 | +#define __need_wchar_t | |
| 31 | +#define __need_NULL | |
| 32 | +#include <stddef.h> | |
| 33 | + | |
| 34 | +__BEGIN_DECLS | |
| 35 | + | |
| 36 | +#define _STDLIB_H 1 | |
| 37 | + | |
| 38 | +#if (defined __USE_XOPEN || defined __USE_XOPEN2K8) && !defined _SYS_WAIT_H | |
| 39 | +/* XPG requires a few symbols from <sys/wait.h> being defined. */ | |
| 40 | +# include <bits/waitflags.h> | |
| 41 | +# include <bits/waitstatus.h> | |
| 42 | + | |
| 43 | +/* Define the macros <sys/wait.h> also would define this way. */ | |
| 44 | +# define WEXITSTATUS(status) __WEXITSTATUS (status) | |
| 45 | +# define WTERMSIG(status) __WTERMSIG (status) | |
| 46 | +# define WSTOPSIG(status) __WSTOPSIG (status) | |
| 47 | +# define WIFEXITED(status) __WIFEXITED (status) | |
| 48 | +# define WIFSIGNALED(status) __WIFSIGNALED (status) | |
| 49 | +# define WIFSTOPPED(status) __WIFSTOPPED (status) | |
| 50 | +# ifdef __WIFCONTINUED | |
| 51 | +# define WIFCONTINUED(status) __WIFCONTINUED (status) | |
| 52 | +# endif | |
| 53 | +#endif /* X/Open or XPG7 and <sys/wait.h> not included. */ | |
| 54 | + | |
| 55 | +/* _FloatN API tests for enablement. */ | |
| 56 | +#include <bits/floatn.h> | |
| 57 | + | |
| 58 | +/* Returned by `div'. */ | |
| 59 | +typedef struct | |
| 60 | + { | |
| 61 | + int quot; /* Quotient. */ | |
| 62 | + int rem; /* Remainder. */ | |
| 63 | + } div_t; | |
| 64 | + | |
| 65 | +/* Returned by `ldiv'. */ | |
| 66 | +#ifndef __ldiv_t_defined | |
| 67 | +typedef struct | |
| 68 | + { | |
| 69 | + long int quot; /* Quotient. */ | |
| 70 | + long int rem; /* Remainder. */ | |
| 71 | + } ldiv_t; | |
| 72 | +# define __ldiv_t_defined 1 | |
| 73 | +#endif | |
| 74 | + | |
| 75 | +#if defined __USE_ISOC99 && !defined __lldiv_t_defined | |
| 76 | +/* Returned by `lldiv'. */ | |
| 77 | +__extension__ typedef struct | |
| 78 | + { | |
| 79 | + long long int quot; /* Quotient. */ | |
| 80 | + long long int rem; /* Remainder. */ | |
| 81 | + } lldiv_t; | |
| 82 | +# define __lldiv_t_defined 1 | |
| 83 | +#endif | |
| 84 | + | |
| 85 | + | |
| 86 | +/* The largest number rand will return (same as INT_MAX). */ | |
| 87 | +#define RAND_MAX 2147483647 | |
| 88 | + | |
| 89 | + | |
| 90 | +/* We define these the same for all machines. | |
| 91 | + Changes from this to the outside world should be done in `_exit'. */ | |
| 92 | +#define EXIT_FAILURE 1 /* Failing exit status. */ | |
| 93 | +#define EXIT_SUCCESS 0 /* Successful exit status. */ | |
| 94 | + | |
| 95 | + | |
| 96 | +/* Maximum length of a multibyte character in the current locale. */ | |
| 97 | +#define MB_CUR_MAX (__ctype_get_mb_cur_max ()) | |
| 98 | +extern size_t __ctype_get_mb_cur_max (void) __THROW __wur; | |
| 99 | + | |
| 100 | + | |
| 101 | +/* Convert a string to a floating-point number. */ | |
| 102 | +extern double atof (const char *__nptr) | |
| 103 | + __THROW __attribute_pure__ __nonnull ((1)) __wur; | |
| 104 | +/* Convert a string to an integer. */ | |
| 105 | +extern int atoi (const char *__nptr) | |
| 106 | + __THROW __attribute_pure__ __nonnull ((1)) __wur; | |
| 107 | +/* Convert a string to a long integer. */ | |
| 108 | +extern long int atol (const char *__nptr) | |
| 109 | + __THROW __attribute_pure__ __nonnull ((1)) __wur; | |
| 110 | + | |
| 111 | +#ifdef __USE_ISOC99 | |
| 112 | +/* Convert a string to a long long integer. */ | |
| 113 | +__extension__ extern long long int atoll (const char *__nptr) | |
| 114 | + __THROW __attribute_pure__ __nonnull ((1)) __wur; | |
| 115 | +#endif | |
| 116 | + | |
| 117 | +/* Convert a string to a floating-point number. */ | |
| 118 | +extern double strtod (const char *__restrict __nptr, | |
| 119 | + char **__restrict __endptr) | |
| 120 | + __THROW __nonnull ((1)); | |
| 121 | + | |
| 122 | +#ifdef __USE_ISOC99 | |
| 123 | +/* Likewise for `float' and `long double' sizes of floating-point numbers. */ | |
| 124 | +extern float strtof (const char *__restrict __nptr, | |
| 125 | + char **__restrict __endptr) __THROW __nonnull ((1)); | |
| 126 | + | |
| 127 | +extern long double strtold (const char *__restrict __nptr, | |
| 128 | + char **__restrict __endptr) | |
| 129 | + __THROW __nonnull ((1)); | |
| 130 | +#endif | |
| 131 | + | |
| 132 | +/* Likewise for '_FloatN' and '_FloatNx'. */ | |
| 133 | + | |
| 134 | +#if __HAVE_FLOAT16 && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 135 | +extern _Float16 strtof16 (const char *__restrict __nptr, | |
| 136 | + char **__restrict __endptr) | |
| 137 | + __THROW __nonnull ((1)); | |
| 138 | +#endif | |
| 139 | + | |
| 140 | +#if __HAVE_FLOAT32 && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 141 | +extern _Float32 strtof32 (const char *__restrict __nptr, | |
| 142 | + char **__restrict __endptr) | |
| 143 | + __THROW __nonnull ((1)); | |
| 144 | +#endif | |
| 145 | + | |
| 146 | +#if __HAVE_FLOAT64 && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 147 | +extern _Float64 strtof64 (const char *__restrict __nptr, | |
| 148 | + char **__restrict __endptr) | |
| 149 | + __THROW __nonnull ((1)); | |
| 150 | +#endif | |
| 151 | + | |
| 152 | +#if __HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 153 | +extern _Float128 strtof128 (const char *__restrict __nptr, | |
| 154 | + char **__restrict __endptr) | |
| 155 | + __THROW __nonnull ((1)); | |
| 156 | +#endif | |
| 157 | + | |
| 158 | +#if __HAVE_FLOAT32X && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 159 | +extern _Float32x strtof32x (const char *__restrict __nptr, | |
| 160 | + char **__restrict __endptr) | |
| 161 | + __THROW __nonnull ((1)); | |
| 162 | +#endif | |
| 163 | + | |
| 164 | +#if __HAVE_FLOAT64X && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 165 | +extern _Float64x strtof64x (const char *__restrict __nptr, | |
| 166 | + char **__restrict __endptr) | |
| 167 | + __THROW __nonnull ((1)); | |
| 168 | +#endif | |
| 169 | + | |
| 170 | +#if __HAVE_FLOAT128X && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 171 | +extern _Float128x strtof128x (const char *__restrict __nptr, | |
| 172 | + char **__restrict __endptr) | |
| 173 | + __THROW __nonnull ((1)); | |
| 174 | +#endif | |
| 175 | + | |
| 176 | +/* Convert a string to a long integer. */ | |
| 177 | +extern long int strtol (const char *__restrict __nptr, | |
| 178 | + char **__restrict __endptr, int __base) | |
| 179 | + __THROW __nonnull ((1)); | |
| 180 | +/* Convert a string to an unsigned long integer. */ | |
| 181 | +extern unsigned long int strtoul (const char *__restrict __nptr, | |
| 182 | + char **__restrict __endptr, int __base) | |
| 183 | + __THROW __nonnull ((1)); | |
| 184 | + | |
| 185 | +#ifdef __USE_MISC | |
| 186 | +/* Convert a string to a quadword integer. */ | |
| 187 | +__extension__ | |
| 188 | +extern long long int strtoq (const char *__restrict __nptr, | |
| 189 | + char **__restrict __endptr, int __base) | |
| 190 | + __THROW __nonnull ((1)); | |
| 191 | +/* Convert a string to an unsigned quadword integer. */ | |
| 192 | +__extension__ | |
| 193 | +extern unsigned long long int strtouq (const char *__restrict __nptr, | |
| 194 | + char **__restrict __endptr, int __base) | |
| 195 | + __THROW __nonnull ((1)); | |
| 196 | +#endif /* Use misc. */ | |
| 197 | + | |
| 198 | +#ifdef __USE_ISOC99 | |
| 199 | +/* Convert a string to a quadword integer. */ | |
| 200 | +__extension__ | |
| 201 | +extern long long int strtoll (const char *__restrict __nptr, | |
| 202 | + char **__restrict __endptr, int __base) | |
| 203 | + __THROW __nonnull ((1)); | |
| 204 | +/* Convert a string to an unsigned quadword integer. */ | |
| 205 | +__extension__ | |
| 206 | +extern unsigned long long int strtoull (const char *__restrict __nptr, | |
| 207 | + char **__restrict __endptr, int __base) | |
| 208 | + __THROW __nonnull ((1)); | |
| 209 | +#endif /* ISO C99 or use MISC. */ | |
| 210 | + | |
| 211 | +/* Versions of the above functions that handle '0b' and '0B' prefixes | |
| 212 | + in base 0 or 2. */ | |
| 213 | +#if __GLIBC_USE (C23_STRTOL) | |
| 214 | +# ifdef __REDIRECT | |
| 215 | +extern long int __REDIRECT_NTH (strtol, (const char *__restrict __nptr, | |
| 216 | + char **__restrict __endptr, | |
| 217 | + int __base), __isoc23_strtol) | |
| 218 | + __nonnull ((1)); | |
| 219 | +extern unsigned long int __REDIRECT_NTH (strtoul, | |
| 220 | + (const char *__restrict __nptr, | |
| 221 | + char **__restrict __endptr, | |
| 222 | + int __base), __isoc23_strtoul) | |
| 223 | + __nonnull ((1)); | |
| 224 | +# ifdef __USE_MISC | |
| 225 | +__extension__ | |
| 226 | +extern long long int __REDIRECT_NTH (strtoq, (const char *__restrict __nptr, | |
| 227 | + char **__restrict __endptr, | |
| 228 | + int __base), __isoc23_strtoll) | |
| 229 | + __nonnull ((1)); | |
| 230 | +__extension__ | |
| 231 | +extern unsigned long long int __REDIRECT_NTH (strtouq, | |
| 232 | + (const char *__restrict __nptr, | |
| 233 | + char **__restrict __endptr, | |
| 234 | + int __base), __isoc23_strtoull) | |
| 235 | + __nonnull ((1)); | |
| 236 | +# endif | |
| 237 | +__extension__ | |
| 238 | +extern long long int __REDIRECT_NTH (strtoll, (const char *__restrict __nptr, | |
| 239 | + char **__restrict __endptr, | |
| 240 | + int __base), __isoc23_strtoll) | |
| 241 | + __nonnull ((1)); | |
| 242 | +__extension__ | |
| 243 | +extern unsigned long long int __REDIRECT_NTH (strtoull, | |
| 244 | + (const char *__restrict __nptr, | |
| 245 | + char **__restrict __endptr, | |
| 246 | + int __base), __isoc23_strtoull) | |
| 247 | + __nonnull ((1)); | |
| 248 | +# else | |
| 249 | +extern long int __isoc23_strtol (const char *__restrict __nptr, | |
| 250 | + char **__restrict __endptr, int __base) | |
| 251 | + __THROW __nonnull ((1)); | |
| 252 | +extern unsigned long int __isoc23_strtoul (const char *__restrict __nptr, | |
| 253 | + char **__restrict __endptr, | |
| 254 | + int __base) | |
| 255 | + __THROW __nonnull ((1)); | |
| 256 | +__extension__ | |
| 257 | +extern long long int __isoc23_strtoll (const char *__restrict __nptr, | |
| 258 | + char **__restrict __endptr, int __base) | |
| 259 | + __THROW __nonnull ((1)); | |
| 260 | +__extension__ | |
| 261 | +extern unsigned long long int __isoc23_strtoull (const char *__restrict __nptr, | |
| 262 | + char **__restrict __endptr, | |
| 263 | + int __base) | |
| 264 | + __THROW __nonnull ((1)); | |
| 265 | +# define strtol __isoc23_strtol | |
| 266 | +# define strtoul __isoc23_strtoul | |
| 267 | +# ifdef __USE_MISC | |
| 268 | +# define strtoq __isoc23_strtoll | |
| 269 | +# define strtouq __isoc23_strtoull | |
| 270 | +# endif | |
| 271 | +# define strtoll __isoc23_strtoll | |
| 272 | +# define strtoull __isoc23_strtoull | |
| 273 | +# endif | |
| 274 | +#endif | |
| 275 | + | |
| 276 | +/* Convert a floating-point number to a string. */ | |
| 277 | +#if __GLIBC_USE (IEC_60559_BFP_EXT_C23) | |
| 278 | +extern int strfromd (char *__dest, size_t __size, const char *__format, | |
| 279 | + double __f) | |
| 280 | + __THROW __nonnull ((3)); | |
| 281 | + | |
| 282 | +extern int strfromf (char *__dest, size_t __size, const char *__format, | |
| 283 | + float __f) | |
| 284 | + __THROW __nonnull ((3)); | |
| 285 | + | |
| 286 | +extern int strfroml (char *__dest, size_t __size, const char *__format, | |
| 287 | + long double __f) | |
| 288 | + __THROW __nonnull ((3)); | |
| 289 | +#endif | |
| 290 | + | |
| 291 | +#if __HAVE_FLOAT16 && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 292 | +extern int strfromf16 (char *__dest, size_t __size, const char * __format, | |
| 293 | + _Float16 __f) | |
| 294 | + __THROW __nonnull ((3)); | |
| 295 | +#endif | |
| 296 | + | |
| 297 | +#if __HAVE_FLOAT32 && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 298 | +extern int strfromf32 (char *__dest, size_t __size, const char * __format, | |
| 299 | + _Float32 __f) | |
| 300 | + __THROW __nonnull ((3)); | |
| 301 | +#endif | |
| 302 | + | |
| 303 | +#if __HAVE_FLOAT64 && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 304 | +extern int strfromf64 (char *__dest, size_t __size, const char * __format, | |
| 305 | + _Float64 __f) | |
| 306 | + __THROW __nonnull ((3)); | |
| 307 | +#endif | |
| 308 | + | |
| 309 | +#if __HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 310 | +extern int strfromf128 (char *__dest, size_t __size, const char * __format, | |
| 311 | + _Float128 __f) | |
| 312 | + __THROW __nonnull ((3)); | |
| 313 | +#endif | |
| 314 | + | |
| 315 | +#if __HAVE_FLOAT32X && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 316 | +extern int strfromf32x (char *__dest, size_t __size, const char * __format, | |
| 317 | + _Float32x __f) | |
| 318 | + __THROW __nonnull ((3)); | |
| 319 | +#endif | |
| 320 | + | |
| 321 | +#if __HAVE_FLOAT64X && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 322 | +extern int strfromf64x (char *__dest, size_t __size, const char * __format, | |
| 323 | + _Float64x __f) | |
| 324 | + __THROW __nonnull ((3)); | |
| 325 | +#endif | |
| 326 | + | |
| 327 | +#if __HAVE_FLOAT128X && __GLIBC_USE (IEC_60559_TYPES_EXT) | |
| 328 | +extern int strfromf128x (char *__dest, size_t __size, const char * __format, | |
| 329 | + _Float128x __f) | |
| 330 | + __THROW __nonnull ((3)); | |
| 331 | +#endif | |
| 332 | + | |
| 333 | + | |
| 334 | +#ifdef __USE_GNU | |
| 335 | +/* Parallel versions of the functions above which take the locale to | |
| 336 | + use as an additional parameter. These are GNU extensions inspired | |
| 337 | + by the POSIX.1-2008 extended locale API. */ | |
| 338 | +# include <bits/types/locale_t.h> | |
| 339 | + | |
| 340 | +extern long int strtol_l (const char *__restrict __nptr, | |
| 341 | + char **__restrict __endptr, int __base, | |
| 342 | + locale_t __loc) __THROW __nonnull ((1, 4)); | |
| 343 | + | |
| 344 | +extern unsigned long int strtoul_l (const char *__restrict __nptr, | |
| 345 | + char **__restrict __endptr, | |
| 346 | + int __base, locale_t __loc) | |
| 347 | + __THROW __nonnull ((1, 4)); | |
| 348 | + | |
| 349 | +__extension__ | |
| 350 | +extern long long int strtoll_l (const char *__restrict __nptr, | |
| 351 | + char **__restrict __endptr, int __base, | |
| 352 | + locale_t __loc) | |
| 353 | + __THROW __nonnull ((1, 4)); | |
| 354 | + | |
| 355 | +__extension__ | |
| 356 | +extern unsigned long long int strtoull_l (const char *__restrict __nptr, | |
| 357 | + char **__restrict __endptr, | |
| 358 | + int __base, locale_t __loc) | |
| 359 | + __THROW __nonnull ((1, 4)); | |
| 360 | + | |
| 361 | +/* Versions of the above functions that handle '0b' and '0B' prefixes | |
| 362 | + in base 0 or 2. */ | |
| 363 | +# if __GLIBC_USE (C23_STRTOL) | |
| 364 | +# ifdef __REDIRECT | |
| 365 | +extern long int __REDIRECT_NTH (strtol_l, (const char *__restrict __nptr, | |
| 366 | + char **__restrict __endptr, | |
| 367 | + int __base, locale_t __loc), | |
| 368 | + __isoc23_strtol_l) | |
| 369 | + __nonnull ((1, 4)); | |
| 370 | +extern unsigned long int __REDIRECT_NTH (strtoul_l, | |
| 371 | + (const char *__restrict __nptr, | |
| 372 | + char **__restrict __endptr, | |
| 373 | + int __base, locale_t __loc), | |
| 374 | + __isoc23_strtoul_l) | |
| 375 | + __nonnull ((1, 4)); | |
| 376 | +__extension__ | |
| 377 | +extern long long int __REDIRECT_NTH (strtoll_l, (const char *__restrict __nptr, | |
| 378 | + char **__restrict __endptr, | |
| 379 | + int __base, | |
| 380 | + locale_t __loc), | |
| 381 | + __isoc23_strtoll_l) | |
| 382 | + __nonnull ((1, 4)); | |
| 383 | +__extension__ | |
| 384 | +extern unsigned long long int __REDIRECT_NTH (strtoull_l, | |
| 385 | + (const char *__restrict __nptr, | |
| 386 | + char **__restrict __endptr, | |
| 387 | + int __base, locale_t __loc), | |
| 388 | + __isoc23_strtoull_l) | |
| 389 | + __nonnull ((1, 4)); | |
| 390 | +# else | |
| 391 | +extern long int __isoc23_strtol_l (const char *__restrict __nptr, | |
| 392 | + char **__restrict __endptr, int __base, | |
| 393 | + locale_t __loc) __THROW __nonnull ((1, 4)); | |
| 394 | +extern unsigned long int __isoc23_strtoul_l (const char *__restrict __nptr, | |
| 395 | + char **__restrict __endptr, | |
| 396 | + int __base, locale_t __loc) | |
| 397 | + __THROW __nonnull ((1, 4)); | |
| 398 | +__extension__ | |
| 399 | +extern long long int __isoc23_strtoll_l (const char *__restrict __nptr, | |
| 400 | + char **__restrict __endptr, | |
| 401 | + int __base, locale_t __loc) | |
| 402 | + __THROW __nonnull ((1, 4)); | |
| 403 | +__extension__ | |
| 404 | +extern unsigned long long int __isoc23_strtoull_l (const char *__restrict __nptr, | |
| 405 | + char **__restrict __endptr, | |
| 406 | + int __base, locale_t __loc) | |
| 407 | + __THROW __nonnull ((1, 4)); | |
| 408 | +# define strtol_l __isoc23_strtol_l | |
| 409 | +# define strtoul_l __isoc23_strtoul_l | |
| 410 | +# define strtoll_l __isoc23_strtoll_l | |
| 411 | +# define strtoull_l __isoc23_strtoull_l | |
| 412 | +# endif | |
| 413 | +# endif | |
| 414 | + | |
| 415 | +extern double strtod_l (const char *__restrict __nptr, | |
| 416 | + char **__restrict __endptr, locale_t __loc) | |
| 417 | + __THROW __nonnull ((1, 3)); | |
| 418 | + | |
| 419 | +extern float strtof_l (const char *__restrict __nptr, | |
| 420 | + char **__restrict __endptr, locale_t __loc) | |
| 421 | + __THROW __nonnull ((1, 3)); | |
| 422 | + | |
| 423 | +extern long double strtold_l (const char *__restrict __nptr, | |
| 424 | + char **__restrict __endptr, | |
| 425 | + locale_t __loc) | |
| 426 | + __THROW __nonnull ((1, 3)); | |
| 427 | + | |
| 428 | +# if __HAVE_FLOAT16 | |
| 429 | +extern _Float16 strtof16_l (const char *__restrict __nptr, | |
| 430 | + char **__restrict __endptr, | |
| 431 | + locale_t __loc) | |
| 432 | + __THROW __nonnull ((1, 3)); | |
| 433 | +# endif | |
| 434 | + | |
| 435 | +# if __HAVE_FLOAT32 | |
| 436 | +extern _Float32 strtof32_l (const char *__restrict __nptr, | |
| 437 | + char **__restrict __endptr, | |
| 438 | + locale_t __loc) | |
| 439 | + __THROW __nonnull ((1, 3)); | |
| 440 | +# endif | |
| 441 | + | |
| 442 | +# if __HAVE_FLOAT64 | |
| 443 | +extern _Float64 strtof64_l (const char *__restrict __nptr, | |
| 444 | + char **__restrict __endptr, | |
| 445 | + locale_t __loc) | |
| 446 | + __THROW __nonnull ((1, 3)); | |
| 447 | +# endif | |
| 448 | + | |
| 449 | +# if __HAVE_FLOAT128 | |
| 450 | +extern _Float128 strtof128_l (const char *__restrict __nptr, | |
| 451 | + char **__restrict __endptr, | |
| 452 | + locale_t __loc) | |
| 453 | + __THROW __nonnull ((1, 3)); | |
| 454 | +# endif | |
| 455 | + | |
| 456 | +# if __HAVE_FLOAT32X | |
| 457 | +extern _Float32x strtof32x_l (const char *__restrict __nptr, | |
| 458 | + char **__restrict __endptr, | |
| 459 | + locale_t __loc) | |
| 460 | + __THROW __nonnull ((1, 3)); | |
| 461 | +# endif | |
| 462 | + | |
| 463 | +# if __HAVE_FLOAT64X | |
| 464 | +extern _Float64x strtof64x_l (const char *__restrict __nptr, | |
| 465 | + char **__restrict __endptr, | |
| 466 | + locale_t __loc) | |
| 467 | + __THROW __nonnull ((1, 3)); | |
| 468 | +# endif | |
| 469 | + | |
| 470 | +# if __HAVE_FLOAT128X | |
| 471 | +extern _Float128x strtof128x_l (const char *__restrict __nptr, | |
| 472 | + char **__restrict __endptr, | |
| 473 | + locale_t __loc) | |
| 474 | + __THROW __nonnull ((1, 3)); | |
| 475 | +# endif | |
| 476 | +#endif /* GNU */ | |
| 477 | + | |
| 478 | + | |
| 479 | +#ifdef __USE_EXTERN_INLINES | |
| 480 | +__extern_inline int | |
| 481 | +__NTH (atoi (const char *__nptr)) | |
| 482 | +{ | |
| 483 | + return (int) strtol (__nptr, (char **) NULL, 10); | |
| 484 | +} | |
| 485 | +__extern_inline long int | |
| 486 | +__NTH (atol (const char *__nptr)) | |
| 487 | +{ | |
| 488 | + return strtol (__nptr, (char **) NULL, 10); | |
| 489 | +} | |
| 490 | + | |
| 491 | +# ifdef __USE_ISOC99 | |
| 492 | +__extension__ __extern_inline long long int | |
| 493 | +__NTH (atoll (const char *__nptr)) | |
| 494 | +{ | |
| 495 | + return strtoll (__nptr, (char **) NULL, 10); | |
| 496 | +} | |
| 497 | +# endif | |
| 498 | +#endif /* Optimizing and Inlining. */ | |
| 499 | + | |
| 500 | + | |
| 501 | +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED | |
| 502 | +/* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant | |
| 503 | + digit first. Returns a pointer to static storage overwritten by the | |
| 504 | + next call. */ | |
| 505 | +extern char *l64a (long int __n) __THROW __wur; | |
| 506 | + | |
| 507 | +/* Read a number from a string S in base 64 as above. */ | |
| 508 | +extern long int a64l (const char *__s) | |
| 509 | + __THROW __attribute_pure__ __nonnull ((1)) __wur; | |
| 510 | + | |
| 511 | +#endif /* Use misc || extended X/Open. */ | |
| 512 | + | |
| 513 | +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED | |
| 514 | +# include <sys/types.h> /* we need int32_t... */ | |
| 515 | + | |
| 516 | +/* These are the functions that actually do things. The `random', `srandom', | |
| 517 | + `initstate' and `setstate' functions are those from BSD Unices. | |
| 518 | + The `rand' and `srand' functions are required by the ANSI standard. | |
| 519 | + We provide both interfaces to the same random number generator. */ | |
| 520 | +/* Return a random long integer between 0 and 2^31-1 inclusive. */ | |
| 521 | +extern long int random (void) __THROW; | |
| 522 | + | |
| 523 | +/* Seed the random number generator with the given number. */ | |
| 524 | +extern void srandom (unsigned int __seed) __THROW; | |
| 525 | + | |
| 526 | +/* Initialize the random number generator to use state buffer STATEBUF, | |
| 527 | + of length STATELEN, and seed it with SEED. Optimal lengths are 8, 16, | |
| 528 | + 32, 64, 128 and 256, the bigger the better; values less than 8 will | |
| 529 | + cause an error and values greater than 256 will be rounded down. */ | |
| 530 | +extern char *initstate (unsigned int __seed, char *__statebuf, | |
| 531 | + size_t __statelen) __THROW __nonnull ((2)); | |
| 532 | + | |
| 533 | +/* Switch the random number generator to state buffer STATEBUF, | |
| 534 | + which should have been previously initialized by `initstate'. */ | |
| 535 | +extern char *setstate (char *__statebuf) __THROW __nonnull ((1)); | |
| 536 | + | |
| 537 | + | |
| 538 | +# ifdef __USE_MISC | |
| 539 | +/* Reentrant versions of the `random' family of functions. | |
| 540 | + These functions all use the following data structure to contain | |
| 541 | + state, rather than global state variables. */ | |
| 542 | + | |
| 543 | +struct random_data | |
| 544 | + { | |
| 545 | + int32_t *fptr; /* Front pointer. */ | |
| 546 | + int32_t *rptr; /* Rear pointer. */ | |
| 547 | + int32_t *state; /* Array of state values. */ | |
| 548 | + int rand_type; /* Type of random number generator. */ | |
| 549 | + int rand_deg; /* Degree of random number generator. */ | |
| 550 | + int rand_sep; /* Distance between front and rear. */ | |
| 551 | + int32_t *end_ptr; /* Pointer behind state table. */ | |
| 552 | + }; | |
| 553 | + | |
| 554 | +extern int random_r (struct random_data *__restrict __buf, | |
| 555 | + int32_t *__restrict __result) __THROW __nonnull ((1, 2)); | |
| 556 | + | |
| 557 | +extern int srandom_r (unsigned int __seed, struct random_data *__buf) | |
| 558 | + __THROW __nonnull ((2)); | |
| 559 | + | |
| 560 | +extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, | |
| 561 | + size_t __statelen, | |
| 562 | + struct random_data *__restrict __buf) | |
| 563 | + __THROW __nonnull ((2, 4)); | |
| 564 | + | |
| 565 | +extern int setstate_r (char *__restrict __statebuf, | |
| 566 | + struct random_data *__restrict __buf) | |
| 567 | + __THROW __nonnull ((1, 2)); | |
| 568 | +# endif /* Use misc. */ | |
| 569 | +#endif /* Use extended X/Open || misc. */ | |
| 570 | + | |
| 571 | + | |
| 572 | +/* Return a random integer between 0 and RAND_MAX inclusive. */ | |
| 573 | +extern int rand (void) __THROW; | |
| 574 | +/* Seed the random number generator with the given number. */ | |
| 575 | +extern void srand (unsigned int __seed) __THROW; | |
| 576 | + | |
| 577 | +#ifdef __USE_POSIX199506 | |
| 578 | +/* Reentrant interface according to POSIX.1. */ | |
| 579 | +extern int rand_r (unsigned int *__seed) __THROW; | |
| 580 | +#endif | |
| 581 | + | |
| 582 | + | |
| 583 | +#if defined __USE_MISC || defined __USE_XOPEN | |
| 584 | +/* System V style 48-bit random number generator functions. */ | |
| 585 | + | |
| 586 | +/* Return non-negative, double-precision floating-point value in [0.0,1.0). */ | |
| 587 | +extern double drand48 (void) __THROW; | |
| 588 | +extern double erand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1)); | |
| 589 | + | |
| 590 | +/* Return non-negative, long integer in [0,2^31). */ | |
| 591 | +extern long int lrand48 (void) __THROW; | |
| 592 | +extern long int nrand48 (unsigned short int __xsubi[3]) | |
| 593 | + __THROW __nonnull ((1)); | |
| 594 | + | |
| 595 | +/* Return signed, long integers in [-2^31,2^31). */ | |
| 596 | +extern long int mrand48 (void) __THROW; | |
| 597 | +extern long int jrand48 (unsigned short int __xsubi[3]) | |
| 598 | + __THROW __nonnull ((1)); | |
| 599 | + | |
| 600 | +/* Seed random number generator. */ | |
| 601 | +extern void srand48 (long int __seedval) __THROW; | |
| 602 | +extern unsigned short int *seed48 (unsigned short int __seed16v[3]) | |
| 603 | + __THROW __nonnull ((1)); | |
| 604 | +extern void lcong48 (unsigned short int __param[7]) __THROW __nonnull ((1)); | |
| 605 | + | |
| 606 | +# ifdef __USE_MISC | |
| 607 | +/* Data structure for communication with thread safe versions. This | |
| 608 | + type is to be regarded as opaque. It's only exported because users | |
| 609 | + have to allocate objects of this type. */ | |
| 610 | +struct drand48_data | |
| 611 | + { | |
| 612 | + unsigned short int __x[3]; /* Current state. */ | |
| 613 | + unsigned short int __old_x[3]; /* Old state. */ | |
| 614 | + unsigned short int __c; /* Additive const. in congruential formula. */ | |
| 615 | + unsigned short int __init; /* Flag for initializing. */ | |
| 616 | + __extension__ unsigned long long int __a; /* Factor in congruential | |
| 617 | + formula. */ | |
| 618 | + }; | |
| 619 | + | |
| 620 | +/* Return non-negative, double-precision floating-point value in [0.0,1.0). */ | |
| 621 | +extern int drand48_r (struct drand48_data *__restrict __buffer, | |
| 622 | + double *__restrict __result) __THROW __nonnull ((1, 2)); | |
| 623 | +extern int erand48_r (unsigned short int __xsubi[3], | |
| 624 | + struct drand48_data *__restrict __buffer, | |
| 625 | + double *__restrict __result) __THROW __nonnull ((1, 2)); | |
| 626 | + | |
| 627 | +/* Return non-negative, long integer in [0,2^31). */ | |
| 628 | +extern int lrand48_r (struct drand48_data *__restrict __buffer, | |
| 629 | + long int *__restrict __result) | |
| 630 | + __THROW __nonnull ((1, 2)); | |
| 631 | +extern int nrand48_r (unsigned short int __xsubi[3], | |
| 632 | + struct drand48_data *__restrict __buffer, | |
| 633 | + long int *__restrict __result) | |
| 634 | + __THROW __nonnull ((1, 2)); | |
| 635 | + | |
| 636 | +/* Return signed, long integers in [-2^31,2^31). */ | |
| 637 | +extern int mrand48_r (struct drand48_data *__restrict __buffer, | |
| 638 | + long int *__restrict __result) | |
| 639 | + __THROW __nonnull ((1, 2)); | |
| 640 | +extern int jrand48_r (unsigned short int __xsubi[3], | |
| 641 | + struct drand48_data *__restrict __buffer, | |
| 642 | + long int *__restrict __result) | |
| 643 | + __THROW __nonnull ((1, 2)); | |
| 644 | + | |
| 645 | +/* Seed random number generator. */ | |
| 646 | +extern int srand48_r (long int __seedval, struct drand48_data *__buffer) | |
| 647 | + __THROW __nonnull ((2)); | |
| 648 | + | |
| 649 | +extern int seed48_r (unsigned short int __seed16v[3], | |
| 650 | + struct drand48_data *__buffer) __THROW __nonnull ((1, 2)); | |
| 651 | + | |
| 652 | +extern int lcong48_r (unsigned short int __param[7], | |
| 653 | + struct drand48_data *__buffer) | |
| 654 | + __THROW __nonnull ((1, 2)); | |
| 655 | + | |
| 656 | +/* Return a random integer between zero and 2**32-1 (inclusive). */ | |
| 657 | +extern __uint32_t arc4random (void) | |
| 658 | + __THROW __wur; | |
| 659 | + | |
| 660 | +/* Fill the buffer with random data. */ | |
| 661 | +extern void arc4random_buf (void *__buf, size_t __size) | |
| 662 | + __THROW __nonnull ((1)); | |
| 663 | + | |
| 664 | +/* Return a random number between zero (inclusive) and the specified | |
| 665 | + limit (exclusive). */ | |
| 666 | +extern __uint32_t arc4random_uniform (__uint32_t __upper_bound) | |
| 667 | + __THROW __wur; | |
| 668 | +# endif /* Use misc. */ | |
| 669 | +#endif /* Use misc or X/Open. */ | |
| 670 | + | |
| 671 | +/* Allocate SIZE bytes of memory. */ | |
| 672 | +extern void *malloc (size_t __size) __THROW __attribute_malloc__ | |
| 673 | + __attribute_alloc_size__ ((1)) __wur; | |
| 674 | +/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */ | |
| 675 | +extern void *calloc (size_t __nmemb, size_t __size) | |
| 676 | + __THROW __attribute_malloc__ __attribute_alloc_size__ ((1, 2)) __wur; | |
| 677 | + | |
| 678 | +/* Re-allocate the previously allocated block | |
| 679 | + in PTR, making the new block SIZE bytes long. */ | |
| 680 | +/* __attribute_malloc__ is not used, because if realloc returns | |
| 681 | + the same pointer that was passed to it, aliasing needs to be allowed | |
| 682 | + between objects pointed by the old and new pointers. */ | |
| 683 | +extern void *realloc (void *__ptr, size_t __size) | |
| 684 | + __THROW __attribute_warn_unused_result__ __attribute_alloc_size__ ((2)); | |
| 685 | + | |
| 686 | +/* Free a block allocated by `malloc', `realloc' or `calloc'. */ | |
| 687 | +extern void free (void *__ptr) __THROW; | |
| 688 | + | |
| 689 | +#ifdef __USE_MISC | |
| 690 | +/* Re-allocate the previously allocated block in PTR, making the new | |
| 691 | + block large enough for NMEMB elements of SIZE bytes each. */ | |
| 692 | +/* __attribute_malloc__ is not used, because if reallocarray returns | |
| 693 | + the same pointer that was passed to it, aliasing needs to be allowed | |
| 694 | + between objects pointed by the old and new pointers. */ | |
| 695 | +extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) | |
| 696 | + __THROW __attribute_warn_unused_result__ | |
| 697 | + __attribute_alloc_size__ ((2, 3)) | |
| 698 | + __attr_dealloc_free; | |
| 699 | + | |
| 700 | +/* Add reallocarray as its own deallocator. */ | |
| 701 | +extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) | |
| 702 | + __THROW __attr_dealloc (reallocarray, 1); | |
| 703 | +#endif | |
| 704 | + | |
| 705 | +#ifdef __USE_MISC | |
| 706 | +# include <alloca.h> | |
| 707 | +#endif /* Use misc. */ | |
| 708 | + | |
| 709 | +#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \ | |
| 710 | + || defined __USE_MISC | |
| 711 | +/* Allocate SIZE bytes on a page boundary. The storage cannot be freed. */ | |
| 712 | +extern void *valloc (size_t __size) __THROW __attribute_malloc__ | |
| 713 | + __attribute_alloc_size__ ((1)) __wur; | |
| 714 | +#endif | |
| 715 | + | |
| 716 | +#ifdef __USE_XOPEN2K | |
| 717 | +/* Allocate memory of SIZE bytes with an alignment of ALIGNMENT. */ | |
| 718 | +extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) | |
| 719 | + __THROW __nonnull ((1)) __wur; | |
| 720 | +#endif | |
| 721 | + | |
| 722 | +#ifdef __USE_ISOC11 | |
| 723 | +/* ISO C variant of aligned allocation. */ | |
| 724 | +extern void *aligned_alloc (size_t __alignment, size_t __size) | |
| 725 | + __THROW __attribute_malloc__ __attribute_alloc_align__ ((1)) | |
| 726 | + __attribute_alloc_size__ ((2)) __wur; | |
| 727 | +#endif | |
| 728 | + | |
| 729 | +/* Abort execution and generate a core-dump. */ | |
| 730 | +extern void abort (void) __THROW __attribute__ ((__noreturn__)) __COLD; | |
| 731 | + | |
| 732 | + | |
| 733 | +/* Register a function to be called when `exit' is called. */ | |
| 734 | +extern int atexit (void (*__func) (void)) __THROW __nonnull ((1)); | |
| 735 | + | |
| 736 | +#if defined __USE_ISOC11 || defined __USE_ISOCXX11 | |
| 737 | +/* Register a function to be called when `quick_exit' is called. */ | |
| 738 | +# ifdef __cplusplus | |
| 739 | +extern "C++" int at_quick_exit (void (*__func) (void)) | |
| 740 | + __THROW __asm ("at_quick_exit") __nonnull ((1)); | |
| 741 | +# else | |
| 742 | +extern int at_quick_exit (void (*__func) (void)) __THROW __nonnull ((1)); | |
| 743 | +# endif | |
| 744 | +#endif | |
| 745 | + | |
| 746 | +#ifdef __USE_MISC | |
| 747 | +/* Register a function to be called with the status | |
| 748 | + given to `exit' and the given argument. */ | |
| 749 | +extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) | |
| 750 | + __THROW __nonnull ((1)); | |
| 751 | +#endif | |
| 752 | + | |
| 753 | +/* Call all functions registered with `atexit' and `on_exit', | |
| 754 | + in the reverse of the order in which they were registered, | |
| 755 | + perform stdio cleanup, and terminate program execution with STATUS. */ | |
| 756 | +extern void exit (int __status) __THROW __attribute__ ((__noreturn__)); | |
| 757 | + | |
| 758 | +#if defined __USE_ISOC11 || defined __USE_ISOCXX11 | |
| 759 | +/* Call all functions registered with `at_quick_exit' in the reverse | |
| 760 | + of the order in which they were registered and terminate program | |
| 761 | + execution with STATUS. */ | |
| 762 | +extern void quick_exit (int __status) __THROW __attribute__ ((__noreturn__)); | |
| 763 | +#endif | |
| 764 | + | |
| 765 | +#ifdef __USE_ISOC99 | |
| 766 | +/* Terminate the program with STATUS without calling any of the | |
| 767 | + functions registered with `atexit' or `on_exit'. */ | |
| 768 | +extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__)); | |
| 769 | +#endif | |
| 770 | + | |
| 771 | + | |
| 772 | +/* Return the value of envariable NAME, or NULL if it doesn't exist. */ | |
| 773 | +extern char *getenv (const char *__name) __THROW __nonnull ((1)) __wur; | |
| 774 | + | |
| 775 | +#ifdef __USE_GNU | |
| 776 | +/* This function is similar to the above but returns NULL if the | |
| 777 | + programs is running with SUID or SGID enabled. */ | |
| 778 | +extern char *secure_getenv (const char *__name) | |
| 779 | + __THROW __nonnull ((1)) __wur; | |
| 780 | +#endif | |
| 781 | + | |
| 782 | +#if defined __USE_MISC || defined __USE_XOPEN | |
| 783 | +/* The SVID says this is in <stdio.h>, but this seems a better place. */ | |
| 784 | +/* Put STRING, which is of the form "NAME=VALUE", in the environment. | |
| 785 | + If there is no `=', remove NAME from the environment. */ | |
| 786 | +extern int putenv (char *__string) __THROW __nonnull ((1)); | |
| 787 | +#endif | |
| 788 | + | |
| 789 | +#ifdef __USE_XOPEN2K | |
| 790 | +/* Set NAME to VALUE in the environment. | |
| 791 | + If REPLACE is nonzero, overwrite an existing value. */ | |
| 792 | +extern int setenv (const char *__name, const char *__value, int __replace) | |
| 793 | + __THROW __nonnull ((2)); | |
| 794 | + | |
| 795 | +/* Remove the variable NAME from the environment. */ | |
| 796 | +extern int unsetenv (const char *__name) __THROW __nonnull ((1)); | |
| 797 | +#endif | |
| 798 | + | |
| 799 | +#ifdef __USE_MISC | |
| 800 | +/* The `clearenv' was planned to be added to POSIX.1 but probably | |
| 801 | + never made it. Nevertheless the POSIX.9 standard (POSIX bindings | |
| 802 | + for Fortran 77) requires this function. */ | |
| 803 | +extern int clearenv (void) __THROW; | |
| 804 | +#endif | |
| 805 | + | |
| 806 | + | |
| 807 | +#if defined __USE_MISC \ | |
| 808 | + || (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) | |
| 809 | +/* Generate a unique temporary file name from TEMPLATE. | |
| 810 | + The last six characters of TEMPLATE must be "XXXXXX"; | |
| 811 | + they are replaced with a string that makes the file name unique. | |
| 812 | + Always returns TEMPLATE, it's either a temporary file name or a null | |
| 813 | + string if it cannot get a unique file name. */ | |
| 814 | +extern char *mktemp (char *__template) __THROW __nonnull ((1)); | |
| 815 | +#endif | |
| 816 | + | |
| 817 | +#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 | |
| 818 | +/* Generate a unique temporary file name from TEMPLATE. | |
| 819 | + The last six characters of TEMPLATE must be "XXXXXX"; | |
| 820 | + they are replaced with a string that makes the filename unique. | |
| 821 | + Returns a file descriptor open on the file for reading and writing, | |
| 822 | + or -1 if it cannot create a uniquely-named file. | |
| 823 | + | |
| 824 | + This function is a possible cancellation point and therefore not | |
| 825 | + marked with __THROW. */ | |
| 826 | +# ifndef __USE_FILE_OFFSET64 | |
| 827 | +extern int mkstemp (char *__template) __nonnull ((1)) __wur; | |
| 828 | +# else | |
| 829 | +# ifdef __REDIRECT | |
| 830 | +extern int __REDIRECT (mkstemp, (char *__template), mkstemp64) | |
| 831 | + __nonnull ((1)) __wur; | |
| 832 | +# else | |
| 833 | +# define mkstemp mkstemp64 | |
| 834 | +# endif | |
| 835 | +# endif | |
| 836 | +# ifdef __USE_LARGEFILE64 | |
| 837 | +extern int mkstemp64 (char *__template) __nonnull ((1)) __wur; | |
| 838 | +# endif | |
| 839 | +#endif | |
| 840 | + | |
| 841 | +#ifdef __USE_MISC | |
| 842 | +/* Similar to mkstemp, but the template can have a suffix after the | |
| 843 | + XXXXXX. The length of the suffix is specified in the second | |
| 844 | + parameter. | |
| 845 | + | |
| 846 | + This function is a possible cancellation point and therefore not | |
| 847 | + marked with __THROW. */ | |
| 848 | +# ifndef __USE_FILE_OFFSET64 | |
| 849 | +extern int mkstemps (char *__template, int __suffixlen) __nonnull ((1)) __wur; | |
| 850 | +# else | |
| 851 | +# ifdef __REDIRECT | |
| 852 | +extern int __REDIRECT (mkstemps, (char *__template, int __suffixlen), | |
| 853 | + mkstemps64) __nonnull ((1)) __wur; | |
| 854 | +# else | |
| 855 | +# define mkstemps mkstemps64 | |
| 856 | +# endif | |
| 857 | +# endif | |
| 858 | +# ifdef __USE_LARGEFILE64 | |
| 859 | +extern int mkstemps64 (char *__template, int __suffixlen) | |
| 860 | + __nonnull ((1)) __wur; | |
| 861 | +# endif | |
| 862 | +#endif | |
| 863 | + | |
| 864 | +#ifdef __USE_XOPEN2K8 | |
| 865 | +/* Create a unique temporary directory from TEMPLATE. | |
| 866 | + The last six characters of TEMPLATE must be "XXXXXX"; | |
| 867 | + they are replaced with a string that makes the directory name unique. | |
| 868 | + Returns TEMPLATE, or a null pointer if it cannot get a unique name. | |
| 869 | + The directory is created mode 700. */ | |
| 870 | +extern char *mkdtemp (char *__template) __THROW __nonnull ((1)) __wur; | |
| 871 | +#endif | |
| 872 | + | |
| 873 | +#ifdef __USE_GNU | |
| 874 | +/* Generate a unique temporary file name from TEMPLATE similar to | |
| 875 | + mkstemp. But allow the caller to pass additional flags which are | |
| 876 | + used in the open call to create the file.. | |
| 877 | + | |
| 878 | + This function is a possible cancellation point and therefore not | |
| 879 | + marked with __THROW. */ | |
| 880 | +# ifndef __USE_FILE_OFFSET64 | |
| 881 | +extern int mkostemp (char *__template, int __flags) __nonnull ((1)) __wur; | |
| 882 | +# else | |
| 883 | +# ifdef __REDIRECT | |
| 884 | +extern int __REDIRECT (mkostemp, (char *__template, int __flags), mkostemp64) | |
| 885 | + __nonnull ((1)) __wur; | |
| 886 | +# else | |
| 887 | +# define mkostemp mkostemp64 | |
| 888 | +# endif | |
| 889 | +# endif | |
| 890 | +# ifdef __USE_LARGEFILE64 | |
| 891 | +extern int mkostemp64 (char *__template, int __flags) __nonnull ((1)) __wur; | |
| 892 | +# endif | |
| 893 | + | |
| 894 | +/* Similar to mkostemp, but the template can have a suffix after the | |
| 895 | + XXXXXX. The length of the suffix is specified in the second | |
| 896 | + parameter. | |
| 897 | + | |
| 898 | + This function is a possible cancellation point and therefore not | |
| 899 | + marked with __THROW. */ | |
| 900 | +# ifndef __USE_FILE_OFFSET64 | |
| 901 | +extern int mkostemps (char *__template, int __suffixlen, int __flags) | |
| 902 | + __nonnull ((1)) __wur; | |
| 903 | +# else | |
| 904 | +# ifdef __REDIRECT | |
| 905 | +extern int __REDIRECT (mkostemps, (char *__template, int __suffixlen, | |
| 906 | + int __flags), mkostemps64) | |
| 907 | + __nonnull ((1)) __wur; | |
| 908 | +# else | |
| 909 | +# define mkostemps mkostemps64 | |
| 910 | +# endif | |
| 911 | +# endif | |
| 912 | +# ifdef __USE_LARGEFILE64 | |
| 913 | +extern int mkostemps64 (char *__template, int __suffixlen, int __flags) | |
| 914 | + __nonnull ((1)) __wur; | |
| 915 | +# endif | |
| 916 | +#endif | |
| 917 | + | |
| 918 | + | |
| 919 | +/* Execute the given line as a shell command. | |
| 920 | + | |
| 921 | + This function is a cancellation point and therefore not marked with | |
| 922 | + __THROW. */ | |
| 923 | +extern int system (const char *__command) __wur; | |
| 924 | + | |
| 925 | + | |
| 926 | +#ifdef __USE_GNU | |
| 927 | +/* Return a malloc'd string containing the canonical absolute name of the | |
| 928 | + existing named file. */ | |
| 929 | +extern char *canonicalize_file_name (const char *__name) | |
| 930 | + __THROW __nonnull ((1)) __attribute_malloc__ | |
| 931 | + __attr_dealloc_free __wur; | |
| 932 | +#endif | |
| 933 | + | |
| 934 | +#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED | |
| 935 | +/* Return the canonical absolute name of file NAME. If RESOLVED is | |
| 936 | + null, the result is malloc'd; otherwise, if the canonical name is | |
| 937 | + PATH_MAX chars or more, returns null with `errno' set to | |
| 938 | + ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, | |
| 939 | + returns the name in RESOLVED. */ | |
| 940 | +extern char *realpath (const char *__restrict __name, | |
| 941 | + char *__restrict __resolved) __THROW __wur; | |
| 942 | +#endif | |
| 943 | + | |
| 944 | + | |
| 945 | +/* Shorthand for type of comparison functions. */ | |
| 946 | +#ifndef __COMPAR_FN_T | |
| 947 | +# define __COMPAR_FN_T | |
| 948 | +typedef int (*__compar_fn_t) (const void *, const void *); | |
| 949 | + | |
| 950 | +# ifdef __USE_GNU | |
| 951 | +typedef __compar_fn_t comparison_fn_t; | |
| 952 | +# endif | |
| 953 | +#endif | |
| 954 | +#ifdef __USE_GNU | |
| 955 | +typedef int (*__compar_d_fn_t) (const void *, const void *, void *); | |
| 956 | +#endif | |
| 957 | + | |
| 958 | +/* Do a binary search for KEY in BASE, which consists of NMEMB elements | |
| 959 | + of SIZE bytes each, using COMPAR to perform the comparisons. */ | |
| 960 | +extern void *bsearch (const void *__key, const void *__base, | |
| 961 | + size_t __nmemb, size_t __size, __compar_fn_t __compar) | |
| 962 | + __nonnull ((1, 2, 5)) __wur; | |
| 963 | + | |
| 964 | +#ifdef __USE_EXTERN_INLINES | |
| 965 | +# include <bits/stdlib-bsearch.h> | |
| 966 | +#endif | |
| 967 | + | |
| 968 | +/* Sort NMEMB elements of BASE, of SIZE bytes each, | |
| 969 | + using COMPAR to perform the comparisons. */ | |
| 970 | +extern void qsort (void *__base, size_t __nmemb, size_t __size, | |
| 971 | + __compar_fn_t __compar) __nonnull ((1, 4)); | |
| 972 | +#ifdef __USE_GNU | |
| 973 | +extern void qsort_r (void *__base, size_t __nmemb, size_t __size, | |
| 974 | + __compar_d_fn_t __compar, void *__arg) | |
| 975 | + __nonnull ((1, 4)); | |
| 976 | +#endif | |
| 977 | + | |
| 978 | + | |
| 979 | +/* Return the absolute value of X. */ | |
| 980 | +extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur; | |
| 981 | +extern long int labs (long int __x) __THROW __attribute__ ((__const__)) __wur; | |
| 982 | + | |
| 983 | +#ifdef __USE_ISOC99 | |
| 984 | +__extension__ extern long long int llabs (long long int __x) | |
| 985 | + __THROW __attribute__ ((__const__)) __wur; | |
| 986 | +#endif | |
| 987 | + | |
| 988 | +#if __GLIBC_USE (ISOC2Y) | |
| 989 | +extern unsigned int uabs (int __x) __THROW __attribute__ ((__const__)) __wur; | |
| 990 | +extern unsigned long int ulabs (long int __x) __THROW __attribute__ ((__const__)) __wur; | |
| 991 | +__extension__ extern unsigned long long int ullabs (long long int __x) | |
| 992 | + __THROW __attribute__ ((__const__)) __wur; | |
| 993 | +#endif | |
| 994 | + | |
| 995 | +/* Return the `div_t', `ldiv_t' or `lldiv_t' representation | |
| 996 | + of the value of NUMER over DENOM. */ | |
| 997 | +/* GCC may have built-ins for these someday. */ | |
| 998 | +extern div_t div (int __numer, int __denom) | |
| 999 | + __THROW __attribute__ ((__const__)) __wur; | |
| 1000 | +extern ldiv_t ldiv (long int __numer, long int __denom) | |
| 1001 | + __THROW __attribute__ ((__const__)) __wur; | |
| 1002 | + | |
| 1003 | +#ifdef __USE_ISOC99 | |
| 1004 | +__extension__ extern lldiv_t lldiv (long long int __numer, | |
| 1005 | + long long int __denom) | |
| 1006 | + __THROW __attribute__ ((__const__)) __wur; | |
| 1007 | +#endif | |
| 1008 | + | |
| 1009 | + | |
| 1010 | +#if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \ | |
| 1011 | + || defined __USE_MISC | |
| 1012 | +/* Convert floating point numbers to strings. The returned values are | |
| 1013 | + valid only until another call to the same function. */ | |
| 1014 | + | |
| 1015 | +/* Convert VALUE to a string with NDIGIT digits and return a pointer to | |
| 1016 | + this. Set *DECPT with the position of the decimal character and *SIGN | |
| 1017 | + with the sign of the number. */ | |
| 1018 | +extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, | |
| 1019 | + int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; | |
| 1020 | + | |
| 1021 | +/* Convert VALUE to a string rounded to NDIGIT decimal digits. Set *DECPT | |
| 1022 | + with the position of the decimal character and *SIGN with the sign of | |
| 1023 | + the number. */ | |
| 1024 | +extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, | |
| 1025 | + int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; | |
| 1026 | + | |
| 1027 | +/* If possible convert VALUE to a string with NDIGIT significant digits. | |
| 1028 | + Otherwise use exponential representation. The resulting string will | |
| 1029 | + be written to BUF. */ | |
| 1030 | +extern char *gcvt (double __value, int __ndigit, char *__buf) | |
| 1031 | + __THROW __nonnull ((3)) __wur; | |
| 1032 | +#endif | |
| 1033 | + | |
| 1034 | +#ifdef __USE_MISC | |
| 1035 | +/* Long double versions of above functions. */ | |
| 1036 | +extern char *qecvt (long double __value, int __ndigit, | |
| 1037 | + int *__restrict __decpt, int *__restrict __sign) | |
| 1038 | + __THROW __nonnull ((3, 4)) __wur; | |
| 1039 | +extern char *qfcvt (long double __value, int __ndigit, | |
| 1040 | + int *__restrict __decpt, int *__restrict __sign) | |
| 1041 | + __THROW __nonnull ((3, 4)) __wur; | |
| 1042 | +extern char *qgcvt (long double __value, int __ndigit, char *__buf) | |
| 1043 | + __THROW __nonnull ((3)) __wur; | |
| 1044 | + | |
| 1045 | + | |
| 1046 | +/* Reentrant version of the functions above which provide their own | |
| 1047 | + buffers. */ | |
| 1048 | +extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, | |
| 1049 | + int *__restrict __sign, char *__restrict __buf, | |
| 1050 | + size_t __len) __THROW __nonnull ((3, 4, 5)); | |
| 1051 | +extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, | |
| 1052 | + int *__restrict __sign, char *__restrict __buf, | |
| 1053 | + size_t __len) __THROW __nonnull ((3, 4, 5)); | |
| 1054 | + | |
| 1055 | +extern int qecvt_r (long double __value, int __ndigit, | |
| 1056 | + int *__restrict __decpt, int *__restrict __sign, | |
| 1057 | + char *__restrict __buf, size_t __len) | |
| 1058 | + __THROW __nonnull ((3, 4, 5)); | |
| 1059 | +extern int qfcvt_r (long double __value, int __ndigit, | |
| 1060 | + int *__restrict __decpt, int *__restrict __sign, | |
| 1061 | + char *__restrict __buf, size_t __len) | |
| 1062 | + __THROW __nonnull ((3, 4, 5)); | |
| 1063 | +#endif /* misc */ | |
| 1064 | + | |
| 1065 | + | |
| 1066 | +/* Return the length of the multibyte character | |
| 1067 | + in S, which is no longer than N. */ | |
| 1068 | +extern int mblen (const char *__s, size_t __n) __THROW; | |
| 1069 | +/* Return the length of the given multibyte character, | |
| 1070 | + putting its `wchar_t' representation in *PWC. */ | |
| 1071 | +extern int mbtowc (wchar_t *__restrict __pwc, | |
| 1072 | + const char *__restrict __s, size_t __n) __THROW; | |
| 1073 | +/* Put the multibyte character represented | |
| 1074 | + by WCHAR in S, returning its length. */ | |
| 1075 | +extern int wctomb (char *__s, wchar_t __wchar) __THROW; | |
| 1076 | + | |
| 1077 | + | |
| 1078 | +/* Convert a multibyte string to a wide char string. */ | |
| 1079 | +extern size_t mbstowcs (wchar_t *__restrict __pwcs, | |
| 1080 | + const char *__restrict __s, size_t __n) __THROW | |
| 1081 | + __attr_access ((__read_only__, 2)); | |
| 1082 | +/* Convert a wide char string to multibyte string. */ | |
| 1083 | +extern size_t wcstombs (char *__restrict __s, | |
| 1084 | + const wchar_t *__restrict __pwcs, size_t __n) | |
| 1085 | + __THROW | |
| 1086 | + __fortified_attr_access (__write_only__, 1, 3) | |
| 1087 | + __attr_access ((__read_only__, 2)); | |
| 1088 | + | |
| 1089 | +#ifdef __USE_MISC | |
| 1090 | +/* Determine whether the string value of RESPONSE matches the affirmation | |
| 1091 | + or negative response expression as specified by the LC_MESSAGES category | |
| 1092 | + in the program's current locale. Returns 1 if affirmative, 0 if | |
| 1093 | + negative, and -1 if not matching. */ | |
| 1094 | +extern int rpmatch (const char *__response) __THROW __nonnull ((1)) __wur; | |
| 1095 | +#endif | |
| 1096 | + | |
| 1097 | + | |
| 1098 | +#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 | |
| 1099 | +/* Parse comma separated suboption from *OPTIONP and match against | |
| 1100 | + strings in TOKENS. If found return index and set *VALUEP to | |
| 1101 | + optional value introduced by an equal sign. If the suboption is | |
| 1102 | + not part of TOKENS return in *VALUEP beginning of unknown | |
| 1103 | + suboption. On exit *OPTIONP is set to the beginning of the next | |
| 1104 | + token or at the terminating NUL character. */ | |
| 1105 | +extern int getsubopt (char **__restrict __optionp, | |
| 1106 | + char *const *__restrict __tokens, | |
| 1107 | + char **__restrict __valuep) | |
| 1108 | + __THROW __nonnull ((1, 2, 3)) __wur; | |
| 1109 | +#endif | |
| 1110 | + | |
| 1111 | + | |
| 1112 | +/* X/Open pseudo terminal handling. */ | |
| 1113 | + | |
| 1114 | +#ifdef __USE_XOPEN2KXSI | |
| 1115 | +/* Return a master pseudo-terminal handle. */ | |
| 1116 | +extern int posix_openpt (int __oflag) __wur; | |
| 1117 | +#endif | |
| 1118 | + | |
| 1119 | +#ifdef __USE_XOPEN_EXTENDED | |
| 1120 | +/* The next four functions all take a master pseudo-tty fd and | |
| 1121 | + perform an operation on the associated slave: */ | |
| 1122 | + | |
| 1123 | +/* Chown the slave to the calling user. */ | |
| 1124 | +extern int grantpt (int __fd) __THROW; | |
| 1125 | + | |
| 1126 | +/* Release an internal lock so the slave can be opened. | |
| 1127 | + Call after grantpt(). */ | |
| 1128 | +extern int unlockpt (int __fd) __THROW; | |
| 1129 | + | |
| 1130 | +/* Return the pathname of the pseudo terminal slave associated with | |
| 1131 | + the master FD is open on, or NULL on errors. | |
| 1132 | + The returned storage is good until the next call to this function. */ | |
| 1133 | +extern char *ptsname (int __fd) __THROW __wur; | |
| 1134 | +#endif | |
| 1135 | + | |
| 1136 | +#ifdef __USE_GNU | |
| 1137 | +/* Store at most BUFLEN characters of the pathname of the slave pseudo | |
| 1138 | + terminal associated with the master FD is open on in BUF. | |
| 1139 | + Return 0 on success, otherwise an error number. */ | |
| 1140 | +extern int ptsname_r (int __fd, char *__buf, size_t __buflen) | |
| 1141 | + __THROW __nonnull ((2)) __fortified_attr_access (__write_only__, 2, 3); | |
| 1142 | + | |
| 1143 | +/* Open a master pseudo terminal and return its file descriptor. */ | |
| 1144 | +extern int getpt (void); | |
| 1145 | +#endif | |
| 1146 | + | |
| 1147 | +#ifdef __USE_MISC | |
| 1148 | +/* Put the 1 minute, 5 minute and 15 minute load averages into the first | |
| 1149 | + NELEM elements of LOADAVG. Return the number written (never more than | |
| 1150 | + three, but may be less than NELEM), or -1 if an error occurred. */ | |
| 1151 | +extern int getloadavg (double __loadavg[], int __nelem) | |
| 1152 | + __THROW __nonnull ((1)); | |
| 1153 | +#endif | |
| 1154 | + | |
| 1155 | +#if defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K | |
| 1156 | +/* Return the index into the active-logins file (utmp) for | |
| 1157 | + the controlling terminal. */ | |
| 1158 | +extern int ttyslot (void) __THROW; | |
| 1159 | +#endif | |
| 1160 | + | |
| 1161 | +#include <bits/stdlib-float.h> | |
| 1162 | + | |
| 1163 | +/* Define some macros helping to catch buffer overflows. */ | |
| 1164 | +#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function | |
| 1165 | +# include <bits/stdlib.h> | |
| 1166 | +#endif | |
| 1167 | + | |
| 1168 | +#include <bits/floatn.h> | |
| 1169 | +#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 | |
| 1170 | +# include <bits/stdlib-ldbl.h> | |
| 1171 | +#endif | |
| 1172 | + | |
| 1173 | +__END_DECLS | |
| 1174 | + | |
| 1175 | +#endif /* stdlib.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@stdlib.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@stdlib.h.blob differ Large diff collapsed, click to expand
+554 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@string.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,554 @@ | ||
| 1 | +/* Copyright (C) 1991-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +/* | |
| 19 | + * ISO C99 Standard: 7.21 String handling <string.h> | |
| 20 | + */ | |
| 21 | + | |
| 22 | +#ifndef _STRING_H | |
| 23 | +#define _STRING_H 1 | |
| 24 | + | |
| 25 | +#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION | |
| 26 | +#include <bits/libc-header-start.h> | |
| 27 | + | |
| 28 | +__BEGIN_DECLS | |
| 29 | + | |
| 30 | +/* Get size_t and NULL from <stddef.h>. */ | |
| 31 | +#define __need_size_t | |
| 32 | +#define __need_NULL | |
| 33 | +#include <stddef.h> | |
| 34 | + | |
| 35 | +/* Tell the caller that we provide correct C++ prototypes. */ | |
| 36 | +#if defined __cplusplus && (__GNUC_PREREQ (4, 4) \ | |
| 37 | + || __glibc_clang_prereq (3, 5)) | |
| 38 | +# define __CORRECT_ISO_CPP_STRING_H_PROTO | |
| 39 | +#endif | |
| 40 | + | |
| 41 | + | |
| 42 | +/* Copy N bytes of SRC to DEST. */ | |
| 43 | +extern void *memcpy (void *__restrict __dest, const void *__restrict __src, | |
| 44 | + size_t __n) __THROW __nonnull ((1, 2)); | |
| 45 | +/* Copy N bytes of SRC to DEST, guaranteeing | |
| 46 | + correct behavior for overlapping strings. */ | |
| 47 | +extern void *memmove (void *__dest, const void *__src, size_t __n) | |
| 48 | + __THROW __nonnull ((1, 2)); | |
| 49 | + | |
| 50 | +/* Copy no more than N bytes of SRC to DEST, stopping when C is found. | |
| 51 | + Return the position in DEST one byte past where C was copied, | |
| 52 | + or NULL if C was not found in the first N bytes of SRC. */ | |
| 53 | +#if defined __USE_MISC || defined __USE_XOPEN || __GLIBC_USE (ISOC23) | |
| 54 | +extern void *memccpy (void *__restrict __dest, const void *__restrict __src, | |
| 55 | + int __c, size_t __n) | |
| 56 | + __THROW __nonnull ((1, 2)) __attr_access ((__write_only__, 1, 4)); | |
| 57 | +#endif /* Misc || X/Open. */ | |
| 58 | + | |
| 59 | + | |
| 60 | +/* Set N bytes of S to C. */ | |
| 61 | +extern void *memset (void *__s, int __c, size_t __n) __THROW __nonnull ((1)); | |
| 62 | + | |
| 63 | +/* Compare N bytes of S1 and S2. */ | |
| 64 | +extern int memcmp (const void *__s1, const void *__s2, size_t __n) | |
| 65 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 66 | + | |
| 67 | +/* Compare N bytes of S1 and S2. Return zero if S1 and S2 are equal. | |
| 68 | + Return some non-zero value otherwise. | |
| 69 | + | |
| 70 | + Essentially __memcmpeq has the exact same semantics as memcmp | |
| 71 | + except the return value is less constrained. memcmp is always a | |
| 72 | + correct implementation of __memcmpeq. As well !!memcmp, -memcmp, | |
| 73 | + or bcmp are correct implementations. | |
| 74 | + | |
| 75 | + __memcmpeq is meant to be used by compilers when memcmp return is | |
| 76 | + only used for its boolean value. | |
| 77 | + | |
| 78 | + __memcmpeq is declared only for use by compilers. Programs should | |
| 79 | + continue to use memcmp. */ | |
| 80 | +extern int __memcmpeq (const void *__s1, const void *__s2, size_t __n) | |
| 81 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 82 | + | |
| 83 | +/* Search N bytes of S for C. */ | |
| 84 | +#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| 85 | +extern "C++" | |
| 86 | +{ | |
| 87 | +extern void *memchr (void *__s, int __c, size_t __n) | |
| 88 | + __THROW __asm ("memchr") __attribute_pure__ __nonnull ((1)); | |
| 89 | +extern const void *memchr (const void *__s, int __c, size_t __n) | |
| 90 | + __THROW __asm ("memchr") __attribute_pure__ __nonnull ((1)); | |
| 91 | + | |
| 92 | +# ifdef __OPTIMIZE__ | |
| 93 | +__extern_always_inline void * | |
| 94 | +memchr (void *__s, int __c, size_t __n) __THROW | |
| 95 | +{ | |
| 96 | + return __builtin_memchr (__s, __c, __n); | |
| 97 | +} | |
| 98 | + | |
| 99 | +__extern_always_inline const void * | |
| 100 | +memchr (const void *__s, int __c, size_t __n) __THROW | |
| 101 | +{ | |
| 102 | + return __builtin_memchr (__s, __c, __n); | |
| 103 | +} | |
| 104 | +# endif | |
| 105 | +} | |
| 106 | +#else | |
| 107 | +extern void *memchr (const void *__s, int __c, size_t __n) | |
| 108 | + __THROW __attribute_pure__ __nonnull ((1)); | |
| 109 | +#endif | |
| 110 | + | |
| 111 | +#ifdef __USE_GNU | |
| 112 | +/* Search in S for C. This is similar to `memchr' but there is no | |
| 113 | + length limit. */ | |
| 114 | +# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| 115 | +extern "C++" void *rawmemchr (void *__s, int __c) | |
| 116 | + __THROW __asm ("rawmemchr") __attribute_pure__ __nonnull ((1)); | |
| 117 | +extern "C++" const void *rawmemchr (const void *__s, int __c) | |
| 118 | + __THROW __asm ("rawmemchr") __attribute_pure__ __nonnull ((1)); | |
| 119 | +# else | |
| 120 | +extern void *rawmemchr (const void *__s, int __c) | |
| 121 | + __THROW __attribute_pure__ __nonnull ((1)); | |
| 122 | +# endif | |
| 123 | + | |
| 124 | +/* Search N bytes of S for the final occurrence of C. */ | |
| 125 | +# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| 126 | +extern "C++" void *memrchr (void *__s, int __c, size_t __n) | |
| 127 | + __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1)) | |
| 128 | + __attr_access ((__read_only__, 1, 3)); | |
| 129 | +extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) | |
| 130 | + __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1)) | |
| 131 | + __attr_access ((__read_only__, 1, 3)); | |
| 132 | +# else | |
| 133 | +extern void *memrchr (const void *__s, int __c, size_t __n) | |
| 134 | + __THROW __attribute_pure__ __nonnull ((1)) | |
| 135 | + __attr_access ((__read_only__, 1, 3)); | |
| 136 | +# endif | |
| 137 | +#endif | |
| 138 | + | |
| 139 | + | |
| 140 | +/* Copy SRC to DEST. */ | |
| 141 | +extern char *strcpy (char *__restrict __dest, const char *__restrict __src) | |
| 142 | + __THROW __nonnull ((1, 2)); | |
| 143 | +/* Copy no more than N characters of SRC to DEST. */ | |
| 144 | +extern char *strncpy (char *__restrict __dest, | |
| 145 | + const char *__restrict __src, size_t __n) | |
| 146 | + __THROW __nonnull ((1, 2)); | |
| 147 | + | |
| 148 | +/* Append SRC onto DEST. */ | |
| 149 | +extern char *strcat (char *__restrict __dest, const char *__restrict __src) | |
| 150 | + __THROW __nonnull ((1, 2)); | |
| 151 | +/* Append no more than N characters from SRC onto DEST. */ | |
| 152 | +extern char *strncat (char *__restrict __dest, const char *__restrict __src, | |
| 153 | + size_t __n) __THROW __nonnull ((1, 2)); | |
| 154 | + | |
| 155 | +/* Compare S1 and S2. */ | |
| 156 | +extern int strcmp (const char *__s1, const char *__s2) | |
| 157 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 158 | +/* Compare N characters of S1 and S2. */ | |
| 159 | +extern int strncmp (const char *__s1, const char *__s2, size_t __n) | |
| 160 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 161 | + | |
| 162 | +/* Compare the collated forms of S1 and S2. */ | |
| 163 | +extern int strcoll (const char *__s1, const char *__s2) | |
| 164 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 165 | +/* Put a transformation of SRC into no more than N bytes of DEST. */ | |
| 166 | +extern size_t strxfrm (char *__restrict __dest, | |
| 167 | + const char *__restrict __src, size_t __n) | |
| 168 | + __THROW __nonnull ((2)) __attr_access ((__write_only__, 1, 3)); | |
| 169 | + | |
| 170 | +#ifdef __USE_XOPEN2K8 | |
| 171 | +/* POSIX.1-2008 extended locale interface (see locale.h). */ | |
| 172 | +# include <bits/types/locale_t.h> | |
| 173 | + | |
| 174 | +/* Compare the collated forms of S1 and S2, using sorting rules from L. */ | |
| 175 | +extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) | |
| 176 | + __THROW __attribute_pure__ __nonnull ((1, 2, 3)); | |
| 177 | +/* Put a transformation of SRC into no more than N bytes of DEST, | |
| 178 | + using sorting rules from L. */ | |
| 179 | +extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, | |
| 180 | + locale_t __l) __THROW __nonnull ((2, 4)) | |
| 181 | + __attr_access ((__write_only__, 1, 3)); | |
| 182 | +#endif | |
| 183 | + | |
| 184 | +#if (defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 \ | |
| 185 | + || __GLIBC_USE (LIB_EXT2) || __GLIBC_USE (ISOC23)) | |
| 186 | +/* Duplicate S, returning an identical malloc'd string. */ | |
| 187 | +extern char *strdup (const char *__s) | |
| 188 | + __THROW __attribute_malloc__ __nonnull ((1)); | |
| 189 | +#endif | |
| 190 | + | |
| 191 | +/* Return a malloc'd copy of at most N bytes of STRING. The | |
| 192 | + resultant string is terminated even if no null terminator | |
| 193 | + appears before STRING[N]. */ | |
| 194 | +#if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2) || __GLIBC_USE (ISOC23) | |
| 195 | +extern char *strndup (const char *__string, size_t __n) | |
| 196 | + __THROW __attribute_malloc__ __nonnull ((1)); | |
| 197 | +#endif | |
| 198 | + | |
| 199 | +#if defined __USE_GNU && defined __GNUC__ | |
| 200 | +/* Duplicate S, returning an identical alloca'd string. */ | |
| 201 | +# define strdupa(s) \ | |
| 202 | + (__extension__ \ | |
| 203 | + ({ \ | |
| 204 | + const char *__old = (s); \ | |
| 205 | + size_t __len = strlen (__old) + 1; \ | |
| 206 | + char *__new = (char *) __builtin_alloca (__len); \ | |
| 207 | + (char *) memcpy (__new, __old, __len); \ | |
| 208 | + })) | |
| 209 | + | |
| 210 | +/* Return an alloca'd copy of at most N bytes of string. */ | |
| 211 | +# define strndupa(s, n) \ | |
| 212 | + (__extension__ \ | |
| 213 | + ({ \ | |
| 214 | + const char *__old = (s); \ | |
| 215 | + size_t __len = strnlen (__old, (n)); \ | |
| 216 | + char *__new = (char *) __builtin_alloca (__len + 1); \ | |
| 217 | + __new[__len] = '\0'; \ | |
| 218 | + (char *) memcpy (__new, __old, __len); \ | |
| 219 | + })) | |
| 220 | +#endif | |
| 221 | + | |
| 222 | +/* Find the first occurrence of C in S. */ | |
| 223 | +#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| 224 | +extern "C++" | |
| 225 | +{ | |
| 226 | +extern char *strchr (char *__s, int __c) | |
| 227 | + __THROW __asm ("strchr") __attribute_pure__ __nonnull ((1)); | |
| 228 | +extern const char *strchr (const char *__s, int __c) | |
| 229 | + __THROW __asm ("strchr") __attribute_pure__ __nonnull ((1)); | |
| 230 | + | |
| 231 | +# ifdef __OPTIMIZE__ | |
| 232 | +__extern_always_inline char * | |
| 233 | +strchr (char *__s, int __c) __THROW | |
| 234 | +{ | |
| 235 | + return __builtin_strchr (__s, __c); | |
| 236 | +} | |
| 237 | + | |
| 238 | +__extern_always_inline const char * | |
| 239 | +strchr (const char *__s, int __c) __THROW | |
| 240 | +{ | |
| 241 | + return __builtin_strchr (__s, __c); | |
| 242 | +} | |
| 243 | +# endif | |
| 244 | +} | |
| 245 | +#else | |
| 246 | +extern char *strchr (const char *__s, int __c) | |
| 247 | + __THROW __attribute_pure__ __nonnull ((1)); | |
| 248 | +#endif | |
| 249 | +/* Find the last occurrence of C in S. */ | |
| 250 | +#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| 251 | +extern "C++" | |
| 252 | +{ | |
| 253 | +extern char *strrchr (char *__s, int __c) | |
| 254 | + __THROW __asm ("strrchr") __attribute_pure__ __nonnull ((1)); | |
| 255 | +extern const char *strrchr (const char *__s, int __c) | |
| 256 | + __THROW __asm ("strrchr") __attribute_pure__ __nonnull ((1)); | |
| 257 | + | |
| 258 | +# ifdef __OPTIMIZE__ | |
| 259 | +__extern_always_inline char * | |
| 260 | +strrchr (char *__s, int __c) __THROW | |
| 261 | +{ | |
| 262 | + return __builtin_strrchr (__s, __c); | |
| 263 | +} | |
| 264 | + | |
| 265 | +__extern_always_inline const char * | |
| 266 | +strrchr (const char *__s, int __c) __THROW | |
| 267 | +{ | |
| 268 | + return __builtin_strrchr (__s, __c); | |
| 269 | +} | |
| 270 | +# endif | |
| 271 | +} | |
| 272 | +#else | |
| 273 | +extern char *strrchr (const char *__s, int __c) | |
| 274 | + __THROW __attribute_pure__ __nonnull ((1)); | |
| 275 | +#endif | |
| 276 | + | |
| 277 | +#ifdef __USE_MISC | |
| 278 | +/* This function is similar to `strchr'. But it returns a pointer to | |
| 279 | + the closing NUL byte in case C is not found in S. */ | |
| 280 | +# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| 281 | +extern "C++" char *strchrnul (char *__s, int __c) | |
| 282 | + __THROW __asm ("strchrnul") __attribute_pure__ __nonnull ((1)); | |
| 283 | +extern "C++" const char *strchrnul (const char *__s, int __c) | |
| 284 | + __THROW __asm ("strchrnul") __attribute_pure__ __nonnull ((1)); | |
| 285 | +# else | |
| 286 | +extern char *strchrnul (const char *__s, int __c) | |
| 287 | + __THROW __attribute_pure__ __nonnull ((1)); | |
| 288 | +# endif | |
| 289 | +#endif | |
| 290 | + | |
| 291 | +/* Return the length of the initial segment of S which | |
| 292 | + consists entirely of characters not in REJECT. */ | |
| 293 | +extern size_t strcspn (const char *__s, const char *__reject) | |
| 294 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 295 | +/* Return the length of the initial segment of S which | |
| 296 | + consists entirely of characters in ACCEPT. */ | |
| 297 | +extern size_t strspn (const char *__s, const char *__accept) | |
| 298 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 299 | +/* Find the first occurrence in S of any character in ACCEPT. */ | |
| 300 | +#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| 301 | +extern "C++" | |
| 302 | +{ | |
| 303 | +extern char *strpbrk (char *__s, const char *__accept) | |
| 304 | + __THROW __asm ("strpbrk") __attribute_pure__ __nonnull ((1, 2)); | |
| 305 | +extern const char *strpbrk (const char *__s, const char *__accept) | |
| 306 | + __THROW __asm ("strpbrk") __attribute_pure__ __nonnull ((1, 2)); | |
| 307 | + | |
| 308 | +# ifdef __OPTIMIZE__ | |
| 309 | +__extern_always_inline char * | |
| 310 | +strpbrk (char *__s, const char *__accept) __THROW | |
| 311 | +{ | |
| 312 | + return __builtin_strpbrk (__s, __accept); | |
| 313 | +} | |
| 314 | + | |
| 315 | +__extern_always_inline const char * | |
| 316 | +strpbrk (const char *__s, const char *__accept) __THROW | |
| 317 | +{ | |
| 318 | + return __builtin_strpbrk (__s, __accept); | |
| 319 | +} | |
| 320 | +# endif | |
| 321 | +} | |
| 322 | +#else | |
| 323 | +extern char *strpbrk (const char *__s, const char *__accept) | |
| 324 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 325 | +#endif | |
| 326 | +/* Find the first occurrence of NEEDLE in HAYSTACK. */ | |
| 327 | +#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| 328 | +extern "C++" | |
| 329 | +{ | |
| 330 | +extern char *strstr (char *__haystack, const char *__needle) | |
| 331 | + __THROW __asm ("strstr") __attribute_pure__ __nonnull ((1, 2)); | |
| 332 | +extern const char *strstr (const char *__haystack, const char *__needle) | |
| 333 | + __THROW __asm ("strstr") __attribute_pure__ __nonnull ((1, 2)); | |
| 334 | + | |
| 335 | +# ifdef __OPTIMIZE__ | |
| 336 | +__extern_always_inline char * | |
| 337 | +strstr (char *__haystack, const char *__needle) __THROW | |
| 338 | +{ | |
| 339 | + return __builtin_strstr (__haystack, __needle); | |
| 340 | +} | |
| 341 | + | |
| 342 | +__extern_always_inline const char * | |
| 343 | +strstr (const char *__haystack, const char *__needle) __THROW | |
| 344 | +{ | |
| 345 | + return __builtin_strstr (__haystack, __needle); | |
| 346 | +} | |
| 347 | +# endif | |
| 348 | +} | |
| 349 | +#else | |
| 350 | +extern char *strstr (const char *__haystack, const char *__needle) | |
| 351 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 352 | +#endif | |
| 353 | + | |
| 354 | + | |
| 355 | +/* Divide S into tokens separated by characters in DELIM. */ | |
| 356 | +extern char *strtok (char *__restrict __s, const char *__restrict __delim) | |
| 357 | + __THROW __nonnull ((2)); | |
| 358 | + | |
| 359 | +/* Divide S into tokens separated by characters in DELIM. Information | |
| 360 | + passed between calls are stored in SAVE_PTR. */ | |
| 361 | +extern char *__strtok_r (char *__restrict __s, | |
| 362 | + const char *__restrict __delim, | |
| 363 | + char **__restrict __save_ptr) | |
| 364 | + __THROW __nonnull ((2, 3)); | |
| 365 | +#ifdef __USE_POSIX | |
| 366 | +extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, | |
| 367 | + char **__restrict __save_ptr) | |
| 368 | + __THROW __nonnull ((2, 3)); | |
| 369 | +#endif | |
| 370 | + | |
| 371 | +#ifdef __USE_MISC | |
| 372 | +/* Similar to `strstr' but this function ignores the case of both strings. */ | |
| 373 | +# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| 374 | +extern "C++" char *strcasestr (char *__haystack, const char *__needle) | |
| 375 | + __THROW __asm ("strcasestr") __attribute_pure__ __nonnull ((1, 2)); | |
| 376 | +extern "C++" const char *strcasestr (const char *__haystack, | |
| 377 | + const char *__needle) | |
| 378 | + __THROW __asm ("strcasestr") __attribute_pure__ __nonnull ((1, 2)); | |
| 379 | +# else | |
| 380 | +extern char *strcasestr (const char *__haystack, const char *__needle) | |
| 381 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 382 | +# endif | |
| 383 | +#endif | |
| 384 | + | |
| 385 | +#ifdef __USE_MISC | |
| 386 | +/* Find the first occurrence of NEEDLE in HAYSTACK. | |
| 387 | + NEEDLE is NEEDLELEN bytes long; | |
| 388 | + HAYSTACK is HAYSTACKLEN bytes long. */ | |
| 389 | +extern void *memmem (const void *__haystack, size_t __haystacklen, | |
| 390 | + const void *__needle, size_t __needlelen) | |
| 391 | + __THROW __attribute_pure__ __nonnull ((1, 3)) | |
| 392 | + __attr_access ((__read_only__, 1, 2)) | |
| 393 | + __attr_access ((__read_only__, 3, 4)); | |
| 394 | + | |
| 395 | +/* Copy N bytes of SRC to DEST, return pointer to bytes after the | |
| 396 | + last written byte. */ | |
| 397 | +extern void *__mempcpy (void *__restrict __dest, | |
| 398 | + const void *__restrict __src, size_t __n) | |
| 399 | + __THROW __nonnull ((1, 2)); | |
| 400 | +extern void *mempcpy (void *__restrict __dest, | |
| 401 | + const void *__restrict __src, size_t __n) | |
| 402 | + __THROW __nonnull ((1, 2)); | |
| 403 | +#endif | |
| 404 | + | |
| 405 | + | |
| 406 | +/* Return the length of S. */ | |
| 407 | +extern size_t strlen (const char *__s) | |
| 408 | + __THROW __attribute_pure__ __nonnull ((1)); | |
| 409 | + | |
| 410 | +#ifdef __USE_XOPEN2K8 | |
| 411 | +/* Find the length of STRING, but scan at most MAXLEN characters. | |
| 412 | + If no '\0' terminator is found in that many characters, return MAXLEN. */ | |
| 413 | +extern size_t strnlen (const char *__string, size_t __maxlen) | |
| 414 | + __THROW __attribute_pure__ __nonnull ((1)); | |
| 415 | +#endif | |
| 416 | + | |
| 417 | + | |
| 418 | +/* Return a string describing the meaning of the `errno' code in ERRNUM. */ | |
| 419 | +extern char *strerror (int __errnum) __THROW; | |
| 420 | +#ifdef __USE_XOPEN2K | |
| 421 | +/* Reentrant version of `strerror'. | |
| 422 | + There are 2 flavors of `strerror_r', GNU which returns the string | |
| 423 | + and may or may not use the supplied temporary buffer and POSIX one | |
| 424 | + which fills the string into the buffer. | |
| 425 | + To use the POSIX version, -D_XOPEN_SOURCE=600 or -D_POSIX_C_SOURCE=200112L | |
| 426 | + without -D_GNU_SOURCE is needed, otherwise the GNU version is | |
| 427 | + preferred. */ | |
| 428 | +# if defined __USE_XOPEN2K && !defined __USE_GNU | |
| 429 | +/* Fill BUF with a string describing the meaning of the `errno' code in | |
| 430 | + ERRNUM. */ | |
| 431 | +# ifdef __REDIRECT_NTH | |
| 432 | +extern int __REDIRECT_NTH (strerror_r, | |
| 433 | + (int __errnum, char *__buf, size_t __buflen), | |
| 434 | + __xpg_strerror_r) __nonnull ((2)) | |
| 435 | + __attr_access ((__write_only__, 2, 3)); | |
| 436 | +# else | |
| 437 | +extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen) | |
| 438 | + __THROW __nonnull ((2)) __attr_access ((__write_only__, 2, 3)); | |
| 439 | +# define strerror_r __xpg_strerror_r | |
| 440 | +# endif | |
| 441 | +# else | |
| 442 | +/* If a temporary buffer is required, at most BUFLEN bytes of BUF will be | |
| 443 | + used. */ | |
| 444 | +extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) | |
| 445 | + __THROW __nonnull ((2)) __wur __attr_access ((__write_only__, 2, 3)); | |
| 446 | +# endif | |
| 447 | + | |
| 448 | +# ifdef __USE_GNU | |
| 449 | +/* Return a string describing the meaning of tthe error in ERR. */ | |
| 450 | +extern const char *strerrordesc_np (int __err) __THROW; | |
| 451 | +/* Return a string with the error name in ERR. */ | |
| 452 | +extern const char *strerrorname_np (int __err) __THROW; | |
| 453 | +# endif | |
| 454 | +#endif | |
| 455 | + | |
| 456 | +#ifdef __USE_XOPEN2K8 | |
| 457 | +/* Translate error number to string according to the locale L. */ | |
| 458 | +extern char *strerror_l (int __errnum, locale_t __l) __THROW; | |
| 459 | +#endif | |
| 460 | + | |
| 461 | +#ifdef __USE_MISC | |
| 462 | +# include <strings.h> | |
| 463 | + | |
| 464 | +/* Set N bytes of S to 0. The compiler will not delete a call to this | |
| 465 | + function, even if S is dead after the call. */ | |
| 466 | +extern void explicit_bzero (void *__s, size_t __n) __THROW __nonnull ((1)) | |
| 467 | + __fortified_attr_access (__write_only__, 1, 2); | |
| 468 | + | |
| 469 | +/* Return the next DELIM-delimited token from *STRINGP, | |
| 470 | + terminating it with a '\0', and update *STRINGP to point past it. */ | |
| 471 | +extern char *strsep (char **__restrict __stringp, | |
| 472 | + const char *__restrict __delim) | |
| 473 | + __THROW __nonnull ((1, 2)); | |
| 474 | +#endif | |
| 475 | + | |
| 476 | +#ifdef __USE_XOPEN2K8 | |
| 477 | +/* Return a string describing the meaning of the signal number in SIG. */ | |
| 478 | +extern char *strsignal (int __sig) __THROW; | |
| 479 | + | |
| 480 | +# ifdef __USE_GNU | |
| 481 | +/* Return an abbreviation string for the signal number SIG. */ | |
| 482 | +extern const char *sigabbrev_np (int __sig) __THROW; | |
| 483 | +/* Return a string describing the meaning of the signal number in SIG, | |
| 484 | + the result is not translated. */ | |
| 485 | +extern const char *sigdescr_np (int __sig) __THROW; | |
| 486 | +# endif | |
| 487 | + | |
| 488 | +/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */ | |
| 489 | +extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) | |
| 490 | + __THROW __nonnull ((1, 2)); | |
| 491 | +extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) | |
| 492 | + __THROW __nonnull ((1, 2)); | |
| 493 | + | |
| 494 | +/* Copy no more than N characters of SRC to DEST, returning the address of | |
| 495 | + the last character written into DEST. */ | |
| 496 | +extern char *__stpncpy (char *__restrict __dest, | |
| 497 | + const char *__restrict __src, size_t __n) | |
| 498 | + __THROW __nonnull ((1, 2)); | |
| 499 | +extern char *stpncpy (char *__restrict __dest, | |
| 500 | + const char *__restrict __src, size_t __n) | |
| 501 | + __THROW __nonnull ((1, 2)); | |
| 502 | +#endif | |
| 503 | + | |
| 504 | +#ifdef __USE_MISC | |
| 505 | +/* Copy at most N - 1 characters from SRC to DEST. */ | |
| 506 | +extern size_t strlcpy (char *__restrict __dest, | |
| 507 | + const char *__restrict __src, size_t __n) | |
| 508 | + __THROW __nonnull ((1, 2)) __attr_access ((__write_only__, 1, 3)); | |
| 509 | + | |
| 510 | +/* Append SRC to DEST, possibly with truncation to keep the total size | |
| 511 | + below N. */ | |
| 512 | +extern size_t strlcat (char *__restrict __dest, | |
| 513 | + const char *__restrict __src, size_t __n) | |
| 514 | + __THROW __nonnull ((1, 2)) __attr_access ((__read_write__, 1, 3)); | |
| 515 | +#endif | |
| 516 | + | |
| 517 | +#ifdef __USE_GNU | |
| 518 | +/* Compare S1 and S2 as strings holding name & indices/version numbers. */ | |
| 519 | +extern int strverscmp (const char *__s1, const char *__s2) | |
| 520 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 521 | + | |
| 522 | +/* Sautee STRING briskly. */ | |
| 523 | +extern char *strfry (char *__string) __THROW __nonnull ((1)); | |
| 524 | + | |
| 525 | +/* Frobnicate N bytes of S. */ | |
| 526 | +extern void *memfrob (void *__s, size_t __n) __THROW __nonnull ((1)) | |
| 527 | + __attr_access ((__read_write__, 1, 2)); | |
| 528 | + | |
| 529 | +# ifndef basename | |
| 530 | +/* Return the file name within directory of FILENAME. We don't | |
| 531 | + declare the function if the `basename' macro is available (defined | |
| 532 | + in <libgen.h>) which makes the XPG version of this function | |
| 533 | + available. */ | |
| 534 | +# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| 535 | +extern "C++" char *basename (char *__filename) | |
| 536 | + __THROW __asm ("basename") __nonnull ((1)); | |
| 537 | +extern "C++" const char *basename (const char *__filename) | |
| 538 | + __THROW __asm ("basename") __nonnull ((1)); | |
| 539 | +# else | |
| 540 | +extern char *basename (const char *__filename) __THROW __nonnull ((1)); | |
| 541 | +# endif | |
| 542 | +# endif | |
| 543 | +#endif | |
| 544 | + | |
| 545 | +#if __GNUC_PREREQ (3,4) | |
| 546 | +# if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function | |
| 547 | +/* Functions with security checks. */ | |
| 548 | +# include <bits/string_fortified.h> | |
| 549 | +# endif | |
| 550 | +#endif | |
| 551 | + | |
| 552 | +__END_DECLS | |
| 553 | + | |
| 554 | +#endif /* string.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@string.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@string.h.blob differ Large diff collapsed, click to expand
+148 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@strings.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,148 @@ | ||
| 1 | +/* Copyright (C) 1991-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +#ifndef _STRINGS_H | |
| 19 | +#define _STRINGS_H 1 | |
| 20 | + | |
| 21 | +#include <features.h> | |
| 22 | +#define __need_size_t | |
| 23 | +#include <stddef.h> | |
| 24 | + | |
| 25 | +/* Tell the caller that we provide correct C++ prototypes. */ | |
| 26 | +#if defined __cplusplus && __GNUC_PREREQ (4, 4) | |
| 27 | +# define __CORRECT_ISO_CPP_STRINGS_H_PROTO | |
| 28 | +#endif | |
| 29 | + | |
| 30 | +__BEGIN_DECLS | |
| 31 | + | |
| 32 | +#if defined __USE_MISC || !defined __USE_XOPEN2K8 | |
| 33 | +/* Compare N bytes of S1 and S2 (same as memcmp). */ | |
| 34 | +extern int bcmp (const void *__s1, const void *__s2, size_t __n) | |
| 35 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 36 | + | |
| 37 | +/* Copy N bytes of SRC to DEST (like memmove, but args reversed). */ | |
| 38 | +extern void bcopy (const void *__src, void *__dest, size_t __n) | |
| 39 | + __THROW __nonnull ((1, 2)); | |
| 40 | + | |
| 41 | +/* Set N bytes of S to 0. */ | |
| 42 | +extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1)); | |
| 43 | + | |
| 44 | +/* Find the first occurrence of C in S (same as strchr). */ | |
| 45 | +# ifdef __CORRECT_ISO_CPP_STRINGS_H_PROTO | |
| 46 | +extern "C++" | |
| 47 | +{ | |
| 48 | +extern char *index (char *__s, int __c) | |
| 49 | + __THROW __asm ("index") __attribute_pure__ __nonnull ((1)); | |
| 50 | +extern const char *index (const char *__s, int __c) | |
| 51 | + __THROW __asm ("index") __attribute_pure__ __nonnull ((1)); | |
| 52 | + | |
| 53 | +# if defined __OPTIMIZE__ | |
| 54 | +__extern_always_inline char * | |
| 55 | +index (char *__s, int __c) __THROW | |
| 56 | +{ | |
| 57 | + return __builtin_index (__s, __c); | |
| 58 | +} | |
| 59 | + | |
| 60 | +__extern_always_inline const char * | |
| 61 | +index (const char *__s, int __c) __THROW | |
| 62 | +{ | |
| 63 | + return __builtin_index (__s, __c); | |
| 64 | +} | |
| 65 | +# endif | |
| 66 | +} | |
| 67 | +# else | |
| 68 | +extern char *index (const char *__s, int __c) | |
| 69 | + __THROW __attribute_pure__ __nonnull ((1)); | |
| 70 | +# endif | |
| 71 | + | |
| 72 | +/* Find the last occurrence of C in S (same as strrchr). */ | |
| 73 | +# ifdef __CORRECT_ISO_CPP_STRINGS_H_PROTO | |
| 74 | +extern "C++" | |
| 75 | +{ | |
| 76 | +extern char *rindex (char *__s, int __c) | |
| 77 | + __THROW __asm ("rindex") __attribute_pure__ __nonnull ((1)); | |
| 78 | +extern const char *rindex (const char *__s, int __c) | |
| 79 | + __THROW __asm ("rindex") __attribute_pure__ __nonnull ((1)); | |
| 80 | + | |
| 81 | +# if defined __OPTIMIZE__ | |
| 82 | +__extern_always_inline char * | |
| 83 | +rindex (char *__s, int __c) __THROW | |
| 84 | +{ | |
| 85 | + return __builtin_rindex (__s, __c); | |
| 86 | +} | |
| 87 | + | |
| 88 | +__extern_always_inline const char * | |
| 89 | +rindex (const char *__s, int __c) __THROW | |
| 90 | +{ | |
| 91 | + return __builtin_rindex (__s, __c); | |
| 92 | +} | |
| 93 | +# endif | |
| 94 | +} | |
| 95 | +# else | |
| 96 | +extern char *rindex (const char *__s, int __c) | |
| 97 | + __THROW __attribute_pure__ __nonnull ((1)); | |
| 98 | +# endif | |
| 99 | +#endif | |
| 100 | + | |
| 101 | +#if defined __USE_MISC || !defined __USE_XOPEN2K8 || defined __USE_XOPEN2K8XSI | |
| 102 | +/* Return the position of the first bit set in I, or 0 if none are set. | |
| 103 | + The least-significant bit is position 1, the most-significant 32. */ | |
| 104 | +extern int ffs (int __i) __THROW __attribute_const__; | |
| 105 | +#endif | |
| 106 | + | |
| 107 | +/* The following two functions are non-standard but necessary for non-32 bit | |
| 108 | + platforms. */ | |
| 109 | +# ifdef __USE_MISC | |
| 110 | +extern int ffsl (long int __l) __THROW __attribute_const__; | |
| 111 | +__extension__ extern int ffsll (long long int __ll) | |
| 112 | + __THROW __attribute_const__; | |
| 113 | +# endif | |
| 114 | + | |
| 115 | +/* Compare S1 and S2, ignoring case. */ | |
| 116 | +extern int strcasecmp (const char *__s1, const char *__s2) | |
| 117 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 118 | + | |
| 119 | +/* Compare no more than N chars of S1 and S2, ignoring case. */ | |
| 120 | +extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) | |
| 121 | + __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| 122 | + | |
| 123 | +#ifdef __USE_XOPEN2K8 | |
| 124 | +/* POSIX.1-2008 extended locale interface (see locale.h). */ | |
| 125 | +# include <bits/types/locale_t.h> | |
| 126 | + | |
| 127 | +/* Compare S1 and S2, ignoring case, using collation rules from LOC. */ | |
| 128 | +extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) | |
| 129 | + __THROW __attribute_pure__ __nonnull ((1, 2, 3)); | |
| 130 | + | |
| 131 | +/* Compare no more than N chars of S1 and S2, ignoring case, using | |
| 132 | + collation rules from LOC. */ | |
| 133 | +extern int strncasecmp_l (const char *__s1, const char *__s2, | |
| 134 | + size_t __n, locale_t __loc) | |
| 135 | + __THROW __attribute_pure__ __nonnull ((1, 2, 4)); | |
| 136 | +#endif | |
| 137 | + | |
| 138 | +__END_DECLS | |
| 139 | + | |
| 140 | +#if __GNUC_PREREQ (3,4) && __USE_FORTIFY_LEVEL > 0 \ | |
| 141 | + && defined __fortify_function | |
| 142 | +/* Functions with security checks. */ | |
| 143 | +# if defined __USE_MISC || !defined __USE_XOPEN2K8 | |
| 144 | +# include <bits/strings_fortified.h> | |
| 145 | +# endif | |
| 146 | +#endif | |
| 147 | + | |
| 148 | +#endif /* strings.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@strings.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@strings.h.blob differ Large diff collapsed, click to expand
+886 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@cdefs.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,886 @@ | ||
| 1 | +/* Copyright (C) 1992-2025 Free Software Foundation, Inc. | |
| 2 | + Copyright The GNU Toolchain Authors. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +#ifndef _SYS_CDEFS_H | |
| 20 | +#define _SYS_CDEFS_H 1 | |
| 21 | + | |
| 22 | +/* We are almost always included from features.h. */ | |
| 23 | +#ifndef _FEATURES_H | |
| 24 | +# include <features.h> | |
| 25 | +#endif | |
| 26 | + | |
| 27 | +/* The GNU libc does not support any K&R compilers or the traditional mode | |
| 28 | + of ISO C compilers anymore. Check for some of the combinations not | |
| 29 | + supported anymore. */ | |
| 30 | +#if defined __GNUC__ && !defined __STDC__ && !defined __cplusplus | |
| 31 | +# error "You need a ISO C or C++ conforming compiler to use the glibc headers" | |
| 32 | +#endif | |
| 33 | + | |
| 34 | +/* Some user header file might have defined this before. */ | |
| 35 | +#undef __P | |
| 36 | +#undef __PMT | |
| 37 | + | |
| 38 | +/* Compilers that lack __has_attribute may object to | |
| 39 | + #if defined __has_attribute && __has_attribute (...) | |
| 40 | + even though they do not need to evaluate the right-hand side of the &&. | |
| 41 | + Similarly for __has_builtin, etc. */ | |
| 42 | +#if (defined __has_attribute \ | |
| 43 | + && (!defined __clang_minor__ \ | |
| 44 | + || 3 < __clang_major__ + (5 <= __clang_minor__))) | |
| 45 | +# define __glibc_has_attribute(attr) __has_attribute (attr) | |
| 46 | +#else | |
| 47 | +# define __glibc_has_attribute(attr) 0 | |
| 48 | +#endif | |
| 49 | +#ifdef __has_builtin | |
| 50 | +# define __glibc_has_builtin(name) __has_builtin (name) | |
| 51 | +#else | |
| 52 | +# define __glibc_has_builtin(name) 0 | |
| 53 | +#endif | |
| 54 | +#ifdef __has_extension | |
| 55 | +# define __glibc_has_extension(ext) __has_extension (ext) | |
| 56 | +#else | |
| 57 | +# define __glibc_has_extension(ext) 0 | |
| 58 | +#endif | |
| 59 | + | |
| 60 | +#if defined __GNUC__ || defined __clang__ | |
| 61 | + | |
| 62 | +/* All functions, except those with callbacks or those that | |
| 63 | + synchronize memory, are leaf functions. */ | |
| 64 | +# if __GNUC_PREREQ (4, 6) && !defined _LIBC | |
| 65 | +# define __LEAF , __leaf__ | |
| 66 | +# define __LEAF_ATTR __attribute__ ((__leaf__)) | |
| 67 | +# else | |
| 68 | +# define __LEAF | |
| 69 | +# define __LEAF_ATTR | |
| 70 | +# endif | |
| 71 | + | |
| 72 | +/* GCC can always grok prototypes. For C++ programs we add throw() | |
| 73 | + to help it optimize the function calls. But this only works with | |
| 74 | + gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions | |
| 75 | + as non-throwing using a function attribute since programs can use | |
| 76 | + the -fexceptions options for C code as well. */ | |
| 77 | +# if !defined __cplusplus \ | |
| 78 | + && (__GNUC_PREREQ (3, 4) || __glibc_has_attribute (__nothrow__)) | |
| 79 | +# define __THROW __attribute__ ((__nothrow__ __LEAF)) | |
| 80 | +# define __THROWNL __attribute__ ((__nothrow__)) | |
| 81 | +# define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct | |
| 82 | +# define __NTHNL(fct) __attribute__ ((__nothrow__)) fct | |
| 83 | +# else | |
| 84 | +# if defined __cplusplus && (__GNUC_PREREQ (2,8) || __clang_major__ >= 4) | |
| 85 | +# if __cplusplus >= 201103L | |
| 86 | +# define __THROW noexcept (true) | |
| 87 | +# else | |
| 88 | +# define __THROW throw () | |
| 89 | +# endif | |
| 90 | +# define __THROWNL __THROW | |
| 91 | +# define __NTH(fct) __LEAF_ATTR fct __THROW | |
| 92 | +# define __NTHNL(fct) fct __THROW | |
| 93 | +# else | |
| 94 | +# define __THROW | |
| 95 | +# define __THROWNL | |
| 96 | +# define __NTH(fct) fct | |
| 97 | +# define __NTHNL(fct) fct | |
| 98 | +# endif | |
| 99 | +# endif | |
| 100 | + | |
| 101 | +# if __GNUC_PREREQ (4, 3) || __glibc_has_attribute (__cold__) | |
| 102 | +# define __COLD __attribute__ ((__cold__)) | |
| 103 | +# else | |
| 104 | +# define __COLD | |
| 105 | +# endif | |
| 106 | + | |
| 107 | +#else /* Not GCC or clang. */ | |
| 108 | + | |
| 109 | +# if (defined __cplusplus \ | |
| 110 | + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)) | |
| 111 | +# define __inline inline | |
| 112 | +# else | |
| 113 | +# define __inline /* No inline functions. */ | |
| 114 | +# endif | |
| 115 | + | |
| 116 | +# define __THROW | |
| 117 | +# define __THROWNL | |
| 118 | +# define __NTH(fct) fct | |
| 119 | +# define __COLD | |
| 120 | + | |
| 121 | +#endif /* GCC || clang. */ | |
| 122 | + | |
| 123 | +/* These two macros are not used in glibc anymore. They are kept here | |
| 124 | + only because some other projects expect the macros to be defined. */ | |
| 125 | +#define __P(args) args | |
| 126 | +#define __PMT(args) args | |
| 127 | + | |
| 128 | +/* For these things, GCC behaves the ANSI way normally, | |
| 129 | + and the non-ANSI way under -traditional. */ | |
| 130 | + | |
| 131 | +#define __CONCAT(x,y) x ## y | |
| 132 | +#define __STRING(x) #x | |
| 133 | + | |
| 134 | +/* This is not a typedef so `const __ptr_t' does the right thing. */ | |
| 135 | +#define __ptr_t void * | |
| 136 | + | |
| 137 | + | |
| 138 | +/* C++ needs to know that types and declarations are C, not C++. */ | |
| 139 | +#ifdef __cplusplus | |
| 140 | +# define __BEGIN_DECLS extern "C" { | |
| 141 | +# define __END_DECLS } | |
| 142 | +#else | |
| 143 | +# define __BEGIN_DECLS | |
| 144 | +# define __END_DECLS | |
| 145 | +#endif | |
| 146 | + | |
| 147 | + | |
| 148 | +/* The overloadable attribute was added on clang 2.6. */ | |
| 149 | +#if defined __clang_major__ \ | |
| 150 | + && (__clang_major__ + (__clang_minor__ >= 6) > 2) | |
| 151 | +# define __attribute_overloadable__ __attribute__((__overloadable__)) | |
| 152 | +#else | |
| 153 | +# define __attribute_overloadable__ | |
| 154 | +#endif | |
| 155 | + | |
| 156 | +/* Fortify support. */ | |
| 157 | +#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) | |
| 158 | +#define __bos0(ptr) __builtin_object_size (ptr, 0) | |
| 159 | + | |
| 160 | +/* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. */ | |
| 161 | +#if __USE_FORTIFY_LEVEL == 3 && (__glibc_clang_prereq (9, 0) \ | |
| 162 | + || __GNUC_PREREQ (12, 0)) | |
| 163 | +# define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0) | |
| 164 | +# define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1) | |
| 165 | +#else | |
| 166 | +# define __glibc_objsize0(__o) __bos0 (__o) | |
| 167 | +# define __glibc_objsize(__o) __bos (__o) | |
| 168 | +#endif | |
| 169 | + | |
| 170 | +#if __USE_FORTIFY_LEVEL > 0 | |
| 171 | +/* Compile time conditions to choose between the regular, _chk and _chk_warn | |
| 172 | + variants. These conditions should get evaluated to constant and optimized | |
| 173 | + away. */ | |
| 174 | + | |
| 175 | +#define __glibc_safe_len_cond(__l, __s, __osz) ((__l) <= (__osz) / (__s)) | |
| 176 | +#define __glibc_unsigned_or_positive(__l) \ | |
| 177 | + ((__typeof (__l)) 0 < (__typeof (__l)) -1 \ | |
| 178 | + || (__builtin_constant_p (__l) && (__l) > 0)) | |
| 179 | + | |
| 180 | +/* Length is known to be safe at compile time if the __L * __S <= __OBJSZ | |
| 181 | + condition can be folded to a constant and if it is true, or unknown (-1) */ | |
| 182 | +#define __glibc_safe_or_unknown_len(__l, __s, __osz) \ | |
| 183 | + ((__builtin_constant_p (__osz) && (__osz) == (__SIZE_TYPE__) -1) \ | |
| 184 | + || (__glibc_unsigned_or_positive (__l) \ | |
| 185 | + && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \ | |
| 186 | + (__s), (__osz))) \ | |
| 187 | + && __glibc_safe_len_cond ((__SIZE_TYPE__) (__l), (__s), (__osz)))) | |
| 188 | + | |
| 189 | +/* Conversely, we know at compile time that the length is unsafe if the | |
| 190 | + __L * __S <= __OBJSZ condition can be folded to a constant and if it is | |
| 191 | + false. */ | |
| 192 | +#define __glibc_unsafe_len(__l, __s, __osz) \ | |
| 193 | + (__glibc_unsigned_or_positive (__l) \ | |
| 194 | + && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \ | |
| 195 | + __s, __osz)) \ | |
| 196 | + && !__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz)) | |
| 197 | + | |
| 198 | +/* To correctly instrument the fortify wrapper clang requires the | |
| 199 | + pass_object_size attribute, and the attribute has the restriction that the | |
| 200 | + argument needs to be 'const'. Furthermore, to make it usable with C | |
| 201 | + interfaces, clang provides the overload attribute, which provides a C++ | |
| 202 | + like function overload support. The overloaded fortify wrapper with the | |
| 203 | + pass_object_size attribute has precedence over the default symbol. | |
| 204 | + | |
| 205 | + Also, clang does not support __va_arg_pack, so variadic functions are | |
| 206 | + expanded to issue va_arg implementations. The error function must not have | |
| 207 | + bodies (address takes are expanded to nonfortified calls), and with | |
| 208 | + __fortify_function compiler might still create a body with the C++ | |
| 209 | + mangling name (due to the overload attribute). In this case, the function | |
| 210 | + is defined with __fortify_function_error_function macro instead. | |
| 211 | + | |
| 212 | + The argument size check is also done with a clang-only attribute, | |
| 213 | + __attribute__ ((__diagnose_if__ (...))), different than gcc which calls | |
| 214 | + symbol_chk_warn alias with uses __warnattr attribute. | |
| 215 | + | |
| 216 | + The pass_object_size was added on clang 4.0, __diagnose_if__ on 5.0, | |
| 217 | + and pass_dynamic_object_size on 9.0. */ | |
| 218 | +#if defined __clang_major__ && __clang_major__ >= 5 | |
| 219 | +# define __fortify_use_clang 1 | |
| 220 | + | |
| 221 | +# define __fortify_function_error_function static __attribute__((__unused__)) | |
| 222 | + | |
| 223 | +# define __fortify_clang_pass_object_size_n(n) \ | |
| 224 | + __attribute__ ((__pass_object_size__ (n))) | |
| 225 | +# define __fortify_clang_pass_object_size0 \ | |
| 226 | + __fortify_clang_pass_object_size_n (0) | |
| 227 | +# define __fortify_clang_pass_object_size \ | |
| 228 | + __fortify_clang_pass_object_size_n (__USE_FORTIFY_LEVEL > 1) | |
| 229 | + | |
| 230 | +# if __clang_major__ >= 9 | |
| 231 | +# define __fortify_clang_pass_dynamic_object_size_n(n) \ | |
| 232 | + __attribute__ ((__pass_dynamic_object_size__ (n))) | |
| 233 | +# define __fortify_clang_pass_dynamic_object_size0 \ | |
| 234 | + __fortify_clang_pass_dynamic_object_size_n (0) | |
| 235 | +# define __fortify_clang_pass_dynamic_object_size \ | |
| 236 | + __fortify_clang_pass_dynamic_object_size_n (1) | |
| 237 | +# else | |
| 238 | +# define __fortify_clang_pass_dynamic_object_size_n(n) | |
| 239 | +# define __fortify_clang_pass_dynamic_object_size0 | |
| 240 | +# define __fortify_clang_pass_dynamic_object_size | |
| 241 | +# endif | |
| 242 | + | |
| 243 | +# define __fortify_clang_bos_static_lt_impl(bos_val, n, s) \ | |
| 244 | + ((bos_val) != -1ULL && (n) > (bos_val) / (s)) | |
| 245 | +# define __fortify_clang_bos_static_lt2(__n, __e, __s) \ | |
| 246 | + __fortify_clang_bos_static_lt_impl (__bos (__e), __n, __s) | |
| 247 | +# define __fortify_clang_bos_static_lt(__n, __e) \ | |
| 248 | + __fortify_clang_bos_static_lt2 (__n, __e, 1) | |
| 249 | +# define __fortify_clang_bos0_static_lt2(__n, __e, __s) \ | |
| 250 | + __fortify_clang_bos_static_lt_impl (__bos0 (__e), __n, __s) | |
| 251 | +# define __fortify_clang_bos0_static_lt(__n, __e) \ | |
| 252 | + __fortify_clang_bos0_static_lt2 (__n, __e, 1) | |
| 253 | + | |
| 254 | +# define __fortify_clang_bosn_args(bos_fn, n, buf, div, complaint) \ | |
| 255 | + (__fortify_clang_bos_static_lt_impl (bos_fn (buf), n, div)), (complaint), \ | |
| 256 | + "warning" | |
| 257 | + | |
| 258 | +# define __fortify_clang_warning(__c, __msg) \ | |
| 259 | + __attribute__ ((__diagnose_if__ ((__c), (__msg), "warning"))) | |
| 260 | +# define __fortify_clang_error(__c, __msg) \ | |
| 261 | + __attribute__ ((__diagnose_if__ ((__c), (__msg), "error"))) | |
| 262 | +# define __fortify_clang_warning_only_if_bos0_lt(n, buf, complaint) \ | |
| 263 | + __attribute__ ((__diagnose_if__ \ | |
| 264 | + (__fortify_clang_bosn_args (__bos0, n, buf, 1, complaint)))) | |
| 265 | +# define __fortify_clang_warning_only_if_bos0_lt2(n, buf, div, complaint) \ | |
| 266 | + __attribute__ ((__diagnose_if__ \ | |
| 267 | + (__fortify_clang_bosn_args (__bos0, n, buf, div, complaint)))) | |
| 268 | +# define __fortify_clang_warning_only_if_bos_lt(n, buf, complaint) \ | |
| 269 | + __attribute__ ((__diagnose_if__ \ | |
| 270 | + (__fortify_clang_bosn_args (__bos, n, buf, 1, complaint)))) | |
| 271 | +# define __fortify_clang_warning_only_if_bos_lt2(n, buf, div, complaint) \ | |
| 272 | + __attribute__ ((__diagnose_if__ \ | |
| 273 | + (__fortify_clang_bosn_args (__bos, n, buf, div, complaint)))) | |
| 274 | + | |
| 275 | +# define __fortify_clang_prefer_this_overload \ | |
| 276 | + __attribute__ ((enable_if (1, ""))) | |
| 277 | +# define __fortify_clang_unavailable(__msg) \ | |
| 278 | + __attribute__ ((unavailable(__msg))) | |
| 279 | + | |
| 280 | +# if __USE_FORTIFY_LEVEL == 3 | |
| 281 | +# define __fortify_clang_overload_arg(__type, __attr, __name) \ | |
| 282 | + __type __attr const __fortify_clang_pass_dynamic_object_size __name | |
| 283 | +# define __fortify_clang_overload_arg0(__type, __attr, __name) \ | |
| 284 | + __type __attr const __fortify_clang_pass_dynamic_object_size0 __name | |
| 285 | +# else | |
| 286 | +# define __fortify_clang_overload_arg(__type, __attr, __name) \ | |
| 287 | + __type __attr const __fortify_clang_pass_object_size __name | |
| 288 | +# define __fortify_clang_overload_arg0(__type, __attr, __name) \ | |
| 289 | + __type __attr const __fortify_clang_pass_object_size0 __name | |
| 290 | +# endif | |
| 291 | + | |
| 292 | +# define __fortify_clang_mul_may_overflow(size, n) \ | |
| 293 | + ((size | n) >= (((size_t)1) << (8 * sizeof (size_t) / 2))) | |
| 294 | + | |
| 295 | +# define __fortify_clang_size_too_small(__bos, __dest, __len) \ | |
| 296 | + (__bos (__dest) != (size_t) -1 && __bos (__dest) < __len) | |
| 297 | +# define __fortify_clang_warn_if_src_too_large(__dest, __src) \ | |
| 298 | + __fortify_clang_warning (__fortify_clang_size_too_small (__glibc_objsize, \ | |
| 299 | + __dest, \ | |
| 300 | + __builtin_strlen (__src) + 1), \ | |
| 301 | + "destination buffer will always be overflown by source") | |
| 302 | +# define __fortify_clang_warn_if_dest_too_small(__dest, __len) \ | |
| 303 | + __fortify_clang_warning (__fortify_clang_size_too_small (__glibc_objsize, \ | |
| 304 | + __dest, \ | |
| 305 | + __len), \ | |
| 306 | + "function called with bigger length than the destination buffer") | |
| 307 | +# define __fortify_clang_warn_if_dest_too_small0(__dest, __len) \ | |
| 308 | + __fortify_clang_warning (__fortify_clang_size_too_small (__glibc_objsize0, \ | |
| 309 | + __dest, \ | |
| 310 | + __len), \ | |
| 311 | + "function called with bigger length than the destination buffer") | |
| 312 | +#else | |
| 313 | +# define __fortify_use_clang 0 | |
| 314 | +# define __fortify_clang_warning(__c, __msg) | |
| 315 | +# define __fortify_clang_warning_only_if_bos0_lt(__n, __buf, __complaint) | |
| 316 | +# define __fortify_clang_warning_only_if_bos0_lt2(__n, __buf, __div, complaint) | |
| 317 | +# define __fortify_clang_warning_only_if_bos_lt(__n, __buf, __complaint) | |
| 318 | +# define __fortify_clang_warning_only_if_bos_lt2(__n, __buf, div, __complaint) | |
| 319 | +# define __fortify_clang_overload_arg(__type, __attr, __name) \ | |
| 320 | + __type __attr __name | |
| 321 | +# define __fortify_clang_overload_arg0(__type, __attr, __name) \ | |
| 322 | + __fortify_clang_overload_arg (__type, __attr, __name) | |
| 323 | +# define __fortify_clang_warn_if_src_too_large(__dest, __src) | |
| 324 | +# define __fortify_clang_warn_if_dest_too_small(__dest, __len) | |
| 325 | +# define __fortify_clang_warn_if_dest_too_small0(__dest, __len) | |
| 326 | +#endif | |
| 327 | + | |
| 328 | + | |
| 329 | +/* Fortify function f. __f_alias, __f_chk and __f_chk_warn must be | |
| 330 | + declared. */ | |
| 331 | + | |
| 332 | +#if !__fortify_use_clang | |
| 333 | +# define __glibc_fortify(f, __l, __s, __osz, ...) \ | |
| 334 | + (__glibc_safe_or_unknown_len (__l, __s, __osz) \ | |
| 335 | + ? __ ## f ## _alias (__VA_ARGS__) \ | |
| 336 | + : (__glibc_unsafe_len (__l, __s, __osz) \ | |
| 337 | + ? __ ## f ## _chk_warn (__VA_ARGS__, __osz) \ | |
| 338 | + : __ ## f ## _chk (__VA_ARGS__, __osz))) | |
| 339 | +#else | |
| 340 | +# define __glibc_fortify(f, __l, __s, __osz, ...) \ | |
| 341 | + (__osz == (__SIZE_TYPE__) -1) \ | |
| 342 | + ? __ ## f ## _alias (__VA_ARGS__) \ | |
| 343 | + : __ ## f ## _chk (__VA_ARGS__, __osz) | |
| 344 | +#endif | |
| 345 | + | |
| 346 | +/* Fortify function f, where object size argument passed to f is the number of | |
| 347 | + elements and not total size. */ | |
| 348 | + | |
| 349 | +#if !__fortify_use_clang | |
| 350 | +# define __glibc_fortify_n(f, __l, __s, __osz, ...) \ | |
| 351 | + (__glibc_safe_or_unknown_len (__l, __s, __osz) \ | |
| 352 | + ? __ ## f ## _alias (__VA_ARGS__) \ | |
| 353 | + : (__glibc_unsafe_len (__l, __s, __osz) \ | |
| 354 | + ? __ ## f ## _chk_warn (__VA_ARGS__, (__osz) / (__s)) \ | |
| 355 | + : __ ## f ## _chk (__VA_ARGS__, (__osz) / (__s)))) | |
| 356 | +# else | |
| 357 | +# define __glibc_fortify_n(f, __l, __s, __osz, ...) \ | |
| 358 | + (__osz == (__SIZE_TYPE__) -1) \ | |
| 359 | + ? __ ## f ## _alias (__VA_ARGS__) \ | |
| 360 | + : __ ## f ## _chk (__VA_ARGS__, (__osz) / (__s)) | |
| 361 | +#endif | |
| 362 | + | |
| 363 | +#endif /* __USE_FORTIFY_LEVEL > 0 */ | |
| 364 | + | |
| 365 | +#if __GNUC_PREREQ (4,3) | |
| 366 | +# define __warnattr(msg) __attribute__((__warning__ (msg))) | |
| 367 | +# define __errordecl(name, msg) \ | |
| 368 | + extern void name (void) __attribute__((__error__ (msg))) | |
| 369 | +#else | |
| 370 | +# define __warnattr(msg) | |
| 371 | +# define __errordecl(name, msg) extern void name (void) | |
| 372 | +#endif | |
| 373 | + | |
| 374 | +/* Support for flexible arrays. | |
| 375 | + Headers that should use flexible arrays only if they're "real" | |
| 376 | + (e.g. only if they won't affect sizeof()) should test | |
| 377 | + #if __glibc_c99_flexarr_available. */ | |
| 378 | +#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L && !defined __HP_cc | |
| 379 | +# define __flexarr [] | |
| 380 | +# define __glibc_c99_flexarr_available 1 | |
| 381 | +#elif __GNUC_PREREQ (2,97) || defined __clang__ | |
| 382 | +/* GCC 2.97 and clang support C99 flexible array members as an extension, | |
| 383 | + even when in C89 mode or compiling C++ (any version). */ | |
| 384 | +# define __flexarr [] | |
| 385 | +# define __glibc_c99_flexarr_available 1 | |
| 386 | +#elif defined __GNUC__ | |
| 387 | +/* Pre-2.97 GCC did not support C99 flexible arrays but did have | |
| 388 | + an equivalent extension with slightly different notation. */ | |
| 389 | +# define __flexarr [0] | |
| 390 | +# define __glibc_c99_flexarr_available 1 | |
| 391 | +#else | |
| 392 | +/* Some other non-C99 compiler. Approximate with [1]. */ | |
| 393 | +# define __flexarr [1] | |
| 394 | +# define __glibc_c99_flexarr_available 0 | |
| 395 | +#endif | |
| 396 | + | |
| 397 | + | |
| 398 | +/* __asm__ ("xyz") is used throughout the headers to rename functions | |
| 399 | + at the assembly language level. This is wrapped by the __REDIRECT | |
| 400 | + macro, in order to support compilers that can do this some other | |
| 401 | + way. When compilers don't support asm-names at all, we have to do | |
| 402 | + preprocessor tricks instead (which don't have exactly the right | |
| 403 | + semantics, but it's the best we can do). | |
| 404 | + | |
| 405 | + Example: | |
| 406 | + int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */ | |
| 407 | + | |
| 408 | +#if (defined __GNUC__ && __GNUC__ >= 2) || (__clang_major__ >= 4) | |
| 409 | + | |
| 410 | +# define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias)) | |
| 411 | +# ifdef __cplusplus | |
| 412 | +# define __REDIRECT_NTH(name, proto, alias) \ | |
| 413 | + name proto __THROW __asm__ (__ASMNAME (#alias)) | |
| 414 | +# define __REDIRECT_NTHNL(name, proto, alias) \ | |
| 415 | + name proto __THROWNL __asm__ (__ASMNAME (#alias)) | |
| 416 | +# else | |
| 417 | +# define __REDIRECT_NTH(name, proto, alias) \ | |
| 418 | + name proto __asm__ (__ASMNAME (#alias)) __THROW | |
| 419 | +# define __REDIRECT_NTHNL(name, proto, alias) \ | |
| 420 | + name proto __asm__ (__ASMNAME (#alias)) __THROWNL | |
| 421 | +# endif | |
| 422 | +# define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname) | |
| 423 | +# define __ASMNAME2(prefix, cname) __STRING (prefix) cname | |
| 424 | + | |
| 425 | +#ifndef __REDIRECT_FORTIFY | |
| 426 | +#define __REDIRECT_FORTIFY __REDIRECT | |
| 427 | +#endif | |
| 428 | + | |
| 429 | +#ifndef __REDIRECT_FORTIFY_NTH | |
| 430 | +#define __REDIRECT_FORTIFY_NTH __REDIRECT_NTH | |
| 431 | +#endif | |
| 432 | + | |
| 433 | +/* | |
| 434 | +#elif __SOME_OTHER_COMPILER__ | |
| 435 | + | |
| 436 | +# define __REDIRECT(name, proto, alias) name proto; \ | |
| 437 | + _Pragma("let " #name " = " #alias) | |
| 438 | +*/ | |
| 439 | +#endif | |
| 440 | + | |
| 441 | +/* GCC and clang have various useful declarations that can be made with | |
| 442 | + the '__attribute__' syntax. All of the ways we use this do fine if | |
| 443 | + they are omitted for compilers that don't understand it. */ | |
| 444 | +#if !(defined __GNUC__ || defined __clang__) | |
| 445 | +# define __attribute__(xyz) /* Ignore */ | |
| 446 | +#endif | |
| 447 | + | |
| 448 | +/* At some point during the gcc 2.96 development the `malloc' attribute | |
| 449 | + for functions was introduced. We don't want to use it unconditionally | |
| 450 | + (although this would be possible) since it generates warnings. */ | |
| 451 | +#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__malloc__) | |
| 452 | +# define __attribute_malloc__ __attribute__ ((__malloc__)) | |
| 453 | +#else | |
| 454 | +# define __attribute_malloc__ /* Ignore */ | |
| 455 | +#endif | |
| 456 | + | |
| 457 | +/* Tell the compiler which arguments to an allocation function | |
| 458 | + indicate the size of the allocation. */ | |
| 459 | +#if __GNUC_PREREQ (4, 3) | |
| 460 | +# define __attribute_alloc_size__(params) \ | |
| 461 | + __attribute__ ((__alloc_size__ params)) | |
| 462 | +#else | |
| 463 | +# define __attribute_alloc_size__(params) /* Ignore. */ | |
| 464 | +#endif | |
| 465 | + | |
| 466 | +/* Tell the compiler which argument to an allocation function | |
| 467 | + indicates the alignment of the allocation. */ | |
| 468 | +#if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__alloc_align__) | |
| 469 | +# define __attribute_alloc_align__(param) \ | |
| 470 | + __attribute__ ((__alloc_align__ param)) | |
| 471 | +#else | |
| 472 | +# define __attribute_alloc_align__(param) /* Ignore. */ | |
| 473 | +#endif | |
| 474 | + | |
| 475 | +/* At some point during the gcc 2.96 development the `pure' attribute | |
| 476 | + for functions was introduced. We don't want to use it unconditionally | |
| 477 | + (although this would be possible) since it generates warnings. */ | |
| 478 | +#if __GNUC_PREREQ (2,96) || __glibc_has_attribute (__pure__) | |
| 479 | +# define __attribute_pure__ __attribute__ ((__pure__)) | |
| 480 | +#else | |
| 481 | +# define __attribute_pure__ /* Ignore */ | |
| 482 | +#endif | |
| 483 | + | |
| 484 | +/* This declaration tells the compiler that the value is constant. */ | |
| 485 | +#if __GNUC_PREREQ (2,5) || __glibc_has_attribute (__const__) | |
| 486 | +# define __attribute_const__ __attribute__ ((__const__)) | |
| 487 | +#else | |
| 488 | +# define __attribute_const__ /* Ignore */ | |
| 489 | +#endif | |
| 490 | + | |
| 491 | +#if __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__) | |
| 492 | +# define __attribute_maybe_unused__ __attribute__ ((__unused__)) | |
| 493 | +#else | |
| 494 | +# define __attribute_maybe_unused__ /* Ignore */ | |
| 495 | +#endif | |
| 496 | + | |
| 497 | +/* At some point during the gcc 3.1 development the `used' attribute | |
| 498 | + for functions was introduced. We don't want to use it unconditionally | |
| 499 | + (although this would be possible) since it generates warnings. */ | |
| 500 | +#if __GNUC_PREREQ (3,1) || __glibc_has_attribute (__used__) | |
| 501 | +# define __attribute_used__ __attribute__ ((__used__)) | |
| 502 | +# define __attribute_noinline__ __attribute__ ((__noinline__)) | |
| 503 | +#else | |
| 504 | +# define __attribute_used__ __attribute__ ((__unused__)) | |
| 505 | +# define __attribute_noinline__ /* Ignore */ | |
| 506 | +#endif | |
| 507 | + | |
| 508 | +/* Since version 3.2, gcc allows marking deprecated functions. */ | |
| 509 | +#if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__deprecated__) | |
| 510 | +# define __attribute_deprecated__ __attribute__ ((__deprecated__)) | |
| 511 | +#else | |
| 512 | +# define __attribute_deprecated__ /* Ignore */ | |
| 513 | +#endif | |
| 514 | + | |
| 515 | +/* Since version 4.5, gcc also allows one to specify the message printed | |
| 516 | + when a deprecated function is used. clang claims to be gcc 4.2, but | |
| 517 | + may also support this feature. */ | |
| 518 | +#if __GNUC_PREREQ (4,5) \ | |
| 519 | + || __glibc_has_extension (__attribute_deprecated_with_message__) | |
| 520 | +# define __attribute_deprecated_msg__(msg) \ | |
| 521 | + __attribute__ ((__deprecated__ (msg))) | |
| 522 | +#else | |
| 523 | +# define __attribute_deprecated_msg__(msg) __attribute_deprecated__ | |
| 524 | +#endif | |
| 525 | + | |
| 526 | +/* At some point during the gcc 2.8 development the `format_arg' attribute | |
| 527 | + for functions was introduced. We don't want to use it unconditionally | |
| 528 | + (although this would be possible) since it generates warnings. | |
| 529 | + If several `format_arg' attributes are given for the same function, in | |
| 530 | + gcc-3.0 and older, all but the last one are ignored. In newer gccs, | |
| 531 | + all designated arguments are considered. */ | |
| 532 | +#if __GNUC_PREREQ (2,8) || __glibc_has_attribute (__format_arg__) | |
| 533 | +# define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) | |
| 534 | +#else | |
| 535 | +# define __attribute_format_arg__(x) /* Ignore */ | |
| 536 | +#endif | |
| 537 | + | |
| 538 | +/* At some point during the gcc 2.97 development the `strfmon' format | |
| 539 | + attribute for functions was introduced. We don't want to use it | |
| 540 | + unconditionally (although this would be possible) since it | |
| 541 | + generates warnings. */ | |
| 542 | +#if __GNUC_PREREQ (2,97) || __glibc_has_attribute (__format__) | |
| 543 | +# define __attribute_format_strfmon__(a,b) \ | |
| 544 | + __attribute__ ((__format__ (__strfmon__, a, b))) | |
| 545 | +#else | |
| 546 | +# define __attribute_format_strfmon__(a,b) /* Ignore */ | |
| 547 | +#endif | |
| 548 | + | |
| 549 | +/* The nonnull function attribute marks pointer parameters that | |
| 550 | + must not be NULL. This has the name __nonnull in glibc, | |
| 551 | + and __attribute_nonnull__ in files shared with Gnulib to avoid | |
| 552 | + collision with a different __nonnull in DragonFlyBSD 5.9. */ | |
| 553 | +#ifndef __attribute_nonnull__ | |
| 554 | +# if __GNUC_PREREQ (3,3) || __glibc_has_attribute (__nonnull__) | |
| 555 | +# define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params)) | |
| 556 | +# else | |
| 557 | +# define __attribute_nonnull__(params) | |
| 558 | +# endif | |
| 559 | +#endif | |
| 560 | +#ifndef __nonnull | |
| 561 | +# define __nonnull(params) __attribute_nonnull__ (params) | |
| 562 | +#endif | |
| 563 | + | |
| 564 | +/* The returns_nonnull function attribute marks the return type of the function | |
| 565 | + as always being non-null. */ | |
| 566 | +#ifndef __returns_nonnull | |
| 567 | +# if __GNUC_PREREQ (4, 9) || __glibc_has_attribute (__returns_nonnull__) | |
| 568 | +# define __returns_nonnull __attribute__ ((__returns_nonnull__)) | |
| 569 | +# else | |
| 570 | +# define __returns_nonnull | |
| 571 | +# endif | |
| 572 | +#endif | |
| 573 | + | |
| 574 | +/* If fortification mode, we warn about unused results of certain | |
| 575 | + function calls which can lead to problems. */ | |
| 576 | +#if __GNUC_PREREQ (3,4) || __glibc_has_attribute (__warn_unused_result__) | |
| 577 | +# define __attribute_warn_unused_result__ \ | |
| 578 | + __attribute__ ((__warn_unused_result__)) | |
| 579 | +# if defined __USE_FORTIFY_LEVEL && __USE_FORTIFY_LEVEL > 0 | |
| 580 | +# define __wur __attribute_warn_unused_result__ | |
| 581 | +# endif | |
| 582 | +#else | |
| 583 | +# define __attribute_warn_unused_result__ /* empty */ | |
| 584 | +#endif | |
| 585 | +#ifndef __wur | |
| 586 | +# define __wur /* Ignore */ | |
| 587 | +#endif | |
| 588 | + | |
| 589 | +/* Forces a function to be always inlined. */ | |
| 590 | +#if __GNUC_PREREQ (3,2) || __glibc_has_attribute (__always_inline__) | |
| 591 | +/* The Linux kernel defines __always_inline in stddef.h (283d7573), and | |
| 592 | + it conflicts with this definition. Therefore undefine it first to | |
| 593 | + allow either header to be included first. */ | |
| 594 | +# undef __always_inline | |
| 595 | +# define __always_inline __inline __attribute__ ((__always_inline__)) | |
| 596 | +#else | |
| 597 | +# undef __always_inline | |
| 598 | +# define __always_inline __inline | |
| 599 | +#endif | |
| 600 | + | |
| 601 | +/* Associate error messages with the source location of the call site rather | |
| 602 | + than with the source location inside the function. */ | |
| 603 | +#if __GNUC_PREREQ (4,3) || __glibc_has_attribute (__artificial__) | |
| 604 | +# define __attribute_artificial__ __attribute__ ((__artificial__)) | |
| 605 | +#else | |
| 606 | +# define __attribute_artificial__ /* Ignore */ | |
| 607 | +#endif | |
| 608 | + | |
| 609 | +/* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 | |
| 610 | + inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__ | |
| 611 | + or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions | |
| 612 | + older than 4.3 may define these macros and still not guarantee GNU inlining | |
| 613 | + semantics. | |
| 614 | + | |
| 615 | + clang++ identifies itself as gcc-4.2, but has support for GNU inlining | |
| 616 | + semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and | |
| 617 | + __GNUC_GNU_INLINE__ macro definitions. */ | |
| 618 | +#if (!defined __cplusplus || __GNUC_PREREQ (4,3) \ | |
| 619 | + || (defined __clang__ && (defined __GNUC_STDC_INLINE__ \ | |
| 620 | + || defined __GNUC_GNU_INLINE__))) | |
| 621 | +# if defined __GNUC_STDC_INLINE__ || defined __cplusplus | |
| 622 | +# define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) | |
| 623 | +# define __extern_always_inline \ | |
| 624 | + extern __always_inline __attribute__ ((__gnu_inline__)) | |
| 625 | +# else | |
| 626 | +# define __extern_inline extern __inline | |
| 627 | +# define __extern_always_inline extern __always_inline | |
| 628 | +# endif | |
| 629 | +#endif | |
| 630 | + | |
| 631 | +#ifdef __extern_always_inline | |
| 632 | +# define __fortify_function __extern_always_inline __attribute_artificial__ | |
| 633 | +#endif | |
| 634 | + | |
| 635 | +/* GCC 4.3 and above allow passing all anonymous arguments of an | |
| 636 | + __extern_always_inline function to some other vararg function. */ | |
| 637 | +#if __GNUC_PREREQ (4,3) | |
| 638 | +# define __va_arg_pack() __builtin_va_arg_pack () | |
| 639 | +# define __va_arg_pack_len() __builtin_va_arg_pack_len () | |
| 640 | +#endif | |
| 641 | + | |
| 642 | +/* It is possible to compile containing GCC extensions even if GCC is | |
| 643 | + run in pedantic mode if the uses are carefully marked using the | |
| 644 | + `__extension__' keyword. But this is not generally available before | |
| 645 | + version 2.8. */ | |
| 646 | +#if !(__GNUC_PREREQ (2,8) || defined __clang__) | |
| 647 | +# define __extension__ /* Ignore */ | |
| 648 | +#endif | |
| 649 | + | |
| 650 | +/* __restrict is known in EGCS 1.2 and above, and in clang. | |
| 651 | + It works also in C++ mode (outside of arrays), but only when spelled | |
| 652 | + as '__restrict', not 'restrict'. */ | |
| 653 | +#if !(__GNUC_PREREQ (2,92) || __clang_major__ >= 3) | |
| 654 | +# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L | |
| 655 | +# define __restrict restrict | |
| 656 | +# else | |
| 657 | +# define __restrict /* Ignore */ | |
| 658 | +# endif | |
| 659 | +#endif | |
| 660 | + | |
| 661 | +/* ISO C99 also allows to declare arrays as non-overlapping. The syntax is | |
| 662 | + array_name[restrict] | |
| 663 | + GCC 3.1 and clang support this. | |
| 664 | + This syntax is not usable in C++ mode. */ | |
| 665 | +#if (__GNUC_PREREQ (3,1) || __clang_major__ >= 3) && !defined __cplusplus | |
| 666 | +# define __restrict_arr __restrict | |
| 667 | +#else | |
| 668 | +# ifdef __GNUC__ | |
| 669 | +# define __restrict_arr /* Not supported in old GCC. */ | |
| 670 | +# else | |
| 671 | +# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L | |
| 672 | +# define __restrict_arr restrict | |
| 673 | +# else | |
| 674 | +/* Some other non-C99 compiler. */ | |
| 675 | +# define __restrict_arr /* Not supported. */ | |
| 676 | +# endif | |
| 677 | +# endif | |
| 678 | +#endif | |
| 679 | + | |
| 680 | +#if (__GNUC__ >= 3) || __glibc_has_builtin (__builtin_expect) | |
| 681 | +# define __glibc_unlikely(cond) __builtin_expect ((cond), 0) | |
| 682 | +# define __glibc_likely(cond) __builtin_expect ((cond), 1) | |
| 683 | +#else | |
| 684 | +# define __glibc_unlikely(cond) (cond) | |
| 685 | +# define __glibc_likely(cond) (cond) | |
| 686 | +#endif | |
| 687 | + | |
| 688 | +#if (!defined _Noreturn \ | |
| 689 | + && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ | |
| 690 | + && !(__GNUC_PREREQ (4,7) \ | |
| 691 | + || (3 < __clang_major__ + (5 <= __clang_minor__)))) | |
| 692 | +# if __GNUC_PREREQ (2,8) | |
| 693 | +# define _Noreturn __attribute__ ((__noreturn__)) | |
| 694 | +# else | |
| 695 | +# define _Noreturn | |
| 696 | +# endif | |
| 697 | +#endif | |
| 698 | + | |
| 699 | +#if __GNUC_PREREQ (8, 0) | |
| 700 | +/* Describes a char array whose address can safely be passed as the first | |
| 701 | + argument to strncpy and strncat, as the char array is not necessarily | |
| 702 | + a NUL-terminated string. */ | |
| 703 | +# define __attribute_nonstring__ __attribute__ ((__nonstring__)) | |
| 704 | +#else | |
| 705 | +# define __attribute_nonstring__ | |
| 706 | +#endif | |
| 707 | + | |
| 708 | +/* Undefine (also defined in libc-symbols.h). */ | |
| 709 | +#undef __attribute_copy__ | |
| 710 | +#if __GNUC_PREREQ (9, 0) | |
| 711 | +/* Copies attributes from the declaration or type referenced by | |
| 712 | + the argument. */ | |
| 713 | +# define __attribute_copy__(arg) __attribute__ ((__copy__ (arg))) | |
| 714 | +#else | |
| 715 | +# define __attribute_copy__(arg) | |
| 716 | +#endif | |
| 717 | + | |
| 718 | +#if (!defined _Static_assert && !defined __cplusplus \ | |
| 719 | + && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ | |
| 720 | + && (!(__GNUC_PREREQ (4, 6) || __clang_major__ >= 4) \ | |
| 721 | + || defined __STRICT_ANSI__)) | |
| 722 | +# define _Static_assert(expr, diagnostic) \ | |
| 723 | + extern int (*__Static_assert_function (void)) \ | |
| 724 | + [!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })] | |
| 725 | +#endif | |
| 726 | + | |
| 727 | +/* Gnulib avoids including these, as they don't work on non-glibc or | |
| 728 | + older glibc platforms. */ | |
| 729 | +#ifndef __GNULIB_CDEFS | |
| 730 | +# include <bits/wordsize.h> | |
| 731 | +# include <bits/long-double.h> | |
| 732 | +#endif | |
| 733 | + | |
| 734 | +#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 | |
| 735 | +# ifdef __REDIRECT | |
| 736 | + | |
| 737 | +/* Alias name defined automatically. */ | |
| 738 | +# define __LDBL_REDIR(name, proto) ... unused__ldbl_redir | |
| 739 | +# define __LDBL_REDIR_DECL(name) \ | |
| 740 | + extern __typeof (name) name __asm (__ASMNAME ("__" #name "ieee128")); | |
| 741 | +# define __REDIRECT_LDBL(name, proto, alias) \ | |
| 742 | + name proto __asm (__ASMNAME ("__" #alias "ieee128")) | |
| 743 | + | |
| 744 | +/* Alias name defined automatically, with leading underscores. */ | |
| 745 | +# define __LDBL_REDIR2_DECL(name) \ | |
| 746 | + extern __typeof (__##name) __##name \ | |
| 747 | + __asm (__ASMNAME ("__" #name "ieee128")); | |
| 748 | + | |
| 749 | +/* Alias name defined manually. */ | |
| 750 | +# define __LDBL_REDIR1(name, proto, alias) ... unused__ldbl_redir1 | |
| 751 | +# define __LDBL_REDIR1_DECL(name, alias) \ | |
| 752 | + extern __typeof (name) name __asm (__ASMNAME (#alias)); | |
| 753 | + | |
| 754 | +# define __LDBL_REDIR1_NTH(name, proto, alias) \ | |
| 755 | + __REDIRECT_NTH (name, proto, alias) | |
| 756 | +# define __REDIRECT_NTH_LDBL(name, proto, alias) \ | |
| 757 | + __LDBL_REDIR1_NTH (name, proto, __##alias##ieee128) | |
| 758 | + | |
| 759 | +/* Unused. */ | |
| 760 | +# define __LDBL_REDIR_NTH(name, proto) ... unused__ldbl_redir_nth | |
| 761 | + | |
| 762 | +# else | |
| 763 | +_Static_assert (0, "IEEE 128-bits long double requires redirection on this platform"); | |
| 764 | +# endif | |
| 765 | +#elif defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH | |
| 766 | +# define __LDBL_COMPAT 1 | |
| 767 | +# ifdef __REDIRECT | |
| 768 | +# define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias) | |
| 769 | +# define __LDBL_REDIR(name, proto) \ | |
| 770 | + __LDBL_REDIR1 (name, proto, __nldbl_##name) | |
| 771 | +# define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias) | |
| 772 | +# define __LDBL_REDIR_NTH(name, proto) \ | |
| 773 | + __LDBL_REDIR1_NTH (name, proto, __nldbl_##name) | |
| 774 | +# define __LDBL_REDIR2_DECL(name) \ | |
| 775 | + extern __typeof (__##name) __##name __asm (__ASMNAME ("__nldbl___" #name)); | |
| 776 | +# define __LDBL_REDIR1_DECL(name, alias) \ | |
| 777 | + extern __typeof (name) name __asm (__ASMNAME (#alias)); | |
| 778 | +# define __LDBL_REDIR_DECL(name) \ | |
| 779 | + extern __typeof (name) name __asm (__ASMNAME ("__nldbl_" #name)); | |
| 780 | +# define __REDIRECT_LDBL(name, proto, alias) \ | |
| 781 | + __LDBL_REDIR1 (name, proto, __nldbl_##alias) | |
| 782 | +# define __REDIRECT_NTH_LDBL(name, proto, alias) \ | |
| 783 | + __LDBL_REDIR1_NTH (name, proto, __nldbl_##alias) | |
| 784 | +# endif | |
| 785 | +#endif | |
| 786 | +#if (!defined __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0) \ | |
| 787 | + || !defined __REDIRECT | |
| 788 | +# define __LDBL_REDIR1(name, proto, alias) name proto | |
| 789 | +# define __LDBL_REDIR(name, proto) name proto | |
| 790 | +# define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW | |
| 791 | +# define __LDBL_REDIR_NTH(name, proto) name proto __THROW | |
| 792 | +# define __LDBL_REDIR2_DECL(name) | |
| 793 | +# define __LDBL_REDIR_DECL(name) | |
| 794 | +# ifdef __REDIRECT | |
| 795 | +# define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias) | |
| 796 | +# define __REDIRECT_NTH_LDBL(name, proto, alias) \ | |
| 797 | + __REDIRECT_NTH (name, proto, alias) | |
| 798 | +# endif | |
| 799 | +#endif | |
| 800 | + | |
| 801 | +/* __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is | |
| 802 | + intended for use in preprocessor macros. | |
| 803 | + | |
| 804 | + Note: MESSAGE must be a _single_ string; concatenation of string | |
| 805 | + literals is not supported. */ | |
| 806 | +#if __GNUC_PREREQ (4,8) || __glibc_clang_prereq (3,5) | |
| 807 | +# define __glibc_macro_warning1(message) _Pragma (#message) | |
| 808 | +# define __glibc_macro_warning(message) \ | |
| 809 | + __glibc_macro_warning1 (GCC warning message) | |
| 810 | +#else | |
| 811 | +# define __glibc_macro_warning(msg) | |
| 812 | +#endif | |
| 813 | + | |
| 814 | +/* Generic selection (ISO C11) is a C-only feature, available in GCC | |
| 815 | + since version 4.9. Previous versions do not provide generic | |
| 816 | + selection, even though they might set __STDC_VERSION__ to 201112L, | |
| 817 | + when in -std=c11 mode. Thus, we must check for !defined __GNUC__ | |
| 818 | + when testing __STDC_VERSION__ for generic selection support. | |
| 819 | + On the other hand, Clang also defines __GNUC__, so a clang-specific | |
| 820 | + check is required to enable the use of generic selection. */ | |
| 821 | +#if !defined __cplusplus \ | |
| 822 | + && (__GNUC_PREREQ (4, 9) \ | |
| 823 | + || __glibc_has_extension (c_generic_selections) \ | |
| 824 | + || (!defined __GNUC__ && defined __STDC_VERSION__ \ | |
| 825 | + && __STDC_VERSION__ >= 201112L)) | |
| 826 | +# define __HAVE_GENERIC_SELECTION 1 | |
| 827 | +#else | |
| 828 | +# define __HAVE_GENERIC_SELECTION 0 | |
| 829 | +#endif | |
| 830 | + | |
| 831 | +#if __GNUC_PREREQ (10, 0) | |
| 832 | +/* Designates a 1-based positional argument ref-index of pointer type | |
| 833 | + that can be used to access size-index elements of the pointed-to | |
| 834 | + array according to access mode, or at least one element when | |
| 835 | + size-index is not provided: | |
| 836 | + access (access-mode, <ref-index> [, <size-index>]) */ | |
| 837 | +# define __attr_access(x) __attribute__ ((__access__ x)) | |
| 838 | +/* For _FORTIFY_SOURCE == 3 we use __builtin_dynamic_object_size, which may | |
| 839 | + use the access attribute to get object sizes from function definition | |
| 840 | + arguments, so we can't use them on functions we fortify. Drop the access | |
| 841 | + attribute for such functions. */ | |
| 842 | +# if __USE_FORTIFY_LEVEL == 3 | |
| 843 | +# define __fortified_attr_access(a, o, s) | |
| 844 | +# else | |
| 845 | +# define __fortified_attr_access(a, o, s) __attr_access ((a, o, s)) | |
| 846 | +# endif | |
| 847 | +# if __GNUC_PREREQ (11, 0) | |
| 848 | +# define __attr_access_none(argno) __attribute__ ((__access__ (__none__, argno))) | |
| 849 | +# else | |
| 850 | +# define __attr_access_none(argno) | |
| 851 | +# endif | |
| 852 | +#else | |
| 853 | +# define __fortified_attr_access(a, o, s) | |
| 854 | +# define __attr_access(x) | |
| 855 | +# define __attr_access_none(argno) | |
| 856 | +#endif | |
| 857 | + | |
| 858 | +#if __GNUC_PREREQ (11, 0) | |
| 859 | +/* Designates dealloc as a function to call to deallocate objects | |
| 860 | + allocated by the declared function. */ | |
| 861 | +# define __attr_dealloc(dealloc, argno) \ | |
| 862 | + __attribute__ ((__malloc__ (dealloc, argno))) | |
| 863 | +# define __attr_dealloc_free __attr_dealloc (__builtin_free, 1) | |
| 864 | +#else | |
| 865 | +# define __attr_dealloc(dealloc, argno) | |
| 866 | +# define __attr_dealloc_free | |
| 867 | +#endif | |
| 868 | + | |
| 869 | +/* Specify that a function such as setjmp or vfork may return | |
| 870 | + twice. */ | |
| 871 | +#if __GNUC_PREREQ (4, 1) | |
| 872 | +# define __attribute_returns_twice__ __attribute__ ((__returns_twice__)) | |
| 873 | +#else | |
| 874 | +# define __attribute_returns_twice__ /* Ignore. */ | |
| 875 | +#endif | |
| 876 | + | |
| 877 | +/* Mark struct types as aliasable. Restricted to compilers that | |
| 878 | + support forward declarations of structs in the presence of the | |
| 879 | + attribute. */ | |
| 880 | +#if __GNUC_PREREQ (7, 1) || defined __clang__ | |
| 881 | +# define __attribute_struct_may_alias__ __attribute__ ((__may_alias__)) | |
| 882 | +#else | |
| 883 | +# define __attribute_struct_may_alias__ | |
| 884 | +#endif | |
| 885 | + | |
| 886 | +#endif /* sys/cdefs.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@cdefs.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@cdefs.h.blob differ Large diff collapsed, click to expand
+155 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@select.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,155 @@ | ||
| 1 | +/* `fd_set' type and related macros, and `select'/`pselect' declarations. | |
| 2 | + Copyright (C) 1996-2025 Free Software Foundation, Inc. | |
| 3 | + This file is part of the GNU C Library. | |
| 4 | + | |
| 5 | + The GNU C Library is free software; you can redistribute it and/or | |
| 6 | + modify it under the terms of the GNU Lesser General Public | |
| 7 | + License as published by the Free Software Foundation; either | |
| 8 | + version 2.1 of the License, or (at your option) any later version. | |
| 9 | + | |
| 10 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 11 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 12 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 13 | + Lesser General Public License for more details. | |
| 14 | + | |
| 15 | + You should have received a copy of the GNU Lesser General Public | |
| 16 | + License along with the GNU C Library; if not, see | |
| 17 | + <https://www.gnu.org/licenses/>. */ | |
| 18 | + | |
| 19 | +/* POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h> */ | |
| 20 | + | |
| 21 | +#ifndef _SYS_SELECT_H | |
| 22 | +#define _SYS_SELECT_H 1 | |
| 23 | + | |
| 24 | +#include <features.h> | |
| 25 | + | |
| 26 | +/* Get definition of needed basic types. */ | |
| 27 | +#include <bits/types.h> | |
| 28 | + | |
| 29 | +/* Get __FD_* definitions. */ | |
| 30 | +#include <bits/select.h> | |
| 31 | + | |
| 32 | +/* Get sigset_t. */ | |
| 33 | +#include <bits/types/sigset_t.h> | |
| 34 | + | |
| 35 | +/* Get definition of timer specification structures. */ | |
| 36 | +#include <bits/types/time_t.h> | |
| 37 | +#include <bits/types/struct_timeval.h> | |
| 38 | +#ifdef __USE_XOPEN2K | |
| 39 | +# include <bits/types/struct_timespec.h> | |
| 40 | +#endif | |
| 41 | + | |
| 42 | +#ifndef __suseconds_t_defined | |
| 43 | +typedef __suseconds_t suseconds_t; | |
| 44 | +# define __suseconds_t_defined | |
| 45 | +#endif | |
| 46 | + | |
| 47 | + | |
| 48 | +/* The fd_set member is required to be an array of longs. */ | |
| 49 | +typedef long int __fd_mask; | |
| 50 | + | |
| 51 | +/* Some versions of <linux/posix_types.h> define this macros. */ | |
| 52 | +#undef __NFDBITS | |
| 53 | +/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */ | |
| 54 | +#define __NFDBITS (8 * (int) sizeof (__fd_mask)) | |
| 55 | +#define __FD_ELT(d) ((d) / __NFDBITS) | |
| 56 | +#define __FD_MASK(d) ((__fd_mask) (1UL << ((d) % __NFDBITS))) | |
| 57 | + | |
| 58 | +/* fd_set for select and pselect. */ | |
| 59 | +typedef struct | |
| 60 | + { | |
| 61 | + /* XPG4.2 requires this member name. Otherwise avoid the name | |
| 62 | + from the global namespace. */ | |
| 63 | +#ifdef __USE_XOPEN | |
| 64 | + __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS]; | |
| 65 | +# define __FDS_BITS(set) ((set)->fds_bits) | |
| 66 | +#else | |
| 67 | + __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS]; | |
| 68 | +# define __FDS_BITS(set) ((set)->__fds_bits) | |
| 69 | +#endif | |
| 70 | + } fd_set; | |
| 71 | + | |
| 72 | +/* Maximum number of file descriptors in `fd_set'. */ | |
| 73 | +#define FD_SETSIZE __FD_SETSIZE | |
| 74 | + | |
| 75 | +#ifdef __USE_MISC | |
| 76 | +/* Sometimes the fd_set member is assumed to have this type. */ | |
| 77 | +typedef __fd_mask fd_mask; | |
| 78 | + | |
| 79 | +/* Number of bits per word of `fd_set' (some code assumes this is 32). */ | |
| 80 | +# define NFDBITS __NFDBITS | |
| 81 | +#endif | |
| 82 | + | |
| 83 | + | |
| 84 | +/* Access macros for `fd_set'. */ | |
| 85 | +#define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp) | |
| 86 | +#define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp) | |
| 87 | +#define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp) | |
| 88 | +#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp) | |
| 89 | + | |
| 90 | + | |
| 91 | +__BEGIN_DECLS | |
| 92 | + | |
| 93 | +/* Check the first NFDS descriptors each in READFDS (if not NULL) for read | |
| 94 | + readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS | |
| 95 | + (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out | |
| 96 | + after waiting the interval specified therein. Returns the number of ready | |
| 97 | + descriptors, or -1 for errors. | |
| 98 | + | |
| 99 | + This function is a cancellation point and therefore not marked with | |
| 100 | + __THROW. */ | |
| 101 | +#ifndef __USE_TIME64_REDIRECTS | |
| 102 | +extern int select (int __nfds, fd_set *__restrict __readfds, | |
| 103 | + fd_set *__restrict __writefds, | |
| 104 | + fd_set *__restrict __exceptfds, | |
| 105 | + struct timeval *__restrict __timeout); | |
| 106 | +#else | |
| 107 | +# ifdef __REDIRECT | |
| 108 | +extern int __REDIRECT (select, | |
| 109 | + (int __nfds, fd_set *__restrict __readfds, | |
| 110 | + fd_set *__restrict __writefds, | |
| 111 | + fd_set *__restrict __exceptfds, | |
| 112 | + struct timeval *__restrict __timeout), | |
| 113 | + __select64); | |
| 114 | +# else | |
| 115 | +# define select __select64 | |
| 116 | +# endif | |
| 117 | +#endif | |
| 118 | + | |
| 119 | +#ifdef __USE_XOPEN2K | |
| 120 | +/* Same as above only that the TIMEOUT value is given with higher | |
| 121 | + resolution and a sigmask which is been set temporarily. This version | |
| 122 | + should be used. | |
| 123 | + | |
| 124 | + This function is a cancellation point and therefore not marked with | |
| 125 | + __THROW. */ | |
| 126 | +# ifndef __USE_TIME64_REDIRECTS | |
| 127 | +extern int pselect (int __nfds, fd_set *__restrict __readfds, | |
| 128 | + fd_set *__restrict __writefds, | |
| 129 | + fd_set *__restrict __exceptfds, | |
| 130 | + const struct timespec *__restrict __timeout, | |
| 131 | + const __sigset_t *__restrict __sigmask); | |
| 132 | +# else | |
| 133 | +# ifdef __REDIRECT | |
| 134 | +extern int __REDIRECT (pselect, | |
| 135 | + (int __nfds, fd_set *__restrict __readfds, | |
| 136 | + fd_set *__restrict __writefds, | |
| 137 | + fd_set *__restrict __exceptfds, | |
| 138 | + const struct timespec *__restrict __timeout, | |
| 139 | + const __sigset_t *__restrict __sigmask), | |
| 140 | + __pselect64); | |
| 141 | +# else | |
| 142 | +# define pselect __pselect64 | |
| 143 | +# endif | |
| 144 | +# endif | |
| 145 | +#endif | |
| 146 | + | |
| 147 | + | |
| 148 | +/* Define some inlines helping to catch common problems. */ | |
| 149 | +#if __USE_FORTIFY_LEVEL > 0 && defined __GNUC__ | |
| 150 | +# include <bits/select2.h> | |
| 151 | +#endif | |
| 152 | + | |
| 153 | +__END_DECLS | |
| 154 | + | |
| 155 | +#endif /* sys/select.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@select.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@select.h.blob differ Large diff collapsed, click to expand
+232 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@types.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,232 @@ | ||
| 1 | +/* Copyright (C) 1991-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +/* | |
| 19 | + * POSIX Standard: 2.6 Primitive System Data Types <sys/types.h> | |
| 20 | + */ | |
| 21 | + | |
| 22 | +#ifndef _SYS_TYPES_H | |
| 23 | +#define _SYS_TYPES_H 1 | |
| 24 | + | |
| 25 | +#include <features.h> | |
| 26 | + | |
| 27 | +__BEGIN_DECLS | |
| 28 | + | |
| 29 | +#include <bits/types.h> | |
| 30 | + | |
| 31 | +#ifdef __USE_MISC | |
| 32 | +# ifndef __u_char_defined | |
| 33 | +typedef __u_char u_char; | |
| 34 | +typedef __u_short u_short; | |
| 35 | +typedef __u_int u_int; | |
| 36 | +typedef __u_long u_long; | |
| 37 | +typedef __quad_t quad_t; | |
| 38 | +typedef __u_quad_t u_quad_t; | |
| 39 | +typedef __fsid_t fsid_t; | |
| 40 | +# define __u_char_defined | |
| 41 | +# endif | |
| 42 | +typedef __loff_t loff_t; | |
| 43 | +#endif | |
| 44 | + | |
| 45 | +#ifndef __ino_t_defined | |
| 46 | +# ifndef __USE_FILE_OFFSET64 | |
| 47 | +typedef __ino_t ino_t; | |
| 48 | +# else | |
| 49 | +typedef __ino64_t ino_t; | |
| 50 | +# endif | |
| 51 | +# define __ino_t_defined | |
| 52 | +#endif | |
| 53 | +#if defined __USE_LARGEFILE64 && !defined __ino64_t_defined | |
| 54 | +typedef __ino64_t ino64_t; | |
| 55 | +# define __ino64_t_defined | |
| 56 | +#endif | |
| 57 | + | |
| 58 | +#ifndef __dev_t_defined | |
| 59 | +typedef __dev_t dev_t; | |
| 60 | +# define __dev_t_defined | |
| 61 | +#endif | |
| 62 | + | |
| 63 | +#ifndef __gid_t_defined | |
| 64 | +typedef __gid_t gid_t; | |
| 65 | +# define __gid_t_defined | |
| 66 | +#endif | |
| 67 | + | |
| 68 | +#ifndef __mode_t_defined | |
| 69 | +typedef __mode_t mode_t; | |
| 70 | +# define __mode_t_defined | |
| 71 | +#endif | |
| 72 | + | |
| 73 | +#ifndef __nlink_t_defined | |
| 74 | +typedef __nlink_t nlink_t; | |
| 75 | +# define __nlink_t_defined | |
| 76 | +#endif | |
| 77 | + | |
| 78 | +#ifndef __uid_t_defined | |
| 79 | +typedef __uid_t uid_t; | |
| 80 | +# define __uid_t_defined | |
| 81 | +#endif | |
| 82 | + | |
| 83 | +#ifndef __off_t_defined | |
| 84 | +# ifndef __USE_FILE_OFFSET64 | |
| 85 | +typedef __off_t off_t; | |
| 86 | +# else | |
| 87 | +typedef __off64_t off_t; | |
| 88 | +# endif | |
| 89 | +# define __off_t_defined | |
| 90 | +#endif | |
| 91 | +#if defined __USE_LARGEFILE64 && !defined __off64_t_defined | |
| 92 | +typedef __off64_t off64_t; | |
| 93 | +# define __off64_t_defined | |
| 94 | +#endif | |
| 95 | + | |
| 96 | +#ifndef __pid_t_defined | |
| 97 | +typedef __pid_t pid_t; | |
| 98 | +# define __pid_t_defined | |
| 99 | +#endif | |
| 100 | + | |
| 101 | +#if (defined __USE_XOPEN || defined __USE_XOPEN2K8) \ | |
| 102 | + && !defined __id_t_defined | |
| 103 | +typedef __id_t id_t; | |
| 104 | +# define __id_t_defined | |
| 105 | +#endif | |
| 106 | + | |
| 107 | +#ifndef __ssize_t_defined | |
| 108 | +typedef __ssize_t ssize_t; | |
| 109 | +# define __ssize_t_defined | |
| 110 | +#endif | |
| 111 | + | |
| 112 | +#ifdef __USE_MISC | |
| 113 | +# ifndef __daddr_t_defined | |
| 114 | +typedef __daddr_t daddr_t; | |
| 115 | +typedef __caddr_t caddr_t; | |
| 116 | +# define __daddr_t_defined | |
| 117 | +# endif | |
| 118 | +#endif | |
| 119 | + | |
| 120 | +#if (defined __USE_MISC || defined __USE_XOPEN) && !defined __key_t_defined | |
| 121 | +typedef __key_t key_t; | |
| 122 | +# define __key_t_defined | |
| 123 | +#endif | |
| 124 | + | |
| 125 | +#if defined __USE_XOPEN || defined __USE_XOPEN2K8 | |
| 126 | +# include <bits/types/clock_t.h> | |
| 127 | +#endif | |
| 128 | +#include <bits/types/clockid_t.h> | |
| 129 | +#include <bits/types/time_t.h> | |
| 130 | +#include <bits/types/timer_t.h> | |
| 131 | + | |
| 132 | +#ifdef __USE_XOPEN | |
| 133 | +# ifndef __useconds_t_defined | |
| 134 | +typedef __useconds_t useconds_t; | |
| 135 | +# define __useconds_t_defined | |
| 136 | +# endif | |
| 137 | +# ifndef __suseconds_t_defined | |
| 138 | +typedef __suseconds_t suseconds_t; | |
| 139 | +# define __suseconds_t_defined | |
| 140 | +# endif | |
| 141 | +#endif | |
| 142 | + | |
| 143 | +#define __need_size_t | |
| 144 | +#include <stddef.h> | |
| 145 | + | |
| 146 | +#ifdef __USE_MISC | |
| 147 | +/* Old compatibility names for C types. */ | |
| 148 | +typedef unsigned long int ulong; | |
| 149 | +typedef unsigned short int ushort; | |
| 150 | +typedef unsigned int uint; | |
| 151 | +#endif | |
| 152 | + | |
| 153 | +/* These size-specific names are used by some of the inet code. */ | |
| 154 | + | |
| 155 | +#include <bits/stdint-intn.h> | |
| 156 | + | |
| 157 | +/* These were defined by ISO C without the first `_'. */ | |
| 158 | +typedef __uint8_t u_int8_t; | |
| 159 | +typedef __uint16_t u_int16_t; | |
| 160 | +typedef __uint32_t u_int32_t; | |
| 161 | +typedef __uint64_t u_int64_t; | |
| 162 | + | |
| 163 | +#if __GNUC_PREREQ (2, 7) | |
| 164 | +typedef int register_t __attribute__ ((__mode__ (__word__))); | |
| 165 | +#else | |
| 166 | +typedef int register_t; | |
| 167 | +#endif | |
| 168 | + | |
| 169 | +/* Some code from BIND tests this macro to see if the types above are | |
| 170 | + defined. */ | |
| 171 | +#define __BIT_TYPES_DEFINED__ 1 | |
| 172 | + | |
| 173 | + | |
| 174 | +#ifdef __USE_MISC | |
| 175 | +/* In BSD <sys/types.h> is expected to define BYTE_ORDER. */ | |
| 176 | +# include <endian.h> | |
| 177 | + | |
| 178 | +/* It also defines `fd_set' and the FD_* macros for `select'. */ | |
| 179 | +# include <sys/select.h> | |
| 180 | +#endif /* Use misc. */ | |
| 181 | + | |
| 182 | + | |
| 183 | +#if (defined __USE_UNIX98 || defined __USE_XOPEN2K8) \ | |
| 184 | + && !defined __blksize_t_defined | |
| 185 | +typedef __blksize_t blksize_t; | |
| 186 | +# define __blksize_t_defined | |
| 187 | +#endif | |
| 188 | + | |
| 189 | +/* Types from the Large File Support interface. */ | |
| 190 | +#ifndef __USE_FILE_OFFSET64 | |
| 191 | +# ifndef __blkcnt_t_defined | |
| 192 | +typedef __blkcnt_t blkcnt_t; /* Type to count number of disk blocks. */ | |
| 193 | +# define __blkcnt_t_defined | |
| 194 | +# endif | |
| 195 | +# ifndef __fsblkcnt_t_defined | |
| 196 | +typedef __fsblkcnt_t fsblkcnt_t; /* Type to count file system blocks. */ | |
| 197 | +# define __fsblkcnt_t_defined | |
| 198 | +# endif | |
| 199 | +# ifndef __fsfilcnt_t_defined | |
| 200 | +typedef __fsfilcnt_t fsfilcnt_t; /* Type to count file system inodes. */ | |
| 201 | +# define __fsfilcnt_t_defined | |
| 202 | +# endif | |
| 203 | +#else | |
| 204 | +# ifndef __blkcnt_t_defined | |
| 205 | +typedef __blkcnt64_t blkcnt_t; /* Type to count number of disk blocks. */ | |
| 206 | +# define __blkcnt_t_defined | |
| 207 | +# endif | |
| 208 | +# ifndef __fsblkcnt_t_defined | |
| 209 | +typedef __fsblkcnt64_t fsblkcnt_t; /* Type to count file system blocks. */ | |
| 210 | +# define __fsblkcnt_t_defined | |
| 211 | +# endif | |
| 212 | +# ifndef __fsfilcnt_t_defined | |
| 213 | +typedef __fsfilcnt64_t fsfilcnt_t; /* Type to count file system inodes. */ | |
| 214 | +# define __fsfilcnt_t_defined | |
| 215 | +# endif | |
| 216 | +#endif | |
| 217 | + | |
| 218 | +#ifdef __USE_LARGEFILE64 | |
| 219 | +typedef __blkcnt64_t blkcnt64_t; /* Type to count number of disk blocks. */ | |
| 220 | +typedef __fsblkcnt64_t fsblkcnt64_t; /* Type to count file system blocks. */ | |
| 221 | +typedef __fsfilcnt64_t fsfilcnt64_t; /* Type to count file system inodes. */ | |
| 222 | +#endif | |
| 223 | + | |
| 224 | + | |
| 225 | +/* Now add the thread types. */ | |
| 226 | +#if defined __USE_POSIX199506 || defined __USE_UNIX98 | |
| 227 | +# include <bits/pthreadtypes.h> | |
| 228 | +#endif | |
| 229 | + | |
| 230 | +__END_DECLS | |
| 231 | + | |
| 232 | +#endif /* sys/types.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@types.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@types.h.blob differ Large diff collapsed, click to expand
+86 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@utsname.h new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,86 @@ | ||
| 1 | +/* Copyright (C) 1991-2025 Free Software Foundation, Inc. | |
| 2 | + This file is part of the GNU C Library. | |
| 3 | + | |
| 4 | + The GNU C Library is free software; you can redistribute it and/or | |
| 5 | + modify it under the terms of the GNU Lesser General Public | |
| 6 | + License as published by the Free Software Foundation; either | |
| 7 | + version 2.1 of the License, or (at your option) any later version. | |
| 8 | + | |
| 9 | + The GNU C Library is distributed in the hope that it will be useful, | |
| 10 | + but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 12 | + Lesser General Public License for more details. | |
| 13 | + | |
| 14 | + You should have received a copy of the GNU Lesser General Public | |
| 15 | + License along with the GNU C Library; if not, see | |
| 16 | + <https://www.gnu.org/licenses/>. */ | |
| 17 | + | |
| 18 | +/* | |
| 19 | + * POSIX Standard: 4.4 System Identification <sys/utsname.h> | |
| 20 | + */ | |
| 21 | + | |
| 22 | +#ifndef _SYS_UTSNAME_H | |
| 23 | +#define _SYS_UTSNAME_H 1 | |
| 24 | + | |
| 25 | +#include <features.h> | |
| 26 | + | |
| 27 | +__BEGIN_DECLS | |
| 28 | + | |
| 29 | +#include <bits/utsname.h> | |
| 30 | + | |
| 31 | +#ifndef _UTSNAME_SYSNAME_LENGTH | |
| 32 | +# define _UTSNAME_SYSNAME_LENGTH _UTSNAME_LENGTH | |
| 33 | +#endif | |
| 34 | +#ifndef _UTSNAME_NODENAME_LENGTH | |
| 35 | +# define _UTSNAME_NODENAME_LENGTH _UTSNAME_LENGTH | |
| 36 | +#endif | |
| 37 | +#ifndef _UTSNAME_RELEASE_LENGTH | |
| 38 | +# define _UTSNAME_RELEASE_LENGTH _UTSNAME_LENGTH | |
| 39 | +#endif | |
| 40 | +#ifndef _UTSNAME_VERSION_LENGTH | |
| 41 | +# define _UTSNAME_VERSION_LENGTH _UTSNAME_LENGTH | |
| 42 | +#endif | |
| 43 | +#ifndef _UTSNAME_MACHINE_LENGTH | |
| 44 | +# define _UTSNAME_MACHINE_LENGTH _UTSNAME_LENGTH | |
| 45 | +#endif | |
| 46 | + | |
| 47 | +/* Structure describing the system and machine. */ | |
| 48 | +struct utsname | |
| 49 | + { | |
| 50 | + /* Name of the implementation of the operating system. */ | |
| 51 | + char sysname[_UTSNAME_SYSNAME_LENGTH]; | |
| 52 | + | |
| 53 | + /* Name of this node on the network. */ | |
| 54 | + char nodename[_UTSNAME_NODENAME_LENGTH]; | |
| 55 | + | |
| 56 | + /* Current release level of this implementation. */ | |
| 57 | + char release[_UTSNAME_RELEASE_LENGTH]; | |
| 58 | + /* Current version level of this release. */ | |
| 59 | + char version[_UTSNAME_VERSION_LENGTH]; | |
| 60 | + | |
| 61 | + /* Name of the hardware type the system is running on. */ | |
| 62 | + char machine[_UTSNAME_MACHINE_LENGTH]; | |
| 63 | + | |
| 64 | +#if _UTSNAME_DOMAIN_LENGTH - 0 | |
| 65 | + /* Name of the domain of this node on the network. */ | |
| 66 | +# ifdef __USE_GNU | |
| 67 | + char domainname[_UTSNAME_DOMAIN_LENGTH]; | |
| 68 | +# else | |
| 69 | + char __domainname[_UTSNAME_DOMAIN_LENGTH]; | |
| 70 | +# endif | |
| 71 | +#endif | |
| 72 | + }; | |
| 73 | + | |
| 74 | +#ifdef __USE_MISC | |
| 75 | +/* Note that SVID assumes all members have the same size. */ | |
| 76 | +# define SYS_NMLN _UTSNAME_LENGTH | |
| 77 | +#endif | |
| 78 | + | |
| 79 | + | |
| 80 | +/* Put information about the system in NAME. */ | |
| 81 | +extern int uname (struct utsname *__name) __THROW; | |
| 82 | + | |
| 83 | + | |
| 84 | +__END_DECLS | |
| 85 | + | |
| 86 | +#endif /* sys/utsname.h */ |
+0 −0 .ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@utsname.h.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@@home@mostafa@projects@sfetch-c/@nix@store@lbjwxax9n0457lgd83rqwpd1l9lgfl7r-glibc-2.42-84-dev@include@sys@utsname.h.blob differ Large diff collapsed, click to expand
+82 −0 .ccls-cache/@home@mostafa@projects@sfetch-c/src@main.c new file mode 100644 Large diff collapsed, click to expand
| @@ -0,0 +1,82 @@ | ||
| 1 | +#include <stdio.h> | |
| 2 | +#include <sys/utsname.h> | |
| 3 | +#include <string.h> | |
| 4 | +#include <stdlib.h> | |
| 5 | + | |
| 6 | +#define C_RESET "\033[0m" | |
| 7 | +#define C_BOLD "\033[1m" | |
| 8 | +#define C_BLUE "\033[1;34m" | |
| 9 | +#define C_YELLOW "\033[1;33m" | |
| 10 | +#define C_CYAN "\033[1;36m" | |
| 11 | +#define C_GREEN "\033[1;32m" | |
| 12 | +#define C_RED "\033[1;31m" | |
| 13 | +#define C_BLACK "\033[1;30m" | |
| 14 | + | |
| 15 | +static char *version = "0.1.3"; | |
| 16 | + | |
| 17 | +static const char asciiArt[] = | |
| 18 | +" ████████ \n" | |
| 19 | +" ██████████ \n" | |
| 20 | +" █████████ \n" | |
| 21 | +" ███████ \n" | |
| 22 | +" ██████ ██ ██ ██ ██ ██ ██ ██ \n" | |
| 23 | +" ███████ \n" | |
| 24 | +" █████████ \n" | |
| 25 | +" ██████████ \n" | |
| 26 | +" ████████ "; | |
| 27 | + | |
| 28 | +void printAscii(void) { | |
| 29 | + printf(C_YELLOW "%s" C_RESET "\n\n", asciiArt); | |
| 30 | +} | |
| 31 | +void printOS(void) { | |
| 32 | + FILE *fp = fopen("/etc/os-release", "r"); | |
| 33 | + if (!fp) { | |
| 34 | + printf(C_CYAN "OS: " C_RESET "Generic Linux\n"); | |
| 35 | + return; | |
| 36 | + } | |
| 37 | + char line[512]; | |
| 38 | + while (fgets(line, sizeof(line), fp)) { | |
| 39 | + if(strncmp(line, "PRETTY_NAME=", 12) == 0) { | |
| 40 | + char *name = line + 12; | |
| 41 | + if (*name == '"') name++; | |
| 42 | + size_t len = strlen(name); | |
| 43 | + if (len > 0 && name[len - 1] == '\n') name[--len] = '\0'; | |
| 44 | + if (len > 0 && name[len - 1] == '"') name[--len] = '\0'; | |
| 45 | + printf(C_CYAN "OS: " C_RESET "%s\n", name); | |
| 46 | + fclose(fp); | |
| 47 | + return; | |
| 48 | + } | |
| 49 | + } | |
| 50 | + fclose(fp); | |
| 51 | + printf(C_CYAN "OS: " C_RESET "Generic Linux\n"); | |
| 52 | +} | |
| 53 | +int printStats(void) { | |
| 54 | + char *term = getenv("TERM_PROGRAM"); | |
| 55 | + if (!term) { | |
| 56 | + term = getenv("TERM"); | |
| 57 | + } | |
| 58 | + char *wm = getenv("XDG_SESSION_DESKTOP"); | |
| 59 | + if (!wm) { | |
| 60 | + wm = getenv("DESKTOP_SESSION"); | |
| 61 | + } | |
| 62 | + struct utsname info; | |
| 63 | + if (uname(&info) != 0) { | |
| 64 | + perror("uname"); | |
| 65 | + return 1; | |
| 66 | + } | |
| 67 | + printOS(); | |
| 68 | + printf(C_GREEN "Kernel: " C_RESET "%s\n", info.release); | |
| 69 | + printf(C_BLUE "Host: " C_RESET "%s\n", info.nodename); | |
| 70 | + printf(C_RED "WM: " C_RESET "%s\n", wm ? wm : "Unknown / TTY"); | |
| 71 | + printf(C_BLACK "Term: " C_RESET "%s\n", term ? term : "couldn't read terminal name"); | |
| 72 | + return 0; | |
| 73 | +} | |
| 74 | +int main(int argc, char **argv) { | |
| 75 | + if (argc > 1 && strcmp("-v", argv[1]) == 0) { | |
| 76 | + printf("sfetch-v%s\n", version); | |
| 77 | + return 0; | |
| 78 | + } | |
| 79 | + printAscii(); | |
| 80 | + printStats(); | |
| 81 | + return 0; | |
| 82 | +} |
+0 −0 .ccls-cache/@home@mostafa@projects@sfetch-c/src@main.c.blob new file mode 100644, Binary files /dev/null and b/.ccls-cache/@home@mostafa@projects@sfetch-c/src@main.c.blob differ Large diff collapsed, click to expand
+5 −39 flake.lock Large diff collapsed, click to expand
| @@ -1,34 +1,16 @@ | ||
| 1 | 1 | { |
| 2 | 2 | "nodes": { |
| 3 | - "flake-utils": { | |
| 4 | - "inputs": { | |
| 5 | - "systems": "systems" | |
| 6 | - }, | |
| 7 | - "locked": { | |
| 8 | - "lastModified": 1731533236, | |
| 9 | - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", | |
| 10 | - "owner": "numtide", | |
| 11 | - "repo": "flake-utils", | |
| 12 | - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", | |
| 13 | - "type": "github" | |
| 14 | - }, | |
| 15 | - "original": { | |
| 16 | - "owner": "numtide", | |
| 17 | - "repo": "flake-utils", | |
| 18 | - "type": "github" | |
| 19 | - } | |
| 20 | - }, | |
| 21 | 3 | "nixpkgs": { |
| 22 | 4 | "locked": { |
| 23 | - "lastModified": 1762596750, | |
| 24 | - "narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=", | |
| 25 | - "owner": "NixOS", | |
| 5 | + "lastModified": 1789149629, | |
| 6 | + "narHash": "sha256-H6GwaZzZf+4npqv0tph94w9tZddSjFjmQrVsW0z78uk=", | |
| 7 | + "owner": "nixos", | |
| 26 | 8 | "repo": "nixpkgs", |
| 27 | - "rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e", | |
| 9 | + "rev": "eaad089433ca2bb662274377d33df3d0e51ef28b", | |
| 28 | 10 | "type": "github" |
| 29 | 11 | }, |
| 30 | 12 | "original": { |
| 31 | - "owner": "NixOS", | |
| 13 | + "owner": "nixos", | |
| 32 | 14 | "ref": "nixos-unstable", |
| 33 | 15 | "repo": "nixpkgs", |
| 34 | 16 | "type": "github" |
| @@ -36,24 +18,8 @@ | ||
| 36 | 18 | }, |
| 37 | 19 | "root": { |
| 38 | 20 | "inputs": { |
| 39 | - "flake-utils": "flake-utils", | |
| 40 | 21 | "nixpkgs": "nixpkgs" |
| 41 | 22 | } |
| 42 | - }, | |
| 43 | - "systems": { | |
| 44 | - "locked": { | |
| 45 | - "lastModified": 1681028828, | |
| 46 | - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", | |
| 47 | - "owner": "nix-systems", | |
| 48 | - "repo": "default", | |
| 49 | - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", | |
| 50 | - "type": "github" | |
| 51 | - }, | |
| 52 | - "original": { | |
| 53 | - "owner": "nix-systems", | |
| 54 | - "repo": "default", | |
| 55 | - "type": "github" | |
| 56 | - } | |
| 57 | 23 | } |
| 58 | 24 | }, |
| 59 | 25 | "root": "root", |
+1 −1 flake.nix Large diff collapsed, click to expand
| @@ -37,7 +37,7 @@ | ||
| 37 | 37 | |
| 38 | 38 | devShells = forEachSupportedSystem ({pkgs}: { |
| 39 | 39 | default = pkgs.mkShell { |
| 40 | - packages = with pkgs; [ gnumake gcc man-pages man-pages-posix]; | |
| 40 | + packages = with pkgs; [ gnumake gcc man-pages man-pages-posix clang-tools ]; | |
| 41 | 41 | shellHook = '' |
| 42 | 42 | if [ -f ~/.bashrc ]; then |
| 43 | 43 | source ~/.bashrc |
+3 −3 src/main.c Large diff collapsed, click to expand
| @@ -10,7 +10,7 @@ | ||
| 10 | 10 | #define C_CYAN "\033[1;36m" |
| 11 | 11 | #define C_GREEN "\033[1;32m" |
| 12 | 12 | #define C_RED "\033[1;31m" |
| 13 | -#define C_BLACK "\033[1;30m" | |
| 13 | +#define C_PURPLE "\033[1;35m" | |
| 14 | 14 | |
| 15 | 15 | static char *version = "0.1.3"; |
| 16 | 16 | |
| @@ -68,12 +68,12 @@ int printStats(void) { | ||
| 68 | 68 | printf(C_GREEN "Kernel: " C_RESET "%s\n", info.release); |
| 69 | 69 | printf(C_BLUE "Host: " C_RESET "%s\n", info.nodename); |
| 70 | 70 | printf(C_RED "WM: " C_RESET "%s\n", wm ? wm : "Unknown / TTY"); |
| 71 | - printf(C_BLACK "Term: " C_RESET "%s\n", term ? term : "couldn't read terminal name"); | |
| 71 | + printf(C_PURPLE "Term: " C_RESET "%s\n", term ? term : "couldn't read terminal name"); | |
| 72 | 72 | return 0; |
| 73 | 73 | } |
| 74 | 74 | int main(int argc, char **argv) { |
| 75 | 75 | if (argc > 1 && strcmp("-v", argv[1]) == 0) { |
| 76 | - printf("sfetch v%s\n", version); | |
| 76 | + printf("sfetch-%s\n", version); | |
| 77 | 77 | return 0; |
| 78 | 78 | } |
| 79 | 79 | printAscii(); |