ObjFW  Check-in [ba1135b0b2]

Overview
Comment:Add support for getrandom()
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: ba1135b0b28106f36be3178cd0661f1dc268a9b2495a62da2d155543d7a6dbc3
User & Date: js on 2020-07-12 10:00:16
Other Links: manifest | tags
Context
2020-07-12
10:35
Split of_random() into of_random{16,32,64}() check-in: 14f05841a3 user: js tags: trunk
10:00
Add support for getrandom() check-in: ba1135b0b2 user: js tags: trunk
09:49
Make of_random() a function check-in: c1fe4b2b77 user: js tags: trunk
Changes

Modified configure.ac from [989ef7fcda] to [69c688a7b0].

897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
	])
	AS_IF([test x"$enable_static" = x"yes" -o x"$enable_shared" = x"no"], [
		AC_SUBST(ENCODINGS_A, "encodings.a")
		AC_SUBST(ENCODINGS_ENCODINGS_A, "encodings/encodings.a")
	])
])

AC_CHECK_FUNCS(arc4random random, break)

AS_IF([test x"$host_os" != x"morphos"], [
	AC_CHECK_LIB(dl, dlopen, LIBS="$LIBS -ldl")
])
AC_CHECK_HEADERS_ONCE(dlfcn.h)
case "$host_os" in
	netbsd*)







|







897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
	])
	AS_IF([test x"$enable_static" = x"yes" -o x"$enable_shared" = x"no"], [
		AC_SUBST(ENCODINGS_A, "encodings.a")
		AC_SUBST(ENCODINGS_ENCODINGS_A, "encodings/encodings.a")
	])
])

AC_CHECK_FUNCS(arc4random getrandom random, break)

AS_IF([test x"$host_os" != x"morphos"], [
	AC_CHECK_LIB(dl, dlopen, LIBS="$LIBS -ldl")
])
AC_CHECK_HEADERS_ONCE(dlfcn.h)
case "$host_os" in
	netbsd*)

Modified src/OFObject.m from [54579841e3] to [d3c7a17532].

119
120
121
122
123
124
125
126
127






128
129
130
131
132
133
134
# endif
}
#endif

uint32_t
of_random(void)
{
#ifdef HAVE_ARC4RANDOM
	return arc4random();






#else
	static of_once_t onceControl;

	of_once(&onceControl, initRandom);
# ifdef HAVE_RANDOM
	return (((uint32_t)(random()) << 16) | ((uint32_t)(random()) & 0xFFFF));
# else







|

>
>
>
>
>
>







119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# endif
}
#endif

uint32_t
of_random(void)
{
#if defined(HAVE_ARC4RANDOM)
	return arc4random();
#elif defined(HAVE_GETRANDOM)
	uint32_t buffer;

	OF_ENSURE(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer));

	return buffer;
#else
	static of_once_t onceControl;

	of_once(&onceControl, initRandom);
# ifdef HAVE_RANDOM
	return (((uint32_t)(random()) << 16) | ((uint32_t)(random()) & 0xFFFF));
# else