2006-08-22  Matthias Clasen <mclasen@redhat.com>

	* Branch for 2.12

2006-08-20  Tor Lillqvist  <tml@novell.com>

	* glib/gnulib/vasnprintf.c (vasnprintf): Fix crash when printing
	large 64-bit values on Win32 using the %I64x format. (#351034,
	Neil Piercy)

Wed Aug 16 13:59:07 2006  Tim Janik  <timj@gtk.org>

	* tests/gobject/Makefile.am:
	* tests/gobject/singleton.c: added test program which demonstrates
	and checks singleton construction.

2006-08-15  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbookmarkfile.c (g_bookmark_file_get_groups):
	* glib/gmain.c (g_source_is_destroyed): Add Since tags.
	* glib/gkeyfile.c (g_key_file_get_double_list): Fix
	Since tag.  (#351583, Brian Cameron)

	* configure.in: Bump version

	* === Released 2.12.2 ===

	* NEWS: Updates

2006-08-08  Emmanuele Bassi  <ebassi@gnome.org>

	* glib/gbookmarkfile.c (g_bookmark_file_remove_group)
	(g_bookmark_file_set_app_info): Plug a couple of leaks
	when removing data from a bookmark.

2006-08-05  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbookmarkfile.c (find_file_in_data_dirs): Correct the
	grammar of an error message.  (#349792, Jakub Friedl)

	* glib/gkeyfile.c (g_key_file_to_data): Don't insert unnecessary
	newlines in keyfiles.  (#349825, Chris Wilson)

	* glib/guniprop.c (g_unichar_toupper, g_unichar_tolower) 
	(real_toupper, real_tolower): If a character can't be converted,
	don't replace it with a NUL byte, but leave it unchanged.  
	(#348491, Nikolai Weibull)

	* tests/unicode-caseconv.c: Adapt to this change. 

	* tests/unicode-caseconv.c (main): Add a comment to point out
	a quirk in the test data that we are working around here.

2006-07-31  Behdad Esfahbod  <behdad@gnome.org>

	* glib/guniprop.c (g_unichar_isxdigit): Make it only accept those
	characters that we accept i g_unichar_xdigit_value(), i.e. don't
	accept non-decimal digits. (#347842, Nikolai Weibull)

2006-07-31  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gunidecomp.c (_g_utf8_normalize_wc): Update to reflect Unicode
	PR #29 (#348694, Nikolai Weibull)

	* tests/unicode-normalize.c (encode), (test_form): Make output more
	useful, reporting the unexpected output of the test.

2006-07-24  Tor Lillqvist  <tml@novell.com>

	* tests/slice-test.c: Use g_get_current_time() insted of
	gettimeofday().

2006-07-22  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.12.1 ===

	* glib/gconvert.c: Fix the prototype of _g_charset_get_aliases.
	(#346494, Thomas Klausner)

	* NEWS: Updates

2006-07-21  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gmirroringtable.h: Updated to Unicode Character Database 5.0.0.

2006-07-20  Matthias Clasen  <mclasen@redhat.com>

	* glib/guniprop.c (real_toupper, real_tolower): Small optimization.
	(#348011, Nikolai Weibull)

2006-07-19  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gunibreak.h:
	* glib/gunichartables.h:
	* glib/gunicomp.h:
	* glib/gunidecomp.h:
	Update to final Unicode Character Database 5.0.0. (#336281)

2006-07-06  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gutils.c (g_parse_debug_string): When matching debug flag keys, 
	ignore case and accept any of comma, colon, semicolon, space, and tab
	as separators.  Also, match dash with underscore.

2006-07-05  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbase64.c: Fix typos in the docs.  (#346660, Mark
	Drago)

2006-07-03  Runa Bhattacharjee <runabh@gmail.com>

	* configure.in: Added Bengali India (bn_IN) in ALL_LINGUAS.

2006-07-02  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.12.0 ===

2006-06-30  Matthias Clasen  <mclasen@redhat.com>

	* NEWS: Updates

	* configure.in: Set version to 2.12.0

2006-06-20  Matthias Clasen  <mclasen@redhat.com>

	* glib/gtimer.c (mktime_utc): Fix an off-by-2 error
	in the leap year calculation.  (#344905, Dan Winship)

	* tests/testglib.c (main): Change the test data for
	the g_time_val_from_iso8601 tests to expose an off-by-2
	error in the leap year calculation.

	* configure.in: Bump version

	* === Released 2.11.4 ===

	* NEWS: Updates

2006-06-16  Matthias Clasen  <mclasen@redhat.com>

	* tests/file-test.c (test_mkstemp): Add tests.

	* glib/gfileutils.c (g_mkstemp): Allow the XXXXXX to occur
	inside the template, not just at the end.  

2006-06-14  Matthias Clasen  <mclasen@redhat.com>
	
	* glib/gkeyfile.c (g_key_file_to_data): Separate groups by
	an empty line  (#344868, Christian Persch)

2006-06-14  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (g_listenv): Add Windows notes to doc comment.

2006-06-12  Emmanuele Bassi  <ebassi@cvs.gnome.org>

	* glib/gbookmarkfile.h:
	* glib/gbookmarkfile.c (g_bookmark_file_remove_item): Return
	a boolean instead of void.

	* tests/bookmarkfile-test.c (test_modify): Add a test case
	for g_bookmark_file_remove_item().

2006-06-12  Matthias Clasen  <mclasen@redhat.com>

	* Bump version

	* === Released 2.11.3 ===

	* NEWS: Updates

2006-06-09  Emmanuele Bassi  <ebassi@cvs.gnome.org>

	* glib/gbookmarkfile.c (g_bookmark_file_remove_application): Use
	an empty string to pass the test in set_app_info.

	(g_bookmark_file_move_item): Remove the old item from the
	look up table; return success in case of empty target.

2006-06-08  Tor Lillqvist  <tml@novell.com>

	* glib/gunicollate.c (msc_strxfrm_wrapper): Workaround for bug in
	strxfrm() in Microsoft's newer C runtimes. (#343919, Kazuki
	Iwamoto)

2006-06-05  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.11.2 ===

	* configure.in: Set interface age to 0.

	* NEWS: Updates

	* glib/gmain.c: Fix some doc formatting issues.

	* glib/gstrfuncs.c: Revert accidental commit.

	* glib/gmain.c (get_dispatch): Don't leak the
	dispatch struct.  (#321886)

	* tests/strtod-test.c: Add some tests involving
	leading whitespace.

	* glib/gstrfuncs.c (g_ascii_formatd): Skip leading 
	whitespace.  (#343899, Øystein Johansen)

2006-06-01  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmain.h: 
	* glib/gmain.c: Add three new functions, 
	g_main_current_source, g_source_set_funcs and 
	g_source_is_destroyed, that will be necessary to 
	solve thread-safety issues with idles in GTK+.  
	(#321886, Chris Wilson)

2006-06-01  Matthias Clasen  <mclasen@redhat.com>

	* glib/giochannel.c (g_io_channel_write_chars): Avoid
	running in an assertion with small writes.  (#343566, Chris
	Wilson)

	* tests/iochannel-test.c: Add a testcase for small writes.

	* glib/glib.symbols: 
	* glib/ghash.h: 
	* glib/ghash.c: Add g_hash_table_{remove,steal}_all to
	remove all nodes from a hash table.  (#168538, Matt Barnes)

2006-06-01  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gkeyfile.c (g_key_file_to_data),
	(g_key_file_parse_value_as_comment),
	(g_key_file_parse_comment_as_value):
	* glib/gscanner.c (g_scanner_get_token_ll): Cleanup. Use return
	value of g_string_free(...). (#343548, Chris Wilson)

2006-05-28  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmarkup.c (g_markup_parse_context_parse): 
	Don't use g_str_has_{prefix,suffix} here.

2006-05-28  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmarkup.h: Add a GMarkupParseFlags flag for
	treating CDATA as text. 

	* glib/gmarkup.c (g_markup_parse_context_parse): 
	Implement it here.

2006-05-28  Matthias Clasen  <mclasen@redhat.com>

	* tests/markups/expected-*: Output that test-markup
	is expected to produce when run on the valid gmarkup 
	examples.

	* tests/markup-test.c: Only dump the results of the
	first, unchunked parse, to compare it against the expected
	output. 

	* tests/run-markup-tests.sh: For valid examples, compare
	the output of test-markup against the corresponding
	expected-<n> file.
	
2006-05-24  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Don't compile timeloop on Minix. 
	(Leonard den Ottolander)

2006-05-22  Sebastian Wilhelmi  <wilhelmi@google.com>

	* glib/gthread.c (g_thread_init_glib): Run _g_atomic_thread_init
	as the first of the full fledged initializers to allow the later
	to potentially use atomic ints (which they currently do
	not). (#342563, Peter Kjellerstedt)

2006-05-16  Matthias Clasen  <mclasen@redhat.com>

	* tests/Makefile.am: 
	* tests/strtoll-test.c: Add tests for g_ascii_strtoll()
	and g_ascii_strtoull().

	* glib/glib.symbols:
	* glib/gstrfuncs.h: 
	* glib/gstrfuncs.c (g_ascii_strtoll): New function to
	parse signed 64bit integers like strtoll does.  

	* glib/goption.c (parse_int64): Use g_ascii_strtoll(),
	since strtoll() is C99 and not available on some
	systems.  (#341826, Kazuki Iwamoto)

2006-05-15  Matthias Clasen  <mclasen@redhat.com>
	
	* configure.in: Bump version

	* === Released 2.11.1 ===

	* NEWS: Updates

2006-05-13  Matthias Clasen  <mclasen@redhat.com>

	* glib/grel.c: Fix several cases of deref-before-NULL-check.
	(#341191, Pascal Terjan)

	* glib/glib.symbols: 
	* glib/goption.h: 
	* glib/goption.c: Allow optional summary and description
	texts before and after the option descriptions, and add
	a way to translate them.  (#336120, Behdad Esfahbod)

2006-05-12  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c (g_io_win32_sock_set_flags): Implement
	setting/clearing G_IO_FLAG_NONBLOCK for channels attached to
	sockets. (#341192)
	(g_io_win32_unimpl_set_flags): set_flags method for the
	unimplemented case.
	
2006-05-11  Bastien Nocera  <hadess@hadess.net>

	* glib/goption.c: (parse_int64), (parse_arg), (free_changes_list):
	* glib/goption.h:
	* tests/option-test.c: (arg_test6), (main): add an int64 type for
	GOption (G_OPTION_ARG_INT64) (#341237)

2006-05-10  Sebastian Wilhelmi  <wilhelmi@google.com>

	* glib/gthread.h, gthread/gthread-impl.c: Make the magic and
	location arguments to the error-checking-mutex functions const and
	do not write to them, as we might not own them. Clean up the
	error-checking-mutex code quite a bit. (#335198, Chris Wilson)

	* glib/gthread.c: Use g_atomic_pointer_set instead of old
	homegrown version now that we have it. (#335198, Chris Wilson)

	* gthread/gthread-posix.c, gthread/gthread-win32.c: Prevent
	calling into g_cond_wait resp. g_mutex_lock/unlock directly to
	avoid recursions into the errorcheking mutex code (and out of
	principle anyway). (#335198, Chris Wilson)

	* tests/errorcheck-mutex-test.c: Adapt to GLib coding standards.

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. (#311043, jylefort@FreeBSD.org)

	* tests/Makefile.am, tests/errorcheck-mutex-test: New test program
	to test for all checked violations.

	* glib/gprintf.c, glib/gspawn-win32.c, glib/gutf8.c,
	gthread/gthread-impl.c, gthread/gthread-posix.c,
	gthread/gthread-win32.c: Use canonical include form for internal
	headers. config.h is always there.

	* Remove obsolete gthread/gthread-solaris.c.

2006-05-08  Matthias Clasen  <mclasen@redhat.com>

	* tests/convert-test.c (test_one_half): Use encoding names which 
	may work better on Solaris.  (#340434, Alessandro Vesely)

	* tests/keyfile-test.c (test_number): Add some tests for
	invalid floating point numbers.

	* glib/gkeyfile.c (g_key_file_parse_value_as_double): Return
	an error for the empty string.  (#339105, Morten Welinder)

	* glib/gscanner.c (g_scanner_config_template): Make const,
	noticed by Kjartan Maraas.

2006-05-06  Matthias Clasen  <mclasen@redhat.com>

	* glib/gkeyfile.c (g_key_file_set_string_list)
	(g_key_file_set_locale_string_list): Fix invalid memory
	reads.  (#340816, Nick Treleaven)

2006-05-04  Alexander Larsson  <alexl@redhat.com>

	* glib/gbase64.c: (g_base64_decode_step):
	Fix OOB write (#340538)

2006-05-03  Matthias Clasen  <mclasen@redhat.com>

	* tests/base64-test.c: Add some more tests.

	* glib/gbase64.c (g_base64_decode_step): Avoid writing
	beyond the guaranteed lenght of the output buffer, if
	there is padding.

	* tests/base64-test.c (test_incremental): Use malloced memory
	instead of stack-allocated, so that MALLOC_CHECK_=2 catches
	the OOB write...

	* glib/gbookmarkfile.c (g_bookmark_file_load_from_data): Remove
	an overzealous return_if_fail check that causes make check to 
	fail.

2006-05-02  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version
	
	* === Released 2.11.0 ===

	* NEWS: Updates

	* tests/casemap.txt: 
	* tests/casefold.txt: Regenerate from Unicode 5.0 data. 

	* glib/guniprop.c: Make interval_compare static.

Tue May  2 15:00:00 2006  Tim Janik  <timj@gtk.org>

	* tests/gobject/deftype.c: added test code from Behdad Esfahbod, 
	see #337128.

Tue May  2 14:18:25 2006  Tim Janik  <timj@gtk.org>

	* glib/goption.c (g_option_context_parse): fixed leak in short
	option parsing. rewrote parts of the code to be more concise to
	enhance readability. fixed exaggerated uses of strlen.

2006-04-28  Behdad Esfahbod  <behdad@gnome.org>

	* glib/guniprop.c: #include <stdlib.h>

2006-04-27  Matthias Clasen  <mclasen@redhat.com>

	* glib/glib.symbols: Add g_unichar_iswide_cjk.
	* glib/guniprop.c: Add a "Since: 2.12".

	* NEWS: Updates

2006-04-27  Behdad Esfahbod  <behdad@gnome.org>

	* docs/reference/glib/glib-sections.txt,
	* glib/gunicode.h glib/guniprop.c: Implement g_unichar_iswide_cjk().
	(#105626)

2006-04-27  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbookmarkfile.c (g_bookmark_file_set_description) 
	(g_bookmark_file_set_title, g_bookmark_file_set_icon): 
	Remove some special-casing of empty string which led to 
	dangling pointers.  (#339337, Morten Welinder)
	(expand_exec_line): Don't use printf() needlessly, handle
	trailing '%' gracefully.  (#339338, Morten Welinder)
	(is_element_full): Silence the compiler.
	(g_bookmark_file_dump, bookmark_metadata_dump): 
	(bookmark_app_info_dump): Escape strings before dumping 
	them in xml.  (#339340, Morten Welinder)

2006-04-27  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gunibreak.h, glib/gunichartables.h: Regenerated using
	Unicode Character Database 5.0 beta.

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-25  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbookmarkfile.c (is_element_full): Avoid a possible
	NULL dereference (found by Coverity), also avoid some 
	pointless strdups.

	* tests/keyfile-test.c (test_comments): Add a test for
	the previous change.

	* glib/gkeyfile.c (g_key_file_lookup_group_node): Remove
	redundant code.
	(g_key_file_get_group_comment): Don't dereference before
	checking for NULL.  (#338572, Coverity, Pascal Terjan)

2006-04-19  Matthias Clasen  <mclasen@redhat.com>

	* glib/gdataset.c: Add some missing Since: 2.8 tags.

2006-04-19  Tor Lillqvist  <tml@novell.com>

	* glib/gatomic.c: Adapt to the changed prototype of
	InterlockedCompareExchange() in newer SDKs. Use
	InterlockedCompareExchangePointer() when applicable. (#155884,
	John Ehresman)

2006-04-18  Matthias Clasen  <mclasen@redhat.com>

	* glib/gkeyfile.h:
	* glib/glib.symbols:
	* glib/gkeyfile.c: Add api to get and set doubles and 
	lists of doubles.  (#164719, Maurizio Monge, Dom Lachowicz)

	* tests/keyfile-test.c: Add tests for new api.

	* glib/gkeyfile.c (g_key_file_add_group): Accept duplicate
	groups.  (#157877, Sebastien Bacher)

	* tests/keyfile-test.c: Add tests for duplicate key and
	duplicate group handling.

2006-04-17  Matthias Clasen  <mclasen@redhat.com>

	* glib/gcompletion.c (g_completion_complete_utf8): Make passing
	NULL for new_prefix work as documented.  (#338845, Yevgen Muntyan)

	* tests/completion-test.c: Test that passing NULL for 
	new_prefix in g_completion_complete_utf8 works.

2006-04-17  Kjartan Maraas  <kmaraas@gnome.org>

	* configure.in: Remove obsolete entry for no_NO.
	* po/no.po: And the translation.

2006-04-16  Matthias Clasen  <mclasen@redhat.com>

	* glib/gdate.c (g_date_fill_parse_tokens): Avoid an array
	overrun.  (Coverity, fix by Pascal Terjan)

2006-04-12  Bastien Nocera  <hadess@hadess.net>

	reviewed by: Matthias Clasen <mclasen@redhat.com>

	* glib/gconvert.c: add more details about which RFC is concerned
	when using g_filename_to_uri (#337553)

2006-04-12  Matthias Clasen  <mclasen@redhat.com>

	* glib/goption.c (parse_arg): Add an assert to make it
	clear when value can be NULL.

2006-04-07  Martyn Russell  <martyn@imendio.com>

	* tests/threadpool-test.c: (test_thread_stop_unused): Removed an
	assertion which can fail and is not a critical test.

2006-04-07  Hans Breuer  <hans@breuer.org>

	* glib/makefile.msc.in : added gbase64.obj and derive the static libs
	name from auto* variables
	* glib/makefile.msc.in : link user32.lib for MessageBox()

2006-04-07  Martyn Russell  <martyn@imendio.com>

	* glib/gasyncqueue.[ch]: Added private API
	_g_async_queue_get_mutex so that g_thread_pool_free() can use the
	async queue mutex. 
	
	* glib/gthreadpool.c: Make sure
	g_thread_pool_stop_unused_threads() actually stops unused threads
	and global limits (like max idle time and max unused threads) can
	be set without creating a thread pool first. Fixed #335215 (patch
	from Chris Wilson).  
	
	* tests/threadpool-test.c: Added two new tests, tests setting
	global limits before creating a thread pool. The second test
	makes sure unused threads are actually stopped when using the
	g_thread_pool_stop_unused_threads(). 

2006-04-05  Matthias Clasen  <mclasen@redhat.com>

	* glib/gnulib/vasnprintf.c (vasnprintf): Make
	long long printing work if snprintf is not 
	available.  (#332841, Michael McDonald)

2006-04-05  Behdad Esfahbod  <behdad@gnome.org>

	* tests/option-test.c: Check the return value of g_get_prgname for
	NULL before passing to strcmp.

	* tests/slice-test.c: Report the correct name in Usage summary.

2006-04-05  Matthias Clasen  <mclasen@redhat.com>

	* tests/run-collate-tests.sh: Fix up shell script.

	* tests/option-test.c (arg_test5): Skip the test if
	setting the locale fails.
	(empty_test1): Reset prgname before the test.

	* tests/Makefile.am: Arrange for run-bookmark-test.sh
	to be run by make check.

	* tests/utf8-pointer.c: 
	* tests/tree-test.c: Silence warnings.

2006-04-04  Matthias Clasen  <mclasen@redhat.com>

	* glib/glib.symbols:
	* glib/gbase64.[hc]: Add G_GNUC_MALLOC where
	appropriate, use glib types.

2006-04-04  Alexander Larsson  <alexl@redhat.com>

	* glib/Makefile.am:
	* glib/gbase64.[ch]:
	* glib/glib.symbols:
	Add base64 encode/decode functions
	
	* glib/glib.h:
	Include gbase64.h
	
	* tests/Makefile.am:
	* tests/base64-test.c:
	Tests for base64 functions

2006-04-04  Matthias Clasen  <mclasen@redhat.com>

	* glib/gdate.c: Move short_month_names and long_month_names
	to bss.

	* glib/gspawn-win32.c (g_spawn_error_quark):
	* glib/gspawn.c (g_spawn_error_quark):
	* glib/gshell.c (g_shell_error_quark):
	* glib/gmarkup.c (g_markup_error_quark):
	* glib/goption.c (g_option_error_quark):
	* glib/gkeyfile.c (g_key_file_error_quark):
	* glib/giochannel.c (g_io_channel_error_quark):
	* glib/gfileutils.c (g_file_error_quark):
	* glib/gconvert.c (g_convert_error_quark):
	* glib/gbookmarkfile.c (g_bookmark_file_error_quark):
	* glib/gthread.c (g_thread_error_quark): No point in making
	the error path fast by caching quarks.

	* glib/gbookmarkfile.c: Make the parser struct const.

2006-04-04  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gbookmarkfile.c: Fix accidentally broken build.

2006-04-03  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbookmarkfile.c: Don't include sys/time.h  (#337027,
	 Kazuki IWAMOTO)

2006-03-31  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_remove): Revert change below. It wasn't a good
	idea after all, says the original bug reporter. See bug for
	discussion.

2006-03-30  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_remove): [Win32] call rmdir() only if remove()
	fails with errno set to ENOENT, to leave errno set to EACCESS if
	that is the problem. (#334799, Yevgen Muntyan)

2006-03-30  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbookmarkfile.c (g_bookmark_file_get_app_info): Sync
	the parameter names with the .h files, otherwise gtk-doc
	misbehaves.

2006-03-27  Emmanuele Bassi  <ebassi@cvs.gnome.org>

	* tests/.cvsignore: Add bookmarkfile-test to the ignored files.

2006-03-27  Emmanuele Bassi  <ebassi@cvs.gnome.org>

	* tests/Makefile.am:
	* tests/bookmarkfile-test.c:
	* tests/run-bookmark-test.sh:
	* tests/bookmarks/*.xbel: Add test suite for GBookmarkFile.

2006-03-27  Emmanuele Bassi  <ebassi@cvs.gnome.org>

	* docs/reference/glib/glib-docs.sgml:
	* docs/reference/glib/glib-sections.txt:
	* docs/reference/glib/tmpl/bookmarkfile.sgml: Add documentation for
	GBookmarkFile to GLib's reference guide.

2006-03-27  Emmanuele Bassi  <ebassi@cvs.gnome.org>

	* glib/glib.h:
	* glib/gbookmarkfile.h
	* glib/gbookmarkfile.c: Add GBookmarkFile, a parser for files
	containing bookmarks stored using the Desktop Bookmark
	specification. Fixes bug #327662.

	* glib/glib.symbols:
	* glib/Makefile.am:
	* glib/makefile.msc.in:
	* glib/makefile.mingw.in: Build glue for GBookmarkFile.

2006-03-27  Dom Lachowicz  <cinamod@hotmail.com>

	* tests/option-test.c: Copy-and-paste error slipped into test5. Enable
	test5, as per Matthias' comments in bug 329548#c11.

	Change a gboolean to an int. Fixes bug #329789.

	* configure.in: Bump version number to 2.11.0
	
2006-03-27  Matthias Clasen  <mclasen@redhat.com>

	Add support for floating point numbers to goption.
	(#329548, Behdad Esfahbod, patch by Antoine Dopffer and 
	 Dom Lachowicz)

	* glib/goption.h:
	* glib/goption.c: Support double arguments.

	* tests/option-test.c: Test double arguments.`

2006-03-26  Matthias Clasen  <mclasen@redhat.com>

        * glib/goption.c (g_option_context_new): Improve the description
        of parameter_string in the docs.  (#336085, Claudio Saavedra)

2006-03-24  Martyn Russell  <martyn@imendio.com>

	* glib/gthreadpool.c: Updated the documentation to explain that
	when the maximum threads is > 1 the sort functionality is not 100%
	accurate due to the ramdom nature of the scheduler choosing which
	threads to execute. Fixes bug #334943.

	* tests/threadpool-test.c: Disabled the debugging by default and
	fixed the sort test to set the maximum threads to 1 to guarantee
	the thread entry function is called in order. 

2006-03-23  Matthias Clasen  <mclasen@redhat.com> 

	=== Branch for 2.10 ===
