1/* Substitute for <sys/random.h>. 2 Copyright (C) 2020 Free Software Foundation, Inc. 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 3, or (at your option) 7 any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program; if not, see <https://www.gnu.org/licenses/>. */ 16 17# if __GNUC__ >= 3 18@PRAGMA_SYSTEM_HEADER@ 19# endif 20@PRAGMA_COLUMNS@ 21 22#ifndef _@GUARD_PREFIX@_SYS_RANDOM_H 23 24#if @HAVE_SYS_RANDOM_H@ 25 26/* On Mac OS X 10.5, <sys/random.h> assumes prior inclusion of <sys/types.h>. 27 On Max OS X 10.13, <sys/random.h> assumes prior inclusion of a file that 28 includes <Availability.h>, such as <stdlib.h> or <unistd.h>. */ 29# if defined __APPLE__ && defined __MACH__ /* Mac OS X */ 30# include <sys/types.h> 31# include <stdlib.h> 32# endif 33 34/* The include_next requires a split double-inclusion guard. */ 35# @INCLUDE_NEXT@ @NEXT_SYS_RANDOM_H@ 36 37#endif 38 39#ifndef _@GUARD_PREFIX@_SYS_RANDOM_H 40#define _@GUARD_PREFIX@_SYS_RANDOM_H 41 42#include <sys/types.h> 43 44/* Define the GRND_* constants. */ 45#ifndef GRND_NONBLOCK 46# define GRND_NONBLOCK 1 47# define GRND_RANDOM 2 48#endif 49 50/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ 51 52/* The definition of _GL_ARG_NONNULL is copied here. */ 53 54/* The definition of _GL_WARN_ON_USE is copied here. */ 55 56 57/* Declare overridden functions. */ 58 59 60#if @GNULIB_GETRANDOM@ 61/* Fill a buffer with random bytes. */ 62# if @REPLACE_GETRANDOM@ 63# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 64# undef getrandom 65# define getrandom rpl_getrandom 66# endif 67_GL_FUNCDECL_RPL (getrandom, ssize_t, 68 (void *buffer, size_t length, unsigned int flags) 69 _GL_ARG_NONNULL ((1))); 70_GL_CXXALIAS_RPL (getrandom, ssize_t, 71 (void *buffer, size_t length, unsigned int flags)); 72# else 73# if !@HAVE_GETRANDOM@ 74_GL_FUNCDECL_SYS (getrandom, ssize_t, 75 (void *buffer, size_t length, unsigned int flags) 76 _GL_ARG_NONNULL ((1))); 77# endif 78_GL_CXXALIAS_SYS (getrandom, ssize_t, 79 (void *buffer, size_t length, unsigned int flags)); 80# endif 81_GL_CXXALIASWARN (getrandom); 82#elif defined GNULIB_POSIXCHECK 83# undef getrandom 84# if HAVE_RAW_DECL_GETRANDOM 85_GL_WARN_ON_USE (getrandom, "getrandom is unportable - " 86 "use gnulib module getrandom for portability"); 87# endif 88#endif 89 90 91#endif /* _@GUARD_PREFIX@_SYS_RANDOM_H */ 92#endif /* _@GUARD_PREFIX@_SYS_RANDOM_H */ 93