2007-11-24  Matthias Clasen  <mclasen@redhat.com>

	* NEWS: Updates

2007-11-24  Matthias Clasen  <mclasen@redhat.com>

	Merge from trunk:

	* glib/gbase64.c (g_base64_encode): Don't refuse to encode
	a single byte.  (Milan Crha)

	* tests/base64-test.c: Test encoding short strings.

2007-11-24  Matthias Clasen  <mclasen@redhat.com>

	Merge from trunk:

	* glib/goption.c: Use g_print to print out --help text in
	locale encoding.  (#469551, Takao Fujiwara)

2007-11-24  Matthias Clasen  <mclasen@redhat.com>

	Merge from trunk:

	* glib/gkeyfile.c: Set length out param in list-returning functions
	to 0 when returning NULL.  (#498728, Christian Persch)

2007-11-24  Matthias Clasen  <mclasen@redhat.com>

	Merge from trunk:

	* configure.in: Check whether assembler supports numerical local
	labels.

	* glib/gatomic.c: Fix powerpc implementation of atomic for
	platforms where the assembler doesn't support numerical local
	labels.  (#445362)

2007-11-19  Marco Barisione  <marco@barisione.org>

	Merge from trunk:

	* glib/gregex.c: When the compilation of a pattern fails in the error
	message use the character offset and not the byte offset.

	* glib/gregex.c: Pass an unsigned long instead of an int to
	pcre_fullinfo() to avoid problems on 64-bit systems (#498113, Kouhei
	Sutou)

2007-11-13  Cody Russell  <bratsche@gnome.org>

	Merge from trunk:

	* docs/reference/gobject/gobject-docs.sgml:
	* docs/reference/gobject/tut_gsignal.xml:
	* docs/reference/gobject/tut_gtype.xml:
	* docs/reference/gobject/tut_intro.xml:
	* docs/reference/gobject/tut_tools.xml:
	* docs/reference/gobject/tut_howto.xml:
	* docs/reference/gobject/tut_gobject.xml: Documentation fixes.
	Recommend macro type names such as NAUTILUS_TYPE_WINDOW (not
	NAUTILUS_WINDOW_TYPE).  Fixed text which erroneously stated that 
	superclass initializers don't run when an object is 
	instantiated.  Fixed numerous spelling mistakes.  Minor grammar 
	edits. (#490637, Adam Dingle)

2007-11-09  Matthias Clasen <mclasen@redhat.com>

	* configure.in: Revert an accidental merge, noticed by Fred Peters.

2007-11-08  Matthias Clasen <mclasen@redhat.com>

	Merge from trunk:

	* glib/gconvert.c (g_convert_with_iconv): Try harder to reset
	shift state with AIX iconv().  (#467537)

2007-11-08  Matthias Clasen <mclasen@redhat.com>

	Merge from trunk:

	* configure.in:
	* m4macros/glib-2.0.m4: Require pkg-config 0.16 in configure
	and in AM_PATH_GLIB_2_0 to be consistent with the use of
	PKG_PROG_PKG_CONFIG which was introduced in 0.16.  (#418778,
	Loïc Minier)

2007-11-08  Matthias Clasen <mclasen@redhat.com>

	Merge from trunk:

	* glib/gstrfuncs.c (g_parse_long_long): Don't leave
	out parameters uninitialized.  (#490061, Benjamin Otte)

2007-11-07  Matthias Clasen <mclasen@redhat.com>

	=== Branch for 2.14 ===

2007-11-07  Matthias Clasen <mclasen@redhat.com>

	* glib/gspawn.c (g_spawn_async_with_pipes): Slightly improve
	the wording of the docs.  (#492677, Areg Beketovski)

2007-11-07  Matthias Clasen <mclasen@redhat.com>

	* glib/pcre/Makefile.am: Add an include to fix builddir != srcdir
	builds.  (#494602, Yevgen Muntyan)

2007-11-07  Tor Lillqvist  <tml@novell.com>

	* glib/update-pcre/notdll.patch: Not needed, just use -DPCRE_STATIC.

	* glib/update-pcre/Makefile.am: Drop notdll.patch.

	* glib/update-pcre/Makefile.am-1
	* glib/update-pcre/update.sh
	* glib/pcre/Makefile.am
	* glib/Makefile.am: Use -DPCRE_STATIC.

	* tests/gio-test.c
	* tests/mainloop-test.c
	* tests/spawn-test.c: #define pipe(fds) _pipe(fds, 4096,
	_O_BINARY) on Windows

	* tests/regex-test.c (test_expand): Don't print NULL with %s.

2007-11-07  Matthias Clasen <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.14.3 ===

	* NEWS: Updates

2007-11-06  Matthias Clasen <mclasen@redhat.com>

	* glib/pcre/*: Update the internal copy of PCRE to 7.4

2007-10-22  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (_glib_gettext): Plug small one-time leak on
	Windows. (#488068, Daniel Atallah)

2007-10-21  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gdate.c (g_date_strftime):
	* glib/gmain.c (g_main_context_check):
	* glib/gregex.c (g_match_info_fetch_all), (g_regex_split_full):
	* glib/gthread.c (g_once_init_enter_impl), (g_once_init_leave):
	* glib/gthread.h:
	* glib/gutf8.c (g_utf16_to_utf8), (g_utf16_to_ucs4):
	* tests/errorcheck-mutex-test.c (lock_locked_mutex),
	(trylock_locked_mutex), (unlock_unlocked_mutex),
	(free_locked_mutex), (wait_on_unlocked_mutex),
	(wait_on_otherwise_locked_mutex), (timed_wait_on_unlocked_mutex),
	(timed_wait_on_otherwise_locked_mutex):
	Fix warnings from sparse. (#487491, Kjartan Maraas)

2007-10-17  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

2007-10-16  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.14.2 ===

	* NEWS: Updates

	* configure.in: Check for sys/resource.h

	* glib/gspawn.c: Improve the fdwalk implementation on Linux
	to only walk over actually open file descriptors. (#469231, 
	Lennart Poettering)

2007-10-13  Sven Herzberg  <herzi@gnome-de.org>

	Reviewed by Tim Janik.

	Created marshallers that don't throw gcc warnings when compiling with
	-WUnused (fixes #359165).

	* gobject/glib-genmarshal.c: decorate return_value and invocation_hint
	with G_GNUC_UNUSED

2007-10-04  Tor Lillqvist  <tml@novell.com>

	* glibconfig.h.win32.in: Always define G_CAN_INLINE. Even MSVC6 is
	capable of inlining. (#483337, Steve Lhomme)

2007-09-19  Behdad Esfahbod  <behdad@gnome.org>

	* glib/ghook.c (g_hook_free): Check for NULL finalizer. (#476849, Areg
	Beketovski)

2007-09-19  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.14.1 ===

2007-09-16  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.h (GUserDirectory): Fix doc formatting.
	* glib/gmain.c (g_main_depth): Fix doc formatting.

2007-09-16  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Replace -pthread by -lpthread for 
	Freebsd, too.  (#475619, Roy Marples)

2007-09-16  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: When compiling against system pcre, 
	add a private dependency to the pc file. This should
	fix static builds with system pcre.  (#475923)

	* glib-2.0.pc.in: Add a Requires.private line

2007-09-16  Matthias Clasen  <mclasen@redhat.com>

	* NEWS: Updates

2007-09-14 15:07:28  Tim Janik  <timj@gtk.org>

	* glib/gutf8.c (g_utf8_strreverse): applied fix for bug #476840.

	* tests/utf8-pointer.c (test_misc): added test for g_utf8_strreverse().

2007-09-11  Marco Barisione <marco@barisione.org>

	* glib/Makefile.am:
	* configure.in: propagate the pcre flags to libglib and not to all
	parts of glib. (#475854, dmacks@netspace.org)

	* configure.in: fix a typo in the previous commit. (#475854, comment
	#4)

2007-09-11  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Define G_ATOMIC_ARM.

	* glib/gatomic.c: Add Arm implementation of atomic
	operations.  (#457601, Jussi Laako)

2007-09-10  Marco Barisione <marco@barisione.org>

	* glib/gregex.c: define PCRE_ERROR_NULLWSLIMIT if it's not defined by
	PCRE, has PCRE 7.3 removed this definition. (#475474)
	* configure.in: bump PCRE requirement to version 7.2.
	* glib/gregex.c: use pcre_get_stringnumber() in
	get_matched_substring_number() if G_REGEX_DUPNAMES was not set.
	(#444765, Yevgen Muntyan)
	* glib/gregex.c: change the type of ref_count from guint to gint, so
	we can remove some ugly casts.

2007-09-05  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gregex.c: Fix header inclusion. (#473879, Peter Kjellerstedt)

Wed Aug 29 12:08:40 2007  Tim Janik  <timj@imendio.com>

	* glib/gthread.h (g_once_init_enter): fixed compiler warning about
	loosing volatile qualifier, bug #457641.

2007-08-24  Michael Natterer  <mitch@imendio.com>

	* glib/gslice.[ch]: make g_slice_copy() take a gconstpointer
	instead of a gpointer.

2007-08-22  Cody Russell  <bratsche@gnome.org>

	* glib/gprintf.c: Document all printf functions to use
	"bytes" terminology rather than "characters". (#469051)

2007-08-20  Behdad Esfahbod  <behdad@gnome.org>

	* glib/guniprop.c: Document that g_unichar_get_script() is
	equivalent to pango_script_for_unichar().

2007-08-20  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gmappedfile.c:
	* glib/gregex.c:
	* glib/gstdio.c:
	Fix typos (#468694).

2007-08-14  Cody Russell  <bratsche@gnome.org>

	* gobject/gsignal.c: g_type_default_interface_ref() was not
	ensuring working g_signal_list_ids.  Added checks for
	!G_TYPE_IS_INTERFACE (itype).
	(#465625, by some guy who calls himself Yeti)

Tue Aug 14 02:06:10 2007  Tim Janik  <timj@imendio.com>

	* glib/gthread.c (g_once_init_enter_impl): prevent race covered
	by g_once_init_enter(), by checking for previous initializations
	before entering initialisation branch.

	* tests/onceinit.c: added multi-thread/multi-initializer stress test
	using unoptimized g_once_init_enter_impl().

Mon Aug 13 14:30:15 2007  Tim Janik  <timj@imendio.com>

	* tests/onceinit.c (main): fixed array size typo.

Mon Aug 13 14:21:44 2007  Tim Janik  <timj@imendio.com>

	* tests/onceinit.c: test g_once_init_*() before and after
	g_thread_init() and test concurrency resolution.

Mon Aug 13 14:18:22 2007  Tim Janik  <timj@imendio.com>

	* glib/gthread.c (g_thread_create_full): prevent linking a freed
	GThread	structure into global thread list in error cases.

2007-08-08  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmarkup.c (append_escaped_text): Handle restricted
	characters by converting them to numeric character 
	entities.  (#464145, Andreas Monitzer)

	* tests/markup-escape-test.c: Add tests for restricted
	characters and numeric character entities. 

2007-08-08  Matthias Clasen  <mclasen@redhat.com>

	* glib/glib.symbols:
	* glib/Makefile.am:
	* glib/abicheck.sh: Make it work regardless of --enable-debug

2007-08-08  Tristan Van Berkom <tvb@gnome.org>

	* docs/reference/gobject/tmpl/gparamspec.sgml: Fixed minor typo in docs.

2007-08-07  Matthias Clasen  <mclasen@redhat.com>

	* MAINTAINERS: Update for new format regulations

2007-08-03  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.14.0 ===

	* NEWS: Updates

	* configure.in: Bump version to 2.14.0

2007-08-03  Matthias Clasen  <mclasen@redhat.com>

	* glib/gregex.c: Revert the J handling change,
	since it doesn't work.

2007-08-03  Matthias Clasen  <mclasen@redhat.com>

	* glib/gregex.c: Fix a C99ism.  (#462549, Kazuki IWAMOTO)

2007-08-03  Matthias Clasen  <mclasen@redhat.com>

	* glib/gregex.c: Handle J changes in the pattern
	correctly.  (#444765, Yevgen Muntyan)

2007-08-03  Pramod Raghavendra  <pramodleo@yahoo.co.uk>

	* configure.in: Added kn to ALL_LINGUAS

2007-08-01  Tor Lillqvist  <tml@novell.com>

	* glib/update-pcre/notdll.patch: Update so it applies again.

	* glib/pcre/pcre.h: Corresponding change.

	* glib/gutils.c (get_special_folder): Drop leftover use of a
	union.

	* glibconfig.h.win32.in: Update to match what configure produces.

2007-07-31  Matthias Clasen  <mclasen@redhat.com>

	* glib/pcre/*: Update the internal PCRE to 7.2

2007-07-31  Matthias Clasen  <mclasen@redhat.com>

	* glib/pltcheck.sh: Fix some glitches

	* glib/gregex.c: Remove debug spew

2007-07-21  Matthias Clasen  <mclasen@redhat.com>

	* glib/gunidecomp.c:
	* glib/gregex.c:
	* glib/gstring.c: Various doc cleanups.

2007-07-20  Alexander Larsson  <alexl@redhat.com>

        * configure.in:
	Add goffset type (64bit file size)
	Add G_MAXSSIZE and G_MINSSIZE

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

	* glib/glib.symbols: Fix the build.

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

	* glib/glib.symbols:
	* glib/gunicode.h:
	* glib/gunicodeprivate.h:
	* glib/gunidecomp.c (g_unichar_combining_class):
	* glib/guniprop.c (has_more_above):
	Make g_unichar_combining_class() public. (#453998)

Fri Jul 13 01:01:46 2007  Tim Janik  <timj@imendio.com>

	* glib/gthread.[hc]: more atomic ops pointer cast fixes. this time it'll
	work with atomic op macros *and* atomic op functions.

Fri Jul 13 00:50:40 2007  Tim Janik  <timj@imendio.com>

	* glib/gthread.[hc]: fixed missing pointer casts when using atomic ops.

2007-07-12  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.13.7 ===

	* NEWS: Updates

Thu Jul 12 17:31:08 2007  Tim Janik  <timj@imendio.com>

	* tests/slice-concurrent.c: beautified output somewhat. fixed long
	sleeps by reducing sleep accumulating and using randomized re-scheduling
	(which works on UP and SMP). increased possible blocksizes.

Thu Jul 12 17:26:05 2007  Tim Janik  <timj@imendio.com>

	* tests/slice-concurrent.c: added GSLice test from Stefan Westerfeld,
	bug #433314.

Thu Jul 12 15:46:40 2007  Tim Janik  <timj@imendio.com>

	* glib/gslice.c: migrate per-thread magazine caches from single-thread
	scenario to first thread using GSlice after g_thread_init(); based on
	a patch by Tor Lillqvist, fixes #331853.
	removed warning about g_thread_init() being called after other glib
	functions (in particular g_slice* calls), because GSlice can cope
	with this now and the rest of glib is believed to cope as well.

	* tests/slice-threadinit.c: new test program which tests GSlice working
	across g_thread_init() calls.

2007-07-10  Matthias Clasen  <mclasen@redhat.com>

	* glib/pltcheck.sh: Add g_once_init_enter to the whitelist of
	symbols allowed to have a local PLT entry, to fix 'make check'.

Tue Jul 10 12:24:35 2007  Tim Janik  <timj@imendio.com>

	* glib/gthread.[hc]: implemented g_once_init_enter(),
	g_once_init_enter_impl() and g_once_init_leave(), based on a patch by
	Antoine Tremblay, fixes #65041.
	adapted exported inline function mechanism from gutils.[hc] for inlining
	g_once_init_enter_impl() in gthread.[hc].

2007-07-09  Matthias Clasen  <mclasen@redhat.com>

	* NEWS: Updates

2007-07-09  Loïc Minier  <lool@dooz.org>

	* tests/refcount/closures.c: (main): Output newlines after thousand
	iterations of the inner-loop of the closures test; this helps having
	smaller lines and continuously outputting new lines.  (#447048).

2007-07-09  Ryan Lortie  <desrt@desrt.ca>

	* glib/gfileutils.c (write_to_temp_file): save errno to prevent it
	being clobbered by call to g_filename_display_name().  Bug #453796.

2007-07-09  Matthias Clasen  <mclasen@redhat.com>

	* m4macros/glib-gettext.m4: Fix a small problem with
	msgfmt -c detection.  (#341988, Laszlo Peter)

2007-07-07  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmarkup.c (g_markup_parse_context_end_parse): Handle
	all states.  (#454473)

2007-07-06  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c (g_io_win32_check): When WSAEnumNetworkEvents()
	signals FD_CONNECT that means that the connection attempt
	finished, either successfully or failed. Test explicitly whether
	the connnection succeeded and set either G_IO_OUT if it did,
	G_IO_ERR|G_IO_HUP if it failed.

	Make sure we never set both G_IO_OUT and G_IO_HUP simultaneously
	because in Unix poll(2) POLLOUT and POLLHUP are mutually
	exclusive.

	Ignore whether the caller wants to watch G_IO_HUP or not. Always
	select for FD_CLOSE because Unix poll(2) also ignores whether
	POLLHUP in set the requested events bitmask or not.

Fri Jun 29 2007  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.13.6 ===

	* NEWS: Updates

Mon Jun 25 16:43:13 2007  Tim Janik  <timj@gtk.org>

	* glib/ghash.c: g_hash_table_find(), g_hash_table_foreach():
	document performance caveats for linear order searches.

2007-06-22  Mathias Hasselmann  <mathias.hasselmann@gmx.de>

	* glib/gstring.c: Use memcpy in g_string_append_vprintf (#57693).

2007-06-18  Mathias Hasselmann  <mathias.hasselmann@gmx.de>

	* glib/gstring.c: Restore old behaviour of 
	g_string_append_vprintf: g_vasprintf seems to be faster
	than g_printf_string_upper_bound (#57693).

2007-06-18  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c (g_get_home_dir): Add some motivation.

2007-06-18  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.13.5 ===

	* NEWS: Updates

2007-06-18  Emmanuele Bassi  <ebassi@gnome.org>

	* glib/gmain.h:
	* glib/gmain.c:
	* glib/glib.symbols: Add g_timeout_add_seconds_full() variant
	to g_timeout_add_seconds(), accepting a destroy notification
	function and a priority. (#448819)

2007-06-17  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils (g_get_current_dir): Prevent segfaults on
	long paths.  (#447935, Robby Griffin)

2007-06-17  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gdataset.c (g_quark_from_string),
	(g_quark_from_static_string): Accept NULL and return GQuark
	value of zero. (#446859)

2007-06-16  Mathias Hasselmann  <mathias.hasselmann@gmx.de>

	* glib/gstring.c: Correctly use g_printf_string_upper_bound
	in g_string_append_vprintf. Fixes #447933.

2007-06-15  Sebastian Wilhelmi  <wilhelmi@google.com>

	* docs/reference/glib/tmpl/threads.sgml: Extended the comments on
	those functions, that are NOOPs, before g_thread_init() has been
	called. (#447583)

	* glib/gthread.c (g_static_mutex_free): Clarified comment to
	remind myself, that calling g_static_mutex_free() before
	g_thread_init() is safe.

2007-06-15  Cody Russell  <bratsche@gnome.org>

	* docs/reference/gobject/tmpl/gboxed.sgml:
	* docs/reference/gobject/gobject-sections.txt:
	* glib/gregex.c:
	* gobject/gboxed.[ch]:
	* gobject/gobject.symbols: Added GRegex boxed type.
	(#445065, Carlos Garnacho)

2007-06-15  Sebastian Wilhelmi  <wilhelmi@google.com>

	* glib/gregex.c: Replaced & by &amp; in <programlisting> to make
	gtk-doc happy.

2007-06-14  Ryan Lortie  <desrt@desrt.ca>

	* docs/reference/glib/glib-sections.txt:
	* glib/glib/symbols:
	* glib/gstring.[ch] (g_string_printf_internal): Improve
	performance by removing the use of an intermediate g_malloc'd
	buffer.  Rename to g_string_append_vprintf, document, and expose
	along with g_string_vprintf as new public API (#57693).

2007-06-15  Mathias Hasselmann  <mathias.hasselmann@gmx.de>

	* build, tests/string-test.c, glib/glib.symbols, 
	glib/gstring.c, glib/gstring.h: Introduce g_string_overwrite(_len)?
	for overwriting parts of strings (#368686, Samuel Cormier-Iijima)

2007-06-14  Cody Russell  <bratsche@gnome.org>

	* gobject/gtype.c (g_type_class_add_private): Check for 0-sized
	private data. (#443869)

2007-06-14  Matthias Clasen  <mclasen@redhat.com>
	
	* glib/gmain.c (g_timeout_add_seconds): Fix doc typos.  (#447534,
	Vincent Untz)

2007-06-13  Behdad Esfahbod  <behdad@gnome.org>

	* glib/pltcheck.sh: Whitelist g_atomic_{int,pointer}_[gs]et() as
	we don't alias them intentionally. (#354522)

2007-06-13  Sven Neumann  <sven@gimp.org>

	* glib/gslice.[ch] added g_slice_copy() and g_slice_dup() (#442029).

	* glib/glib.symbols: updated.

2007-06-12  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gunicode.h: Add more G_GNUC_CONST and G_GNUC_PURE.

2007-06-11  Emmanuele Bassi  <ebassi@gnome.org>

	* glib/gutils.c (maybe_expire_user_special_dirs),
	(g_get_user_special_dir): Remove the cache expiration logic: it
	makes g_get_user_special_dir() not thread-safe. Document the fact
	that on some platform the value might be changed by the user and
	that GLib won't be able to reflect the change.

2007-06-11  Tor Lillqvist  <tml@novell.com>

	* glib/gwin32.c (g_win32_get_package_installation_directory)
	(g_win32_get_package_installation_subdirectory): Update doc
	comments. Mention that it is not recommeded to use the Registry
	features.

2007-06-06  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c: Add definitions for more CSIDL_* constants in
	case missing from headers. Use CSIDL_PERSONAL instead of
	CSIDL_MYDOCUMENTS as CSIDL_MYDOCUMENTS seems to be a new thing
	that doesn't work in XP SP2 even.

2007-06-06  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c (g_get_user_special_dir): Fall back to
	$HOME/Desktop for the DESKTOP directory, like 
	xdg_user_dir_lookup() does.

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

	* configure.in: Bump version

	* === Released 2.13.4 ===

	* NEWS: Updates

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

	* glib/gkeyfile.c (g_key_file_is_key_name):
	(g_key_file_is_group_name): Don't assume the string is
	valid UTF-8, since it may be user data.  (#444161, Ben Combee)

2007-06-05  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gutf8.c: Add not to g_utf8_get_char_validated() about
	nul-terminated strings.

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

	* glib/gutils.c (g_get_user_special_dir): Don't deadlock
	when running with threads.  (#444121, Christian Persch)

2007-06-05  Vincent Untz  <vuntz@gnome.org>

	* glib/goption.c: (g_option_context_get_help): don't replace the usage
	line with the description for optional parameters, but append the
	description. (#444130)

2007-06-04  Matthias Clasen  <mclasen@redhat.com>

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

	* NEWS: Updates

2007-06-04  Matthias Clasen  <mclasen@redhat.com>
	
	Add support for a number of special directories, as 
	defined by the xdg-user-dirs specification.  (#432651,
	Bastien Nocera, Emmanuele Bassi, Michael Natterer)

	* glib/glib.symbols:
	* glib/gutils.[hc]: Add the GUserDirectory enum and
	g_get_user_special_dir(), with implementations based
	on the xdg-user-dirs spec and on native interfaces
	for Win32 and Carbon.
	
	* configure.in: Add Carbon checks.

	* tests/tetsglib.c: Test g_get_user_special_dir().
	
2007-06-03  Yevgen Muntyan  <muntyan@tamu.edu>

	* glib/gregex.c: fixed g_regex_fetch_named* for cases when (?J)
	is used inside a pattern (#442265, comment #12).
	* tests/regex-test.c: Test it.

2007-06-03  Matthias Clasen <mclasen@redhat.com>

	* NEWS: Updates

2007-06-03  Yevgen Muntyan  <muntyan@tamu.edu>

	Some API additions and changes (#442265).

	* glib/gregex.c:
	* glib/gregex.h: new functions: g_regex_ref(), g_regex_unref() which
	replaces g_regex_free(); g_match_info_get_regex(), g_match_info_get_string();
	g_regex_check_replacement().
	Made g_match_info_expand_references() accept NULL; changed GRegexEvalCallback
	to take only arguments which are likely to be actualy used.

	* docs/reference/glib/glib-sections.txt:
	* glib/glib.symbols: Added new functions.

	* tests/regex-test.c: Test them.

	* docs/reference/glib/tmpl/gregex.sgml: Updated GRegexEvalCallback docs.

2007-05-31  Matthias Clasen <mclasen@redhat.com>

	* README.win32: Fix a typo.  (#423708, Olivier Delhomme)

2007-05-30  Dan Winship  <danw@novell.com>

	* glib/gkeyfile.h: add defines for desktop file handling. #339225,
	original patch from Vincent Untz.

2007-05-29  Cody Russell  <bratsche@gnome.org>

	* configure.in: Fix a sed script that doesn't correctly detect
	i586-mingw32-gcc-3.4 compiler, and was causing -Wno-pointer-sign
	errors when building with that compiler. (#440896, Yevgen Muntyan)

2007-05-29  Marco Barisione <marco@barisione.org>

	* glib/gregex.c: Fix g_regex_fetch_named() and
	g_regex_fetch_named_pos() when G_REGEX_DUPNAMES is used  (#434358,
	Yevgen Muntyan and #419376, Marco Barisione, patch by Yevgen Muntyan)

2007-05-25  Behdad Esfahbod  <behdad@gnome.org>

	* glib/guniprop.c (g_unichar_iswide), (g_unichar_iswide_cjk):
	Update to Markus Kuhn's updated wcwidth for Unicode 5.0.

2007-05-22  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.13.2 ===

	* README.in:
	* NEWS: Updates

2007-05-18  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Try again to move the compiler-dependency
	of G_GNUC_INTERNAL to runtime.

2007-05-18  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Don't let PERL_PATH be ''.  (#356769, Joseph Sacco)

2007-05-17  Michael Natterer  <mitch@imendio.com>

	* configure.in: hotfix: revert last change to fix the build on OS X.

2007-05-17  Matthias Clasen  <mclasen@redhat.com>

	* glib/goption.c (g_option_context_set_translate_func): Fix
	a doc typo.  (#439232, Vincent Untz)

2007-05-17  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Move the compiler-dependency in the G_GNUC_INTERNAL
	definition from configure-time to runtime (of the compiler).
	(#438869, Damien Carbery)

	* glib/gdebug.h:
	* glib/gmessages.h:
	* glib/gunicodeprivate.h:
	* glib/gthreadprivate.h: Move G_GNUC_INTERNAL before function
	declarations to fix compilation with sun studio.  (#438873,
	Damien Carbery)

2007-05-14  Matthias Clasen  <mclasen@redhat.com>

	* glib/gslice.h:
	* glib/gslice.c:
	* glib/glib.symbols: Make g_slice_debug_tree_statistics() 
	debug-only functionality again.

2007-05-14  Christian Persch  <chpe@gnome.org>

	* docs/reference/glib/tmpl/string_utils.sgml: Improve g_strerror and
	g_strsignal docs. Bug #438293.

2007-05-13  Tor Lillqvist  <tml@novell.com>

	* glib/gwin32.h: Drop the pipe() macro. Defining macros outside of
	its namespace that look like POSIX functions is not GLib's
	business in my opinion. This means pipe()-using code that has
	relied on this definition will need changing to call _pipe() on
	Windows, and make the decision itself on what size pipe buffer to
	use, and whether to use text or binary mode, and whether the pipe
	handles should be inheritable or not.

	* glib/gspawn-win32.c (make_pipe): Use _pipe() instead of pipe().

2007-05-11  Matthias Clasen  <mclasen@redhat.com>

	* glib/goption.c: Allow G_OPTION_ARG_CALLBACK for 
	G_OPTION_REMAINING.  (#437297, Dave Benson)

	* tests/option-test.c: Add a test for this.

2007-05-04  Dan Winship  <danw@novell.com>

	* glib/gkeyfile.c (g_key_file_get_boolean)
	(g_key_file_get_boolean_list, g_key_file_get_integer)
	(g_key_file_get_integer_list, g_key_file_get_double)
	(g_key_file_get_double_list): Document the error return values
	rather than calling them undefined. #435885.

2007-05-03  Behdad Esfahbod  <behdad@gnome.org>

	* glib/glib.symbols:
	* glib/gunicode.h:
	* glib/guniprop.c (g_unichar_ismark):
	Add g_unichar_ismark(). Patch from Yevgen Muntyan. Fixes #339991.

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

	* configure.in: Bump version

	* === Released 2.13.1 ===

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

	* tests/threadpool-test.c:  Stop unused threads before
	the last test, to make the test terminate reliably.

	* NEWS: Updates

2007-05-02  Marco Barisione <marco@barisione.org>

	* glib/gregex.c: Made more clear that the string passed to the match
	functions cannot be freed before using g_match_info_fetch() and
	similar functions, and fixed a typo.

2007-04-30  Matthias Clasen  <mclasen@redhat.com>

	* glib/glib.symbols:
	* glib/gregex.[hc]: Add g_regex_get_max_backref() and
	g_regex_get_capture_count().  (#419371, Marco Barisione)
	
2007-04-30  Matthias Clasen  <mclasen@redhat.com>

	* glib/glib.symbols:
	* glib/gregex.[hc]: Split GRegex into GRegex and GMatchInfo.
	(#419368, Marco Barisione)

	* tests/regex-test.c: Adapt.

2007-04-30  Chris Wilson  <chris@chris-wilson.co.uk>

	* glib/gbookmarkfile.c (g_bookmark_file_get_app_info):
	Include the gshell.h header file (to define g_shell_[un]quote)
	and correct the order of the arguments to g_propagate_error(), as
	spotted by gcc.

2007-04-29  Emmanuele Bassi  <ebassi@gnome.org>

	* glib/gbookmarkfile.c:
	(g_bookmark_file_set_app_info): Quote the passed command line...
	
	(g_bookmark_file_get_app_info): ... and unquote it when giving it
	back. (#432274)

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

	* glib/gstrfuncs.c: small coding style cleanups.

2007-04-27  Chris Wilson  <chris@chris-wilson.co.uk>

	* glib/gregex.h: Remove trailing comma at end of enumerator list.

2007-04-27  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_mkdir): Document that the mode argument is
	ignored on Windows
	(g_stat): Document that st_mode is mostly useless on Windows.

2007-04-25  Paolo Borelli  <pborelli@katamail.com>

	* glib/gstrfuncs.c (g_strsplit): small cleanup. (#433387)

2007-04-24  Matthias Clasen  <mclasen@redhat.com>

	* glib/glib.symbols:
	* glib/goption.h:
	* glib/goption.c (g_option_context_get_help): New function to
	get the formatted help string.  (#336089, Dom Lachowicz)

2007-04-24  Michael Natterer  <mitch@imendio.com>

	* tests/gobject/paramspec-test.c: test all GParamSpecString
	validations with static and allocated strings.

2007-04-19  William Jon McCann  <mccann@jhu.edu>

	* glib/gkeyfile.[ch]: (find_file_in_data_dirs),
	(g_key_file_load_from_dirs), (g_key_file_load_from_data_dirs):
	Add g_key_file_load_from_dirs for looking through a search
	path for a key-file. (#355334)

2007-04-15  Tor Lillqvist  <tml@novell.com>

	* build: Include the build module using the svn:externals
	mechanism.

	* Makefile.am
	* configure: Add the references to build back.

2007-04-11  Matthias Clasen  <mclasen@redhat.com>

	* glib/gspawn.c (g_spawn_async): Fix a doc typo.  (#427285, 
	Jochen Baier)

2007-04-11  Emmanuele Bassi  <ebassi@gnome.org>

	* glib/ghash.[ch]: Add g_hash_table_get_keys() and
	g_hash_table_get_values(), API to retrieve the keys
	and values inside an hash table in list form. (#413133)

	* glib/glib.symbols: Update symbols.

	* tests/hash-test.c: Exercise newly added functions.

2007-04-11  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Use CFLAGS/LDFLAGS in addition to 
	PCRE_CFLAGS/PCRE_LIBS when checking system PCRE.  (#421607, 
	Paul Jarc)

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

	* glib/gdate.h: Remove old comment and forward declaration of
	struct tm: gdate.h includes time.h now.

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

	* tests/gobject/Makefile.am: Handle $RANDOM missing.  (#356843,
	Paul Jarc)

2007-03-22  Matthias Clasen  <mclasen@redhat.com> 

	* glib/guniprop.c: Fix corner-cases of upper/lowercase conversion.
	(#418217, Denis Jacquerye)

2007-03-22  Chris Wilson  <chris@chris-wilson.co.uk>

	* glib/gkeyfile.c: Track whether the last key=value pair in a group
	is a blank line and during to_data() only insert a new blank line
	betweens group in its absence. This allows the beautification of the
	GKeyFile and prevents newlines being inserted indefinitely. (#420686)

	* tests/keyfile-test.c (test_reload_idempotency): Test that after a 
	single beautification pass, g_key_file_to_data() does not alter its
	input data.

2007-03-21  Matthias Clasen  <mclasen@redhat.com>

	* glib/pcre/Makefile.am: Make builddir != srcdir work.  (#419900)

2007-03-19  Paolo Borelli  <pborelli@katamail.com>

	* glib/gutf8.c (fast_validate_len): remove unneeded checks.

2007-03-18  Matthias Clasen  <mclasen@redhat.com>

	* glib/gregex.c: Cosmetic fixes

2007-03-17  Marco Barisione <marco@barisione.org>

	* glib/update-pcre/table-reduction.patch:
	* glib/update-pcre/make_utt.py:
	* glib/update-pcre/utt.patch: Add forgotten files

	* glib/update-pcre/update.sh: Call python directly instead of relying
	on shebang. Also copy the changes from glib/pcre/makefile.msc to this
	file

2007-03-17  Hans Breuer  <hans@breuer.org>

	* glib/makefile.msc.in glib/pcre/makefile.msc 
	  glib/update-pcre/update.sh : define PCRE_STATIC to reflect the 
	inclusion of pcre as LIB, not stand-alone DLL. Also set NEWLINE=-1
	to match any newline by default, use of ../../build/win32/make.msc

	* glib/gregex.h : minimal includes of <glib/*.H> instead of <glib.h>

	* glib/gnulib/makefile.msc : make use of ../../build/win32/make.msc

	* tests/regex-test.c(verbose): don't pass a string containing '%' 
	as first parameter to g_print ()
	(test_match) : for the unexpected case output pattern and string
	escaped

	* tests/child-test.c tests/slice-color.c : fix c99ism
	* tests/slice-test.c : fix c99ism and gccism
	* tests/mapping-test.c tests/base-64-tests.c : don't 
	#include <unistd.h> unconditionally
	* tests/option-test.c : use G_GINT64_CONSTANT() instead of direct LL

	* tests/makefile.msc.in : more tests build

2007-03-17  Matthias Clasen  <mclasen@redhat.com>

	* glib/gsequence.[hc]:
	* glib/glib.symbols:
	* tests/sequence-test.c: Move the consistency
	checks to the test.

2007-03-16  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.13.0 ===

	* NEWS: Updates

2007-03-16  Matthias Clasen  <mclasen@redhat.com>
	
	* glib/glib.symbols:
	* glib/gsequence.h: Add the test function to the header,
	since it is exported.

	* glib/gbase64.c (g_base64_decode): Warn if the input
	is too short.  (#418862, Halton Huo)

Fri Mar 16 11:24:51 2007  Tim Janik  <timj@imendio.com>

	* glib/gscanner.[hc]: reverted premature commit which broke
	GScanner ABI and API, #415323.

2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>

	* glib/gkeyfile.c: Convert to GSlice and check for redundant
	clears. (#418637)

2007-03-15  Matthias Clasen  <mclasen@redhat.com>

	* glib/gscanner.[hc]: Revert recent changes that break
	existing users of GScanner.

2007-03-15  Matthias Clasen  <mclasen@redhat.com>

	* glib/gscanner.c (g_scanner_get_token_ll): Fix a typo
	in the last commit.  (#415323, Richard Hult)

2007-03-15  Tor Lillqvist  <tml@novell.com>

	* glib/gnulib/Makefile.am (INCLUDES): Add -I$(top_srcdir)/glib so
	that gregex.h finds <glib.h>.

	* glib/update-pcre/Makefille.am-1: Add -DGLIB_COMPILATION so that
	we don't think g_ascii_table is dllimport.

	* glib/pcre/Makefile.am: Corresponding change.

	* glib/update-pcre/notdll.patch: New file. Drop
	dllimport/dllexport magic for the pcre symbols.

	* glib/update-pcre/Makefile.am: Dist it.

	* glib/update-pcre/update.sh: Apply notdll.patch.

	* glib/pcre/pcre.h: Corresponding change.

2007-03-15  Tor Lillqvist  <tml@novell.com>

	* glib/gtypes.h: Add comment to avoid misleading people with the
	large number of digits in G_PI etc. (#404338)

2007-03-15  Tor Lillqvist  <tml@novell.com>

	* config.h.win32.in: Update to match what configure produces.

2007-03-15  Marco Barisione <marco@barisione.org>

	Add GRegex for regular expression matching.  (#50075)

	* configure.in: Handle GRegex compilation.

	* glib/gregex.c:
	* glib/gregex.h: Code for GRegex.

	* glib/Makefile.am:
	* glib/makefile.msc.in: Updated makefiles.

	* glib/pcre/*: Internal copy of PCRE.

	* glib/update-pcre/*: Stuff to automatically update the internal PCRE
	to a newer version.

	* tests/regex-test.c:
	* tests/Makefile.am:
	* tests/makefile.msc.in: Add tests for GRegex.

2007-03-15  Chris Wilson  <chris@chris-wilson.co.uk>

	* glib/gmain.c (g_main_dispatch): Replace a
	g_slist_prepend/g_slist_remove pair with an on-stack link
	and open coding. (#416094)

2007-03-15  Matthias Clasen  <mclasen@redhat.com>

	Fix two glitches in the Unicode case conversion
	functions (#418217,  Denis Jacquerye)

	* glib/guniprop.c (g_unichar_toupper): Handle zero entries
	in special_case_table correctly.
	(g_unichar_totitle): Fall back to g_unichar_toupper.

2007-03-15  Matthias Clasen  <mclasen@redhat.com>

	* glib/gscanner.[hc]: Some optimizations, use a lookup
	table for character classes, pre-allocate GStrings with
	reasonable sizes.  (#415323, Charlie Brej)

2007-03-14  Matthias Clasen  <mclasen@redhat.com>

	* glib/gkeyfile.c (g_key_file_get_double): Fix a 
	small typo.  (#417847, Bobby Jack)

2007-03-08  Matthias Clasen  <mclasen@redhat.com>

	* glib/gstrfuncs.c (g_strtoll): Return negative values.
	(#416062)

	* tests/strtoll-test.c: Add more testcases.

2007-03-06  Matthias Clasen  <mclasen@redhat.com>

	* glib/gstring.c (g_str_equal): Clarify docs.  (#364026, 
	Bastian Nocera)

2007-03-06  Matthew Barnes  <mbarnes@redhat.com>

	* glib/gqueue.h:
	* glib/gqueue.c: Add G_QUEUE_INIT, g_queue_init(), and
	g_queue_clear() to better support statically allocated
	queues.  (#413244)

2007-03-06  Matthias Clasen  <mclasen@redhat.com>

	* glib/gkeyfile.c (g_key_file_parse_value_as_boolean):
	Remove a NULL check that didn't do any good.  (#360904,
	Paolo Borelli)

2007-03-06  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmarkup.c (g_markup_parse_context_parse): Report
	more accurate position for invalid UTF-8.  (#350802,
	Simon Budig)

2007-03-06  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbase64.c: Add NULL checks to the base64 
	functions that take pointers.  (#399611, Martyn Russell)

2007-03-06  Matthias Clasen  <mclasen@redhat.com>

	Work with Solaris gettext (#341988, Laszlo Peter)

	* m4macros/glib-gettext.m4: Make GLIB_WITH_NLS define
	MSGFMT_OPTS if msgfmt supports -c.

	* po/Makefile.in.in: Use MSGFMT_OPTS when calling
	msgfmt.

2007-03-06  Matthias Clasen  <mclasen@redhat.com>

	* tests/Makefile.am: Apply a patch by Loïc Minier
	to fix building with -Wl,-z,defs.  (#149144)

2007-03-03  Thierry Randrianiriana  <randrianiriana@gmail.com>

	* po/mg.po: Added Malagasy translation.
	* configure.in: Added Malagasy 'mg' to ALL_LINGUAS

2007-03-01  Ihar Hrachyshka <iharh@gnome.org>
	* configure.in: Added be@latin to ALL_LINGUAS.

2007-02-17  Tor Lillqvist  <tml@novell.com>

	* glib/gdate.c (win32_strftime_helper): New Win32-only
	function. Use the wide character Win32 API to do the work of
	strftime(): GetThreadLocale(), GetLocaleInfoW(), GetDateFormatW()
	and GetTimeFormatW().
	(g_date_strftime): On Windows use win32_strftime_helper()
	instead of strftime() to avoid codepage issues with strftime().
	Unfortunately using wcsftime() would not help either. (#404832)

2007-02-16  Soren Sandmann <sandmann@redhat.com>

	* tests/sequence-test.c: For move, test moving between two
	sequences. Add test for swap.

	* glib/gsequence.c: Replace splay tree with a treap.
	(check_node): Add checks for the treap invariants.

2007-02-10  Hans Breuer  <hans@breuer.org>

	* glib/makefile.msc.in : added gsequence.obj

Fri Feb  9 17:46:18 2007  Søren Sandmann  <sandmann@redhat.com>

	* glib/gsequence.c (g_sequence_get_end_iter): Remove assertion.
	* glib/gsequence.c (is_end): Return TRUE if the iter doesn't have
	a parent.
	* glib/gsequence.c: Fix grammar of comment.
	* glib/gsequence.c (node_update_fields): Use a temporary variable
	for the n_nodes.

2007-02-07  Soren Sandmann <sandmann@daimi.au.dk>

	* tests/sequence-test.c (compare_items): Force an arbitrary order
	on otherwise identical items.

	* glib/gsequence.c: Add comment discussing splay trees vs. other trees.
	* glib/gsequence.c (is_end): Add fast path for the common case
	when the node is not actually the end node.

2007-02-05  Soren Sandmann <sandmann@daimi.au.dk>

	* glib/gsequence.c (g_sequence_sort_iter): Don't prohibit access
	until after the g_sequence_move_range() call.  Bug 404759,
	Christian Persch.

       * tests/sequence-test.c: Formatting fix.

2007-02-03  Soren Sandmann <sandmann@daimi.au.dk>

	* glib/gsequence.c (struct _GSequence): Add a new 'real_sequence'
	field.
	(g_sequence_new): Initialize real_sequence to the sequence
	(g_sequence_sort_iter): Set real_sequence of the temporary
	sequence to the real sequence.
	(g_sequence_sort_changed_iter): Same
	(g_sequence_insert_sorted_iter): Same
	(g_sequence_search_iter): Same
	(g_sequence_iter_get_sequence): Return real_sequence

	* tests/sequence-test.c (compare_iters): Insert assertions that
	the iters point to the sequence being manipulated.

2007-02-03  Soren Sandmann <sandmann@daimi.au.dk>

	* glib/gsequence.[ch]: New files implementing GSequence, a list
	implemented using a binary tree.
	* glib/glib.h, glib/glib.symbols: Update for GSequence.
	* docs/reference: Add documentation for GSequence
	* tests: Add sequence-test.c, a thorough test of all of
	the GSequence API.

2007-01-30  Matthias Clasen <mclasen@redhat.com>

	* glib/glib.symbols:
	* glib/gslice.h:
	* glib/gslice.c: Don't make ABI depend on G_ENABLE_DEBUG,
	just add an empty g_slice_debug_tree_statistics () implementation
	in the !G_ENABLE_DEBUG case.

2007-01-26  Matthias Clasen <mclasen@redhat.com>

	* configure.in: Define G_GNUC_INTERNAL for Sun Studio
	as __hidden.  (#342981, Brian Cameron)

	* glib/gconvert.c:
	* glib/gutf8.c: Move G_GNUC_INTERNAL uses to the right
	spot.

2007-01-26  Matthias Clasen <mclasen@redhat.com>

	* gmem.c:
	* gslice.c:
	* gmessages.c:
	* gutils.c: Make some structs which are used only once
	non-static.

2007-01-24  Benjamin Otte <otte@gnome.org>

	* glib/gprintf.c (g_sprintf): Clarify the documentation
	regarding overflows (wording by Jan Schmidt)

2007-01-23  Roozbeh Pournader  <roozbeh@farsiweb.info>

	* README: Remove mention of no-longer-existing PATCH
	keyword in bugzilla. (#396899)

2007-01-23  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutf8.c (g_utf8_get_char_validated): Clarify
	the behaviour is max_len is zero.  (#400044,
	Benjamin Dauvergne)

2007-01-23  Matthias Clasen  <mclasen@redhat.com>

	* glib/goption.c (print_help): Use bitwise &
	when operating on flags.  (#399971, Jon Oberheide)

2007-01-19  Matthias Clasen  <mclasen@redhat.com>

	Some file list updates (#398069, Owen Taylor)

	* docs/Changes-2.0.txt
	* docs/reference/README.cvs-commits
	* glib.spec.in: Remove obsolete files

	* tests/Makefile.am:
	* glib/libcharset/Makefile.am:
	* gobject/Makefile.am:
	* Makefile.am: Add some missing files to EXTRA_DIST

	* tests/timeloop-basic.c: Make it build
	* HACKING: Small updates

2007-01-18  Matthias Clasen  <mclasen@redhat.com>

	* glib/gdate.c (g_date_set_time): Fix a typo.  (#398203,
	Owen Taylor)

2007-01-17  Tor Lillqvist  <tml@novell.com>

	* config.h.win32.in
	* glib/galloca.h
	* glib/gbacktrace.h
	* glib/gwin32.c
	* glibconfig.h.win32.in
	* README.win32: More minor tweaks for Digital Mars
	compiler. (#346808, Serhat Sevki Dincer)

2007-01-17  Tor Lillqvist  <tml@novell.com>

	* glib-zip.in: DLLs are always installed in "bin" with current
	libtool, drop unnecessary logic to check where they are. Include
	also the COPYING file.

2007-01-17  Tor Lillqvist  <tml@novell.com>

	* glib/galloca.h: Use <malloc.h> also with Digital Mars compiler
	on Win32. (#346808, Serhat Sevki Dincer)

2007-01-16  Matthias Clasen  <mclasen@redhat.com>

	* glib/gthread.h:
	* glib/gthread.c:
	* glib/glib.symbols: Revert an accidental ABI break by
	moving gettime out of the GThreadFunctions struct and making
	it a separate variable.  (#397139, Joe Marcus Clarke)

	* gthread/*.c: Adapt.

2007-01-16  Tor Lillqvist  <tml@novell.com>

	* glib/gthread.c (gettime): GetSystemTimeAsFileTime() returns 100s
	of nanoseconds since 1601, so offset to Unix epoch (1970) and
	multiply by 100 to get nanoseconds which is what we want.

2007-01-15  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.h (struct _GPollFD): Fix mistake in my last commit.

2005-01-15  Matthias Clasen  <mclasen@redhat.com>

	* glib/giochannel.c:
	* glib/gbookmarkfile.c: Remove redundant NULL-checks.
	(#369668, Morten Welinder)

2005-01-15  Matthias Clasen  <mclasen@redhat.com>

	* glib/gthread.c:
	* gthread/gthread-posix.c: Correct the gettime calculations
	once more.  (#395203, Chris Wilson)

2007-01-15  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.h (struct _GPollFD): Prepare for potential Win64
	build: Use gint64 for the fd field on Win64, as we want to be able
	to store a HANDLE in it. (#395422) (Other changes will surely also
	be necessary when building on Win64, at least in giowin32.c.)

2007-01-15  Tor Lillqvist  <tml@novell.com>

	* glib/gwin32.c (g_win32_getlocale): Simplify greatly. Instead of
	hardcoding a large switch statement, just ask Windows for the
	ISO639 and ISO3166 codes. Tack on @Latn or @Cyrl for those
	languages which can alternatively be written in Latin or
	Cyrillic. Fixes #395419.

2007-01-12  Matthias Clasen  <mclasen@redhat.com>

	* glib/gkeyfile.c: Rework the handling of invalid
	keys/groups again. We are back to being liberal about
	what we accept, and only reject things that would lead
	to non-rereadable keyfiles.

	* tests/keyfile-test.c: Adapt tests.

2007-01-12  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c (g_get_home_dir): Clarify docs.  (#394687,
	Marc Brockschmidt)

2007-01-12  Matthias Clasen  <mclasen@redhat.com>

	* glib/gthread.c: Include windows.h and fix
	include order. (#394258, Kazuki Iwamoto)

2007-01-12  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Make G_GNUC_INTERNAL a no-op for
	gcc 2.95.    (#329031, David Schleef, Marc Brockschmidt)

2007-01-12  Matthias Clasen  <mclasen@redhat.com>

	* gthread/gthread-posix.c:
	* glib/gtimer.c:
	* glib/gthread.c: Fix errors in the recently moved
	time calculations.  (#395203, Chris Wilson)

2007-01-10  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Actually link gthread against librt.
	(#394641, Marco Pesenti Gritti)

2007-01-10  Matthias Clasen  <mclasen@redhat.com>

	* glib/gkeyfile.c (g_key_file_is_key_name): Grr, allow '*' in keys,
	too.  (#394262)

2007-01-09  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gutils.h: Use a more optimized g_bit_storage() when gcc is
	available.  (#371670, Daniel Elstner)

2007-01-08  Matthias Clasen  <mclasen@redhat.com>

	* gthread/gthread-posix.c (g_thread_impl_init): Don't
	use _SC_MONOTONIC_CLOCK unless USE_CLOCK_GETTIME is
	defined.  (#394150)

2007-01-07  Matthias Clasen  <mclasen@redhat.com>

	Don't link glib against libpthread.  (#393812)

	* configure.in: Link gthread against librt, not glib itself.

	* glib/gthread.h:
	* glib/gthread.c: Add a new thread function, gettime.

	* glib/gtimer.c: Use gettime instead of directly working with
	the various system interfaces.

	* gthread/gthread-impl.c:
	* gthread/gthread-posix.c:
	* gthread/gthread-win32.c: Implement gettime.

2007-01-07  Matthias Clasen  <mclasen@redhat.com>

	* m4macros/glib-2.0.m4: Use PKG_PROG_PKG_CONFIG.  (#392636,
	Yevgen Muntyan)

2007-01-07  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Handle GIOChannels for file descriptors
	connected to the console separately. This would typically be the
	fd 0, 1, or 2 (if not redirected) in a console application. For
	such fds we don't need a separate thread, as console HANDLEs are
	waitable objects. (#359202, Michiel de Hoon)

2007-01-04  Behdad Esfahbod  <behdad@gnome.org>

	* tests/bit-test.c (builtin_bit_nth_lsf1), (builtin_bit_nth_lsf2),
	(builtin_bit_nth_msf): Fix tests on x86_64.

2007-01-03  Behdad Esfahbod  <behdad@gnome.org>

	* glib/goption.c (_g_unichar_get_width), (_g_utf8_strwidth),
	(calculate_max_length), (print_entry), (print_help): Take zerowidth
	and double-width chars into consideration when computing width of a
	string.  Also fix another bug in width computation. (#346955)

	* glib/guniprop.c (g_unichar_iszerowidth): Fix typo.  It was not
	working correctly.

2007-01-03  Behdad Esfahbod  <behdad@gnome.org>

	* glib/glib.symbols:
	* glib/gunicode.h:
	* glib/guniprop.c: Add g_unichar_iszerowidth(). (#347645)

2007-01-03  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gutils.h: Fix bug in g_bit_nth_lsf (#371631) and use
	__builtin_clzl for g_bit_storage if available (#371670).

	* tests/Makefile.am:
	* tests/bit-test.c: New test, to test g_bit_* operations against
	naive and builtin implementations.

2007-01-02  Behdad Esfahbod  <behdad@gnome.org>

	* configure.in: Avoid more warnings from running libtool --config.
	(#391364)

2007-01-03  Michael Natterer  <mitch@imendio.com>

	* removed all .cvsignore files. SVN doesn't need them.

2007-01-02  Emmanuele Bassi  <ebassi@gnome.org>

	* glib/gbookmarkfile.c (expand_exec_line): Add support for
	expanding the desktop entry spec variables %U (list of URIs)
	and %F (list of filenames), so that using the command line
	from the Exec and TryExec key of a desktop entry file works
	as intended.

2007-01-02  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Avoid warnings from running libtool --config.
	(#391364, Loïc Minier)

2007-01-02  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbookmarkfile.c (g_bookmark_file_get_app_info):
	Return an error if the uri is bad. (#391370, Maciej Piechotka)

2007-01-02  Matthias Clasen  <mclasen@redhat.com>

	* glib/glib.symbols: Guard g_slice_debug_tree_statistics
	by G_ENABLE_DEBUG.  (#390940, Kazuki Iwamoto)

2007-01-02  Michael Natterer  <mitch@imendio.com>

	* configure.in
	* Makefile.am: remove references to build/ until a proper decision
	has been made what to do with it.

2007-01-01  Matthias Clasen  <mclasen@redhat.com>

	* glib-gettextize.in: Silence autoconf warnings about
	datarootdir.  (#391367, Loïc Minier)

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

	* glib/gslice.c: Fix some C99isms.  (#390913, Kazuki Iwamoto)

Fri Dec 29 13:28:07 2006  Tim Janik  <timj@imendio.com>

	* glib/gslice.c: turned detection of too late g_thread_init() calls
	into a warning. this is a temporary work-around for some head-room
	to fix affected programs, memory corruption still occours regardless.

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

	* tests/gobject/Makefile.am:
	* tests/gobject/dynamictype.c: New test for dynamic type
	registration macros.

Thu Dec 28 21:14:45 2006  Tim Janik  <timj@imendio.com>

	* glib/gslice.c: removed pthread-dependant debugging bits, the code
	was already converted to GMutex. this obsoletes Tor's recent fixups.

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

	* glib/gutils.h (G_WIN32_DLLMAIN_FOR_DLL_NAME)
	* glib/gutils.c (get_windows_directory_root): : Use only the wide
	character API here, too.

	* glib/gslice.c: Make it compile on Win32 without pthreads: Use a
	Win32 critical section instead.

	* glib/gmessages.c (g_logv): On Win32, if we get a fatal error
	message while being debugged we break into the debugger with
	G_BREAKPOINT(). Don't call abort() if the user is foolhardy enough
	to continue after the breakpoint. The user presumably knows what
	he is doing and deserves what he gets. (#376645, Andreas Köhler)

Thu Dec 28 12:50:31 2006  Tim Janik  <timj@imendio.com>

	* glib/gslice.h, glib/gslice.c: implemented static debugging
	hash-tree to validate slice adresses and sizes with G_SLICE=debug-blocks.
	use abort() to exit in mem_error() to allow catching of these in gdb.
	abort programs with a descriptive error message if g_thread_init() is
	called after GSlice was in use. previously this just silently corrupted
	the magazines.

	* glib/ghash.c (struct _GHashNode): reordered fields to keep 8-byte
	pointer alignment on 64bit systems and request smaller slice sizes
	on 32bit systems.

	* tests/slice-test.c: support '~' option flag to introduce slice
	allocation/release corruption with a significant probability. this
	allowes testing of G_SLICE=debug-blocks.

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

	* glib/gconvert.[hc]:
	* glib/gfileutils.c:
	* glib/giochannel.c:
	* glib/goption.c:
	* glib/gspawn.c:
	* glib/gunicollate.c:
	* glib/gutils.c:
	* tests/timeloop-basic.c:
	Consistently use gsize rather than size_t.  (#333310,
	Morten Welinder)

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

	* configure.in: Use AC_CACHE_CHECK for the nl_langinfo
	check.  (#304517, Lőrinczy Zsigmond)

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

	* glib/gwin32.h
	* glib/gwin32.c (get_package_directory_from_module)
	(g_win32_get_package_installation_directory)
	(g_win32_get_package_installation_subdirectory): Add const to
	gchar* arguments. (#384523, Yevgen Muntyan)

2006-12-27  Ryan Lortie  <desrt@desrt.ca>

	* glib/ghash.c: cache the value of the hash function
	in the GHashNode.  this speeds up resizing the hash
	table and it also allows a slight optimisation on
	lookups.  (#388332)

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

	* glib/gunicollate.c (g_utf8_collate_key): Don't modify
	the current locale.  (#389300)

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

	* glib/gutf8.c: Add hints for locale-dependent interfaces.
	* glib/gconvert.c: Add hints for locale-dependent interfaces.

	* glib/gconvert.c (g_get_filename_charsets): Improve
	formatting of docs.

2006-12-26  Behdad Esfahbod  <behdad@gnome.org>

	* configure.in: Use libtool to determine shared library suffix.
	(#357245)

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

	* tests/run-collate-tests.sh:
	* tests/unicode-collate.c: Silently skip tests if
	we can't set LC_COLLATE to en_US.  (#336438)

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

	* glib/gkeyfile.c (g_key_file_is_key_name): Accept
	'/', '+' and '.' in key names, since gnome-vfs uses
	mime types as keys in some cache.

	* tests/keyfile-test.c: Tests for the above.

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

	* configure.in: Fix the broken poll test.  (#387260,
	Christian Persch)

	* glib/gmain.c (child_watch_helper_thread): Readd a
	return which was removed as dead code a while ago.
	icc may consider it dead, but gcc doesn't like non-void
	functions without a return...  (#354707)

	* tests/Makefile.am: Try a different fix for bug 346373.

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

	Fix bug 161288:

	* configure.in: Check for wcslen.

	* glib/gnulib/vasnprintf.c: Handle wcslen missing.

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

	* glib/gkeyfile.c: Accept '@' in locale names.

	* glib/gkeyfile.c: Tighten up the check for allowed
	key and group names.  (#343191, Tommi Komulainen)

	* tests/keyfile-test.c: Test handling of key and group names.

	* tests/Makefile.am: Don't use $RANDOM if the shell doesn't
	have it.  (#346373, Thomas Klausner)

2006-12-17  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gstring.c: Improve docs about string functions taking a
	length.  (#378727)

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

	* glib/gconvert.c:
	* glib/gutf8.c (_g_charset_get_aliases): Put the G_GNUC_INTERNAL
	where gcc doesn't complain about it.

	* glib/ghash.c: Make ref_count an int to avoid compiler
	warnings.

	* configure.in: Use AC_LANG_SOURCE for the clock test.

	* glib/gthreadpool.h:
	* glib/gthreadpool.c (g_thread_pool_free): Don't use "wait"
	as parameter name.  (#379207, Christian Biere)

	* glib/gspawn.c: Refer to g_child_watch_add() in addition
	to waitpid().

	* glib/gstrfuncs.c (g_strndup, g_strnfill): Move docs
	inline, and improve wording.  (#372598, Behdad Esfahbod)

	* glib/gspawn.c: Add some pointers to the gdk_spawn_
	variants.  (#338134, Federico Mena Quintero)

	* configure.in: Make montonic clock test work again. Does
	AC_COMPILE_IFELSE not get confdefs ? Also, move the clock
	tests below the thread checks to fix #364663.

	* tests/run-markup-tests.sh: Don't use diff -u  (#380801,
	Marek Rouchal)

	* glib/gspawn.c: Fix the recent fdwalk()-related changes
	to not break mapping-test.  (#286838, Marco Barisione)

	* glib/gstring.c (g_string_chunk_new): Don't shadow size.
	(#386760, Kazuki IWAMOTO)

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

	* glib/gstring.c: Move more documentation inline.

	* configure.in: Use AC_COMPILE_IFELSE for the monotonic
	clock test.  (#362918, Han-Wen Nienhuys, Jeremy Lainé)

	* glib/gstring.c: Move documentation inline.

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

	* glib/giochannel.h: Make ref_count a gint to avoid
	compiler warnings.  (#321977, Andrew Paprocki)

	* configure.in: On Solaris, set CFLAGS and LDFLAGS that
	work both with Sun cc and gcc.  (#315061, Lazlo Peter)

	* glib/gspawn.c: Undefine READ_OK to fix the build on
	old versions of Darwin.  (#327800)

	* glib/glib.symbols:
	* glib/gstring.[hc] (g_string_chunk_clear): Add a function
	for clearing a GStringChunk. (#364608, Matt Barnes)

	* glib/guniprop.c (interval_compare): Avoid a compiler
	warning.

	* glib/gspawn.c (do_exec): Call set_cloexec() with
	the right parameters.  (#386252, Guillaume Desmottes)

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

	Fix #357585, Padraig O'Briain.

	* configure.in: Check for fdwalk.

	* glib/gspawn.c (do_exec): Use fdwalk() to close all
	file descriptors.

	* glib/gspawn.c (fdwalk): Fallback implementation of
	fdwalk.

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

	* glib/gconvert.c (open_converter): Don't use alloca
	and avoid allocating memory for small keys that are
	already cached.  (#172406, Morten Welinder)

	* glib/gmain.c (g_child_watch_add_full): Improve the docs.
	(#345569, Tim-Philipp Müller)

	* glib/gkeyfile.c (g_key_file_add_group): If the group
	is already there, make it current.  (#385910, Joe Halliwell)

	* tests/keyfile-test.c: Add a test for duplicate groups/keys.

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

	* m4macros/glib-gettext.m4: Require AC_CANONICAL_HOST in
	GLIB_WITH_NLS.  (#385132, Laszlo Peter)

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

	* configure.in: Add a check for broken poll on Mac OS X.

	* glib/gmain.c: Use poll emulation on OS X.  (#302672, Toby Peterson,
	patch by Dave Vasilevsky)

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

	* glib/gatomic.c: Don't use local numeric labels in
	inline assembler on AIX.  (#316434, Hans Rosenfeld)

	* glib/gunicode.h (g_utf8_next_char): Cast to const char *,
	not char *.  (#138153, Nikolai Weibull)

Wed Nov 22 16:09:13 2006  Tim Janik  <timj@gtk.org>

	* glib/gmacros.h: added G_GNUC_MAY_ALIAS, suggested by Mathias
	Hasselmann in bug #335341, fixes bug #335853.

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

	* m4macros/glib-gettext.m4: Apply a patch from James
	Henstridge for compatibility with automake 2.60 (#343825)

2006-11-14  Behdad Esfahbod  <behdad@gnome.org>

	* sanity_check: Replace bash-specific == with sh-understood =.
	Fixes bug #373864.

2006-11-05  Hans Breuer  <hans@breuer.org>

	* glib/makefile.msc.in : glib/ version not the gobject/
	one I accidentially commited. Fixes bug #371074.

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

	* makefile.mingw
	* gmodule/makefile.mingw.in
	* glib/makefile.mingw.in
	* gobject/makefile.mingw.in
	* gthread/makefile.mingw.in
	* tests/makefile.mingw.in: Remove from CVS. Haven't been
	maintained or distributed for long.

2006-10-26  Pascal Terjan  <pterjan@linuxfr.org>

	* glib/libcharset/localcharset.c: Fix small leak on failed
	realloc in _g_locale_get_charset_aliases (#338582)

2006-10-16  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gnulib/Makefile.am: Add $(GLIB_DEBUG_FLAGS).  (#362543,
	Peter Kjellerstedt)

2006-10-15  Sebastian Wilhelmi  <seppi@seppi.de>

	* tests/Makefile.am: Compile errorcheck-mutex-test with thread
	libraries explicitly. (#74748, Javier Villavicencio)

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

	Add a way to obtain Unicode script information.  (#348348,
	Marco Barisione)

	* glib/glib.symbols:
	* glib/gunicode.h: Add GUnicodeScript enumeration and
	g_unichar_get_script.

	* glib/guniprop.c: Implement g_unichar_get_script.

	* glib/gscripttable.h: Generated private header containing
	script tables.

	* glib/gen-script-table.pl: Script to generate gscripttable.h.

	* glib/Makefile.am: Update

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

	* tests/run-markup-tests.sh: Small portability fix.  (#347944,
	Dan McMahill)

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

	* glib/gwin32.c (get_package_directory_from_module)
	(g_win32_get_package_installation_directory): g_strdup the keys
	that we are passed before adding them to the hash tables, to guard
	against the caller freeing them. (#355955, Andreas Köhler)

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

	* glib/gtimer.c: Fix a typo.  (#359190)

2006-10-02  Behdad Esfahbod  <behdad@gnome.org>

	* glib/Makefile.am:
	* gobject/Makefile.am:
	Include pltcheck.sh in EXTRA_DIST, and remove redefinition of TESTS.
	(#358966)

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

	* glib/gtimer.c (g_usleep): Use nsleep to implement
	g_usleep on AIX.  (#321974, Andrew Paprocki)

	* configure.in: Check for nsleep

	* glib/gmain.c: Fix typos in doc comments.
	(#358421, Tom Tromey)

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

	* glib/pltcheck.sh: A script to check PLT entries.
	* glib/Makefile.am (TESTS): Run pltcheck.sh

	* glib/*: Fix includes to correct some issues with
	PLT entries.  (#354522, Behdad Esfahbod)

2006-09-17  Hans Breuer  <hans@breuer.org>

	* glib/makefile.msc.in gobject/makefile.msc.in : better filtering
	of G_GNUC_* stuff when generating .def files. Now also works with
	newer (less tolerant) linkers, e.g. from vc2500e

2006-09-10  Matthias Clasen  <mclasen@redhat.com>

	* glib/gbacktrace.c: Assume string.h is available.
	(#354523, Behdad Esfahbod)

	* configure.in: Bump version to 2.13.0

	* glib/glib.symbols:
	* glib/gmain.[hc]: Add functions to create approximate
	timeouts.  (#353942, Arjan van de Ven)

	* glib/gstdio.c (g_rename): Initialize save_errno.
	(#355206, Mike Edenfield)

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

	* glib/gerror.c: Allocate GErrors using the slice allocator.
	(#354054, Matt Barnes)

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

	* glib/gtimer.c: Forgotten HAVE_CLOCK_GETTIME.

2006-09-02  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (g_get_any_init_do): Correct C99ism (mixed
	declarations and code) in Win32 ifdef branch. (#353903, Mike
	Edenfield)

2006-09-01  Abel Cheung  <abel@oaka.org>

	* configure.in: Added 'dz' 'hy' to ALL_LINGUAS.

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

	* configure.in: Check for CLOCK_MONOTONIC.

	* glib/gtimer.c: Only use clock_gettime if we
	have a monotonic clock.

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

	* configure.in: Add missing includes to a few test
	programs.  (#353580, Chris Wilson)

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

	* glib/gmarkup.c (g_markup_vprintf_escaped): Don't call
	va_end on caller-provided va_args.  (#353584, Chris Wilson)

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

	Remove support for Windows 9x/ME, as will be done also in Pango
	and GTK+. GTK+ hasn't worked on Win9x since 2.6 or 2.8 anyway, so
	it's pretty pointless to keep the Win9x code in here either. If
	somebody is interested, the code can always be found in older GLib
	versions, and in CVS.

	* glib/gdir.c
	* glib/gfileutils.c
	* glib/gspawn-win32-helper.c
	* glib/gspawn-win32.c
	* glib/gstdio.c
	* glib/gutils.c
	* glib/gwin32.c
	* glib/gwin32.h: Remove the G_WIN32_IS_NT_BASED() and
	G_WIN32_HAVE_WIDECHAR_API() tests and their false (Win9x)
	branches, and any variables or static functions used only by the
	Win9x branches.

	* glib/gwin32.c (g_win32_windows_version_init): Call g_error() if
	run on Win9x.

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

	* configure.in: Fix pthread compiler flag detection.

	* glib/gtimer.c: Use Posix monotonic clocks instead of
	gettimeofday when available.  (#336114, William Jon McCann)

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

	* glib/gutils.h:
	* glib/gscanner.c: Fix some typos.  (#351741, Kjartan Maraas)

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

	* configure.in: Fix the pthread compiler flag detection.

	* glib/gunicode.h:
	* glib/gutf8.c (_g_utf8_make_valid): Rename make_valid_utf8
	from gconvert.c, move it to gutf8.c, and export it privately.

	* glib/gconvert.c (g_filename_display_name): Adjust callers.

	* glib/gkeyfile.c: Use _g_utf8_make_valid() in a number of
	places to ensure error messages are valid UTF-8.  (#351853,
	Simon Budig)

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

	* Branch for 2.12
