fordon_greeman / sfetch

fix: replace black color with purple Browse files
theidioticdev committed 2026-09-13 parent 9826a31 commit 7bc0dba93f61e5f82fc386ab3f14dafaba8378ed
Showing 133 changed files with 7749 additions and 43 deletions. UnifiedSplit
+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();