Commit Graph

43 Commits

Author SHA1 Message Date
Colin Walters
1e1e2d1ff7 grand: Document this is not for cryptographic purposes
While this is obvious to seasoned experts upon inspection, it is
really worth documenting explicitly.

https://bugzilla.gnome.org/show_bug.cgi?id=710736
2013-10-23 16:41:09 -04:00
Robert Ancell
59a24ab5a3 Use "Returns:" instead of the invalid "@returns" for annotating return values.
https://bugzilla.gnome.org/show_bug.cgi?id=673229
2012-11-01 14:47:25 +13:00
Colin Walters
a8ddd52a45 GRand: Check return value of fopen directly
This doesn't fix anything, it should just silence some static analysis
tools.
2012-06-22 10:34:46 -04:00
Ravi Sankar Guntur
7486cd946a comments/docs: Fix couple of typos
https://bugzilla.gnome.org/show_bug.cgi?id=668857
2012-01-28 07:52:56 +01:00
Matthias Clasen
2f71118e78 More include cleanups 2011-10-17 02:14:39 -04:00
Matthias Clasen
976b0b72a4 Include genviron.h where necessary 2011-10-15 20:06:32 -04:00
Ryan Lortie
47444dacc0 Deprecate g_thread_init()
Move the last few things that needed thread-safe initialisation to a
global ctor.

https://bugzilla.gnome.org/show_bug.cgi?id=660744
2011-10-04 15:31:49 -04:00
Ryan Lortie
b6a2f502f2 GRand: Make sure to g_thread_init_glib()
The last commit should g_thread_init_glib() before attempting to use
GOnce.
2011-09-09 13:39:22 -04:00
Ryan Lortie
71c72d5e13 GRand: remove setup from g_thread_init_glib
Use g_once_init_enter instead.
2011-09-09 13:31:21 -04:00
Matthias Clasen
77be95cdce GRand: avoid overflow
Otherwise, g_random_double_range (-G_MAXDOUBLE, G_MAXDOUBLE)
doesn't work as expected.

https://bugzilla.gnome.org/show_bug.cgi?id=502560
2011-06-03 23:37:23 -04:00
Johan Dahlin
fdaaa22b58 Correct gtk-doc SECTION: syntax
g-ir-scanner does not allow a space between the : and the
section name.
2011-02-01 16:18:02 -02:00
Javier Jardón
f0354ff059 grand: Fix URLs for info on the Mersenne Twister
Reported by Allin Cottrell here:
http://mail.gnome.org/archives/gtk-devel-list/2010-December/msg00134.html
2010-12-17 16:12:16 +00:00
Emmanuele Bassi
ca7dee5949 Build fixes for the fall-out of the inclusion changes 2010-09-04 18:04:34 +01:00
Matthias Clasen
92c577eeff Remove eexcessive header inclusions 2010-09-03 20:44:59 -04:00
Ryan Lortie
2e53e50244 glib/: fully remove galias hacks 2010-07-07 19:34:35 -04:00
Ryan Lortie
d51b6c471a GRand: move docs from tmpl to inline comments 2010-01-30 12:32:37 -05:00
Matthias Clasen
3ba64e72cf Read /dev/urandom unbuffered
To avoid wasting entropy. Bug 593232.
2009-08-27 22:59:05 -04:00
Sebastian Wilhelmi
e4f8f3b95c Renamed to glib/gthreadprivate.h and moved system thread identifier
2006-05-09  Sebastian Wilhelmi  <wilhelmi@google.com>

	* glib/gthreadinit.h: Renamed to glib/gthreadprivate.h and moved
	system thread identifier comparision and assignment macros from
	glib/gthread.c to glib/gthreadprivate.h.

	* glib/Makefile.am, glib/gatomic.c, glib/gconvert.c, glib/gmain.c,
	glib/gmem.c, glib/gmessages.c, glib/grand.c, glib/gslice.c,
	glib/gthread.c, glib/gutils.c, gthread/gthread-impl.c: Use
	glib/gthreadprivate.h instead of glib/gthreadinit.h.

	* gthread/gthread-impl.c: Use GSystemThread instead of GThread for
	owner determination. This fixes #311043 and is mostly modeled
	after the patch from jylefort@FreeBSD.org.
2006-05-10 00:44:50 +00:00
Matthias Clasen
b8b28a7206 Don't repeat a failed fclose() call, since that invokes undefined
2006-04-26  Matthias Clasen  <mclasen@redhat.com>

	* glib/grand.c (g_rand_new): Don't repeat a failed fclose()
	call, since that invokes undefined behaviour.  (Coverity)
2006-04-26 04:19:48 +00:00
David Schleef
d0feaee819 Update URL
2006-01-30  David Schleef  <ds@schleef.org>

        * glib/grand.c: Update URL
2006-01-30 18:32:17 +00:00
Matthias Clasen
608a31b98e Make PLT-reduction work with gcc4, and don't include everything in
2005-03-13  Matthias Clasen  <mclasen@redhat.com>

	Make PLT-reduction work with gcc4, and don't include
	everything in galias.h:

	* glib/glib.symbols: Group symbols by header and source file.
	* glib/makegalias.pl: Protect definitions by the same
	preprocessor symbols used to guard the headers. Move
	the alias declarations to a separate file which is
	produced when calling makegalias.pl -def
	* glib/Makefile.am (galiasdef.c): Add a rule to generate this
	file.
	* glib/*.c: Include galias.h after the other GLib headers,
	include galiasdef.c at the bottom.
2005-03-14 04:26:57 +00:00
Matthias Clasen
dafdffd751 Implement the same PLT reduction technique used in GTK+:
Thu Sep 16 02:03:15 2004  Matthias Clasen  <maclas@gmx.de>

	Implement the same PLT reduction technique used in GTK+:
2004-09-16 06:05:53 +00:00
Sebastian Wilhelmi
79a29937af Add Since: 2.4, where due
2004-02-24  Sebastian Wilhelmi  <seppi@seppi.de>

	* glib/grand.c: Add Since: 2.4, where due
2004-02-24 21:17:10 +00:00
Tor Lillqvist
876b7efdbd Don't include <unistd.h> unless HAVE_UNISTD_H. Include <process.h> on
2004-01-23  Tor Lillqvist  <tml@iki.fi>

	* glib/grand.c: Don't include <unistd.h> unless
	HAVE_UNISTD_H. Include <process.h> on G_OS_WIN32.
	(g_rand_new): Use getppid() only on G_OS_UNIX.
2004-01-23 02:10:46 +00:00
George Lebl
80591652ff Add the init_by_array functionality from the reference implementation of
Fri Dec 19 11:49:21 2003  George Lebl <jirka@5z.com>

        * glib/grand.c
          glib/grand.h (g_rand_new) (g_rand_new_with_seed)
          (g_rand_new_with_seed_array) (g_rand_set_seed_array):  Add
          the init_by_array functionality from the reference implementation
          of the mersenne twister (mt19937ar.c) and change the naming
          to fit with the rest of the grand API.  New functions are
          g_rand_new_with_seed_array, g_rand_set_seed_array.  This is only
          reliable/tested for the 2.2 version of the seeding as that's what
          the reference implementation uses.  Also modify g_rand_new to
          get 4 longs from /dev/urandom since that will always be available
          anyway and we get more entropy and if /dev/urandom is unavailable
          use also 4 longs for seeding using secs, usecs, getpid and getppid.
          For version 2.0 use only a simple seed again but be more careful
          about seeding with secs/usecs in this case.

        * glib/grand.c
          glib/grand.h (g_rand_copy):  Add g_rand_copy function to copy the
          current state of the random number generator.

        * glib/grand.c (g_rand_new):  Add testing for EINTR when reading
          from /dev/urandom

        * tests/rand-test.c: add testing of the array seeding stuff against
          the reference implementation, plus add statistical sanity check
          to see that the values outputted are truly kind of random.  And
          check that g_rand_copy truly copies the state by checking a few
          terms.
2004-01-10 01:38:55 +00:00
Sebastian Wilhelmi
8e91cf9eb9 Fixes for #101264 and #99372:
2003-02-14  Sebastian Wilhelmi  <seppi@seppi.de>

	Fixes for #101264 and #99372:

	* glib/gconvert.h, glib/gmain.c, glib/gmem.c, glib/gmessages.c,
	glib/grand.c: Include gthreadinit.h and rename the thread
	initialization functions a bit and let them start with _, so that
	later we can stop exporting them.

	* glib/gmem.c, glib/gmessages.c: Move the g_private_new() calls to
	new functions. They have to be called after setting
	g_threads_got_initialized to TRUE (see #101264).

	* glib/gthread.c: Include gthreadinit.h. Renamed g_mutex_init() to
	g_thread_init_glib(). Call the thread initialization functions
	(which are not allowed to call g_private_new), then set
	g_threads_got_initialized to TRUE, then call the other thread
	initialization functions (which must not call anything but
	g_private_new()).

	* glib/gthreadinit.h: New private header to cleanly declare all
	thread initialization functions.

	* gthread/gthread-impl.c: Include gthreadinit.h. In
	g_thread_init() just call g_thread_init_glib(), which in turn calls the
	other functions (see #99372).

	* glib/Makefile.am: Added gthreadinit.h.
2003-02-14 15:08:46 +00:00
Sebastian Wilhelmi
98e22e2693 Changed my e-mail address. Removed my e-mail address.
2003-02-11  Sebastian Wilhelmi  <seppi@seppi.de>

	* AUTHORS: Changed my e-mail address.
	* glib/grand.c: Removed my e-mail address.
2003-02-11 10:13:49 +00:00
Owen Taylor
d51fc5b474 Include string.h, supress a warning.
Wed Dec 11 11:11:44 2002  Owen Taylor  <otaylor@redhat.com>

        * glib/grand.c: Include string.h, supress a warning.
2002-12-11 16:13:34 +00:00
Sebastian Wilhelmi
df9d9332f8 Improve generation of pseudo-random integers. (#99720, Morten Welinder
2002-12-10  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

        * glib/grand.c (g_rand_int_range): Improve generation of
        pseudo-random integers. (#99720, Morten Welinder <terra@diku.dk>)

        * README.in, docs/reference/glib/running.sgml,
        docs/reference/glib/tmpl/random_numbers.sgml,
        docs/reference/glib/changes.sgml: Added notes about the new
        algorithm.
2002-12-10 13:51:06 +00:00
Owen Taylor
bbbd329ff5 Patch from Sven Neumann to make the include order consistent. (#71704)
Tue Dec  3 20:22:27 2002  Owen Taylor  <otaylor@redhat.com>

        * glib/*.c: Patch from Sven Neumann to make the
        include order consistent. (#71704)
2002-12-04 01:27:44 +00:00
Sebastian Wilhelmi
c838b2a071 Improved the seeding algorithm. Old behaviour can be achived by setting
2002-11-26  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* glib/grand.c, gthread/gthread-impl.c, tests/rand-test.c:
	Improved the seeding algorithm. Old behaviour can be achived by
	setting envvar G_RANDOM_VERSION to "2.0". (#99262)

	* docs/reference/glib/glib-docs.sgml,
	docs/reference/glib/Makefile.am: Renamed
	docs/reference/glib/changes-2.0.sgml to
	docs/reference/glib/changes.sgml and added section for changes
	from 2.0 to 2.2 (Also corrected 1.0 to 1.2).

	* README.in, docs/reference/glib/running.sgml,
	docs/reference/glib/tmpl/random_numbers.sgml,
	docs/reference/glib/changes.sgml: Added notes about the new
	seeding algorithm.
2002-11-26 14:09:00 +00:00
Soeren Sandmann
d201974f56 Trivial s/foo/foo_/ fixes to make <glib.h> includable with -Wshadow
Fri Nov  8 19:44:20 2002  Soeren Sandmann  <sandmann@daimi.au.dk>

	* docs/reference/glib/tmpl/arrays.sgml:
	* docs/reference/glib/tmpl/arrays_byte.sgml:
	* docs/reference/glib/tmpl/arrays_pointer.sgml:
	* docs/reference/glib/tmpl/date.sgml:
	* docs/reference/glib/tmpl/linked_lists_double.sgml:
	* docs/reference/glib/tmpl/linked_lists_single.sgml:
	* docs/reference/glib/tmpl/main.sgml:
	* docs/reference/glib/tmpl/queue.sgml:
	* docs/reference/glib/tmpl/random_numbers.sgml:
	* docs/reference/glib/tmpl/relations.sgml:
	* docs/reference/glib/tmpl/scanner.sgml:
	* docs/reference/gobject/tmpl/gtype.sgml:
	* docs/reference/gobject/tmpl/value_arrays.sgml glib/garray.h:
	* glib/gdate.h glib/giochannel.h glib/glist.h glib/gmain.c:
	* glib/gmain.h glib/gqueue.c glib/gqueue.h glib/grand.c glib/grand.h:
	* glib/grel.h glib/gslist.h glib/gtimer.h gobject/gvaluearray.h:

	Trivial s/foo/foo_/ fixes to make <glib.h> includable with
	-Wshadow without warnings (#91680)
2002-11-08 18:47:56 +00:00
Matthias Clasen
3fa33317b7 Documentation fixes.
* glib/gconvert.c, glib/grand.c, glib/ghash.c,
        glib/gthreadpool.c, glib/gtree.c: Documentation fixes.

        * glib/tmpl/allocators.sgml, glib/tmpl/arrays.sgml,
        glib/tmpl/arrays_byte.sgml, glib/tmpl/arrays_pointer.sgml,
        glib/tmpl/caches.sgml, glib/tmpl/completion.sgml,
        glib/tmpl/conversions.sgml,
        glib/tmpl/datalist.sgml, glib/tmpl/date.sgml,
        glib/tmpl/error_reporting.sgml, glib/tmpl/fileutils.sgml,
        glib/tmpl/hash_tables.sgml,
        glib/tmpl/hooks.sgml, glib/tmpl/macros.sgml,
        glib/tmpl/macros_misc.sgml, glib/tmpl/main.sgml, glib/tmpl/markup.sgml,
        glib/tmpl/memory.sgml, glib/tmpl/memory_chunks.sgml,
        glib/tmpl/messages.sgml, glib/tmpl/misc_utils.sgml,
        glib/tmpl/modules.sgml, glib/tmpl/numerical.sgml,
        glib/tmpl/patterns.sgml, glib/tmpl/queue.sgml,
        glib/tmpl/shell.sgml, glib/tmpl/spawn.sgml,
        glib/tmpl/string_utils.sgml, glib/tmpl/thread_pools.sgml,
        glib/tmpl/threads.sgml, glib/tmpl/timers.sgml,
        glib/tmpl/trees-binary.sgml, glib/tmpl/trees-nary.sgml,
        glib/tmpl/type_conversion.sgml, glib/tmpl/unicode.sgml,
        glib/tmpl/warnings.sgml, glib/tmpl/windows.sgml:
        Improve markup of examples, general consistency improvements.
2001-12-12 20:32:07 +00:00
Manish Singh
a002781b6d fix typo (#if->#ifdef) so it compiles again.
*  glib/grand.c (g_rand_new): fix typo (#if->#ifdef) so it compiles again.

-Yosh
2001-09-27 22:22:02 +00:00
Bruno Haible
34462896a0 When the sublangid is SUBLANG_DEFAULT, return the locale of the language's
2001-09-24  Bruno Haible  <haible@clisp.cons.org>

	* glib/gwin32.c (g_win32_getlocale): When the sublangid is
	SUBLANG_DEFAULT, return the locale of the language's main country,
	not a country-neutral locale. E.g. "en_US" instead of "en". Add
	handling of LANG_SORBIAN. Fix typo for SUBLANG_CHINESE_SIMPLIFIED
	(China == CN, CH == Switzerland). Ignore empty environment
	variable values.

2001-09-28  Tor Lillqvist  <tml@iki.fi>

	* glib/makefile.{mingw,msc}.in: Add localcharset.o. Just copy the
	source file from libcharset and compile in this directory.

	* glib/giochannel.c: Mark rest of g_set_error strings for
	translation, too.

	* glib/giowin32.c: Add some debugging output functions, call them
	when debugging.
	(create_events, g_io_win32_msg_write): Free message fetched with
	g_win32_error_message ().
	(g_io_win32_check): Indentation fixes.
	(g_io_win32_fd_read,g_io_win32_sock_read): Don't always return
	G_IO_STATUS_NORMAL. Do return G_IO_STATUS_EOF if we got 0 bytes,
	like on Unix. This helps making the test programs run
	successfully.

	* glib/gmain.c (g_poll): Return the code ifdeffed out with
	TEST_WITHOUT_THIS. Can't remember why it was ifdeffed out. Things
	seem to work as previously with the code in place. Especially
	spawn-test didn't work with the code ifdeffed out (Bug#61067).

	* glib/grand.c (g_rand_new): Don't try to use /dev/urandom unless
	on Unix.

	* glib/gspawn-win32-helper.c (WinMain): Remove Sleep(10000)
	accidentally left in.

gthread:

2001-09-28  Tor Lillqvist  <tml@iki.fi>

	* gthread-win32.c: Use an extra level of indirection for GMutex.
	It is now a pointer either to a pointer to a CRITICAL_SECTION
	struct, or to a mutex HANDLE. This is needed in case the user
	defines G_ERRORCHECK_MUTEXES. G_MUTEX_SIZE must correctly reflect
	the size of *GMutex, but this used to vary depending on whether we
	at run-time chose to use CRITICAL_SECTIONs or mutexes.
	(g_mutex_free_win32_cs_impl, g_cond_free_win32_impl): Call
	DeleteCriticalSection() when done with it.

	* gthread-impl.c (g_thread_init_with_errorcheck_mutexes): Call
	g_thread_impl_init() before accessing
	g_thread_functions_for_glib_use_default, as the
	g_thread_impl_init() function might modify it.

po:

2001-09-28  Tor Lillqvist  <tml@iki.fi>

	* POTFILES.in: Add iochannel.c and giowin32.c.

	* sv.po: Remove a bogus fuzziness indicator.
2001-09-27 22:07:00 +00:00
Sebastian Wilhelmi
32241715f4 Updated G_RAND_DOUBLE_TRANSFORM to be more accurate. Redid g_rand_double()
2000-12-19  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* grand.c: Updated G_RAND_DOUBLE_TRANSFORM to be more
	accurate. Redid g_rand_double() such that it returns 52 bits after
	the point instead of 32 as before. That OTOH requires calling
	g_rand_int() twice. Overhauled g_rand_int_range(), which is easier
	now thanks to the new precision of g_rand_double(). Thanks to
	Sverre Johansen <sj@ifi.uio.no> for the hint.

	* grand.h: Added g_rand_boolean() and g_random_boolean()
	macros. While they could be omitted due to extreme simplicity,
	they make intention clearer in code and are therefore good to have.

	* grand.c, grand.h: Renamed all 'min' and 'max' parameters to'
	begin' and 'end' resp. to avoid making people think, that 'max' is
	included in the interval. 'end' now isn't, whereas 'begin'
	is. That's similar to the use in the STL.

	* glib/glib-sections.txt: Added g_rand_boolean and
	g_random_boolean macros.

	* glib/tmpl/random_numbers.sgml: Updated.
2000-12-19 15:57:53 +00:00
Sebastian Wilhelmi
eb27cad0f0 Added inline documentation.
2000-10-13  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* grand.c: Added inline documentation.

	* docs/refernce/glib/glib-sections.txt: Added misc items.

	* docs/refernce/glib/tmpl/random_numbers.sgml: Documentation for
        the random number generator.
2000-10-13 13:52:47 +00:00
Tim Janik
c9bd7542e1 applied patch from Andreas Persenius <ndap@swipnet.se> that updates the
Wed Jul 26 12:59:31 2000  Tim Janik  <timj@gtk.org>

        * *.[hc]: applied patch from Andreas Persenius <ndap@swipnet.se> that
        updates the license headers to the GNU Lesser General Public License,
        as well as updating the copyright year to 2000.
2000-07-26 11:02:02 +00:00
Sebastian Wilhelmi
028a71701c Fixed bug. Thanks to Marko Kreen <marko@l-t.ee> for reporting that.
2000-04-07  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* grand.c (g_rand_new): Fixed bug. Thanks to Marko Kreen
	<marko@l-t.ee> for reporting that.
2000-04-07 11:44:43 +00:00
Sebastian Wilhelmi
e435032d6e Use /dev/urandom, as it doesn't block, which /dev/random might do. Do not
1999-07-23  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* grand.c (g_rand_new): Use /dev/urandom, as it doesn't block,
	which /dev/random might do. Do not XOR the time, when getting the
	seed form /dev/urandom, as this is good itself. Prevent the
	initial seed from being zero, which causes the PRNG to produce
	only zeros. Hints from Colin Plumb <colin@pgp.com>.
1999-08-19 08:32:03 +00:00
Sebastian Wilhelmi
f80d6cc540 Finally removed the g_random_normal and g_rand_normal functions.
1999-06-30  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* glib.h, grand.c: Finally removed the g_random_normal and
	g_rand_normal functions.
1999-06-30 08:10:01 +00:00
Sebastian Wilhelmi
3aa65d30eb Moved struct declaration up. Style fixes.
1999-04-12  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* glib.h: Moved struct declaration up. Style fixes.

	* grand.c: Style fixes. Only try to open /dev/random once.

	* tests/rand-test.c (main): New tests; Slight bug fix.
1999-04-12 12:53:37 +00:00
Sebastian Wilhelmi
95aff22dff New files to implement the Mersenne Twister Pseudo Random Number
1999-04-09  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

	* grand.c, tests/rand-test.c: New files to implement the Mersenne
	Twister Pseudo Random Number Generator.

	* glib.h, AUTHORS, Makefile.am, tests/Makefile.am: Changed
	accordingly.
1999-04-09 14:40:58 +00:00