diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/inttypes.h | 1509 | ||||
-rw-r--r-- | lib/malloc/dynarray-skeleton.gl.h | 529 | ||||
-rw-r--r-- | lib/malloc/dynarray.gl.h | 174 | ||||
-rw-r--r-- | lib/sched.h | 580 | ||||
-rw-r--r-- | lib/spawn.h | 1499 | ||||
-rw-r--r-- | lib/stdckdint.h | 38 |
6 files changed, 0 insertions, 4329 deletions
diff --git a/lib/inttypes.h b/lib/inttypes.h deleted file mode 100644 index 445a59959..000000000 --- a/lib/inttypes.h +++ /dev/null @@ -1,1509 +0,0 @@ -/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ -/* Copyright (C) 2006-2022 Free Software Foundation, Inc. - Written by Paul Eggert, Bruno Haible, Derek Price. - This file is part of gnulib. - - This file is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of the - License, or (at your option) any later version. - - This file is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -/* - * ISO C 99 <inttypes.h> for platforms that lack it. - * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/inttypes.h.html> - */ - -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif - - -/* Include the original <inttypes.h> if it exists, and if this file - has not been included yet or if this file includes gnulib stdint.h - which in turn includes this file. - The include_next requires a split double-inclusion guard. */ -#if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H -# if 1 - - /* Some pre-C++11 <stdint.h> implementations need this. */ -# if defined __cplusplus && ! defined __STDC_FORMAT_MACROS -# define __STDC_FORMAT_MACROS 1 -# endif - -# include_next <inttypes.h> - -# define _GL_FINISHED_INCLUDING_SYSTEM_INTTYPES_H -# endif -#endif - -#if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H -#define INTTYPES_H - -/* Include <stdint.h> or the gnulib replacement. - But avoid namespace pollution on glibc systems. */ -#ifndef __GLIBC__ -# include <stdint.h> -#endif -/* Get CHAR_BIT, INT_MAX, LONG_MAX, etc. */ -#include <limits.h> -/* On mingw, __USE_MINGW_ANSI_STDIO only works if <stdio.h> is also included */ -#if defined _WIN32 && ! defined __CYGWIN__ -# include <stdio.h> -#endif - -#if !(INT_MAX == 0x7fffffff && INT_MIN + INT_MAX == -1) -# error "This file assumes that 'int' is 32-bit two's complement. Please report your platform and compiler to <bug-gnulib@gnu.org>." -#endif - -/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ -/* C++ compatible function declaration macros. - Copyright (C) 2010-2022 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -#ifndef _GL_CXXDEFS_H -#define _GL_CXXDEFS_H - -/* Begin/end the GNULIB_NAMESPACE namespace. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE { -# define _GL_END_NAMESPACE } -#else -# define _GL_BEGIN_NAMESPACE -# define _GL_END_NAMESPACE -#endif - -/* The three most frequent use cases of these macros are: - - * For providing a substitute for a function that is missing on some - platforms, but is declared and works fine on the platforms on which - it exists: - - #if @GNULIB_FOO@ - # if !@HAVE_FOO@ - _GL_FUNCDECL_SYS (foo, ...); - # endif - _GL_CXXALIAS_SYS (foo, ...); - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif - - * For providing a replacement for a function that exists on all platforms, - but is broken/insufficient and needs to be replaced on some platforms: - - #if @GNULIB_FOO@ - # if @REPLACE_FOO@ - # if !(defined __cplusplus && defined GNULIB_NAMESPACE) - # undef foo - # define foo rpl_foo - # endif - _GL_FUNCDECL_RPL (foo, ...); - _GL_CXXALIAS_RPL (foo, ...); - # else - _GL_CXXALIAS_SYS (foo, ...); - # endif - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif - - * For providing a replacement for a function that exists on some platforms - but is broken/insufficient and needs to be replaced on some of them and - is additionally either missing or undeclared on some other platforms: - - #if @GNULIB_FOO@ - # if @REPLACE_FOO@ - # if !(defined __cplusplus && defined GNULIB_NAMESPACE) - # undef foo - # define foo rpl_foo - # endif - _GL_FUNCDECL_RPL (foo, ...); - _GL_CXXALIAS_RPL (foo, ...); - # else - # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ - _GL_FUNCDECL_SYS (foo, ...); - # endif - _GL_CXXALIAS_SYS (foo, ...); - # endif - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif -*/ - -/* _GL_EXTERN_C declaration; - performs the declaration with C linkage. */ -#if defined __cplusplus -# define _GL_EXTERN_C extern "C" -#else -# define _GL_EXTERN_C extern -#endif - -/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); - declares a replacement function, named rpl_func, with the given prototype, - consisting of return type, parameters, and attributes. - Example: - _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) - _GL_ARG_NONNULL ((1))); - */ -#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ - _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) -#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C rettype rpl_func parameters_and_attributes - -/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); - declares the system function, named func, with the given prototype, - consisting of return type, parameters, and attributes. - Example: - _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) - _GL_ARG_NONNULL ((1))); - */ -#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C rettype func parameters_and_attributes - -/* _GL_CXXALIAS_RPL (func, rettype, parameters); - declares a C++ alias called GNULIB_NAMESPACE::func - that redirects to rpl_func, if GNULIB_NAMESPACE is defined. - Example: - _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); - - Wrapping rpl_func in an object with an inline conversion operator - avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is - actually used in the program. */ -#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ - _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return ::rpl_func; \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_MDA (func, rettype, parameters); - is to be used when func is a Microsoft deprecated alias, on native Windows. - It declares a C++ alias called GNULIB_NAMESPACE::func - that redirects to _func, if GNULIB_NAMESPACE is defined. - Example: - _GL_CXXALIAS_MDA (open, int, (const char *filename, int flags, ...)); - */ -#define _GL_CXXALIAS_MDA(func,rettype,parameters) \ - _GL_CXXALIAS_RPL_1 (func, _##func, rettype, parameters) - -/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); - is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); - except that the C function rpl_func may have a slightly different - declaration. A cast is used to silence the "invalid conversion" error - that would otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast<type>(::rpl_func); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_MDA_CAST (func, rettype, parameters); - is like _GL_CXXALIAS_MDA (func, rettype, parameters); - except that the C function func may have a slightly different declaration. - A cast is used to silence the "invalid conversion" error that would - otherwise occur. */ -#define _GL_CXXALIAS_MDA_CAST(func,rettype,parameters) \ - _GL_CXXALIAS_RPL_CAST_1 (func, _##func, rettype, parameters) - -/* _GL_CXXALIAS_SYS (func, rettype, parameters); - declares a C++ alias called GNULIB_NAMESPACE::func - that redirects to the system provided function func, if GNULIB_NAMESPACE - is defined. - Example: - _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); - - Wrapping func in an object with an inline conversion operator - avoids a reference to func unless GNULIB_NAMESPACE::func is - actually used in the program. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return ::func; \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); - is like _GL_CXXALIAS_SYS (func, rettype, parameters); - except that the C function func may have a slightly different declaration. - A cast is used to silence the "invalid conversion" error that would - otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast<type>(::func); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); - is like _GL_CXXALIAS_SYS (func, rettype, parameters); - except that the C function is picked among a set of overloaded functions, - namely the one with rettype2 and parameters2. Two consecutive casts - are used to silence the "cannot find a match" and "invalid conversion" - errors that would otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE - /* The outer cast must be a reinterpret_cast. - The inner cast: When the function is defined as a set of overloaded - functions, it works as a static_cast<>, choosing the designated variant. - When the function is defined as a single variant, it works as a - reinterpret_cast<>. The parenthesized cast syntax works both ways. */ -# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast<type>((rettype2 (*) parameters2)(::func)); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIASWARN (func); - causes a warning to be emitted when ::func is used but not when - GNULIB_NAMESPACE::func is used. func must be defined without overloaded - variants. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIASWARN(func) \ - _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) -# define _GL_CXXALIASWARN_1(func,namespace) \ - _GL_CXXALIASWARN_2 (func, namespace) -/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>, - we enable the warning only when not optimizing. */ -# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__) -# define _GL_CXXALIASWARN_2(func,namespace) \ - _GL_WARN_ON_USE (func, \ - "The symbol ::" #func " refers to the system function. " \ - "Use " #namespace "::" #func " instead.") -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING -# define _GL_CXXALIASWARN_2(func,namespace) \ - extern __typeof__ (func) func -# else -# define _GL_CXXALIASWARN_2(func,namespace) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -# endif -#else -# define _GL_CXXALIASWARN(func) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); - causes a warning to be emitted when the given overloaded variant of ::func - is used but not when GNULIB_NAMESPACE::func is used. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ - _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ - GNULIB_NAMESPACE) -# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ - _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) -/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>, - we enable the warning only when not optimizing. */ -# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__) -# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ - _GL_WARN_ON_USE_CXX (func, rettype, rettype, parameters_and_attributes, \ - "The symbol ::" #func " refers to the system function. " \ - "Use " #namespace "::" #func " instead.") -# else -# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -# endif -#else -# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -#endif /* _GL_CXXDEFS_H */ - -/* The definition of _GL_ARG_NONNULL is copied here. */ -/* A C macro for declaring that specific arguments must not be NULL. - Copyright (C) 2009-2022 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools - that the values passed as arguments n, ..., m must be non-NULL pointers. - n = 1 stands for the first argument, n = 2 for the second argument etc. */ -#ifndef _GL_ARG_NONNULL -# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || defined __clang__ -# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) -# else -# define _GL_ARG_NONNULL(params) -# endif -#endif - -/* The definition of _GL_WARN_ON_USE is copied here. */ -/* A C macro for emitting warnings if a function is used. - Copyright (C) 2010-2022 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -/* _GL_WARN_ON_USE (function, "literal string") issues a declaration - for FUNCTION which will then trigger a compiler warning containing - the text of "literal string" anywhere that function is called, if - supported by the compiler. If the compiler does not support this - feature, the macro expands to an unused extern declaration. - - _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the - attribute used in _GL_WARN_ON_USE. If the compiler does not support - this feature, it expands to empty. - - These macros are useful for marking a function as a potential - portability trap, with the intent that "literal string" include - instructions on the replacement function that should be used - instead. - _GL_WARN_ON_USE is for functions with 'extern' linkage. - _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline' - linkage. - - However, one of the reasons that a function is a portability trap is - if it has the wrong signature. Declaring FUNCTION with a different - signature in C is a compilation error, so this macro must use the - same type as any existing declaration so that programs that avoid - the problematic FUNCTION do not fail to compile merely because they - included a header that poisoned the function. But this implies that - _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already - have a declaration. Use of this macro implies that there must not - be any other macro hiding the declaration of FUNCTION; but - undefining FUNCTION first is part of the poisoning process anyway - (although for symbols that are provided only via a macro, the result - is a compilation error rather than a warning containing - "literal string"). Also note that in C++, it is only safe to use if - FUNCTION has no overloads. - - For an example, it is possible to poison 'getline' by: - - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]], - [getline]) in configure.ac, which potentially defines - HAVE_RAW_DECL_GETLINE - - adding this code to a header that wraps the system <stdio.h>: - #undef getline - #if HAVE_RAW_DECL_GETLINE - _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but" - "not universally present; use the gnulib module getline"); - #endif - - It is not possible to directly poison global variables. But it is - possible to write a wrapper accessor function, and poison that - (less common usage, like &environ, will cause a compilation error - rather than issue the nice warning, but the end result of informing - the developer about their portability problem is still achieved): - #if HAVE_RAW_DECL_ENVIRON - static char *** - rpl_environ (void) { return &environ; } - _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared"); - # undef environ - # define environ (*rpl_environ ()) - #endif - or better (avoiding contradictory use of 'static' and 'extern'): - #if HAVE_RAW_DECL_ENVIRON - static char *** - _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared") - rpl_environ (void) { return &environ; } - # undef environ - # define environ (*rpl_environ ()) - #endif - */ -#ifndef _GL_WARN_ON_USE - -# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) -/* A compiler attribute is available in gcc versions 4.3.0 and later. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C __typeof__ (function) function __attribute__ ((__warning__ (message))) -# define _GL_WARN_ON_USE_ATTRIBUTE(message) \ - __attribute__ ((__warning__ (message))) -# elif __clang_major__ >= 4 -/* Another compiler attribute is available in clang. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C __typeof__ (function) function \ - __attribute__ ((__diagnose_if__ (1, message, "warning"))) -# define _GL_WARN_ON_USE_ATTRIBUTE(message) \ - __attribute__ ((__diagnose_if__ (1, message, "warning"))) -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING -/* Verify the existence of the function. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C __typeof__ (function) function -# define _GL_WARN_ON_USE_ATTRIBUTE(message) -# else /* Unsupported. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C int _gl_warn_on_use -# define _GL_WARN_ON_USE_ATTRIBUTE(message) -# endif -#endif - -/* _GL_WARN_ON_USE_CXX (function, rettype_gcc, rettype_clang, parameters_and_attributes, "message") - is like _GL_WARN_ON_USE (function, "message"), except that in C++ mode the - function is declared with the given prototype, consisting of return type, - parameters, and attributes. - This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does - not work in this case. */ -#ifndef _GL_WARN_ON_USE_CXX -# if !defined __cplusplus -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ - _GL_WARN_ON_USE (function, msg) -# else -# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) -/* A compiler attribute is available in gcc versions 4.3.0 and later. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -extern rettype_gcc function parameters_and_attributes \ - __attribute__ ((__warning__ (msg))) -# elif __clang_major__ >= 4 -/* Another compiler attribute is available in clang. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -extern rettype_clang function parameters_and_attributes \ - __attribute__ ((__diagnose_if__ (1, msg, "warning"))) -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING -/* Verify the existence of the function. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -extern rettype_gcc function parameters_and_attributes -# else /* Unsupported. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -_GL_WARN_EXTERN_C int _gl_warn_on_use -# endif -# endif -#endif - -/* _GL_WARN_EXTERN_C declaration; - performs the declaration with C linkage. */ -#ifndef _GL_WARN_EXTERN_C -# if defined __cplusplus -# define _GL_WARN_EXTERN_C extern "C" -# else -# define _GL_WARN_EXTERN_C extern -# endif -#endif - -/* 7.8.1 Macros for format specifiers */ - -#if defined _TNS_R_TARGET - /* Tandem NonStop R series and compatible platforms released before - July 2005 support %Ld but not %lld. */ -# define _LONG_LONG_FORMAT_PREFIX "L" -#else -# define _LONG_LONG_FORMAT_PREFIX "ll" -#endif - -#if !defined PRId8 -# ifdef INT8_MAX -# define PRId8 "d" -# endif -#endif -#if !defined PRIi8 -# ifdef INT8_MAX -# define PRIi8 "i" -# endif -#endif -#if !defined PRIo8 -# ifdef UINT8_MAX -# define PRIo8 "o" -# endif -#endif -#if !defined PRIu8 -# ifdef UINT8_MAX -# define PRIu8 "u" -# endif -#endif -#if !defined PRIx8 -# ifdef UINT8_MAX -# define PRIx8 "x" -# endif -#endif -#if !defined PRIX8 -# ifdef UINT8_MAX -# define PRIX8 "X" -# endif -#endif -#if !defined PRId16 -# ifdef INT16_MAX -# define PRId16 "d" -# endif -#endif -#if !defined PRIi16 -# ifdef INT16_MAX -# define PRIi16 "i" -# endif -#endif -#if !defined PRIo16 -# ifdef UINT16_MAX -# define PRIo16 "o" -# endif -#endif -#if !defined PRIu16 -# ifdef UINT16_MAX -# define PRIu16 "u" -# endif -#endif -#if !defined PRIx16 -# ifdef UINT16_MAX -# define PRIx16 "x" -# endif -#endif -#if !defined PRIX16 -# ifdef UINT16_MAX -# define PRIX16 "X" -# endif -#endif -#if !defined PRId32 -# ifdef INT32_MAX -# define PRId32 "d" -# endif -#endif -#if !defined PRIi32 -# ifdef INT32_MAX -# define PRIi32 "i" -# endif -#endif -#if !defined PRIo32 -# ifdef UINT32_MAX -# define PRIo32 "o" -# endif -#endif -#if !defined PRIu32 -# ifdef UINT32_MAX -# define PRIu32 "u" -# endif -#endif -#if !defined PRIx32 -# ifdef UINT32_MAX -# define PRIx32 "x" -# endif -#endif -#if !defined PRIX32 -# ifdef UINT32_MAX -# define PRIX32 "X" -# endif -#endif -#ifdef INT64_MAX -# if (0 ? defined _LP64 : defined _LP64) -# define _PRI64_PREFIX "l" -# elif defined _MSC_VER || defined __MINGW32__ -# define _PRI64_PREFIX "I64" -# elif LONG_MAX >> 30 == 1 -# define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX -# endif -# if !defined PRId64 -# define PRId64 _PRI64_PREFIX "d" -# endif -# if !defined PRIi64 -# define PRIi64 _PRI64_PREFIX "i" -# endif -#endif -#ifdef UINT64_MAX -# if (0 ? defined _LP64 : defined _LP64) -# define _PRIu64_PREFIX "l" -# elif defined _MSC_VER || defined __MINGW32__ -# define _PRIu64_PREFIX "I64" -# elif ULONG_MAX >> 31 == 1 -# define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX -# endif -# if !defined PRIo64 -# define PRIo64 _PRIu64_PREFIX "o" -# endif -# if !defined PRIu64 -# define PRIu64 _PRIu64_PREFIX "u" -# endif -# if !defined PRIx64 -# define PRIx64 _PRIu64_PREFIX "x" -# endif -# if !defined PRIX64 -# define PRIX64 _PRIu64_PREFIX "X" -# endif -#endif - -#if !defined PRIdLEAST8 -# define PRIdLEAST8 "d" -#endif -#if !defined PRIiLEAST8 -# define PRIiLEAST8 "i" -#endif -#if !defined PRIoLEAST8 -# define PRIoLEAST8 "o" -#endif -#if !defined PRIuLEAST8 -# define PRIuLEAST8 "u" -#endif -#if !defined PRIxLEAST8 -# define PRIxLEAST8 "x" -#endif -#if !defined PRIXLEAST8 -# define PRIXLEAST8 "X" -#endif -#if !defined PRIdLEAST16 -# define PRIdLEAST16 "d" -#endif -#if !defined PRIiLEAST16 -# define PRIiLEAST16 "i" -#endif -#if !defined PRIoLEAST16 -# define PRIoLEAST16 "o" -#endif -#if !defined PRIuLEAST16 -# define PRIuLEAST16 "u" -#endif -#if !defined PRIxLEAST16 -# define PRIxLEAST16 "x" -#endif -#if !defined PRIXLEAST16 -# define PRIXLEAST16 "X" -#endif -#if !defined PRIdLEAST32 -# define PRIdLEAST32 "d" -#endif -#if !defined PRIiLEAST32 -# define PRIiLEAST32 "i" -#endif -#if !defined PRIoLEAST32 -# define PRIoLEAST32 "o" -#endif -#if !defined PRIuLEAST32 -# define PRIuLEAST32 "u" -#endif -#if !defined PRIxLEAST32 -# define PRIxLEAST32 "x" -#endif -#if !defined PRIXLEAST32 -# define PRIXLEAST32 "X" -#endif -#ifdef INT64_MAX -# if !defined PRIdLEAST64 -# define PRIdLEAST64 PRId64 -# endif -# if !defined PRIiLEAST64 -# define PRIiLEAST64 PRIi64 -# endif -#endif -#ifdef UINT64_MAX -# if !defined PRIoLEAST64 -# define PRIoLEAST64 PRIo64 -# endif -# if !defined PRIuLEAST64 -# define PRIuLEAST64 PRIu64 -# endif -# if !defined PRIxLEAST64 -# define PRIxLEAST64 PRIx64 -# endif -# if !defined PRIXLEAST64 -# define PRIXLEAST64 PRIX64 -# endif -#endif - -#if !defined PRIdFAST8 -# if INT_FAST8_MAX > INT32_MAX -# define PRIdFAST8 PRId64 -# else -# define PRIdFAST8 "d" -# endif -#endif -#if !defined PRIiFAST8 -# if INT_FAST8_MAX > INT32_MAX -# define PRIiFAST8 PRIi64 -# else -# define PRIiFAST8 "i" -# endif -#endif -#if !defined PRIoFAST8 -# if UINT_FAST8_MAX > UINT32_MAX -# define PRIoFAST8 PRIo64 -# else -# define PRIoFAST8 "o" -# endif -#endif -#if !defined PRIuFAST8 -# if UINT_FAST8_MAX > UINT32_MAX -# define PRIuFAST8 PRIu64 -# else -# define PRIuFAST8 "u" -# endif -#endif -#if !defined PRIxFAST8 -# if UINT_FAST8_MAX > UINT32_MAX -# define PRIxFAST8 PRIx64 -# else -# define PRIxFAST8 "x" -# endif -#endif -#if !defined PRIXFAST8 -# if UINT_FAST8_MAX > UINT32_MAX -# define PRIXFAST8 PRIX64 -# else -# define PRIXFAST8 "X" -# endif -#endif -#if !defined PRIdFAST16 -# if INT_FAST16_MAX > INT32_MAX -# define PRIdFAST16 PRId64 -# else -# define PRIdFAST16 "d" -# endif -#endif -#if !defined PRIiFAST16 -# if INT_FAST16_MAX > INT32_MAX -# define PRIiFAST16 PRIi64 -# else -# define PRIiFAST16 "i" -# endif -#endif -#if !defined PRIoFAST16 -# if UINT_FAST16_MAX > UINT32_MAX -# define PRIoFAST16 PRIo64 -# else -# define PRIoFAST16 "o" -# endif -#endif -#if !defined PRIuFAST16 -# if UINT_FAST16_MAX > UINT32_MAX -# define PRIuFAST16 PRIu64 -# else -# define PRIuFAST16 "u" -# endif -#endif -#if !defined PRIxFAST16 -# if UINT_FAST16_MAX > UINT32_MAX -# define PRIxFAST16 PRIx64 -# else -# define PRIxFAST16 "x" -# endif -#endif -#if !defined PRIXFAST16 -# if UINT_FAST16_MAX > UINT32_MAX -# define PRIXFAST16 PRIX64 -# else -# define PRIXFAST16 "X" -# endif -#endif -#if !defined PRIdFAST32 -# if INT_FAST32_MAX > INT32_MAX -# define PRIdFAST32 PRId64 -# else -# define PRIdFAST32 "d" -# endif -#endif -#if !defined PRIiFAST32 -# if INT_FAST32_MAX > INT32_MAX -# define PRIiFAST32 PRIi64 -# else -# define PRIiFAST32 "i" -# endif -#endif -#if !defined PRIoFAST32 -# if UINT_FAST32_MAX > UINT32_MAX -# define PRIoFAST32 PRIo64 -# else -# define PRIoFAST32 "o" -# endif -#endif -#if !defined PRIuFAST32 -# if UINT_FAST32_MAX > UINT32_MAX -# define PRIuFAST32 PRIu64 -# else -# define PRIuFAST32 "u" -# endif -#endif -#if !defined PRIxFAST32 -# if UINT_FAST32_MAX > UINT32_MAX -# define PRIxFAST32 PRIx64 -# else -# define PRIxFAST32 "x" -# endif -#endif -#if !defined PRIXFAST32 -# if UINT_FAST32_MAX > UINT32_MAX -# define PRIXFAST32 PRIX64 -# else -# define PRIXFAST32 "X" -# endif -#endif -#ifdef INT64_MAX -# if !defined PRIdFAST64 -# define PRIdFAST64 PRId64 -# endif -# if !defined PRIiFAST64 -# define PRIiFAST64 PRIi64 -# endif -#endif -#ifdef UINT64_MAX -# if !defined PRIoFAST64 -# define PRIoFAST64 PRIo64 -# endif -# if !defined PRIuFAST64 -# define PRIuFAST64 PRIu64 -# endif -# if !defined PRIxFAST64 -# define PRIxFAST64 PRIx64 -# endif -# if !defined PRIXFAST64 -# define PRIXFAST64 PRIX64 -# endif -#endif - -#if !defined PRIdMAX -# if 1 -# define PRIdMAX PRId64 -# else -# define PRIdMAX "ld" -# endif -#endif -#if !defined PRIiMAX -# if 1 -# define PRIiMAX PRIi64 -# else -# define PRIiMAX "li" -# endif -#endif -#if !defined PRIoMAX -# if 1 -# define PRIoMAX PRIo64 -# else -# define PRIoMAX "lo" -# endif -#endif -#if !defined PRIuMAX -# if 1 -# define PRIuMAX PRIu64 -# else -# define PRIuMAX "lu" -# endif -#endif -#if !defined PRIxMAX -# if 1 -# define PRIxMAX PRIx64 -# else -# define PRIxMAX "lx" -# endif -#endif -#if !defined PRIXMAX -# if 1 -# define PRIXMAX PRIX64 -# else -# define PRIXMAX "lX" -# endif -#endif - -#if !defined PRIdPTR -# ifdef INTPTR_MAX -# define PRIdPTR __PRIPTR_PREFIX "d" -# endif -#endif -#if !defined PRIiPTR -# ifdef INTPTR_MAX -# define PRIiPTR __PRIPTR_PREFIX "i" -# endif -#endif -#if !defined PRIoPTR -# ifdef UINTPTR_MAX -# define PRIoPTR __PRIPTR_PREFIX "o" -# endif -#endif -#if !defined PRIuPTR -# ifdef UINTPTR_MAX -# define PRIuPTR __PRIPTR_PREFIX "u" -# endif -#endif -#if !defined PRIxPTR -# ifdef UINTPTR_MAX -# define PRIxPTR __PRIPTR_PREFIX "x" -# endif -#endif -#if !defined PRIXPTR -# ifdef UINTPTR_MAX -# define PRIXPTR __PRIPTR_PREFIX "X" -# endif -#endif - -#if !defined SCNd8 -# ifdef INT8_MAX -# define SCNd8 "hhd" -# endif -#endif -#if !defined SCNi8 -# ifdef INT8_MAX -# define SCNi8 "hhi" -# endif -#endif -#if !defined SCNo8 -# ifdef UINT8_MAX -# define SCNo8 "hho" -# endif -#endif -#if !defined SCNu8 -# ifdef UINT8_MAX -# define SCNu8 "hhu" -# endif -#endif -#if !defined SCNx8 -# ifdef UINT8_MAX -# define SCNx8 "hhx" -# endif -#endif -#if !defined SCNd16 -# ifdef INT16_MAX -# define SCNd16 "hd" -# endif -#endif -#if !defined SCNi16 -# ifdef INT16_MAX -# define SCNi16 "hi" -# endif -#endif -#if !defined SCNo16 -# ifdef UINT16_MAX -# define SCNo16 "ho" -# endif -#endif -#if !defined SCNu16 -# ifdef UINT16_MAX -# define SCNu16 "hu" -# endif -#endif -#if !defined SCNx16 -# ifdef UINT16_MAX -# define SCNx16 "hx" -# endif -#endif -#if !defined SCNd32 -# ifdef INT32_MAX -# define SCNd32 "d" -# endif -#endif -#if !defined SCNi32 -# ifdef INT32_MAX -# define SCNi32 "i" -# endif -#endif -#if !defined SCNo32 -# ifdef UINT32_MAX -# define SCNo32 "o" -# endif -#endif -#if !defined SCNu32 -# ifdef UINT32_MAX -# define SCNu32 "u" -# endif -#endif -#if !defined SCNx32 -# ifdef UINT32_MAX -# define SCNx32 "x" -# endif -#endif -#ifdef INT64_MAX -# if (0 ? defined _LP64 : defined _LP64) -# define _SCN64_PREFIX "l" -# elif defined _MSC_VER || defined __MINGW32__ -# define _SCN64_PREFIX "I64" -# elif LONG_MAX >> 30 == 1 -# define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX -# endif -# if !defined SCNd64 -# define SCNd64 _SCN64_PREFIX "d" -# endif -# if !defined SCNi64 -# define SCNi64 _SCN64_PREFIX "i" -# endif -#endif -#ifdef UINT64_MAX -# if (0 ? defined _LP64 : defined _LP64) -# define _SCNu64_PREFIX "l" -# elif defined _MSC_VER || defined __MINGW32__ -# define _SCNu64_PREFIX "I64" -# elif ULONG_MAX >> 31 == 1 -# define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX -# endif -# if !defined SCNo64 -# define SCNo64 _SCNu64_PREFIX "o" -# endif -# if !defined SCNu64 -# define SCNu64 _SCNu64_PREFIX "u" -# endif -# if !defined SCNx64 -# define SCNx64 _SCNu64_PREFIX "x" -# endif -#endif - -#if !defined SCNdLEAST8 -# define SCNdLEAST8 "hhd" -#endif -#if !defined SCNiLEAST8 -# define SCNiLEAST8 "hhi" -#endif -#if !defined SCNoLEAST8 -# define SCNoLEAST8 "hho" -#endif -#if !defined SCNuLEAST8 -# define SCNuLEAST8 "hhu" -#endif -#if !defined SCNxLEAST8 -# define SCNxLEAST8 "hhx" -#endif -#if !defined SCNdLEAST16 -# define SCNdLEAST16 "hd" -#endif -#if !defined SCNiLEAST16 -# define SCNiLEAST16 "hi" -#endif -#if !defined SCNoLEAST16 -# define SCNoLEAST16 "ho" -#endif -#if !defined SCNuLEAST16 -# define SCNuLEAST16 "hu" -#endif -#if !defined SCNxLEAST16 -# define SCNxLEAST16 "hx" -#endif -#if !defined SCNdLEAST32 -# define SCNdLEAST32 "d" -#endif -#if !defined SCNiLEAST32 -# define SCNiLEAST32 "i" -#endif -#if !defined SCNoLEAST32 -# define SCNoLEAST32 "o" -#endif -#if !defined SCNuLEAST32 -# define SCNuLEAST32 "u" -#endif -#if !defined SCNxLEAST32 -# define SCNxLEAST32 "x" -#endif -#ifdef INT64_MAX -# if !defined SCNdLEAST64 -# define SCNdLEAST64 SCNd64 -# endif -# if !defined SCNiLEAST64 -# define SCNiLEAST64 SCNi64 -# endif -#endif -#ifdef UINT64_MAX -# if !defined SCNoLEAST64 -# define SCNoLEAST64 SCNo64 -# endif -# if !defined SCNuLEAST64 -# define SCNuLEAST64 SCNu64 -# endif -# if !defined SCNxLEAST64 -# define SCNxLEAST64 SCNx64 -# endif -#endif - -#if !defined SCNdFAST8 -# if INT_FAST8_MAX > INT32_MAX -# define SCNdFAST8 SCNd64 -# elif INT_FAST8_MAX == 0x7fff -# define SCNdFAST8 "hd" -# elif INT_FAST8_MAX == 0x7f -# define SCNdFAST8 "hhd" -# else -# define SCNdFAST8 "d" -# endif -#endif -#if !defined SCNiFAST8 -# if INT_FAST8_MAX > INT32_MAX -# define SCNiFAST8 SCNi64 -# elif INT_FAST8_MAX == 0x7fff -# define SCNiFAST8 "hi" -# elif INT_FAST8_MAX == 0x7f -# define SCNiFAST8 "hhi" -# else -# define SCNiFAST8 "i" -# endif -#endif -#if !defined SCNoFAST8 -# if UINT_FAST8_MAX > UINT32_MAX -# define SCNoFAST8 SCNo64 -# elif UINT_FAST8_MAX == 0xffff -# define SCNoFAST8 "ho" -# elif UINT_FAST8_MAX == 0xff -# define SCNoFAST8 "hho" -# else -# define SCNoFAST8 "o" -# endif -#endif -#if !defined SCNuFAST8 -# if UINT_FAST8_MAX > UINT32_MAX -# define SCNuFAST8 SCNu64 -# elif UINT_FAST8_MAX == 0xffff -# define SCNuFAST8 "hu" -# elif UINT_FAST8_MAX == 0xff -# define SCNuFAST8 "hhu" -# else -# define SCNuFAST8 "u" -# endif -#endif -#if !defined SCNxFAST8 -# if UINT_FAST8_MAX > UINT32_MAX -# define SCNxFAST8 SCNx64 -# elif UINT_FAST8_MAX == 0xffff -# define SCNxFAST8 "hx" -# elif UINT_FAST8_MAX == 0xff -# define SCNxFAST8 "hhx" -# else -# define SCNxFAST8 "x" -# endif -#endif -#if !defined SCNdFAST16 -# if INT_FAST16_MAX > INT32_MAX -# define SCNdFAST16 SCNd64 -# elif INT_FAST16_MAX == 0x7fff -# define SCNdFAST16 "hd" -# else -# define SCNdFAST16 "d" -# endif -#endif -#if !defined SCNiFAST16 -# if INT_FAST16_MAX > INT32_MAX -# define SCNiFAST16 SCNi64 -# elif INT_FAST16_MAX == 0x7fff -# define SCNiFAST16 "hi" -# else -# define SCNiFAST16 "i" -# endif -#endif -#if !defined SCNoFAST16 -# if UINT_FAST16_MAX > UINT32_MAX -# define SCNoFAST16 SCNo64 -# elif UINT_FAST16_MAX == 0xffff -# define SCNoFAST16 "ho" -# else -# define SCNoFAST16 "o" -# endif -#endif -#if !defined SCNuFAST16 -# if UINT_FAST16_MAX > UINT32_MAX -# define SCNuFAST16 SCNu64 -# elif UINT_FAST16_MAX == 0xffff -# define SCNuFAST16 "hu" -# else -# define SCNuFAST16 "u" -# endif -#endif -#if !defined SCNxFAST16 -# if UINT_FAST16_MAX > UINT32_MAX -# define SCNxFAST16 SCNx64 -# elif UINT_FAST16_MAX == 0xffff -# define SCNxFAST16 "hx" -# else -# define SCNxFAST16 "x" -# endif -#endif -#if !defined SCNdFAST32 -# if INT_FAST32_MAX > INT32_MAX -# define SCNdFAST32 SCNd64 -# else -# define SCNdFAST32 "d" -# endif -#endif -#if !defined SCNiFAST32 -# if INT_FAST32_MAX > INT32_MAX -# define SCNiFAST32 SCNi64 -# else -# define SCNiFAST32 "i" -# endif -#endif -#if !defined SCNoFAST32 -# if UINT_FAST32_MAX > UINT32_MAX -# define SCNoFAST32 SCNo64 -# else -# define SCNoFAST32 "o" -# endif -#endif -#if !defined SCNuFAST32 -# if UINT_FAST32_MAX > UINT32_MAX -# define SCNuFAST32 SCNu64 -# else -# define SCNuFAST32 "u" -# endif -#endif -#if !defined SCNxFAST32 -# if UINT_FAST32_MAX > UINT32_MAX -# define SCNxFAST32 SCNx64 -# else -# define SCNxFAST32 "x" -# endif -#endif -#ifdef INT64_MAX -# if !defined SCNdFAST64 -# define SCNdFAST64 SCNd64 -# endif -# if !defined SCNiFAST64 -# define SCNiFAST64 SCNi64 -# endif -#endif -#ifdef UINT64_MAX -# if !defined SCNoFAST64 -# define SCNoFAST64 SCNo64 -# endif -# if !defined SCNuFAST64 -# define SCNuFAST64 SCNu64 -# endif -# if !defined SCNxFAST64 -# define SCNxFAST64 SCNx64 -# endif -#endif - -#if !defined SCNdMAX -# if 1 -# define SCNdMAX SCNd64 -# else -# define SCNdMAX "ld" -# endif -#endif -#if !defined SCNiMAX -# if 1 -# define SCNiMAX SCNi64 -# else -# define SCNiMAX "li" -# endif -#endif -#if !defined SCNoMAX -# if 1 -# define SCNoMAX SCNo64 -# else -# define SCNoMAX "lo" -# endif -#endif -#if !defined SCNuMAX -# if 1 -# define SCNuMAX SCNu64 -# else -# define SCNuMAX "lu" -# endif -#endif -#if !defined SCNxMAX -# if 1 -# define SCNxMAX SCNx64 -# else -# define SCNxMAX "lx" -# endif -#endif - -#if !defined SCNdPTR -# ifdef INTPTR_MAX -# define SCNdPTR __PRIPTR_PREFIX "d" -# endif -#endif -#if !defined SCNiPTR -# ifdef INTPTR_MAX -# define SCNiPTR __PRIPTR_PREFIX "i" -# endif -#endif -#if !defined SCNoPTR -# ifdef UINTPTR_MAX -# define SCNoPTR __PRIPTR_PREFIX "o" -# endif -#endif -#if !defined SCNuPTR -# ifdef UINTPTR_MAX -# define SCNuPTR __PRIPTR_PREFIX "u" -# endif -#endif -#if !defined SCNxPTR -# ifdef UINTPTR_MAX -# define SCNxPTR __PRIPTR_PREFIX "x" -# endif -#endif - -/* 7.8.2 Functions for greatest-width integer types */ - -#ifdef __cplusplus -extern "C" { -#endif - -#if 0 -# if !1 -extern intmax_t imaxabs (intmax_t); -# endif -#elif defined GNULIB_POSIXCHECK -# undef imaxabs -# if HAVE_RAW_DECL_IMAXABS -_GL_WARN_ON_USE (imaxabs, "imaxabs is unportable - " - "use gnulib module imaxabs for portability"); -# endif -#endif - -#if 0 -# if !1 -# if !GNULIB_defined_imaxdiv_t -typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t; -# define GNULIB_defined_imaxdiv_t 1 -# endif -# endif -# if !1 -extern imaxdiv_t imaxdiv (intmax_t, intmax_t); -# endif -#elif defined GNULIB_POSIXCHECK -# undef imaxdiv -# if HAVE_RAW_DECL_IMAXDIV -_GL_WARN_ON_USE (imaxdiv, "imaxdiv is unportable - " - "use gnulib module imaxdiv for portability"); -# endif -#endif - -#if 0 -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef strtoimax -# define strtoimax rpl_strtoimax -# endif -_GL_FUNCDECL_RPL (strtoimax, intmax_t, - (const char *restrict, char **restrict, int) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (strtoimax, intmax_t, - (const char *restrict, char **restrict, int)); -# else -# if !1 -# undef strtoimax -_GL_FUNCDECL_SYS (strtoimax, intmax_t, - (const char *restrict, char **restrict, int) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (strtoimax, intmax_t, - (const char *restrict, char **restrict, int)); -# endif -_GL_CXXALIASWARN (strtoimax); -#elif defined GNULIB_POSIXCHECK -# undef strtoimax -# if HAVE_RAW_DECL_STRTOIMAX -_GL_WARN_ON_USE (strtoimax, "strtoimax is unportable - " - "use gnulib module strtoimax for portability"); -# endif -#endif - -#if 0 -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef strtoumax -# define strtoumax rpl_strtoumax -# endif -_GL_FUNCDECL_RPL (strtoumax, uintmax_t, - (const char *restrict, char **restrict, int) - _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (strtoumax, uintmax_t, - (const char *restrict, char **restrict, int)); -# else -# if !1 -# undef strtoumax -_GL_FUNCDECL_SYS (strtoumax, uintmax_t, - (const char *restrict, char **restrict, int) - _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (strtoumax, uintmax_t, - (const char *restrict, char **restrict, int)); -# endif -_GL_CXXALIASWARN (strtoumax); -#elif defined GNULIB_POSIXCHECK -# undef strtoumax -# if HAVE_RAW_DECL_STRTOUMAX -_GL_WARN_ON_USE (strtoumax, "strtoumax is unportable - " - "use gnulib module strtoumax for portability"); -# endif -#endif - -/* Don't bother defining or declaring wcstoimax and wcstoumax, since - wide-character functions like this are hardly ever useful. */ - -#ifdef __cplusplus -} -#endif - -#endif /* !defined INTTYPES_H && !defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H */ diff --git a/lib/malloc/dynarray-skeleton.gl.h b/lib/malloc/dynarray-skeleton.gl.h deleted file mode 100644 index b48c6a920..000000000 --- a/lib/malloc/dynarray-skeleton.gl.h +++ /dev/null @@ -1,529 +0,0 @@ -/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ -/* Type-safe arrays which grow dynamically. - Copyright (C) 2017-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - -/* Pre-processor macros which act as parameters: - - DYNARRAY_STRUCT - The struct tag of dynamic array to be defined. - DYNARRAY_ELEMENT - The type name of the element type. Elements are copied - as if by memcpy, and can change address as the dynamic - array grows. - DYNARRAY_PREFIX - The prefix of the functions which are defined. - - The following parameters are optional: - - DYNARRAY_ELEMENT_FREE - DYNARRAY_ELEMENT_FREE (E) is evaluated to deallocate the - contents of elements. E is of type DYNARRAY_ELEMENT *. - DYNARRAY_ELEMENT_INIT - DYNARRAY_ELEMENT_INIT (E) is evaluated to initialize a new - element. E is of type DYNARRAY_ELEMENT *. - If DYNARRAY_ELEMENT_FREE but not DYNARRAY_ELEMENT_INIT is - defined, new elements are automatically zero-initialized. - Otherwise, new elements have undefined contents. - DYNARRAY_INITIAL_SIZE - The size of the statically allocated array (default: - at least 2, more elements if they fit into 128 bytes). - Must be a preprocessor constant. If DYNARRAY_INITIAL_SIZE is 0, - there is no statically allocated array at, and all non-empty - arrays are heap-allocated. - DYNARRAY_FINAL_TYPE - The name of the type which holds the final array. If not - defined, is PREFIX##finalize not provided. DYNARRAY_FINAL_TYPE - must be a struct type, with members of type DYNARRAY_ELEMENT and - size_t at the start (in this order). - - These macros are undefined after this header file has been - included. - - The following types are provided (their members are private to the - dynarray implementation): - - struct DYNARRAY_STRUCT - - The following functions are provided: - - void DYNARRAY_PREFIX##init (struct DYNARRAY_STRUCT *); - void DYNARRAY_PREFIX##free (struct DYNARRAY_STRUCT *); - bool DYNARRAY_PREFIX##has_failed (const struct DYNARRAY_STRUCT *); - void DYNARRAY_PREFIX##mark_failed (struct DYNARRAY_STRUCT *); - size_t DYNARRAY_PREFIX##size (const struct DYNARRAY_STRUCT *); - DYNARRAY_ELEMENT *DYNARRAY_PREFIX##begin (const struct DYNARRAY_STRUCT *); - DYNARRAY_ELEMENT *DYNARRAY_PREFIX##end (const struct DYNARRAY_STRUCT *); - DYNARRAY_ELEMENT *DYNARRAY_PREFIX##at (struct DYNARRAY_STRUCT *, size_t); - void DYNARRAY_PREFIX##add (struct DYNARRAY_STRUCT *, DYNARRAY_ELEMENT); - DYNARRAY_ELEMENT *DYNARRAY_PREFIX##emplace (struct DYNARRAY_STRUCT *); - bool DYNARRAY_PREFIX##resize (struct DYNARRAY_STRUCT *, size_t); - void DYNARRAY_PREFIX##remove_last (struct DYNARRAY_STRUCT *); - void DYNARRAY_PREFIX##clear (struct DYNARRAY_STRUCT *); - - The following functions are provided are provided if the - prerequisites are met: - - bool DYNARRAY_PREFIX##finalize (struct DYNARRAY_STRUCT *, - DYNARRAY_FINAL_TYPE *); - (if DYNARRAY_FINAL_TYPE is defined) - DYNARRAY_ELEMENT *DYNARRAY_PREFIX##finalize (struct DYNARRAY_STRUCT *, - size_t *); - (if DYNARRAY_FINAL_TYPE is not defined) -*/ - -#include <malloc/dynarray.gl.h> - -#include <errno.h> -#include <stdlib.h> -#include <string.h> - -#ifndef DYNARRAY_STRUCT -# error "DYNARRAY_STRUCT must be defined" -#endif - -#ifndef DYNARRAY_ELEMENT -# error "DYNARRAY_ELEMENT must be defined" -#endif - -#ifndef DYNARRAY_PREFIX -# error "DYNARRAY_PREFIX must be defined" -#endif - -#ifdef DYNARRAY_INITIAL_SIZE -# if DYNARRAY_INITIAL_SIZE < 0 -# error "DYNARRAY_INITIAL_SIZE must be non-negative" -# endif -# if DYNARRAY_INITIAL_SIZE > 0 -# define DYNARRAY_HAVE_SCRATCH 1 -# else -# define DYNARRAY_HAVE_SCRATCH 0 -# endif -#else -/* Provide a reasonable default which limits the size of - DYNARRAY_STRUCT. */ -# define DYNARRAY_INITIAL_SIZE \ - (sizeof (DYNARRAY_ELEMENT) > 64 ? 2 : 128 / sizeof (DYNARRAY_ELEMENT)) -# define DYNARRAY_HAVE_SCRATCH 1 -#endif - -/* Public type definitions. */ - -/* All fields of this struct are private to the implementation. */ -struct DYNARRAY_STRUCT -{ - union - { - struct dynarray_header dynarray_abstract; - struct - { - /* These fields must match struct dynarray_header. */ - size_t used; - size_t allocated; - DYNARRAY_ELEMENT *array; - } dynarray_header; - } u; - -#if DYNARRAY_HAVE_SCRATCH - /* Initial inline allocation. */ - DYNARRAY_ELEMENT scratch[DYNARRAY_INITIAL_SIZE]; -#endif -}; - -/* Internal use only: Helper macros. */ - -/* Ensure macro-expansion of DYNARRAY_PREFIX. */ -#define DYNARRAY_CONCAT0(prefix, name) prefix##name -#define DYNARRAY_CONCAT1(prefix, name) DYNARRAY_CONCAT0(prefix, name) -#define DYNARRAY_NAME(name) DYNARRAY_CONCAT1(DYNARRAY_PREFIX, name) - -/* Use DYNARRAY_FREE instead of DYNARRAY_NAME (free), - so that Gnulib does not change 'free' to 'rpl_free'. */ -#define DYNARRAY_FREE DYNARRAY_CONCAT1 (DYNARRAY_NAME (f), ree) - -/* Address of the scratch buffer if any. */ -#if DYNARRAY_HAVE_SCRATCH -# define DYNARRAY_SCRATCH(list) (list)->scratch -#else -# define DYNARRAY_SCRATCH(list) NULL -#endif - -/* Internal use only: Helper functions. */ - -/* Internal function. Call DYNARRAY_ELEMENT_FREE with the array - elements. Name mangling needed due to the DYNARRAY_ELEMENT_FREE - macro expansion. */ -static inline void -DYNARRAY_NAME (free__elements__) (DYNARRAY_ELEMENT *__dynarray_array, - size_t __dynarray_used) -{ -#ifdef DYNARRAY_ELEMENT_FREE - for (size_t __dynarray_i = 0; __dynarray_i < __dynarray_used; ++__dynarray_i) - DYNARRAY_ELEMENT_FREE (&__dynarray_array[__dynarray_i]); -#endif /* DYNARRAY_ELEMENT_FREE */ -} - -/* Internal function. Free the non-scratch array allocation. */ -static inline void -DYNARRAY_NAME (free__array__) (struct DYNARRAY_STRUCT *list) -{ -#if DYNARRAY_HAVE_SCRATCH - if (list->u.dynarray_header.array != list->scratch) - free (list->u.dynarray_header.array); -#else - free (list->u.dynarray_header.array); -#endif -} - -/* Public functions. */ - -/* Initialize a dynamic array object. This must be called before any - use of the object. */ -_GL_ATTRIBUTE_NONNULL ((1)) -static void -DYNARRAY_NAME (init) (struct DYNARRAY_STRUCT *list) -{ - list->u.dynarray_header.used = 0; - list->u.dynarray_header.allocated = DYNARRAY_INITIAL_SIZE; - list->u.dynarray_header.array = DYNARRAY_SCRATCH (list); -} - -/* Deallocate the dynamic array and its elements. */ -_GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_NONNULL ((1)) -static void -DYNARRAY_FREE (struct DYNARRAY_STRUCT *list) -{ - DYNARRAY_NAME (free__elements__) - (list->u.dynarray_header.array, list->u.dynarray_header.used); - DYNARRAY_NAME (free__array__) (list); - DYNARRAY_NAME (init) (list); -} - -/* Return true if the dynamic array is in an error state. */ -_GL_ATTRIBUTE_NONNULL ((1)) -static inline bool -DYNARRAY_NAME (has_failed) (const struct DYNARRAY_STRUCT *list) -{ - return list->u.dynarray_header.allocated == __dynarray_error_marker (); -} - -/* Mark the dynamic array as failed. All elements are deallocated as - a side effect. */ -_GL_ATTRIBUTE_NONNULL ((1)) -static void -DYNARRAY_NAME (mark_failed) (struct DYNARRAY_STRUCT *list) -{ - DYNARRAY_NAME (free__elements__) - (list->u.dynarray_header.array, list->u.dynarray_header.used); - DYNARRAY_NAME (free__array__) (list); - list->u.dynarray_header.array = DYNARRAY_SCRATCH (list); - list->u.dynarray_header.used = 0; - list->u.dynarray_header.allocated = __dynarray_error_marker (); -} - -/* Return the number of elements which have been added to the dynamic - array. */ -_GL_ATTRIBUTE_NONNULL ((1)) -static inline size_t -DYNARRAY_NAME (size) (const struct DYNARRAY_STRUCT *list) -{ - return list->u.dynarray_header.used; -} - -/* Return a pointer to the array element at INDEX. Terminate the - process if INDEX is out of bounds. */ -_GL_ATTRIBUTE_NONNULL ((1)) -static inline DYNARRAY_ELEMENT * -DYNARRAY_NAME (at) (struct DYNARRAY_STRUCT *list, size_t index) -{ - if (_GL_UNLIKELY (index >= DYNARRAY_NAME (size) (list))) - __libc_dynarray_at_failure (DYNARRAY_NAME (size) (list), index); - return list->u.dynarray_header.array + index; -} - -/* Return a pointer to the first array element, if any. For a - zero-length array, the pointer can be NULL even though the dynamic - array has not entered the failure state. */ -_GL_ATTRIBUTE_NONNULL ((1)) -static inline DYNARRAY_ELEMENT * -DYNARRAY_NAME (begin) (struct DYNARRAY_STRUCT *list) -{ - return list->u.dynarray_header.array; -} - -/* Return a pointer one element past the last array element. For a - zero-length array, the pointer can be NULL even though the dynamic - array has not entered the failure state. */ -_GL_ATTRIBUTE_NONNULL ((1)) -static inline DYNARRAY_ELEMENT * -DYNARRAY_NAME (end) (struct DYNARRAY_STRUCT *list) -{ - return list->u.dynarray_header.array + list->u.dynarray_header.used; -} - -/* Internal function. Slow path for the add function below. */ -static void -DYNARRAY_NAME (add__) (struct DYNARRAY_STRUCT *list, DYNARRAY_ELEMENT item) -{ - if (_GL_UNLIKELY - (!__libc_dynarray_emplace_enlarge (&list->u.dynarray_abstract, - DYNARRAY_SCRATCH (list), - sizeof (DYNARRAY_ELEMENT)))) - { - DYNARRAY_NAME (mark_failed) (list); - return; - } - - /* Copy the new element and increase the array length. */ - list->u.dynarray_header.array[list->u.dynarray_header.used++] = item; -} - -/* Add ITEM at the end of the array, enlarging it by one element. - Mark *LIST as failed if the dynamic array allocation size cannot be - increased. */ -_GL_ATTRIBUTE_NONNULL ((1)) -static inline void -DYNARRAY_NAME (add) (struct DYNARRAY_STRUCT *list, DYNARRAY_ELEMENT item) -{ - /* Do nothing in case of previous error. */ - if (DYNARRAY_NAME (has_failed) (list)) - return; - - /* Enlarge the array if necessary. */ - if (_GL_UNLIKELY (list->u.dynarray_header.used - == list->u.dynarray_header.allocated)) - { - DYNARRAY_NAME (add__) (list, item); - return; - } - - /* Copy the new element and increase the array length. */ - list->u.dynarray_header.array[list->u.dynarray_header.used++] = item; -} - -/* Internal function. Building block for the emplace functions below. - Assumes space for one more element in *LIST. */ -static inline DYNARRAY_ELEMENT * -DYNARRAY_NAME (emplace__tail__) (struct DYNARRAY_STRUCT *list) -{ - DYNARRAY_ELEMENT *result - = &list->u.dynarray_header.array[list->u.dynarray_header.used]; - ++list->u.dynarray_header.used; -#if defined (DYNARRAY_ELEMENT_INIT) - DYNARRAY_ELEMENT_INIT (result); -#elif defined (DYNARRAY_ELEMENT_FREE) - memset (result, 0, sizeof (*result)); -#endif - return result; -} - -/* Internal function. Slow path for the emplace function below. */ -static DYNARRAY_ELEMENT * -DYNARRAY_NAME (emplace__) (struct DYNARRAY_STRUCT *list) -{ - if (_GL_UNLIKELY - (!__libc_dynarray_emplace_enlarge (&list->u.dynarray_abstract, - DYNARRAY_SCRATCH (list), - sizeof (DYNARRAY_ELEMENT)))) - { - DYNARRAY_NAME (mark_failed) (list); - return NULL; - } - return DYNARRAY_NAME (emplace__tail__) (list); -} - -/* Allocate a place for a new element in *LIST and return a pointer to - it. The pointer can be NULL if the dynamic array cannot be - enlarged due to a memory allocation failure. */ -_GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_NODISCARD -_GL_ATTRIBUTE_NONNULL ((1)) -static -/* Avoid inlining with the larger initialization code. */ -#if !(defined (DYNARRAY_ELEMENT_INIT) || defined (DYNARRAY_ELEMENT_FREE)) -inline -#endif -DYNARRAY_ELEMENT * -DYNARRAY_NAME (emplace) (struct DYNARRAY_STRUCT *list) -{ - /* Do nothing in case of previous error. */ - if (DYNARRAY_NAME (has_failed) (list)) - return NULL; - - /* Enlarge the array if necessary. */ - if (_GL_UNLIKELY (list->u.dynarray_header.used - == list->u.dynarray_header.allocated)) - return (DYNARRAY_NAME (emplace__) (list)); - return DYNARRAY_NAME (emplace__tail__) (list); -} - -/* Change the size of *LIST to SIZE. If SIZE is larger than the - existing size, new elements are added (which can be initialized). - Otherwise, the list is truncated, and elements are freed. Return - false on memory allocation failure (and mark *LIST as failed). */ -_GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_NONNULL ((1)) -static bool -DYNARRAY_NAME (resize) (struct DYNARRAY_STRUCT *list, size_t size) -{ - if (size > list->u.dynarray_header.used) - { - bool ok; -#if defined (DYNARRAY_ELEMENT_INIT) - /* The new elements have to be initialized. */ - size_t old_size = list->u.dynarray_header.used; - ok = __libc_dynarray_resize (&list->u.dynarray_abstract, - size, DYNARRAY_SCRATCH (list), - sizeof (DYNARRAY_ELEMENT)); - if (ok) - for (size_t i = old_size; i < size; ++i) - { - DYNARRAY_ELEMENT_INIT (&list->u.dynarray_header.array[i]); - } -#elif defined (DYNARRAY_ELEMENT_FREE) - /* Zero initialization is needed so that the elements can be - safely freed. */ - ok = __libc_dynarray_resize_clear - (&list->u.dynarray_abstract, size, - DYNARRAY_SCRATCH (list), sizeof (DYNARRAY_ELEMENT)); -#else - ok = __libc_dynarray_resize (&list->u.dynarray_abstract, - size, DYNARRAY_SCRATCH (list), - sizeof (DYNARRAY_ELEMENT)); -#endif - if (_GL_UNLIKELY (!ok)) - DYNARRAY_NAME (mark_failed) (list); - return ok; - } - else - { - /* The list has shrunk in size. Free the removed elements. */ - DYNARRAY_NAME (free__elements__) - (list->u.dynarray_header.array + size, - list->u.dynarray_header.used - size); - list->u.dynarray_header.used = size; - return true; - } -} - -/* Remove the last element of LIST if it is present. */ -_GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_NONNULL ((1)) -static void -DYNARRAY_NAME (remove_last) (struct DYNARRAY_STRUCT *list) -{ - /* used > 0 implies that the array is the non-failed state. */ - if (list->u.dynarray_header.used > 0) - { - size_t new_length = list->u.dynarray_header.used - 1; -#ifdef DYNARRAY_ELEMENT_FREE - DYNARRAY_ELEMENT_FREE (&list->u.dynarray_header.array[new_length]); -#endif - list->u.dynarray_header.used = new_length; - } -} - -/* Remove all elements from the list. The elements are freed, but the - list itself is not. */ -_GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_NONNULL ((1)) -static void -DYNARRAY_NAME (clear) (struct DYNARRAY_STRUCT *list) -{ - /* free__elements__ does nothing if the list is in the failed - state. */ - DYNARRAY_NAME (free__elements__) - (list->u.dynarray_header.array, list->u.dynarray_header.used); - list->u.dynarray_header.used = 0; -} - -#ifdef DYNARRAY_FINAL_TYPE -/* Transfer the dynamic array to a permanent location at *RESULT. - Returns true on success on false on allocation failure. In either - case, *LIST is re-initialized and can be reused. A NULL pointer is - stored in *RESULT if LIST refers to an empty list. On success, the - pointer in *RESULT is heap-allocated and must be deallocated using - free. */ -_GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_NODISCARD -_GL_ATTRIBUTE_NONNULL ((1, 2)) -static bool -DYNARRAY_NAME (finalize) (struct DYNARRAY_STRUCT *list, - DYNARRAY_FINAL_TYPE *result) -{ - struct dynarray_finalize_result res; - if (__libc_dynarray_finalize (&list->u.dynarray_abstract, - DYNARRAY_SCRATCH (list), - sizeof (DYNARRAY_ELEMENT), &res)) - { - /* On success, the result owns all the data. */ - DYNARRAY_NAME (init) (list); - *result = (DYNARRAY_FINAL_TYPE) { res.array, res.length }; - return true; - } - else - { - /* On error, we need to free all data. */ - DYNARRAY_FREE (list); - errno = ENOMEM; - return false; - } -} -#else /* !DYNARRAY_FINAL_TYPE */ -/* Transfer the dynamic array to a heap-allocated array and return a - pointer to it. The pointer is NULL if memory allocation fails, or - if the array is empty, so this function should be used only for - arrays which are known not be empty (usually because they always - have a sentinel at the end). If LENGTHP is not NULL, the array - length is written to *LENGTHP. *LIST is re-initialized and can be - reused. */ -_GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_NODISCARD -_GL_ATTRIBUTE_NONNULL ((1)) -static DYNARRAY_ELEMENT * -DYNARRAY_NAME (finalize) (struct DYNARRAY_STRUCT *list, size_t *lengthp) -{ - struct dynarray_finalize_result res; - if (__libc_dynarray_finalize (&list->u.dynarray_abstract, - DYNARRAY_SCRATCH (list), - sizeof (DYNARRAY_ELEMENT), &res)) - { - /* On success, the result owns all the data. */ - DYNARRAY_NAME (init) (list); - if (lengthp != NULL) - *lengthp = res.length; - return res.array; - } - else - { - /* On error, we need to free all data. */ - DYNARRAY_FREE (list); - errno = ENOMEM; - return NULL; - } -} -#endif /* !DYNARRAY_FINAL_TYPE */ - -/* Undo macro definitions. */ - -#undef DYNARRAY_CONCAT0 -#undef DYNARRAY_CONCAT1 -#undef DYNARRAY_NAME -#undef DYNARRAY_SCRATCH -#undef DYNARRAY_HAVE_SCRATCH - -#undef DYNARRAY_STRUCT -#undef DYNARRAY_ELEMENT -#undef DYNARRAY_PREFIX -#undef DYNARRAY_ELEMENT_FREE -#undef DYNARRAY_ELEMENT_INIT -#undef DYNARRAY_INITIAL_SIZE -#undef DYNARRAY_FINAL_TYPE diff --git a/lib/malloc/dynarray.gl.h b/lib/malloc/dynarray.gl.h deleted file mode 100644 index 8227362bb..000000000 --- a/lib/malloc/dynarray.gl.h +++ /dev/null @@ -1,174 +0,0 @@ -/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ -/* Type-safe arrays which grow dynamically. Shared definitions. - Copyright (C) 2017-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - -/* To use the dynarray facility, you need to include - <malloc/dynarray-skeleton.c> and define the parameter macros - documented in that file. - - A minimal example which provides a growing list of integers can be - defined like this: - - struct int_array - { - // Pointer to result array followed by its length, - // as required by DYNARRAY_FINAL_TYPE. - int *array; - size_t length; - }; - - #define DYNARRAY_STRUCT dynarray_int - #define DYNARRAY_ELEMENT int - #define DYNARRAY_PREFIX dynarray_int_ - #define DYNARRAY_FINAL_TYPE struct int_array - #include <malloc/dynarray-skeleton.c> - - To create a three-element array with elements 1, 2, 3, use this - code: - - struct dynarray_int dyn; - dynarray_int_init (&dyn); - for (int i = 1; i <= 3; ++i) - { - int *place = dynarray_int_emplace (&dyn); - assert (place != NULL); - *place = i; - } - struct int_array result; - bool ok = dynarray_int_finalize (&dyn, &result); - assert (ok); - assert (result.length == 3); - assert (result.array[0] == 1); - assert (result.array[1] == 2); - assert (result.array[2] == 3); - free (result.array); - - If the elements contain resources which must be freed, define - DYNARRAY_ELEMENT_FREE appropriately, like this: - - struct str_array - { - char **array; - size_t length; - }; - - #define DYNARRAY_STRUCT dynarray_str - #define DYNARRAY_ELEMENT char * - #define DYNARRAY_ELEMENT_FREE(ptr) free (*ptr) - #define DYNARRAY_PREFIX dynarray_str_ - #define DYNARRAY_FINAL_TYPE struct str_array - #include <malloc/dynarray-skeleton.c> - - Compared to scratch buffers, dynamic arrays have the following - features: - - - They have an element type, and are not just an untyped buffer of - bytes. - - - When growing, previously stored elements are preserved. (It is - expected that scratch_buffer_grow_preserve and - scratch_buffer_set_array_size eventually go away because all - current users are moved to dynamic arrays.) - - - Scratch buffers have a more aggressive growth policy because - growing them typically means a retry of an operation (across an - NSS service module boundary), which is expensive. - - - For the same reason, scratch buffers have a much larger initial - stack allocation. */ - -#ifndef _DYNARRAY_H -#define _DYNARRAY_H - -#include <stdbool.h> -#include <stddef.h> -#include <string.h> - -struct dynarray_header -{ - size_t used; - size_t allocated; - void *array; -}; - -/* Marker used in the allocated member to indicate that an error was - encountered. */ -static inline size_t -__dynarray_error_marker (void) -{ - return -1; -} - -/* Internal function. See the has_failed function in - dynarray-skeleton.c. */ -static inline bool -__dynarray_error (struct dynarray_header *list) -{ - return list->allocated == __dynarray_error_marker (); -} - -/* Internal function. Enlarge the dynamically allocated area of the - array to make room for one more element. SCRATCH is a pointer to - the scratch area (which is not heap-allocated and must not be - freed). ELEMENT_SIZE is the size, in bytes, of one element. - Return false on failure, true on success. */ -bool __libc_dynarray_emplace_enlarge (struct dynarray_header *, - void *scratch, size_t element_size); - -/* Internal function. Enlarge the dynamically allocated area of the - array to make room for at least SIZE elements (which must be larger - than the existing used part of the dynamic array). SCRATCH is a - pointer to the scratch area (which is not heap-allocated and must - not be freed). ELEMENT_SIZE is the size, in bytes, of one element. - Return false on failure, true on success. */ -bool __libc_dynarray_resize (struct dynarray_header *, size_t size, - void *scratch, size_t element_size); - -/* Internal function. Like __libc_dynarray_resize, but clear the new - part of the dynamic array. */ -bool __libc_dynarray_resize_clear (struct dynarray_header *, size_t size, - void *scratch, size_t element_size); - -/* Internal type. */ -struct dynarray_finalize_result -{ - void *array; - size_t length; -}; - -/* Internal function. Copy the dynamically-allocated area to an - explicitly-sized heap allocation. SCRATCH is a pointer to the - embedded scratch space. ELEMENT_SIZE is the size, in bytes, of the - element type. On success, true is returned, and pointer and length - are written to *RESULT. On failure, false is returned. The caller - has to take care of some of the memory management; this function is - expected to be called from dynarray-skeleton.c. */ -bool __libc_dynarray_finalize (struct dynarray_header *list, void *scratch, - size_t element_size, - struct dynarray_finalize_result *result); - - -/* Internal function. Terminate the process after an index error. - SIZE is the number of elements of the dynamic array. INDEX is the - lookup index which triggered the failure. */ -_Noreturn void __libc_dynarray_at_failure (size_t size, size_t index); - -#ifndef _ISOMAC -#endif - -#endif /* _DYNARRAY_H */ diff --git a/lib/sched.h b/lib/sched.h deleted file mode 100644 index 223718750..000000000 --- a/lib/sched.h +++ /dev/null @@ -1,580 +0,0 @@ -/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ -/* A GNU-like <sched.h>. - Copyright (C) 2008-2022 Free Software Foundation, Inc. - - This file is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of the - License, or (at your option) any later version. - - This file is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -#ifndef _GL_SCHED_H - -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif - - -/* The include_next requires a split double-inclusion guard. */ -#if 1 -# if 1 -# include <sys/cdefs.h> -# endif -# include_next <sched.h> -#endif - -#ifndef _GL_SCHED_H -#define _GL_SCHED_H - -/* Get pid_t. - This is needed on glibc 2.11 (see - glibc bug <https://sourceware.org/bugzilla/show_bug.cgi?id=13198>) - and Mac OS X 10.5. */ -#include <sys/types.h> - -#ifdef __KLIBC__ -/* On OS/2 kLIBC, struct sched_param is in spawn.h. */ -# include <spawn.h> -#endif - -#ifdef __VMS -/* On OpenVMS, struct sched_param is in <pthread.h>. */ -# include <pthread.h> -#endif - -/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ -/* C++ compatible function declaration macros. - Copyright (C) 2010-2022 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -#ifndef _GL_CXXDEFS_H -#define _GL_CXXDEFS_H - -/* Begin/end the GNULIB_NAMESPACE namespace. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE { -# define _GL_END_NAMESPACE } -#else -# define _GL_BEGIN_NAMESPACE -# define _GL_END_NAMESPACE -#endif - -/* The three most frequent use cases of these macros are: - - * For providing a substitute for a function that is missing on some - platforms, but is declared and works fine on the platforms on which - it exists: - - #if @GNULIB_FOO@ - # if !@HAVE_FOO@ - _GL_FUNCDECL_SYS (foo, ...); - # endif - _GL_CXXALIAS_SYS (foo, ...); - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif - - * For providing a replacement for a function that exists on all platforms, - but is broken/insufficient and needs to be replaced on some platforms: - - #if @GNULIB_FOO@ - # if @REPLACE_FOO@ - # if !(defined __cplusplus && defined GNULIB_NAMESPACE) - # undef foo - # define foo rpl_foo - # endif - _GL_FUNCDECL_RPL (foo, ...); - _GL_CXXALIAS_RPL (foo, ...); - # else - _GL_CXXALIAS_SYS (foo, ...); - # endif - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif - - * For providing a replacement for a function that exists on some platforms - but is broken/insufficient and needs to be replaced on some of them and - is additionally either missing or undeclared on some other platforms: - - #if @GNULIB_FOO@ - # if @REPLACE_FOO@ - # if !(defined __cplusplus && defined GNULIB_NAMESPACE) - # undef foo - # define foo rpl_foo - # endif - _GL_FUNCDECL_RPL (foo, ...); - _GL_CXXALIAS_RPL (foo, ...); - # else - # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ - _GL_FUNCDECL_SYS (foo, ...); - # endif - _GL_CXXALIAS_SYS (foo, ...); - # endif - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif -*/ - -/* _GL_EXTERN_C declaration; - performs the declaration with C linkage. */ -#if defined __cplusplus -# define _GL_EXTERN_C extern "C" -#else -# define _GL_EXTERN_C extern -#endif - -/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); - declares a replacement function, named rpl_func, with the given prototype, - consisting of return type, parameters, and attributes. - Example: - _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) - _GL_ARG_NONNULL ((1))); - */ -#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ - _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) -#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C rettype rpl_func parameters_and_attributes - -/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); - declares the system function, named func, with the given prototype, - consisting of return type, parameters, and attributes. - Example: - _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) - _GL_ARG_NONNULL ((1))); - */ -#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C rettype func parameters_and_attributes - -/* _GL_CXXALIAS_RPL (func, rettype, parameters); - declares a C++ alias called GNULIB_NAMESPACE::func - that redirects to rpl_func, if GNULIB_NAMESPACE is defined. - Example: - _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); - - Wrapping rpl_func in an object with an inline conversion operator - avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is - actually used in the program. */ -#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ - _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return ::rpl_func; \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_MDA (func, rettype, parameters); - is to be used when func is a Microsoft deprecated alias, on native Windows. - It declares a C++ alias called GNULIB_NAMESPACE::func - that redirects to _func, if GNULIB_NAMESPACE is defined. - Example: - _GL_CXXALIAS_MDA (open, int, (const char *filename, int flags, ...)); - */ -#define _GL_CXXALIAS_MDA(func,rettype,parameters) \ - _GL_CXXALIAS_RPL_1 (func, _##func, rettype, parameters) - -/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); - is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); - except that the C function rpl_func may have a slightly different - declaration. A cast is used to silence the "invalid conversion" error - that would otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast<type>(::rpl_func); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_MDA_CAST (func, rettype, parameters); - is like _GL_CXXALIAS_MDA (func, rettype, parameters); - except that the C function func may have a slightly different declaration. - A cast is used to silence the "invalid conversion" error that would - otherwise occur. */ -#define _GL_CXXALIAS_MDA_CAST(func,rettype,parameters) \ - _GL_CXXALIAS_RPL_CAST_1 (func, _##func, rettype, parameters) - -/* _GL_CXXALIAS_SYS (func, rettype, parameters); - declares a C++ alias called GNULIB_NAMESPACE::func - that redirects to the system provided function func, if GNULIB_NAMESPACE - is defined. - Example: - _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); - - Wrapping func in an object with an inline conversion operator - avoids a reference to func unless GNULIB_NAMESPACE::func is - actually used in the program. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return ::func; \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); - is like _GL_CXXALIAS_SYS (func, rettype, parameters); - except that the C function func may have a slightly different declaration. - A cast is used to silence the "invalid conversion" error that would - otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast<type>(::func); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); - is like _GL_CXXALIAS_SYS (func, rettype, parameters); - except that the C function is picked among a set of overloaded functions, - namely the one with rettype2 and parameters2. Two consecutive casts - are used to silence the "cannot find a match" and "invalid conversion" - errors that would otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE - /* The outer cast must be a reinterpret_cast. - The inner cast: When the function is defined as a set of overloaded - functions, it works as a static_cast<>, choosing the designated variant. - When the function is defined as a single variant, it works as a - reinterpret_cast<>. The parenthesized cast syntax works both ways. */ -# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast<type>((rettype2 (*) parameters2)(::func)); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIASWARN (func); - causes a warning to be emitted when ::func is used but not when - GNULIB_NAMESPACE::func is used. func must be defined without overloaded - variants. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIASWARN(func) \ - _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) -# define _GL_CXXALIASWARN_1(func,namespace) \ - _GL_CXXALIASWARN_2 (func, namespace) -/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>, - we enable the warning only when not optimizing. */ -# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__) -# define _GL_CXXALIASWARN_2(func,namespace) \ - _GL_WARN_ON_USE (func, \ - "The symbol ::" #func " refers to the system function. " \ - "Use " #namespace "::" #func " instead.") -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING -# define _GL_CXXALIASWARN_2(func,namespace) \ - extern __typeof__ (func) func -# else -# define _GL_CXXALIASWARN_2(func,namespace) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -# endif -#else -# define _GL_CXXALIASWARN(func) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); - causes a warning to be emitted when the given overloaded variant of ::func - is used but not when GNULIB_NAMESPACE::func is used. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ - _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ - GNULIB_NAMESPACE) -# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ - _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) -/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>, - we enable the warning only when not optimizing. */ -# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__) -# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ - _GL_WARN_ON_USE_CXX (func, rettype, rettype, parameters_and_attributes, \ - "The symbol ::" #func " refers to the system function. " \ - "Use " #namespace "::" #func " instead.") -# else -# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -# endif -#else -# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -#endif /* _GL_CXXDEFS_H */ - -/* The definition of _GL_WARN_ON_USE is copied here. */ -/* A C macro for emitting warnings if a function is used. - Copyright (C) 2010-2022 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -/* _GL_WARN_ON_USE (function, "literal string") issues a declaration - for FUNCTION which will then trigger a compiler warning containing - the text of "literal string" anywhere that function is called, if - supported by the compiler. If the compiler does not support this - feature, the macro expands to an unused extern declaration. - - _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the - attribute used in _GL_WARN_ON_USE. If the compiler does not support - this feature, it expands to empty. - - These macros are useful for marking a function as a potential - portability trap, with the intent that "literal string" include - instructions on the replacement function that should be used - instead. - _GL_WARN_ON_USE is for functions with 'extern' linkage. - _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline' - linkage. - - However, one of the reasons that a function is a portability trap is - if it has the wrong signature. Declaring FUNCTION with a different - signature in C is a compilation error, so this macro must use the - same type as any existing declaration so that programs that avoid - the problematic FUNCTION do not fail to compile merely because they - included a header that poisoned the function. But this implies that - _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already - have a declaration. Use of this macro implies that there must not - be any other macro hiding the declaration of FUNCTION; but - undefining FUNCTION first is part of the poisoning process anyway - (although for symbols that are provided only via a macro, the result - is a compilation error rather than a warning containing - "literal string"). Also note that in C++, it is only safe to use if - FUNCTION has no overloads. - - For an example, it is possible to poison 'getline' by: - - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]], - [getline]) in configure.ac, which potentially defines - HAVE_RAW_DECL_GETLINE - - adding this code to a header that wraps the system <stdio.h>: - #undef getline - #if HAVE_RAW_DECL_GETLINE - _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but" - "not universally present; use the gnulib module getline"); - #endif - - It is not possible to directly poison global variables. But it is - possible to write a wrapper accessor function, and poison that - (less common usage, like &environ, will cause a compilation error - rather than issue the nice warning, but the end result of informing - the developer about their portability problem is still achieved): - #if HAVE_RAW_DECL_ENVIRON - static char *** - rpl_environ (void) { return &environ; } - _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared"); - # undef environ - # define environ (*rpl_environ ()) - #endif - or better (avoiding contradictory use of 'static' and 'extern'): - #if HAVE_RAW_DECL_ENVIRON - static char *** - _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared") - rpl_environ (void) { return &environ; } - # undef environ - # define environ (*rpl_environ ()) - #endif - */ -#ifndef _GL_WARN_ON_USE - -# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) -/* A compiler attribute is available in gcc versions 4.3.0 and later. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C __typeof__ (function) function __attribute__ ((__warning__ (message))) -# define _GL_WARN_ON_USE_ATTRIBUTE(message) \ - __attribute__ ((__warning__ (message))) -# elif __clang_major__ >= 4 -/* Another compiler attribute is available in clang. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C __typeof__ (function) function \ - __attribute__ ((__diagnose_if__ (1, message, "warning"))) -# define _GL_WARN_ON_USE_ATTRIBUTE(message) \ - __attribute__ ((__diagnose_if__ (1, message, "warning"))) -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING -/* Verify the existence of the function. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C __typeof__ (function) function -# define _GL_WARN_ON_USE_ATTRIBUTE(message) -# else /* Unsupported. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C int _gl_warn_on_use -# define _GL_WARN_ON_USE_ATTRIBUTE(message) -# endif -#endif - -/* _GL_WARN_ON_USE_CXX (function, rettype_gcc, rettype_clang, parameters_and_attributes, "message") - is like _GL_WARN_ON_USE (function, "message"), except that in C++ mode the - function is declared with the given prototype, consisting of return type, - parameters, and attributes. - This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does - not work in this case. */ -#ifndef _GL_WARN_ON_USE_CXX -# if !defined __cplusplus -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ - _GL_WARN_ON_USE (function, msg) -# else -# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) -/* A compiler attribute is available in gcc versions 4.3.0 and later. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -extern rettype_gcc function parameters_and_attributes \ - __attribute__ ((__warning__ (msg))) -# elif __clang_major__ >= 4 -/* Another compiler attribute is available in clang. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -extern rettype_clang function parameters_and_attributes \ - __attribute__ ((__diagnose_if__ (1, msg, "warning"))) -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING -/* Verify the existence of the function. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -extern rettype_gcc function parameters_and_attributes -# else /* Unsupported. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -_GL_WARN_EXTERN_C int _gl_warn_on_use -# endif -# endif -#endif - -/* _GL_WARN_EXTERN_C declaration; - performs the declaration with C linkage. */ -#ifndef _GL_WARN_EXTERN_C -# if defined __cplusplus -# define _GL_WARN_EXTERN_C extern "C" -# else -# define _GL_WARN_EXTERN_C extern -# endif -#endif - -#if !1 - -# if !GNULIB_defined_struct_sched_param -struct sched_param -{ - int sched_priority; -}; -# define GNULIB_defined_struct_sched_param 1 -# endif - -#endif - -#if !(defined SCHED_FIFO && defined SCHED_RR && defined SCHED_OTHER) -# define SCHED_FIFO 1 -# define SCHED_RR 2 -# define SCHED_OTHER 0 -#endif - -#if 0 -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# undef sched_yield -# define sched_yield rpl_sched_yield -# endif -_GL_FUNCDECL_RPL (sched_yield, int, (void)); -_GL_CXXALIAS_RPL (sched_yield, int, (void)); -# else -# if !1 -_GL_FUNCDECL_SYS (sched_yield, int, (void)); -# endif -_GL_CXXALIAS_SYS (sched_yield, int, (void)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (sched_yield); -# endif -#elif defined GNULIB_POSIXCHECK -# undef sched_yield -# if HAVE_RAW_DECL_SCHED_YIELD -_GL_WARN_ON_USE (sched_yield, "sched_yield is not portable - " - "use gnulib module sched_yield for portability"); -# endif -#endif - -#endif /* _GL_SCHED_H */ -#endif /* _GL_SCHED_H */ diff --git a/lib/spawn.h b/lib/spawn.h deleted file mode 100644 index c0757d3e4..000000000 --- a/lib/spawn.h +++ /dev/null @@ -1,1499 +0,0 @@ -/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ -/* Definitions for POSIX spawn interface. - Copyright (C) 2000, 2003-2004, 2008-2022 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - This file is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2.1 of the - License, or (at your option) any later version. - - This file is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -#if __GNUC__ >= 3 -#pragma GCC system_header -#endif - - -#if defined _GL_ALREADY_INCLUDING_SPAWN_H -/* Special invocation convention: - On OS/2 kLIBC, <spawn.h> includes <signal.h>. Then <signal.h> -> - <pthread.h> -> <sched.h> -> <spawn.h> are included by GNULIB. - In this situation, struct sched_param is not yet defined. */ - -#include_next <spawn.h> - -#else - -#ifndef _GL_SPAWN_H -/* Normal invocation convention. */ - -/* The include_next requires a split double-inclusion guard. */ -#if 1 - -# define _GL_ALREADY_INCLUDING_SPAWN_H - -# include_next <spawn.h> - -# define _GL_ALREADY_INCLUDING_SPAWN_H - -#endif - -#ifndef _GL_SPAWN_H -#define _GL_SPAWN_H - -/* Get definitions of 'struct sched_param' and 'sigset_t'. - But avoid namespace pollution on glibc systems. */ -#if !(defined __GLIBC__ && !defined __UCLIBC__) -# include <sched.h> -# include <signal.h> -#endif - -#include <sys/types.h> - -#ifndef __THROW -# define __THROW -#endif - -/* For plain 'restrict', use glibc's __restrict if defined. - Otherwise, GCC 2.95 and later have "__restrict"; C99 compilers have - "restrict", and "configure" may have defined "restrict". - Other compilers use __restrict, __restrict__, and _Restrict, and - 'configure' might #define 'restrict' to those words, so pick a - different name. */ -#ifndef _Restrict_ -# if defined __restrict \ - || 2 < __GNUC__ + (95 <= __GNUC_MINOR__) \ - || __clang_major__ >= 3 -# define _Restrict_ __restrict -# elif 199901L <= __STDC_VERSION__ || defined restrict -# define _Restrict_ restrict -# else -# define _Restrict_ -# endif -#endif -/* For the ISO C99 syntax - array_name[restrict] - use glibc's __restrict_arr if available. - Otherwise, GCC 3.1 and clang support this syntax (but not in C++ mode). - Other ISO C99 compilers support it as well. */ -#ifndef _Restrict_arr_ -# ifdef __restrict_arr -# define _Restrict_arr_ __restrict_arr -# elif ((199901L <= __STDC_VERSION__ \ - || 3 < __GNUC__ + (1 <= __GNUC_MINOR__) \ - || __clang_major__ >= 3) \ - && !defined __cplusplus) -# define _Restrict_arr_ _Restrict_ -# else -# define _Restrict_arr_ -# endif -#endif - -/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ -/* C++ compatible function declaration macros. - Copyright (C) 2010-2022 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -#ifndef _GL_CXXDEFS_H -#define _GL_CXXDEFS_H - -/* Begin/end the GNULIB_NAMESPACE namespace. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE { -# define _GL_END_NAMESPACE } -#else -# define _GL_BEGIN_NAMESPACE -# define _GL_END_NAMESPACE -#endif - -/* The three most frequent use cases of these macros are: - - * For providing a substitute for a function that is missing on some - platforms, but is declared and works fine on the platforms on which - it exists: - - #if @GNULIB_FOO@ - # if !@HAVE_FOO@ - _GL_FUNCDECL_SYS (foo, ...); - # endif - _GL_CXXALIAS_SYS (foo, ...); - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif - - * For providing a replacement for a function that exists on all platforms, - but is broken/insufficient and needs to be replaced on some platforms: - - #if @GNULIB_FOO@ - # if @REPLACE_FOO@ - # if !(defined __cplusplus && defined GNULIB_NAMESPACE) - # undef foo - # define foo rpl_foo - # endif - _GL_FUNCDECL_RPL (foo, ...); - _GL_CXXALIAS_RPL (foo, ...); - # else - _GL_CXXALIAS_SYS (foo, ...); - # endif - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif - - * For providing a replacement for a function that exists on some platforms - but is broken/insufficient and needs to be replaced on some of them and - is additionally either missing or undeclared on some other platforms: - - #if @GNULIB_FOO@ - # if @REPLACE_FOO@ - # if !(defined __cplusplus && defined GNULIB_NAMESPACE) - # undef foo - # define foo rpl_foo - # endif - _GL_FUNCDECL_RPL (foo, ...); - _GL_CXXALIAS_RPL (foo, ...); - # else - # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@ - _GL_FUNCDECL_SYS (foo, ...); - # endif - _GL_CXXALIAS_SYS (foo, ...); - # endif - _GL_CXXALIASWARN (foo); - #elif defined GNULIB_POSIXCHECK - ... - #endif -*/ - -/* _GL_EXTERN_C declaration; - performs the declaration with C linkage. */ -#if defined __cplusplus -# define _GL_EXTERN_C extern "C" -#else -# define _GL_EXTERN_C extern -#endif - -/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes); - declares a replacement function, named rpl_func, with the given prototype, - consisting of return type, parameters, and attributes. - Example: - _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...) - _GL_ARG_NONNULL ((1))); - */ -#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \ - _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes) -#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C rettype rpl_func parameters_and_attributes - -/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes); - declares the system function, named func, with the given prototype, - consisting of return type, parameters, and attributes. - Example: - _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...) - _GL_ARG_NONNULL ((1))); - */ -#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C rettype func parameters_and_attributes - -/* _GL_CXXALIAS_RPL (func, rettype, parameters); - declares a C++ alias called GNULIB_NAMESPACE::func - that redirects to rpl_func, if GNULIB_NAMESPACE is defined. - Example: - _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...)); - - Wrapping rpl_func in an object with an inline conversion operator - avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is - actually used in the program. */ -#define _GL_CXXALIAS_RPL(func,rettype,parameters) \ - _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters) -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return ::rpl_func; \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_MDA (func, rettype, parameters); - is to be used when func is a Microsoft deprecated alias, on native Windows. - It declares a C++ alias called GNULIB_NAMESPACE::func - that redirects to _func, if GNULIB_NAMESPACE is defined. - Example: - _GL_CXXALIAS_MDA (open, int, (const char *filename, int flags, ...)); - */ -#define _GL_CXXALIAS_MDA(func,rettype,parameters) \ - _GL_CXXALIAS_RPL_1 (func, _##func, rettype, parameters) - -/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters); - is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters); - except that the C function rpl_func may have a slightly different - declaration. A cast is used to silence the "invalid conversion" error - that would otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast<type>(::rpl_func); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_MDA_CAST (func, rettype, parameters); - is like _GL_CXXALIAS_MDA (func, rettype, parameters); - except that the C function func may have a slightly different declaration. - A cast is used to silence the "invalid conversion" error that would - otherwise occur. */ -#define _GL_CXXALIAS_MDA_CAST(func,rettype,parameters) \ - _GL_CXXALIAS_RPL_CAST_1 (func, _##func, rettype, parameters) - -/* _GL_CXXALIAS_SYS (func, rettype, parameters); - declares a C++ alias called GNULIB_NAMESPACE::func - that redirects to the system provided function func, if GNULIB_NAMESPACE - is defined. - Example: - _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...)); - - Wrapping func in an object with an inline conversion operator - avoids a reference to func unless GNULIB_NAMESPACE::func is - actually used in the program. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return ::func; \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS(func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters); - is like _GL_CXXALIAS_SYS (func, rettype, parameters); - except that the C function func may have a slightly different declaration. - A cast is used to silence the "invalid conversion" error that would - otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast<type>(::func); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2); - is like _GL_CXXALIAS_SYS (func, rettype, parameters); - except that the C function is picked among a set of overloaded functions, - namely the one with rettype2 and parameters2. Two consecutive casts - are used to silence the "cannot find a match" and "invalid conversion" - errors that would otherwise occur. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE - /* The outer cast must be a reinterpret_cast. - The inner cast: When the function is defined as a set of overloaded - functions, it works as a static_cast<>, choosing the designated variant. - When the function is defined as a single variant, it works as a - reinterpret_cast<>. The parenthesized cast syntax works both ways. */ -# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ - namespace GNULIB_NAMESPACE \ - { \ - static const struct _gl_ ## func ## _wrapper \ - { \ - typedef rettype (*type) parameters; \ - \ - inline operator type () const \ - { \ - return reinterpret_cast<type>((rettype2 (*) parameters2)(::func)); \ - } \ - } func = {}; \ - } \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#else -# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIASWARN (func); - causes a warning to be emitted when ::func is used but not when - GNULIB_NAMESPACE::func is used. func must be defined without overloaded - variants. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIASWARN(func) \ - _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE) -# define _GL_CXXALIASWARN_1(func,namespace) \ - _GL_CXXALIASWARN_2 (func, namespace) -/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>, - we enable the warning only when not optimizing. */ -# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__) -# define _GL_CXXALIASWARN_2(func,namespace) \ - _GL_WARN_ON_USE (func, \ - "The symbol ::" #func " refers to the system function. " \ - "Use " #namespace "::" #func " instead.") -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING -# define _GL_CXXALIASWARN_2(func,namespace) \ - extern __typeof__ (func) func -# else -# define _GL_CXXALIASWARN_2(func,namespace) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -# endif -#else -# define _GL_CXXALIASWARN(func) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes); - causes a warning to be emitted when the given overloaded variant of ::func - is used but not when GNULIB_NAMESPACE::func is used. */ -#if defined __cplusplus && defined GNULIB_NAMESPACE -# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ - _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \ - GNULIB_NAMESPACE) -# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \ - _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace) -/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>, - we enable the warning only when not optimizing. */ -# if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__) -# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ - _GL_WARN_ON_USE_CXX (func, rettype, rettype, parameters_and_attributes, \ - "The symbol ::" #func " refers to the system function. " \ - "Use " #namespace "::" #func " instead.") -# else -# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -# endif -#else -# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \ - _GL_EXTERN_C int _gl_cxxalias_dummy -#endif - -#endif /* _GL_CXXDEFS_H */ - -/* The definition of _GL_ARG_NONNULL is copied here. */ -/* A C macro for declaring that specific arguments must not be NULL. - Copyright (C) 2009-2022 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools - that the values passed as arguments n, ..., m must be non-NULL pointers. - n = 1 stands for the first argument, n = 2 for the second argument etc. */ -#ifndef _GL_ARG_NONNULL -# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || defined __clang__ -# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params)) -# else -# define _GL_ARG_NONNULL(params) -# endif -#endif - -/* The definition of _GL_WARN_ON_USE is copied here. */ -/* A C macro for emitting warnings if a function is used. - Copyright (C) 2010-2022 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -/* _GL_WARN_ON_USE (function, "literal string") issues a declaration - for FUNCTION which will then trigger a compiler warning containing - the text of "literal string" anywhere that function is called, if - supported by the compiler. If the compiler does not support this - feature, the macro expands to an unused extern declaration. - - _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the - attribute used in _GL_WARN_ON_USE. If the compiler does not support - this feature, it expands to empty. - - These macros are useful for marking a function as a potential - portability trap, with the intent that "literal string" include - instructions on the replacement function that should be used - instead. - _GL_WARN_ON_USE is for functions with 'extern' linkage. - _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline' - linkage. - - However, one of the reasons that a function is a portability trap is - if it has the wrong signature. Declaring FUNCTION with a different - signature in C is a compilation error, so this macro must use the - same type as any existing declaration so that programs that avoid - the problematic FUNCTION do not fail to compile merely because they - included a header that poisoned the function. But this implies that - _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already - have a declaration. Use of this macro implies that there must not - be any other macro hiding the declaration of FUNCTION; but - undefining FUNCTION first is part of the poisoning process anyway - (although for symbols that are provided only via a macro, the result - is a compilation error rather than a warning containing - "literal string"). Also note that in C++, it is only safe to use if - FUNCTION has no overloads. - - For an example, it is possible to poison 'getline' by: - - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]], - [getline]) in configure.ac, which potentially defines - HAVE_RAW_DECL_GETLINE - - adding this code to a header that wraps the system <stdio.h>: - #undef getline - #if HAVE_RAW_DECL_GETLINE - _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but" - "not universally present; use the gnulib module getline"); - #endif - - It is not possible to directly poison global variables. But it is - possible to write a wrapper accessor function, and poison that - (less common usage, like &environ, will cause a compilation error - rather than issue the nice warning, but the end result of informing - the developer about their portability problem is still achieved): - #if HAVE_RAW_DECL_ENVIRON - static char *** - rpl_environ (void) { return &environ; } - _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared"); - # undef environ - # define environ (*rpl_environ ()) - #endif - or better (avoiding contradictory use of 'static' and 'extern'): - #if HAVE_RAW_DECL_ENVIRON - static char *** - _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared") - rpl_environ (void) { return &environ; } - # undef environ - # define environ (*rpl_environ ()) - #endif - */ -#ifndef _GL_WARN_ON_USE - -# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) -/* A compiler attribute is available in gcc versions 4.3.0 and later. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C __typeof__ (function) function __attribute__ ((__warning__ (message))) -# define _GL_WARN_ON_USE_ATTRIBUTE(message) \ - __attribute__ ((__warning__ (message))) -# elif __clang_major__ >= 4 -/* Another compiler attribute is available in clang. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C __typeof__ (function) function \ - __attribute__ ((__diagnose_if__ (1, message, "warning"))) -# define _GL_WARN_ON_USE_ATTRIBUTE(message) \ - __attribute__ ((__diagnose_if__ (1, message, "warning"))) -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING -/* Verify the existence of the function. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C __typeof__ (function) function -# define _GL_WARN_ON_USE_ATTRIBUTE(message) -# else /* Unsupported. */ -# define _GL_WARN_ON_USE(function, message) \ -_GL_WARN_EXTERN_C int _gl_warn_on_use -# define _GL_WARN_ON_USE_ATTRIBUTE(message) -# endif -#endif - -/* _GL_WARN_ON_USE_CXX (function, rettype_gcc, rettype_clang, parameters_and_attributes, "message") - is like _GL_WARN_ON_USE (function, "message"), except that in C++ mode the - function is declared with the given prototype, consisting of return type, - parameters, and attributes. - This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does - not work in this case. */ -#ifndef _GL_WARN_ON_USE_CXX -# if !defined __cplusplus -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ - _GL_WARN_ON_USE (function, msg) -# else -# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) -/* A compiler attribute is available in gcc versions 4.3.0 and later. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -extern rettype_gcc function parameters_and_attributes \ - __attribute__ ((__warning__ (msg))) -# elif __clang_major__ >= 4 -/* Another compiler attribute is available in clang. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -extern rettype_clang function parameters_and_attributes \ - __attribute__ ((__diagnose_if__ (1, msg, "warning"))) -# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING -/* Verify the existence of the function. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -extern rettype_gcc function parameters_and_attributes -# else /* Unsupported. */ -# define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \ -_GL_WARN_EXTERN_C int _gl_warn_on_use -# endif -# endif -#endif - -/* _GL_WARN_EXTERN_C declaration; - performs the declaration with C linkage. */ -#ifndef _GL_WARN_EXTERN_C -# if defined __cplusplus -# define _GL_WARN_EXTERN_C extern "C" -# else -# define _GL_WARN_EXTERN_C extern -# endif -#endif - - -/* Data structure to contain attributes for thread creation. */ -#if 0 || (1 && !1) -# define posix_spawnattr_t rpl_posix_spawnattr_t -#endif -#if 0 || !1 || !1 -# if !GNULIB_defined_posix_spawnattr_t -typedef struct -{ - short int _flags; - pid_t _pgrp; - sigset_t _sd; - sigset_t _ss; - struct sched_param _sp; - int _policy; - int __pad[16]; -} posix_spawnattr_t; -# define GNULIB_defined_posix_spawnattr_t 1 -# endif -#endif - - -/* Data structure to contain information about the actions to be - performed in the new process with respect to file descriptors. */ -#if 0 || (1 && !1) -# define posix_spawn_file_actions_t rpl_posix_spawn_file_actions_t -#endif -#if 0 || !1 || !1 -# if !GNULIB_defined_posix_spawn_file_actions_t -typedef struct -{ - int _allocated; - int _used; - struct __spawn_action *_actions; - int __pad[16]; -} posix_spawn_file_actions_t; -# define GNULIB_defined_posix_spawn_file_actions_t 1 -# endif -#endif - - -/* Flags to be set in the 'posix_spawnattr_t'. */ -#if 1 -/* Use the values from the system, but provide the missing ones. */ -# ifndef POSIX_SPAWN_SETSCHEDPARAM -# define POSIX_SPAWN_SETSCHEDPARAM 0 -# endif -# ifndef POSIX_SPAWN_SETSCHEDULER -# define POSIX_SPAWN_SETSCHEDULER 0 -# endif -#else -# if 0 -/* Use the values from the system, for better compatibility. */ -/* But this implementation does not support AIX extensions. */ -# undef POSIX_SPAWN_FORK_HANDLERS -# else -# define POSIX_SPAWN_RESETIDS 0x01 -# define POSIX_SPAWN_SETPGROUP 0x02 -# define POSIX_SPAWN_SETSIGDEF 0x04 -# define POSIX_SPAWN_SETSIGMASK 0x08 -# define POSIX_SPAWN_SETSCHEDPARAM 0x10 -# define POSIX_SPAWN_SETSCHEDULER 0x20 -# endif -#endif -/* A GNU extension. Use the next free bit position. */ -#ifndef POSIX_SPAWN_USEVFORK -# define POSIX_SPAWN_USEVFORK \ - ((POSIX_SPAWN_RESETIDS | (POSIX_SPAWN_RESETIDS - 1) \ - | POSIX_SPAWN_SETPGROUP | (POSIX_SPAWN_SETPGROUP - 1) \ - | POSIX_SPAWN_SETSIGDEF | (POSIX_SPAWN_SETSIGDEF - 1) \ - | POSIX_SPAWN_SETSIGMASK | (POSIX_SPAWN_SETSIGMASK - 1) \ - | POSIX_SPAWN_SETSCHEDPARAM \ - | (POSIX_SPAWN_SETSCHEDPARAM > 0 ? POSIX_SPAWN_SETSCHEDPARAM - 1 : 0) \ - | POSIX_SPAWN_SETSCHEDULER \ - | (POSIX_SPAWN_SETSCHEDULER > 0 ? POSIX_SPAWN_SETSCHEDULER - 1 : 0)) \ - + 1) -#endif -#if !GNULIB_defined_verify_POSIX_SPAWN_USEVFORK_no_overlap -typedef int verify_POSIX_SPAWN_USEVFORK_no_overlap - [(((POSIX_SPAWN_RESETIDS | POSIX_SPAWN_SETPGROUP - | POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK - | POSIX_SPAWN_SETSCHEDPARAM | POSIX_SPAWN_SETSCHEDULER) - & POSIX_SPAWN_USEVFORK) - == 0) - ? 1 : -1]; -# define GNULIB_defined_verify_POSIX_SPAWN_USEVFORK_no_overlap 1 -#endif - - -#if 0 -/* Spawn a new process executing PATH with the attributes describes in *ATTRP. - Before running the process perform the actions described in FILE-ACTIONS. - - This function is a possible cancellation points and therefore not - marked with __THROW. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawn rpl_posix_spawn -# endif -_GL_FUNCDECL_RPL (posix_spawn, int, - (pid_t *_Restrict_ __pid, - const char *_Restrict_ __path, - const posix_spawn_file_actions_t *_Restrict_ __file_actions, - const posix_spawnattr_t *_Restrict_ __attrp, - char *const argv[_Restrict_arr_], - char *const envp[_Restrict_arr_]) - _GL_ARG_NONNULL ((2, 5, 6))); -_GL_CXXALIAS_RPL (posix_spawn, int, - (pid_t *_Restrict_ __pid, - const char *_Restrict_ __path, - const posix_spawn_file_actions_t *_Restrict_ __file_actions, - const posix_spawnattr_t *_Restrict_ __attrp, - char *const argv[_Restrict_arr_], - char *const envp[_Restrict_arr_])); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawn, int, - (pid_t *_Restrict_ __pid, - const char *_Restrict_ __path, - const posix_spawn_file_actions_t *_Restrict_ __file_actions, - const posix_spawnattr_t *_Restrict_ __attrp, - char *const argv[_Restrict_arr_], - char *const envp[_Restrict_arr_]) - _GL_ARG_NONNULL ((2, 5, 6))); -# endif -_GL_CXXALIAS_SYS (posix_spawn, int, - (pid_t *_Restrict_ __pid, - const char *_Restrict_ __path, - const posix_spawn_file_actions_t *_Restrict_ __file_actions, - const posix_spawnattr_t *_Restrict_ __attrp, - char *const argv[_Restrict_arr_], - char *const envp[_Restrict_arr_])); -# endif -_GL_CXXALIASWARN (posix_spawn); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawn -# if HAVE_RAW_DECL_POSIX_SPAWN -_GL_WARN_ON_USE (posix_spawn, "posix_spawn is unportable - " - "use gnulib module posix_spawn for portability"); -# endif -#endif - -#if 1 -/* Similar to 'posix_spawn' but search for FILE in the PATH. - - This function is a possible cancellation points and therefore not - marked with __THROW. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnp rpl_posix_spawnp -# endif -_GL_FUNCDECL_RPL (posix_spawnp, int, - (pid_t *__pid, const char *__file, - const posix_spawn_file_actions_t *__file_actions, - const posix_spawnattr_t *__attrp, - char *const argv[], char *const envp[]) - _GL_ARG_NONNULL ((2, 5, 6))); -_GL_CXXALIAS_RPL (posix_spawnp, int, - (pid_t *__pid, const char *__file, - const posix_spawn_file_actions_t *__file_actions, - const posix_spawnattr_t *__attrp, - char *const argv[], char *const envp[])); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawnp, int, - (pid_t *__pid, const char *__file, - const posix_spawn_file_actions_t *__file_actions, - const posix_spawnattr_t *__attrp, - char *const argv[], char *const envp[]) - _GL_ARG_NONNULL ((2, 5, 6))); -# endif -_GL_CXXALIAS_SYS (posix_spawnp, int, - (pid_t *__pid, const char *__file, - const posix_spawn_file_actions_t *__file_actions, - const posix_spawnattr_t *__attrp, - char *const argv[], char *const envp[])); -# endif -_GL_CXXALIASWARN (posix_spawnp); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnp -# if HAVE_RAW_DECL_POSIX_SPAWNP -_GL_WARN_ON_USE (posix_spawnp, "posix_spawnp is unportable - " - "use gnulib module posix_spawnp for portability"); -# endif -#endif - - -#if 0 -/* Initialize data structure with attributes for 'spawn' to default values. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_init rpl_posix_spawnattr_init -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_init, int, (posix_spawnattr_t *__attr) - __THROW _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (posix_spawnattr_init, int, (posix_spawnattr_t *__attr)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawnattr_init, int, (posix_spawnattr_t *__attr) - __THROW _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_init, int, (posix_spawnattr_t *__attr)); -# endif -_GL_CXXALIASWARN (posix_spawnattr_init); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_init -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_INIT -_GL_WARN_ON_USE (posix_spawnattr_init, "posix_spawnattr_init is unportable - " - "use gnulib module posix_spawnattr_init for portability"); -# endif -#endif - -#if 0 -/* Free resources associated with ATTR. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_destroy rpl_posix_spawnattr_destroy -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr) - __THROW _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr) - __THROW _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_destroy, int, (posix_spawnattr_t *__attr)); -# endif -_GL_CXXALIASWARN (posix_spawnattr_destroy); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_destroy -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_DESTROY -_GL_WARN_ON_USE (posix_spawnattr_destroy, - "posix_spawnattr_destroy is unportable - " - "use gnulib module posix_spawnattr_destroy for portability"); -# endif -#endif - -#if 0 -/* Store signal mask for signals with default handling from ATTR in - SIGDEFAULT. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_getsigdefault rpl_posix_spawnattr_getsigdefault -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_getsigdefault, int, - (const posix_spawnattr_t *_Restrict_ __attr, - sigset_t *_Restrict_ __sigdefault) - __THROW _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (posix_spawnattr_getsigdefault, int, - (const posix_spawnattr_t *_Restrict_ __attr, - sigset_t *_Restrict_ __sigdefault)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawnattr_getsigdefault, int, - (const posix_spawnattr_t *_Restrict_ __attr, - sigset_t *_Restrict_ __sigdefault) - __THROW _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_getsigdefault, int, - (const posix_spawnattr_t *_Restrict_ __attr, - sigset_t *_Restrict_ __sigdefault)); -# endif -_GL_CXXALIASWARN (posix_spawnattr_getsigdefault); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_getsigdefault -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSIGDEFAULT -_GL_WARN_ON_USE (posix_spawnattr_getsigdefault, - "posix_spawnattr_getsigdefault is unportable - " - "use gnulib module posix_spawnattr_getsigdefault for portability"); -# endif -#endif - -#if 0 -/* Set signal mask for signals with default handling in ATTR to SIGDEFAULT. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_setsigdefault rpl_posix_spawnattr_setsigdefault -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_setsigdefault, int, - (posix_spawnattr_t *_Restrict_ __attr, - const sigset_t *_Restrict_ __sigdefault) - __THROW _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (posix_spawnattr_setsigdefault, int, - (posix_spawnattr_t *_Restrict_ __attr, - const sigset_t *_Restrict_ __sigdefault)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawnattr_setsigdefault, int, - (posix_spawnattr_t *_Restrict_ __attr, - const sigset_t *_Restrict_ __sigdefault) - __THROW _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_setsigdefault, int, - (posix_spawnattr_t *_Restrict_ __attr, - const sigset_t *_Restrict_ __sigdefault)); -# endif -_GL_CXXALIASWARN (posix_spawnattr_setsigdefault); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_setsigdefault -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSIGDEFAULT -_GL_WARN_ON_USE (posix_spawnattr_setsigdefault, - "posix_spawnattr_setsigdefault is unportable - " - "use gnulib module posix_spawnattr_setsigdefault for portability"); -# endif -#endif - -#if 0 -/* Store signal mask for the new process from ATTR in SIGMASK. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_getsigmask rpl_posix_spawnattr_getsigmask -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_getsigmask, int, - (const posix_spawnattr_t *_Restrict_ __attr, - sigset_t *_Restrict_ __sigmask) - __THROW _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (posix_spawnattr_getsigmask, int, - (const posix_spawnattr_t *_Restrict_ __attr, - sigset_t *_Restrict_ __sigmask)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawnattr_getsigmask, int, - (const posix_spawnattr_t *_Restrict_ __attr, - sigset_t *_Restrict_ __sigmask) - __THROW _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_getsigmask, int, - (const posix_spawnattr_t *_Restrict_ __attr, - sigset_t *_Restrict_ __sigmask)); -# endif -_GL_CXXALIASWARN (posix_spawnattr_getsigmask); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_getsigmask -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSIGMASK -_GL_WARN_ON_USE (posix_spawnattr_getsigmask, - "posix_spawnattr_getsigmask is unportable - " - "use gnulib module posix_spawnattr_getsigmask for portability"); -# endif -#endif - -#if 0 -/* Set signal mask for the new process in ATTR to SIGMASK. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_setsigmask rpl_posix_spawnattr_setsigmask -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_setsigmask, int, - (posix_spawnattr_t *_Restrict_ __attr, - const sigset_t *_Restrict_ __sigmask) - __THROW _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (posix_spawnattr_setsigmask, int, - (posix_spawnattr_t *_Restrict_ __attr, - const sigset_t *_Restrict_ __sigmask)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawnattr_setsigmask, int, - (posix_spawnattr_t *_Restrict_ __attr, - const sigset_t *_Restrict_ __sigmask) - __THROW _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_setsigmask, int, - (posix_spawnattr_t *_Restrict_ __attr, - const sigset_t *_Restrict_ __sigmask)); -# endif -_GL_CXXALIASWARN (posix_spawnattr_setsigmask); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_setsigmask -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSIGMASK -_GL_WARN_ON_USE (posix_spawnattr_setsigmask, - "posix_spawnattr_setsigmask is unportable - " - "use gnulib module posix_spawnattr_setsigmask for portability"); -# endif -#endif - -#if 0 -/* Get flag word from the attribute structure. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_getflags rpl_posix_spawnattr_getflags -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_getflags, int, - (const posix_spawnattr_t *_Restrict_ __attr, - short int *_Restrict_ __flags) - __THROW _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (posix_spawnattr_getflags, int, - (const posix_spawnattr_t *_Restrict_ __attr, - short int *_Restrict_ __flags)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawnattr_getflags, int, - (const posix_spawnattr_t *_Restrict_ __attr, - short int *_Restrict_ __flags) - __THROW _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_getflags, int, - (const posix_spawnattr_t *_Restrict_ __attr, - short int *_Restrict_ __flags)); -# endif -_GL_CXXALIASWARN (posix_spawnattr_getflags); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_getflags -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETFLAGS -_GL_WARN_ON_USE (posix_spawnattr_getflags, - "posix_spawnattr_getflags is unportable - " - "use gnulib module posix_spawnattr_getflags for portability"); -# endif -#endif - -#if 0 -/* Store flags in the attribute structure. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_setflags rpl_posix_spawnattr_setflags -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_setflags, int, - (posix_spawnattr_t *__attr, short int __flags) - __THROW _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (posix_spawnattr_setflags, int, - (posix_spawnattr_t *__attr, short int __flags)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawnattr_setflags, int, - (posix_spawnattr_t *__attr, short int __flags) - __THROW _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_setflags, int, - (posix_spawnattr_t *__attr, short int __flags)); -# endif -_GL_CXXALIASWARN (posix_spawnattr_setflags); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_setflags -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETFLAGS -_GL_WARN_ON_USE (posix_spawnattr_setflags, - "posix_spawnattr_setflags is unportable - " - "use gnulib module posix_spawnattr_setflags for portability"); -# endif -#endif - -#if 0 -/* Get process group ID from the attribute structure. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_getpgroup rpl_posix_spawnattr_getpgroup -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_getpgroup, int, - (const posix_spawnattr_t *_Restrict_ __attr, - pid_t *_Restrict_ __pgroup) - __THROW _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (posix_spawnattr_getpgroup, int, - (const posix_spawnattr_t *_Restrict_ __attr, - pid_t *_Restrict_ __pgroup)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawnattr_getpgroup, int, - (const posix_spawnattr_t *_Restrict_ __attr, - pid_t *_Restrict_ __pgroup) - __THROW _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_getpgroup, int, - (const posix_spawnattr_t *_Restrict_ __attr, - pid_t *_Restrict_ __pgroup)); -# endif -_GL_CXXALIASWARN (posix_spawnattr_getpgroup); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_getpgroup -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETPGROUP -_GL_WARN_ON_USE (posix_spawnattr_getpgroup, - "posix_spawnattr_getpgroup is unportable - " - "use gnulib module posix_spawnattr_getpgroup for portability"); -# endif -#endif - -#if 0 -/* Store process group ID in the attribute structure. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_setpgroup rpl_posix_spawnattr_setpgroup -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_setpgroup, int, - (posix_spawnattr_t *__attr, pid_t __pgroup) - __THROW _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (posix_spawnattr_setpgroup, int, - (posix_spawnattr_t *__attr, pid_t __pgroup)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawnattr_setpgroup, int, - (posix_spawnattr_t *__attr, pid_t __pgroup) - __THROW _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_setpgroup, int, - (posix_spawnattr_t *__attr, pid_t __pgroup)); -# endif -_GL_CXXALIASWARN (posix_spawnattr_setpgroup); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_setpgroup -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETPGROUP -_GL_WARN_ON_USE (posix_spawnattr_setpgroup, - "posix_spawnattr_setpgroup is unportable - " - "use gnulib module posix_spawnattr_setpgroup for portability"); -# endif -#endif - -#if 0 -/* Get scheduling policy from the attribute structure. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_getschedpolicy rpl_posix_spawnattr_getschedpolicy -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_getschedpolicy, int, - (const posix_spawnattr_t *_Restrict_ __attr, - int *_Restrict_ __schedpolicy) - __THROW _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (posix_spawnattr_getschedpolicy, int, - (const posix_spawnattr_t *_Restrict_ __attr, - int *_Restrict_ __schedpolicy)); -# else -# if !1 || POSIX_SPAWN_SETSCHEDULER == 0 -_GL_FUNCDECL_SYS (posix_spawnattr_getschedpolicy, int, - (const posix_spawnattr_t *_Restrict_ __attr, - int *_Restrict_ __schedpolicy) - __THROW _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_getschedpolicy, int, - (const posix_spawnattr_t *_Restrict_ __attr, - int *_Restrict_ __schedpolicy)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (posix_spawnattr_getschedpolicy); -# endif -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_getschedpolicy -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSCHEDPOLICY -_GL_WARN_ON_USE (posix_spawnattr_getschedpolicy, - "posix_spawnattr_getschedpolicy is unportable - " - "use gnulib module posix_spawnattr_getschedpolicy for portability"); -# endif -#endif - -#if 0 -/* Store scheduling policy in the attribute structure. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_setschedpolicy rpl_posix_spawnattr_setschedpolicy -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_setschedpolicy, int, - (posix_spawnattr_t *__attr, int __schedpolicy) - __THROW _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (posix_spawnattr_setschedpolicy, int, - (posix_spawnattr_t *__attr, int __schedpolicy)); -# else -# if !1 || POSIX_SPAWN_SETSCHEDULER == 0 -_GL_FUNCDECL_SYS (posix_spawnattr_setschedpolicy, int, - (posix_spawnattr_t *__attr, int __schedpolicy) - __THROW _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_setschedpolicy, int, - (posix_spawnattr_t *__attr, int __schedpolicy)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (posix_spawnattr_setschedpolicy); -# endif -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_setschedpolicy -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSCHEDPOLICY -_GL_WARN_ON_USE (posix_spawnattr_setschedpolicy, - "posix_spawnattr_setschedpolicy is unportable - " - "use gnulib module posix_spawnattr_setschedpolicy for portability"); -# endif -#endif - -#if 0 -/* Get scheduling parameters from the attribute structure. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_getschedparam rpl_posix_spawnattr_getschedparam -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_getschedparam, int, - (const posix_spawnattr_t *_Restrict_ __attr, - struct sched_param *_Restrict_ __schedparam) - __THROW _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (posix_spawnattr_getschedparam, int, - (const posix_spawnattr_t *_Restrict_ __attr, - struct sched_param *_Restrict_ __schedparam)); -# else -# if !1 || POSIX_SPAWN_SETSCHEDPARAM == 0 -_GL_FUNCDECL_SYS (posix_spawnattr_getschedparam, int, - (const posix_spawnattr_t *_Restrict_ __attr, - struct sched_param *_Restrict_ __schedparam) - __THROW _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_getschedparam, int, - (const posix_spawnattr_t *_Restrict_ __attr, - struct sched_param *_Restrict_ __schedparam)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (posix_spawnattr_getschedparam); -# endif -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_getschedparam -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_GETSCHEDPARAM -_GL_WARN_ON_USE (posix_spawnattr_getschedparam, - "posix_spawnattr_getschedparam is unportable - " - "use gnulib module posix_spawnattr_getschedparam for portability"); -# endif -#endif - -#if 0 -/* Store scheduling parameters in the attribute structure. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawnattr_setschedparam rpl_posix_spawnattr_setschedparam -# endif -_GL_FUNCDECL_RPL (posix_spawnattr_setschedparam, int, - (posix_spawnattr_t *_Restrict_ __attr, - const struct sched_param *_Restrict_ __schedparam) - __THROW _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (posix_spawnattr_setschedparam, int, - (posix_spawnattr_t *_Restrict_ __attr, - const struct sched_param *_Restrict_ __schedparam)); -# else -# if !1 || POSIX_SPAWN_SETSCHEDPARAM == 0 -_GL_FUNCDECL_SYS (posix_spawnattr_setschedparam, int, - (posix_spawnattr_t *_Restrict_ __attr, - const struct sched_param *_Restrict_ __schedparam) - __THROW _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (posix_spawnattr_setschedparam, int, - (posix_spawnattr_t *_Restrict_ __attr, - const struct sched_param *_Restrict_ __schedparam)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (posix_spawnattr_setschedparam); -# endif -#elif defined GNULIB_POSIXCHECK -# undef posix_spawnattr_setschedparam -# if HAVE_RAW_DECL_POSIX_SPAWNATTR_SETSCHEDPARAM -_GL_WARN_ON_USE (posix_spawnattr_setschedparam, - "posix_spawnattr_setschedparam is unportable - " - "use gnulib module posix_spawnattr_setschedparam for portability"); -# endif -#endif - - -#if 0 -/* Initialize data structure for file attribute for 'spawn' call. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawn_file_actions_init rpl_posix_spawn_file_actions_init -# endif -_GL_FUNCDECL_RPL (posix_spawn_file_actions_init, int, - (posix_spawn_file_actions_t *__file_actions) - __THROW _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (posix_spawn_file_actions_init, int, - (posix_spawn_file_actions_t *__file_actions)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawn_file_actions_init, int, - (posix_spawn_file_actions_t *__file_actions) - __THROW _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (posix_spawn_file_actions_init, int, - (posix_spawn_file_actions_t *__file_actions)); -# endif -_GL_CXXALIASWARN (posix_spawn_file_actions_init); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawn_file_actions_init -# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_INIT -_GL_WARN_ON_USE (posix_spawn_file_actions_init, - "posix_spawn_file_actions_init is unportable - " - "use gnulib module posix_spawn_file_actions_init for portability"); -# endif -#endif - -#if 0 -/* Free resources associated with FILE-ACTIONS. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawn_file_actions_destroy rpl_posix_spawn_file_actions_destroy -# endif -_GL_FUNCDECL_RPL (posix_spawn_file_actions_destroy, int, - (posix_spawn_file_actions_t *__file_actions) - __THROW _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (posix_spawn_file_actions_destroy, int, - (posix_spawn_file_actions_t *__file_actions)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawn_file_actions_destroy, int, - (posix_spawn_file_actions_t *__file_actions) - __THROW _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (posix_spawn_file_actions_destroy, int, - (posix_spawn_file_actions_t *__file_actions)); -# endif -_GL_CXXALIASWARN (posix_spawn_file_actions_destroy); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawn_file_actions_destroy -# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_DESTROY -_GL_WARN_ON_USE (posix_spawn_file_actions_destroy, - "posix_spawn_file_actions_destroy is unportable - " - "use gnulib module posix_spawn_file_actions_destroy for portability"); -# endif -#endif - -#if 0 -/* Add an action to FILE-ACTIONS which tells the implementation to call - 'open' for the given file during the 'spawn' call. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawn_file_actions_addopen rpl_posix_spawn_file_actions_addopen -# endif -_GL_FUNCDECL_RPL (posix_spawn_file_actions_addopen, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - int __fd, - const char *_Restrict_ __path, int __oflag, mode_t __mode) - __THROW _GL_ARG_NONNULL ((1, 3))); -_GL_CXXALIAS_RPL (posix_spawn_file_actions_addopen, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - int __fd, - const char *_Restrict_ __path, int __oflag, mode_t __mode)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawn_file_actions_addopen, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - int __fd, - const char *_Restrict_ __path, int __oflag, mode_t __mode) - __THROW _GL_ARG_NONNULL ((1, 3))); -# endif -_GL_CXXALIAS_SYS (posix_spawn_file_actions_addopen, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - int __fd, - const char *_Restrict_ __path, int __oflag, mode_t __mode)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (posix_spawn_file_actions_addopen); -# endif -#elif defined GNULIB_POSIXCHECK -# undef posix_spawn_file_actions_addopen -# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN -_GL_WARN_ON_USE (posix_spawn_file_actions_addopen, - "posix_spawn_file_actions_addopen is unportable - " - "use gnulib module posix_spawn_file_actions_addopen for portability"); -# endif -#endif - -#if 0 -/* Add an action to FILE-ACTIONS which tells the implementation to call - 'close' for the given file descriptor during the 'spawn' call. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawn_file_actions_addclose rpl_posix_spawn_file_actions_addclose -# endif -_GL_FUNCDECL_RPL (posix_spawn_file_actions_addclose, int, - (posix_spawn_file_actions_t *__file_actions, int __fd) - __THROW _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (posix_spawn_file_actions_addclose, int, - (posix_spawn_file_actions_t *__file_actions, int __fd)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawn_file_actions_addclose, int, - (posix_spawn_file_actions_t *__file_actions, int __fd) - __THROW _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (posix_spawn_file_actions_addclose, int, - (posix_spawn_file_actions_t *__file_actions, int __fd)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (posix_spawn_file_actions_addclose); -# endif -#elif defined GNULIB_POSIXCHECK -# undef posix_spawn_file_actions_addclose -# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE -_GL_WARN_ON_USE (posix_spawn_file_actions_addclose, - "posix_spawn_file_actions_addclose is unportable - " - "use gnulib module posix_spawn_file_actions_addclose for portability"); -# endif -#endif - -#if 0 -/* Add an action to FILE-ACTIONS which tells the implementation to call - 'dup2' for the given file descriptors during the 'spawn' call. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawn_file_actions_adddup2 rpl_posix_spawn_file_actions_adddup2 -# endif -_GL_FUNCDECL_RPL (posix_spawn_file_actions_adddup2, int, - (posix_spawn_file_actions_t *__file_actions, - int __fd, int __newfd) - __THROW _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (posix_spawn_file_actions_adddup2, int, - (posix_spawn_file_actions_t *__file_actions, - int __fd, int __newfd)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawn_file_actions_adddup2, int, - (posix_spawn_file_actions_t *__file_actions, - int __fd, int __newfd) - __THROW _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (posix_spawn_file_actions_adddup2, int, - (posix_spawn_file_actions_t *__file_actions, - int __fd, int __newfd)); -# endif -# if __GLIBC__ >= 2 -_GL_CXXALIASWARN (posix_spawn_file_actions_adddup2); -# endif -#elif defined GNULIB_POSIXCHECK -# undef posix_spawn_file_actions_adddup2 -# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 -_GL_WARN_ON_USE (posix_spawn_file_actions_adddup2, - "posix_spawn_file_actions_adddup2 is unportable - " - "use gnulib module posix_spawn_file_actions_adddup2 for portability"); -# endif -#endif - -#if 0 -/* Add an action to FILE-ACTIONS which tells the implementation to call - 'chdir' to the given directory during the 'spawn' call. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawn_file_actions_addchdir rpl_posix_spawn_file_actions_addchdir -# endif -_GL_FUNCDECL_RPL (posix_spawn_file_actions_addchdir, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - const char *_Restrict_ __path) - __THROW _GL_ARG_NONNULL ((1, 2))); -_GL_CXXALIAS_RPL (posix_spawn_file_actions_addchdir, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - const char *_Restrict_ __path)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawn_file_actions_addchdir, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - const char *_Restrict_ __path) - __THROW _GL_ARG_NONNULL ((1, 2))); -# endif -_GL_CXXALIAS_SYS (posix_spawn_file_actions_addchdir, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - const char *_Restrict_ __path)); -# endif -_GL_CXXALIASWARN (posix_spawn_file_actions_addchdir); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawn_file_actions_addchdir -# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR -_GL_WARN_ON_USE (posix_spawn_file_actions_addchdir, - "posix_spawn_file_actions_addchdir is unportable - " - "use gnulib module posix_spawn_file_actions_addchdir for portability"); -# endif -#endif - -#if 0 -/* Add an action to FILE-ACTIONS which tells the implementation to call - 'fchdir' to the given directory during the 'spawn' call. */ -# if 0 -# if !(defined __cplusplus && defined GNULIB_NAMESPACE) -# define posix_spawn_file_actions_addfchdir rpl_posix_spawn_file_actions_addfchdir -# endif -_GL_FUNCDECL_RPL (posix_spawn_file_actions_addfchdir, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - int __fd) - __THROW _GL_ARG_NONNULL ((1))); -_GL_CXXALIAS_RPL (posix_spawn_file_actions_addfchdir, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - int __fd)); -# else -# if !1 -_GL_FUNCDECL_SYS (posix_spawn_file_actions_addfchdir, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - int __fd) - __THROW _GL_ARG_NONNULL ((1))); -# endif -_GL_CXXALIAS_SYS (posix_spawn_file_actions_addfchdir, int, - (posix_spawn_file_actions_t *_Restrict_ __file_actions, - int __fd)); -# endif -_GL_CXXALIASWARN (posix_spawn_file_actions_addfchdir); -#elif defined GNULIB_POSIXCHECK -# undef posix_spawn_file_actions_addfchdir -# if HAVE_RAW_DECL_POSIX_SPAWN_FILE_ACTIONS_ADDFCHDIR -_GL_WARN_ON_USE (posix_spawn_file_actions_addfchdir, - "posix_spawn_file_actions_addfchdir is unportable - " - "use gnulib module posix_spawn_file_actions_addfchdir for portability"); -# endif -#endif - - -#endif /* _GL_SPAWN_H */ -#endif /* _GL_SPAWN_H */ -#endif diff --git a/lib/stdckdint.h b/lib/stdckdint.h deleted file mode 100644 index 8eeac9094..000000000 --- a/lib/stdckdint.h +++ /dev/null @@ -1,38 +0,0 @@ -/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ -/* stdckdint.h -- checked integer arithmetic - - Copyright 2022 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. */ - -#ifndef _GL_STDCKDINT_H -#define _GL_STDCKDINT_H - -#include "intprops-internal.h" - -#include <stdbool.h> - -/* Store into *R the low-order bits of A + B, A - B, A * B, respectively. - Return 1 if the result overflows, 0 otherwise. - A, B, and *R can have any integer type other than char, bool, a - bit-precise integer type, or an enumeration type. - - These are like the standard macros introduced in C23, except that - arguments should not have side effects. */ - -#define ckd_add(r, a, b) ((bool) _GL_INT_ADD_WRAPV (a, b, r)) -#define ckd_sub(r, a, b) ((bool) _GL_INT_SUBTRACT_WRAPV (a, b, r)) -#define ckd_mul(r, a, b) ((bool) _GL_INT_MULTIPLY_WRAPV (a, b, r)) - -#endif /* _GL_STDCKDINT_H */ |