2008-09-17  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version 

	* === Released 2.18.1 ===

	* NEWS: Updates

2008-09-16  Tor Lillqvist  <tml@novell.com>

	* glib/gtimer.c (g_time_val_to_iso8601): time_t is 64 bits in all
	the newer Microsoft C libraries, not just 64-bit ones. So to avoid
	crash if compiled with newer MSVSes, use a separate time_t
	variable in all cases on Windows.

	* glib/gbacktrace.h: Define G_BREAKPOINT() also for 64-bit MSVC,
	using the __debugbreak() intrinsic.

2008-09-15  Behdad Esfahbod  <behdad@gnome.org>

	* configure.in: Fix description of module shared library suffix.

2008-09-15  Tor Lillqvist  <tml@novell.com>

	* config.h.win32.in: Update to match what the configure script
	produces. Just for uniformity, only commented out parts affected.

2008-09-13  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.h
	* glib/gwin32.h: Deprecate G_WIN32_DLLMAIN_FOR_DLL_NAME(),
	g_win32_get_package_installation_directory() and
	g_win32_get_package_installation_subdirectory() as their
	documentation has warned for a while. Sorry that I forgot to do
	this before 2.18.0.

	* glib/gwin32.c (g_win32_get_package_installation_directory):
	Print a warning if a non-NULL package parameter is passed to this
	function, as that is deprecated usage, as the documentation says.

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

	Bug 548321 – <string.h> is not included in gi18n-lib.h

	* glib/gi18n.h:
	* glib/gi18n-lib.h: Include string.h, since strlen is used in 
	the macros. Pointed out by Ignacio Casal Quinteiro

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

	Bug 551731 – g_date_set_time[_t] docs should mention what timezone

	* glib/gdate.c (g_date_set_time, g_date_set_time_t): Documentation
	improvements proposed by Owen Taylor.

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

	Bug 551410 – gtestutils.c: using printf without prototype

	* glib/gtestutils.c: Include stdio.h. Pointed out by Kazuki Iwamoto.

2008-09-09  Matthias Clasen  <mclasen@redhat.com>

	Bug 551228 – G_STRFUNC on recent Sun compiler should be expanded to
	__func__ rather than '???'

	* glib/gmacros.h: Don't use glibconfig.h defines in gmacros.h,
	as the comment up top says. Instead look at __STDC_VERSION__.
	Problem reported by Lin Ma.

2008-09-09  Matthias Clasen  <mclasen@redhat.com>

	Bug 523463 – Core dump in gmain.c:2482:IA__g_main_context_check()

	* glib/gmain.c (g_main_context_check): Be robust against setting
	event fields on the fly, as e.g. happens in linc. Tracked down
	by Paul Smith, fix proposed by Owen Taylor.

2008-09-08  Christian Dywan  <christian@imendio.com>

	Bug 550433 – g_test_init doesn't recognize --help

	* glib/gtestutils.c (parse_args): Add detailed --help output

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

	* configure.in: Bump version

	* === Released 2.18.0 ===

2008-09-02  Ryan Lortie  <desrt@desrt.ca>

	Bug 549771 – improved .gitignore for glib

	* docs/reference/.gitignore:
	* docs/reference/gio/.gitignore:
	* docs/reference/gobject/tmpl/.gitignore:
	* gio/.gitignore:
	* gio/tests/.gitignore:
	* glib/.gitignore:
	* glib/libcharset/.gitignore:
	* glib/tests/.gitignore:
	* gmodule/.gitignore:
	* gobject/.gitignore:
	* gobject/tests/.gitignore:
	* po/.gitignore:
	* tests/.gitignore: new files
	* .gitignore: remove 'build' (since it's part of glib now), add more
	useful things.

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

	* NEWS: Updates

	* configure.in: Bump version to 2.18.0

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

	Bug 550104 – trivial documentation fix for g_get_home_dir

	* glib/gutils.c (g_get_home_dir): Fix up the docs.

2008-09-02  Michael Natterer  <mitch@imendio.com>

	* glib/gchecksum.c (g_checksum_reset): add
	g_return_if_fail (checksum != NULL)

2008-09-01  Paolo Borelli  <pborelli@katamail.com>

	Bug 550040 - Move GString, rand and printf tests to the unit test
	framework

	* tests/printf-test.c:
	* tests/rand-test.c:
	* tests/string-test.c:
	Removed

	* glib/tests/printf.c:
	* glib/tests/rand.c:
	* glib/tests/string.c:
	Added

	* tests/Makefile.am:
	* glib/tests/Makefile.am:
	Updated for the above

2008-08-31  Emmanuele Bassi  <ebassi@gnome.org>

	Bug 550096 – GBookmarkFile parser is not forward compatible

	* glib/gbookmarkfile.c:
	(parse_bookmark_element), (parse_application_element),
	(parse_mime_type_element), (parse_icon_element): Relax the
	attributes checking of the GBookmarkFile parser for the
	attributes that the desktop bookmark file specification
	defines and controls. This allows adding new attributes to
	the existing elements in newer versions without breaking the
	parser in older ones.

2008-08-28  Ryan Lortie  <desrt@desrt.ca>

	Fixup for test case in previous commit.

	* glib/tests/strfuncs.c: don't fail if we can't open the test data.
	This happens if $(builddir) != $(srcdir) (like when doing 'make
	distcheck').  Quick workaround for now until #549783 can be fixed.

2008-08-28  Ryan Lortie  <desrt@desrt.ca>

	Bug 548612 – g_strstr_len() should use memmem when available

	* glib/gstrfuncs.c (g_strstr_len): fix off-by-one memory access error
	* glib/tests/strfuncs.c (test_bounds): add some new test cases that
	would catch problems like this
	* glib/tests/4096-random-bytes: test data for the previous
	* glib/tests/Makefile.am: add previous to EXTRA_DIST
	
2008-08-28  Ryan Lortie  <desrt@desrt.ca>

	[REVERT] Bug 548612 – g_strstr_len() should use memmem when available

	* configure.in:
	* glib/gstrfuncs.c (g_strstr_len): revert use of memmem (see bug)

2008-08-28  Matthias Clasen  <mclsaen@redhat.com>

	* configure.in: Change libselinux detection to not link libglib
	against it.

2008-08-28  Michael Natterer  <mitch@imendio.com>

	* glib/gstrfuncs.c (g_parse_long_long): make "endptr" const since
	it's always a pointer into the const string passed. Remove some
	casting to (gchar*) in this function.

	(g_ascii_strtoull)
	(g_ascii_strtoll): cast "endptr" to (const gchar**) here when
	passing it to above function.

2008-08-28  Bastien Nocera  <hadess@hadess.net>

	Bug 548612 – g_strstr_len() should use memmem when available

	* glib/tests/strfuncs.c (test_strstr):
	* tests/string-test.c (main): Patch by Paolo Borelli
	<pborelli@katamail.com> to move the tests to the right place,
	and add more tests

	* glib/gstrfuncs.c (g_strstr_len): Fix problem with memmem ignoring
	nul-terminators in strings, and using the haystack_len instead

2008-08-28  Bastien Nocera  <hadess@hadess.net>

	Bug 548612 – g_strstr_len() should use memmem when available

	* configure.in: detect whether memmem is available in the C library
	* glib/gstrfuncs.c (g_strstr_len): use memmem for g_strstr_len() if
	available in it's available, as it could be optimised by the C library
	* tests/string-test.c (main): Add a few tests for g_strstr_len()

2008-08-27  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Stylistic changes. Plug an unlikely memory leak
	that occurred in create_thread() if closing the thread handle
	failed. Add more error messages to g_io_win32_free() that are
	printed only when debugging. Plug handle leak, a socket channel's
	event was never closed.

2008-08-27  Tor Lillqvist  <tml@novell.com>

	* config.h.win32.in: Should not define HAVE_DIRENT_H when
	compiling with MSVC, as the only file which checks HAVE_DIRENT_H
	is gdir.c, and that includes the dirent.h and wdirent.c from
	build/win32/dirent explicitly anyway when being compiled with
	MSVC.

2008-08-22  Björn Lindqvist  <bjourne@gmail.com>

	Bug 523939 – Example program for GValue

	* gobject/gvalue.c: Add code example that demonstrates GValue's
	features.

2008-08-21  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Minor comment improvements. Improve run-time
	warning messages. Drop some #if 0 code. Don't bother compiling the
	binary compatibility g_io_channel_win32_new_stream_socket()
	function that has not been mentioned in any header since 2.0 on
	Win64.

	* glib/glib.symbols: Mark it, too, private, and don't export it on
	Win64.

2008-08-21  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.c: Rework the g_poll() implementation on Windows to
	match poll() semantics more closely. This makes the test program
	in bug #468910 behave better and doesn't seem to break anything
	else.

	If polling several GPollFDs, i.e. messages and/or waitable
	handles, first check if one or several of them are in the
	signalled state right away, with timeout zero. Return indication
	for all that are in that case. To check if several handles are
	signalled, we have to call the WaitForMultipleObjectsEx() function
	repeatedly, each time removing the handle it indicated was
	signalled last time, until WAIT_TIMEOUT is returned.

	If not, then poll with timeout and indicate only the single one
	that the Win32 wait function tells us as before.

	Remove unnecessary ifdefs, as we always have G_MAIN_POLL_DEBUG
	defined on Windows.

	Initialise g_main_poll_debug in g_main_context_new() so we have it
	before testing it in one case.

	Don't put several copies of a handle in the array of handles to
	wait for. The documentation says this is not allowed, although it
	did seem to work fine in practise. But do as the documentation
	says anyway.

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

	Bug 500246 - Bug fixes for giowin32

	* glib/giowin32.c (read_thread) (write_thread): Change the nbytes
	variables to signed.
	(g_io_channel_win32_make_pollfd): Fix an obvious error in the file
	descriptor case leftover after the patch from bug #333098 on
	2006-03-02. Thanks to Marcus Brinkmann.

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

	Bug 324234 - Using g_io_add_watch_full() to wait for connect() to
	return on a non-blocking socket returns prematurely

	Bug 548278 - Async GETs connections are always terminated
	unexpectedly on Windows

	* glib/giowin32.c: Add one more state variable to the
	GIOWin32Channel struct, ever_writable. Initialise it to FALSE, set
	to TRUE when the WSAEventSelect() indicates FD_WRITE, and never
	reset to FALSE.

	Don't do the WSASetEvent() in g_io_win32_prepare() unless
	ever_writable is TRUE. Don't automatically indicate G_IO_OUT in
	g_io_win32_check() unless ever_writable is TRUE.

	This fixes the behaviour of the test case program in bug #548278,
	and the "Testcase for the spurious OUT event bug" in bug
	#324234. It also doesn't seem to break anything. Not that there is
	any exhaustive test suite...

	Add a comment with a list of bugs that are related to the code in
	this file.

2008-08-18  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

2008-08-18  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.17.7 ===

2008-08-17  Sven Neumann  <sven@gimp.org>

	* NEWS: mention GWinHttpVfs.

2008-08-16  Matthias Clasen  <mclasen@redhat.com>

	* NEWS: Updates

2008-08-15 12:41:26  Tim Janik  <timj@imendio.com>

	* glib/gtestutils.c: changed assertion messages, so older emacsen
	can also detect failing source file and line, fixes:
	Bug 502498 – Test framework assertion failures should follow gcc error format

2008-08-14  Matthias Clasen  <mclasen@redhat.com>

	Bug 547832 – gtk+-2.12.11 fails to build - AC_PROG_MMAP too strict,
	and unnecessary

	* configure.in: Be a little bit more forgiving when checking
	for mmap. Patch by Peter O'Gorman

2008-08-13  Matthias Clasen  <mclasen@redhat.com>

	Bug 547337 – G_DISABLE_DEPRECATED breaks tests build

	* tests/testglib.c: Protect deprecated API by ifdefs.
	Patch by Kalle Vahlman

2008-08-13  Matthias Clasen  <mclasen@redhat.com>

	Bug 547637 – unconditional #include of sys/statfs.h in configure
	impedes detection of statfs things if non-existant

	* configure.in: Protect the statfs.h include by guards.

2008-08-12  Federico Mena Quintero  <federico@novell.com>

	* glib/gi18n-lib.h: In the #error about having to define
	GETTEXT_PACKAGE, add a hint about a possibly-missing config.h.

2008-08-11  Behdad Esfahbod  <behdad@gnome.org>

	Bug 547200 – g_utf8_find_next_char() issues

	* glib/gutf8.c: Improve wording about @end arguments in str funcs.

2008-08-10  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gutf8.c: Fix docs to use "nul-terminated" consistently.

2008-08-08  Ryan Lortie  <desrt@desrt.ca>

	Fix 'fail' markup test cases to -not- be valid XML 1.1.

	* tests/markups/fail-32.gmarkup: change &#x10; to &#x0; since the
	former is no longer a failure.

2008-08-08  Ryan Lortie  <desrt@desrt.ca>

	Bug 546876 - Modify GMarkup parser to accept &#x1; .. &#x1f;

	* glib/gmarkup.c: previously the parser only accepted character
	references for \t \n and \r (as per XML 1.0); now it accepts all
	of &#x1; .. &#x1f;.

2008-08-07  Tor Lillqvist  <tml@novell.com>

	* configure.in: Output comment clarifying GPid semantics to
	glibconfig.h.

	* glibconfig.h.win32.in: Ditto here.

2008-08-04  Matthias Clasen  <mclasen@redhat.com>

	Bug 546329 – API docs for g_utf8_normalize() are incorrect

	* glib/gunidecomp.c: Remove inaccurate information about
	g_utf8_collate() from g_utf8_normalize() docs.
	Pointed out by Sven Neumann.

2008-08-04  Tor Lillqvist  <tml@novell.com>

	* glibconfig.h.win32.in: Make the union _GSystemThread::data array
	8 bytes on Win64. Not that it matters as the union contains a
	pointer also anyway, but for equivalence with the configure-
	generated glibconfig.h

2008-08-04  Tor Lillqvist  <tml@novell.com>

	* glib/gmain.c (g_get_current_time): MSDN says: "Do not cast a
	pointer to a FILETIME structure to either a LARGE_INTEGER* or
	__int64* value because it can cause alignment faults on 64-bit
	Windows." So don't do that then. Indeed the code did work randomly
	on Win64 when compiled with optimisation.

2008-08-04  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c
	* glib/gmain.c
	* glib/gspawn-win32.c
	* glib/gspawn-win32-helper.c: Change gssize casts introduced on
	2008-07-28 to gintptr casts now that we have that. gssize is as
	such the same as gintptr on both 32- and 64-bit Windows, but the
	gintptr name indicates that it is used to hold pointers, i.e. also
	HANDLEs.

	* tests/testglib.c: Avoid warning on Win64 by using gintptr cast
	instead if long cast.

2008-08-04  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

2008-08-04  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.17.6 ===

2008-08-04  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.17.5 ===

	* NEWS: Updates

2008-08-02  Tor Lillqvist  <tml@novell.com>

	* glibconfig.h.win32.in: Add gintptr and guintptr typedefs here,
	too, appropriately ifdeffed for 32/64 bit, gcc/MSVC. Add 64-bit
	versions of GPOINTER_TO_INT(), GPOINTER_TO_UINT() and vice versa,
	too.
	
2008-08-01  Matthias Clasen  <mclasen@redhat.com>

	* NEWS: Updates
	
2008-08-01  Matthias Clasen  <mclasen@redhat.com>

	Bug 545798 – "Since: 2.18" mark is missing in g_set_error_literal
	documentation

	* glib/gerror.c (g_set_error_literal): Add a Since: marker.
	Pointed out by Kouhei Sutou

2008-07-30  Tor Lillqvist  <tml@novell.com>

	Bug 545485 - Implicit declaration of utime()

	* glib/gstdio.c: Include <utime.h> on POSIX.

2008-07-28  Tor Lillqvist  <tml@novell.com>

	* configure.in: Output to glibconfig.h typedefs for gintptr as the
	signed integer type that can hold a pointer, and guintptr as the
	corresponding unsigned type. These types are portable equivalents
	to intptr_t and uintptr_t which are not available in all
	compilers.

	For all current platforms, they will presumably end up as the same
	types as gssize and gsize, but in theory size_t can be smaller
	than intptr_t. Also, the intended use case for gintptr and
	guintptr is different from that of gssize and gsize. As the name
	indicates, gintptr is for when one wants an integer type that can
	hold a pointer, and gsize is for when one wants an integer type
	that can hold the value of the sizeof operator.

2008-07-28  Matthias Clasen  <mclasen@redhat.com>

	Bug 544465 – gmarkup makes it hard to use pre-rolled parsers

	* glib/glib.symbols:
	* glib/gmarkup.[hc]: Add g_markup_context_get_user_data.
	Patch by Ryan Lortie

2008-07-28  Tor Lillqvist  <tml@novell.com>

	* glib-zip.in: Message catalogs should always get installed into
	share/locale nowadays, don't bother with the convoluted logic
	checking if they are in lib/locale instead. Put the correct helper
	programs in the zipfile.

2008-07-28  Tor Lillqvist  <tml@novell.com>

	Fix problems on 64-bit Windows. Avoid warnings, some of which
	indicated actual problems, some which were just annoyances. 

	Where casts to an integer type are needed for pointers, use
	gssize. Technically intptr_t would be the more proper type, but we
	still want to be compilable with MSVS6 and 7 which don't have
	intptr_t. MSVS8 and 9 do have intptr_t, but in <crtdefs.h>, not
	<stdint.h>.

	Use %p to print out handles. Use gssize casts when assigning
	GPollFD::fd fields.

	Use G_GSIZE_FORMAT when printing size_t values.
	
	* configure.in: Define automake conditional G_OS_WIN32_X64 which
	is true on Win64.

	* glib/giochannel.h: Use slightly different prototype for
	g_io_channel_win32_new_messages() on Win64 with gsize instead of
	guint.

	* glib/giowin32.c
	* glib/gmain.c
	* glib/gspawn-win32.c
	* tests/testglib.c: Generic changes as described above.

	* glib/gmain.h: Don't bother mentioning GIMP in comment.

	* glib/grel.c (tuple_hash_2): Use all bits of pointer.

	* glib/gspawn-win32.c
	* glib/gspawn-win32-helper.c: Use gssize types in the
	communication between parent and helper process, so that we can
	pass process handles, which are pointers, also on Win64.

	* glib/gtimer.c (g_time_val_to_iso8601): time_t is 64 bits on
	Win64 so we can't pass the address of a GTimeVal::tv_sec which is
	a long directly to gmtime(). On the other hand, changing
	GTimeVal::tv_sec to be a gint64 on Win64 is not really feasible
	either, as that would then require changes in much code that uses
	GTimeVals.

	* glib/gspawn-win32.c
	* glib/Makefile.am: Call the helper programs
	gspawn-win64-helper.exe and gspawn-win64-helper-console.exe on
	Win64, to avoid potential risk of running a 32-bit version of the
	helper.

2008-07-27  Tor Lillqvist  <tml@novell.com>

	* glib/glib.symbols
	* glib/gconvert.c
	* glib/gdir.c
	* glib/gfileutils.c
	* glib/giowin32.c
	* glib/gspawn-win32.c
	* glib/gutils.c
	* glib/gwin32.c: Bypass the Windows "ABI compatibility" symbols on
	_WIN64. As there hasn't been any widely deployed 64-bit Windows
	builds of the really old GLib (pre-2.8.1) versions those refer to,
	there is no need to have the "ABI compatibility" versions in the
	DLL.

	* glib/makegalias.pl: Handle #ifndef _WIN64: Just output it, too.

2008-07-27  Tor Lillqvist  <tml@novell.com>

	* configure.in: Set LIB_EXE_MACHINE_FLAG to either X86 or X64 on
	Windows. AC_SUBST it.

	* glib/Makefile.am (glib-2.0.lib): Pass appropriate -machine flag
	to lib.exe.

2008-07-25 15:47:08  Tim Janik  <timj@imendio.com>

	* glib/tests/testing.c (test_random_conversions): added new sample
	test to prepare for extended range random tests.

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

	* glib/gdir.c: Include <stdio.h> for FILENAME_MAX on newer mingw
	installations.

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

	* glib/gslice.c (smc_notify_free): Use G_GSIZE_FORMAT instead of
	the C99 "zu".

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

	* configure.in: Must output the GLIB_USING_SYSTEM_PRINTF to
	glibconfig.h using the same two phase code as for the other
	defines in it. Can't check enable_included_printf directly in the
	shell code that is the first argument to AC_CONFIG_COMMANDS().

	Preset glib_cv_stack_grows=no on Windows to help
	cross-compilation.

	* configure.in: Enhancements for 64-bit Windows: 

	Handle also size_t being larger than long. It is long long
	a.k.a. __int64 on the LLP64 Win64.

	Set glib_void_p and glib_long correctly. Their assignments were
	crossed. It hasn't mattered on LP64 platforms like all (?) 64-bit
	UNIXes, but on the LLP Win64 it was wrong.

	* glibconfig.h.win32.in: Check also _WIN64.

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

	* glibconfig.h.win32.in: Patch for 64-bit Windows from Richard
	Hult.

2008-07-23  Matthias Clasen  <mclasen@redhat.com>

	544088 – option_test_LDADD is left in tests/Makefile.am

	* tests/Makefile.am: Remove leftovers. 
	Noticed by Hiroyuki Ikezoe

2008-07-22  Mathias Hasselmann  <mathias@openismus.com>

	Set LANG variable for group caption tests to get reproducable results.

	* glib/tests/option-context.c (group_captions()):
	  Set LANG variable to C in the forked process to get reproducable.
	  Don't silence the forked process in --verbose mode to support
	  debugging.

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

	* configure.in: Fix detection of struct statfs fields.

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

	* configure.in: Bump version

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

	* === Released 2.17.4 ===

	* configure.in: Bump version

	* NEWS: Updates

2008-07-21  Emmanuele Bassi  <ebassi@gnome.org>

	* glib/gtimer.c (g_time_val_to_iso8601): Use the right format
	string to get leading zeros when converting to ISO 8601. (Sven
	Herzberg)

2008-07-21  Emmanuele Bassi  <ebassi@gnome.org>

	* glib/gbookmarkfile.c:
	(bookmark_app_info_new): Do not set the timestamp value
	using time(), as it will be overwritten anyway. (#535223,
	Michael Meeks)

	(parse_application_element),
	(bookmark_app_info_dump): Support the "modified" attribute,
	which takes an ISO-formatted string instead of a Unix time
	stamp, to keep the number of g_strdup_printf() calls to a
	minimum.

	* glib/gtimer.c:
	(g_time_val_to_iso8601): Do not use strftime(): we know
	the format and contents of the ISO 8601 date format we
	use.

	* tests/bookmarks/valid-03.xbel: Add a test file for the
	modified attribute.

2008-07-19  Matthias Clasen  <mclasen@redhat.com>

	* glib/tests/Makefile.am:
	* glib/tests/array-test.c: Move array tests here.

	* tests/Makefile.am:
	* tests/array-test.c: Removed.

2008-07-20  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c (g_io_win32_prepare): Patch from Yu Kuan that
	makes watched sockets behave much better. See gtk-devel-list
	archives from May for the (unfortunately rather meager)
	discussion. This patch fixes the presented simple test program,
	which reasonably could be expected to work.

2008-07-18  Matthias Clasen  <mclasen@redhat.com>

	* NEWS: Updates

2008-07-18  Matthias Clasen  <mclasen@redhat.com>

	Bug 536996 – Missing noop i18n macro equivalent to C_

	* glib/glib.symbols:
	* glib/gstrfuncs.[hc]: Add g_dpgettext2() which is a 
	variant of g_dpgettext() taking context and id as separate
	arguments.

	* glib/gi18n-lib.h:
	* glib/gi18n.h: Add an NC_() macro that is to C_() as N_()
	is to _().

2008-07-18  Matthias Clasen  <mclasen@redhat.com>

	* tests/Makefile.am:
	* tests/keyfile-test.c:
	* tests/option-test.c: Remove
	* glib/tests/option-context.c: Add all GOptionContext tests here.
	* glib/tests/keyfile.c: Add all GKeyFile tests here.

2008-07-16  Matthias Clasen  <mclasen@redhat.com>

	Bug 334234 – "printf" format error

	* glib/gslice.c (mem_error): Avoid a warning when printing a pid_t.
	Pointed out by Morten Welinder. 

2008-07-16  Matthias Clasen  <mclasen@redhat.com>

	Bug 406120 – g_ascii_strtod

	* glib/gstrfuncs.c (g_ascii_strtod): Document that this
	function does accept localized infinities and nans. Reported
	by Morten Welinder.

2008-07-16  Matthias Clasen  <mclasen@redhat.com>

	Bug 482413 - get_contents_stdio -- overflow and memory corruption

	* glib/gfileutils.c (get_contents_stdio): Detect overflow and
	error out. Reported by Morten Welinder. 

2008-07-16  Matthias Clasen  <mclasen@redhat.com>

	Bug 542332 – small fix for error message in GMarkup
	
	* glib/gmarkup.c: Improve an error message. 
	Patch by Ryan Lortie

2008-07-14  Matthias Clasen  <mclasen@redhat.com>

	Bug 428048 – 2 of 51 tests fail on Solaris

	* tests/iochannel-test.c: Ignore the error if iconv doesn't
	support EUC-JP.

2008-07-14  Matthias Clasen  <mclasen@redhat.com>

	* tests/option-test.c: Print error messages when something fails.

2008-07-14  Matthias Clasen  <mclasen@redhat.com>

	Bug 467707 – test_iconv_state() in tests/convert-test.c fails on AIX 5.3

	* tests/convert-test.c (test_iconv_state): Skip this test if
	CP1255 is not supported.  

2008-07-10  Ryan Lortie  <desrt@desrt.ca>

 	* docs/reference/glib/glib-sections.txt:
 	* glib/glib.symbols:
 	* glib/gmarkup.c:
 	* glib/gmarkup.h: add functions g_markup_parse_context_{push,pop} in
 	order to provide some small hooks on which to build easy-to-use
 	subparsers.
 
 	* glib/tests/Makefile: add new test
 	* glib/tests/markup-subparser.c: new test for subparsers
 
 	Fixes bug #337518.

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

	Bug 528317 – GRegex does not allow recursion limit

	* glib/pcre/Makefile.am: Set a sane default recursion limit
	of 8192 instead of 1000000. 
	Patch by Mart Raudsepp.

2008-07-04  Behdad Esfahbod  <behdad@gnome.org>

	Bug 541507 – Ambiguous description of assigned characters in the Glib
	Unicode Manipulation reference

	* glib/guniprop.c
	(g_unichar_isgraph): Return true for PrivateUse too.
	(g_unichar_isprint): Return true for PrivateUse too.
	(g_unichar_isdefined): Return false for Surrogate.

2008-07-04  Michael Natterer  <mitch@imendio.com>

	Bug 541208 – Functions to easily install and use signals without
	class struct slot

	* tests/gobject/override.c: added tests for the new gsignal
	overriding and chaining APIs.

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

	* === Released 2.17.3 ===

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

	* configure.in: Better endianness fix. From Tomas Mraz.

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

	* NEWS: Updates

2008-07-02  Colin Walters  <walters@redhat.com>

	* gio/gcontenttype.c: Use UNLOCK to unlock, not LOCK.

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

	* configure.in: Add a check for structfs.f_bavail

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

	* glib/gmain.c (g_get_current_time): Add a g_return_val_if_fail
	check in both versions. Proposed by Patrik Olsson in bug 540545.

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

	* configure.in: Workaround AC_C_BIGENDIAN breakage in autoconf 2.61.
	Add a _cv_ to some variable names, since autoconf wants it.

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

	* glib/pcre/pcre_compile.c: Apply fix for CVE-2008-2371 to
	fix a heap-based buffer overflow.

2008-06-29  Björn Lindqvist  <bjourne@gmail.com>

	Bug 539626 – Update docstrings for g_object_freeze_notify and
	g_object_thaw_notify

	* gobject/gobject.c: Explain how the freeze count works.

2008-06-26  Cody Russell  <bratsche@gnome.org>

	* configure.in: Add #define GLIB_USING_SYSTEM_PRINTF
	to glibconfig.h, which specifies if GLib is using
	the system printf functions for g_print*().
	(#539999, by Tim-Philipp Müller)

2008-06-24  Paolo Borelli  <pborelli@katamail.com>

	Bug 539770 - migrate gstrfunc unit tests to gtest

	* tests/strfunc-test.c:
	* tests/testglib.c:
	* tests/strtoll-test.c:
	* tests/strtod-test.c:
	* tests/string-test.c:
	* tests/Makefile.am:
	Removed old tests.

	* glib/tests/fileutils.c:
	* glib/tests/strfuncs.c:
	* glib/tests/Makefile.am:
	Added all the old tests migrated to the new unit test framework
	and add new unit tests for some of the functions.

2008-06-23  Kristian Rietveld  <kris@imendio.com>

	* gobject/glib-mkenums.in: introduce an ENUMPREFIX substitution.

	* gio/gioenumtypes.h.template: use @ENUMPREFIX@ instead of
	hard coding "G" as prefix.

2008-06-22  Stefan Kost  <ensonic@users.sf.net>

	* glib/gurifuncs.c:
	  Fix markup in comment.

2008-06-21  Johan Dahlin  <jdahlin@async.com.br>

    * *.[ch]: Include "config.h" instead of <config.h>
    Command used:
    find -name \*.[ch]|xargs perl -p -i -e 's/^#include <config.h>/#include "config.h"/g'
    Rubberstamped by Mitch

2008-06-20  Sebastian Dröge  <slomo@circular-chaos.org>

	Bug 316221 - G_LOCK warns about breaking strict-aliasing rules

	* configure.in:
	* glib/gthread.h: Revert previous patch as it doesn't improve the
	situation and results in other warnings.

2008-06-16  Christian Persch  <chpe@gnome.org>

	Bug 539123 – annotate g_d[n]gettext with G_GNUC_FORMAT

	* glib/gstrfuncs.h:
	* glib/glib.symbols: Annotate some functions with G_GNUC_FORMAT. 

2008-06-19  Tor Lillqvist  <tml@novell.com>

	Bug 539074 - Cannot get exit status with g_spawn_command_line_sync()

	* glib/gspawn-win32-helper.c (main): Write also the exit status of
	the spawned process to the error report pipe. Patch by Hiroyuki
	Ikezoe.

2008-06-19  Matthias Clasen  <mclasen@redhat.com>

	Bug 535949 – annotate g_strip_context and g_dpgettext with
	G_GNUC_FORMAT

	* glib/gstrfuncs.h:
	* glib/glib.symbols: Annotate some functions with G_GNUC_FORMAT.
	Patch by Christian Persch

2008-06-19  Matthias Clasen  <mclasen@redhat.com>

	Bug 539067 – The document g_io_channel_win32_new_fd() says that "Your
	code should call only g_io_channel_read()." but gio_channel_read() is
	deprecated

	* glib/giochannel.h: Fix a reference in a comment
	Patch by Hiroyuki Ikezoe 

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

	Bug 537635 – Corrections and improvements to
	g_time_val_from_iso8601()/g_time_val_to_iso8601()

	* glib/gtimer.c (g_time_val_from_iso8601): set tv_usec to 0 rather 
	than 1 when a fraction of a second is not specified
	(g_time_val_from_iso8601): calculate a fraction of a second
	correctly even in case it does not happen to consist of exactly 
	six digits; do not allow random data after the ISO 8601 string,
	only whitespace
	(make g_time_val_to_iso8601): support fractions of a second
	Patch by Peter Kjellerstedt

	* tests/testglib.c: Update to match

2008-06-16  Christian Persch  <chpe@gnome.org>

	* glib/gbookmarkfile.c
	* glib/gconvert.c
	* glib/gfileutils.c
	* glib/giochannel.c
	* glib/giounix.c
	* glib/giowin32.c
	* glib/gkeyfile.c
	* glib/gregex.c
	* glib/gshell.c
	* glib/gspawn-win32.c
	* glib/gutf8.c: Use g_set_error_literal where appropriate. Patch from 
	bug #535947.

2008-06-16  Christian Persch  <chpe@gnome.org>

	* docs/reference/glib/glib-sections.txt:
	* glib/gerror.c:
	* glib/gerror.h:
	* glib/glib.symbols: Add g_set_error_literal. Bug #535947.

2008-06-16  Michael Natterer  <mitch@imendio.com>

	* glib/goption.c (dgettext_swapped): changed return value to
	const gchar* to fix warning.

2008-06-14  Matthias Clasen  <mclasen@redhat.com>

	* glib/gtestutils.c: Move docs around

	* glib/gchecksum.h: Add docs.

2008-06-13  Matthias Clasen  <mclasen@redhat.com>

	Bug 538119 – glib's mainloop leaks a pipe to sub-processes

	* glib/gmain.c (g_main_context_init_pipe): Don't leak the
	pipes to child processes. Patch by Thiago Macieira.

2008-06-13  Hans Breuer  <hans@breuer.org>

	* glib/gstrfuncs.c : to get the default translation target on
	win32 use g_win32_get_locale() instead of setlocale(LS_MESSAGES,NULL)
	Fixes bug #538044

	* glib/makefile.msc.in gio/makefile.msc : updated

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

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

	* configure.in: Fix LINGUAS conversion

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

	* configure.in: Bump version

	* === Released 2.17.1 ===

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

	* glib/gtestutils.c: Documentation fixups

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

	* glib/glist.c: Tiny doc fix

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

	* NEWS: Updates

2008-06-11  Behdad Esfahbod  <behdad@gnome.org>

	Bug 503071 – Application direction changes to right to left even if
	theres no translation

	* glib/gi18n-lib.h:
	* glib/glib.symbols:
	* glib/gstrfuncs.h:
	* glib/gstrfuncs.c:
	Add new functions g_dgettext() and g_dngettext().

	* glib/gutils.c (glib_gettext):
	* glib/gfileutils.c (g_format_size_for_display):
	* glib/goption.c (dgettext_swapped):
	Use the new functions.

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

	Bug 502511 – g_assert_cmphex prints invalid message

	* glib/gtestutils.c (g_assertion_message_cmpnum): Actually print
	hex numbers in hex. 
	Pointed out by Tor Lillqvist

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

	Bug 338162 – [PATCH] Use po/LINGUAS

	* po/LINGUAS: New file
	* po/Makefile.in.in: Dist LINGUAS
	* configure.in: Use po/LINUAS
	Patch by Thomas Andersen

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

	Bug 314453 – Nautilus crashes in Solaris when browsing the attached
	file

	* glib/gunicollate.c (g_utf8_collate_key): Handle strfxrm returning
	-1 a little better. Problem pointed out by Takao Fujiwara

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

	Bug 529321 – make check fails in glib/pcre

	* glib/pcre/Makefile.am: include Makefile.decl to fix 'make check'.
	Patch by Hiroyuki Ikezoe

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

	* glib/giowin32.c: g_win32_error_message() works fine for the
	Winsock WSA* error codes, too, so drop the winsock_error_message()
	function.

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

	Bug 455215 – g_get_user_special_dir: no reference about
	G_USER_DIRECTORY_DOWNLOAD fallback to $HOME/Desktop if 
	xdg-user-dirs is not in use

	* glib/gutils.c (g_get_user_special_dir): Improve the docs.
	Proposed by Luca Ferretti

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

	Bug 498732 – g_key_file_to_data cannot fail

	* glib/gkeyfile.c (g_key_file_to_data): Improve the docs.
	Proposed by Christian Persch

2008-06-11  Ross Burton  <ross@burtonini.com>

	Bug 511367 - add g_file_make_directory_with_parents.
	
	* gio/gfile.c:
	* gio/gfile.h:
	* gio/gio.symbols: Add g_file_make_directory_with_parents.
	
2008-06-11  Sebastian Dröge  <slomo@circular-chaos.org>

	Bug 531900 – Use __builtin_offsetof for G_STRUCT_OFFSET if building
	with gcc 4.0 or newer

	* glib/gmacros.h: Use __builtin_offsetof for G_STRUCT_OFFSET if
	building with gcc 4.0 or newer.

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

	* glib/gmain.c
	* glib/gspawn.c: Clarify what a "child pid" is in the doc
	comments.

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

	Bug 536158 – also bump GHashTable version when a node is removed via
	g_hash_table_iter_remove()/g_hash_table_iter_steal()

	* glib/ghash.c (iter_remove_or_steal): Bump the hash table 
	version. Patch by Jean-Yves Lefort

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

	* glib/gstdio.c (g_access): Define X_OK if necessary (MSVC).

2008-06-02  Yevgen Muntyan  <muntyan@tamu.edu>

	Bug 531403 – g_utf8_collate broken on Mac.

	* glib/gunicollate.c:  (g_utf8_collate): use UCCompareTextDefault;
        (collate_key_to_string), (carbon_collate_key_with_collator),
        (carbon_collate_key), (carbon_collate_key_for_filename): new
        functions using Carbon API to get collate key for g_utf8_collate_key()
        and g_utf8_collate_key_for_filename();
        (g_utf8_collate_key), (g_utf8_collate_key_for_filename): use those.

2008-05-30  Michael Natterer  <mitch@imendio.com>

	Bug 535628 - test/patterntest.c still includes gpattern.h
	directly.

	* tests/patterntest.c: don't include "glib/gpattern.h" directly.
	Patch from Hiroyuki Ikezoe.

2008-05-30  Tor Lillqvist  <tml@novell.com>

	Bug 535625 - alias.h:2648: error: 'utime' undeclared here (not in
	a function)

	* glib/glib.symbols: Move g_utime inside #if !defined(G_OS_UNIX)
	|| defined(G_STDIO_NO_WRAP_ON_UNIX).

2008-05-30  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_access) [Win32]: Mask out X_OK to avoid problem
	on Vista. X_OK was just ignored by access() in earlier Microsoft C
	libraries. (Which is fine as executability has little meaning on
	Windows.) The one on Vista returns an error if X_OK is passed.

2008-05-29  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.h
	* glib/gstdio.c: Add g_utime(). No need to include <sys/utime.h>
	in gstdio.h, just use a forward struct declaration.

	* glib/glib.symbols: Add it.

2008-05-29  Tor Lillqvist  <tml@novell.com>

	* glib/gnulib/printf-args.c (printf_fetchargs): wint_t is short on
	Windows, and gcc warns: "wint_t is promoted to int when passed
	through ... (so you should pass int not wint_t to va_arg)." And
	indeed g_print("%C", L'a') crashes. So do as gcc says then.

2008-05-28  Michael Natterer  <mitch@imendio.com>

	* configure.in: add G_DISABLE_SINGLE_INCLUDES to CPPFLAGS
	globally.

	* glib/tests/option-context.c
	* glib/tests/testing.c
	* tests/testingbase64.c: don't include <glib/gtestutils.h>

2008-05-27  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

	* === Released 2.17.0 ===

2008-05-27  Matthias Clasen  <mclasen@redhat.com>

	* README.in: Add a note about G_DISABLE_SINGLE_HEADERS.

	* NEWS: Updates

2008-05-27  Matthias Clasen  <mclasen@redhat.com>

	* tests/casemap.txt:
	* tests/casefold.txt: Update for Unicode 5.1

2008-05-27  Matthias Clasen  <mclasen@redhat.com>

	* Revert the patch for bug 527214 and related changes. GTimer
	is supposed to work without threads.

2008-05-27  simon.zheng  <simon.zheng@sun.com>

	* configure.in: Fix #533369. Check whether memeber statvfs.f_basetype 
        available or not.

2008-05-27  Matthias Clasen  <mclasen@redhat.com>

	* glib/pcre/*: Update to PCRE 7.7

2008-05-26  Matthias Clasen  <mclasen@redhat.com>

	* glib/gchecksum.c: Add Since: tag to g_checksum_reset

	* glib/glib.symbols: Add g_checksum_reset

2008-05-25  Matthias Clasen  <mclasen@redhat.com>

	Bug 534137 – Typo in g_spawn_async_with_pipes doc

	* glib/gspawn.c: Fix a typo in the docs, pointed out by Ted Percival.

2008-05-25  Tor Lillqvist  <tml@novell.com>

	Bug 534319 - GLib's .pc files could use Libs.private

	* glib-2.0-uninstalled.pc.in
	* glib-2.0.pc.in
	* gmodule-2.0-uninstalled.pc.in
	* gmodule-2.0.pc.in
	* gmodule-export-2.0.pc.in
	* gmodule-no-export-2.0.pc.in: Move ICONV_LIBS and G_MODULE_LIBS
	to Libs.private.

2008-05-24  Matthias Clasen  <mclasen@redhat.com>

	* glib/gfileutils.c (g_file_open_tmp): Small documention addition.

2008-05-22 10:49:37  Tim Janik  <timj@imendio.com>

	* glib/gmacros.h: implement G_STMT_START and G_STMT_END with
	do{}while(0), which is believed to be widely portable, fixes:
	Bug 519026 - G_STMT_START/G_STMT_END test a non-existent preprocessor symbol

2008-05-20  Behdad Esfahbod  <behdad@gnome.org>

	Bug 501651 – Update glib/libcharset

	* configure.in:
	* glib/libcharset/Makefile.am:
	* glib/libcharset/README:
	* glib/libcharset/codeset.m4:
	* glib/libcharset/config.charset:
	* glib/libcharset/glibc21.m4:
	* glib/libcharset/libcharset-glib.patch:
	* glib/libcharset/libcharset.h:
	* glib/libcharset/localcharset.c (_g_locale_get_charset_aliases),
	(_g_locale_charset_raw):
	* glib/libcharset/localcharset.h:
	* glib/libcharset/make-patch.sh:
	* glib/libcharset/ref-add.sin:
	* glib/libcharset/ref-del.sin:
	* glib/libcharset/update.sh:
	Update libcharset to the one shipped with libiconv-0.12.

2008-05-20  Behdad Esfahbod  <behdad@gnome.org>

	Bug 459905 – Bug in wcwidth data
	Bug 534085 – g_unichar_iswide_cjk() has a totally wrong table
	* glib/guniprop.c (g_unichar_iswide), (g_unichar_iswide_cjk):
	Regenrate wide and wide_cjk tables from Unicode 5.1.0 data directly.
	Not using Markus Kuhn's tables anymore.

2008-05-20 14:31:18  Tim Janik  <timj@imendio.com>

	* reverted recent unapproved changes by Yair Hershkovitz, regarding:
	Bug 503071 – Application direction changes to right to left even if theres no translation.

2008-05-20  Tor Lillqvist  <tml@novell.com>

	* configure.in: Don't need memory barriers when using a non-gcc
	compiler on Windows either.

2008-05-19  Tor Lillqvist  <tml@novell.com>

	* glib/gdir.c: Include the dirent.h and wdirent.c from
	../build/win32/dirent directly here when compiling with MSVC and
	without HAVE_DIRENT_H.

2008-05-19  Hans Breuer  <hans@breuer.org>

	* glib/makefile.msc : added gi18n.c

2008-05-19  Tor Lillqvist  <tml@novell.com>

	* glib/Makefile.am: #define HELPER_CONSOLE in
	gspawn-win32-helper-console.c

	* glib/gspawn-win32-helper.c: Compile a main() instead of
	WinMain() if HELPER_CONSOLE is defined. MSVC insists on a console
	application having a main().

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

	Bug 527214 – g_timer_elapsed() returns random values.

	* glib/gtimer.c (g_timer_new()):
	Print warning if g_thread_init() has not been called yet. 
	Patch by Mathias Hasselmann

2008-05-12  Jeffrey Stedfast  <fejj@novell.com>

	* glib/gchecksum.c (g_checksum_reset): New function to reset the
	state of a GChecksum.
	(g_checksum_new): Call g_checksum_reset() instead of duplicating
	code.

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

	Bug 528667 – Typos in testing module documentation

	* glib/gtestutils.c: Fix typos in the documentation.

2008-05-17  Tor Lillqvist  <tml@novell.com>

	* glib/giowin32.c: Make debugging printout more compact and add
	more information to it. No changes to actual functionality.

	* glib/gmain.c: Improve debugging printouts. When
	G_MAIN_POLL_DEBUG is defined, we check for an environment variable
	of the same name to decide whether to print out debugging
	information or not. G_MAIN_POLL_DEBUG is always defined on Windows
	as there is more often a need to debug this stuff there. On Unix
	the definition has to be uncommented (or done on the compile
	command line).

2008-05-17  Tor Lillqvist  <tml@novell.com>

	* build: Don't include the "build" module with svn:externals any
	longer. Instead add the still relevant directories and files from
	it for real here in GLib.

2008-05-17  Yair Hershkovitz  <yairhr@gmail.com>

	* glib/glib.symbols:
	* glib/gi18n.h: Added g_disable_setlocale().

	* glib/gi18n.c: Added g_disable_setlocale() API to disable setting
	the locale in g_i18n_init(). Dont disable translations if textdomain
	was not set before calling g_i18n_init(). Dont disable translations if
	the locale is "C".

2008-05-16  Tor Lillqvist  <tml@novell.com>

	* config.h.win32.in: Update to match the configure-produced one.

2008-05-14  Michael Natterer  <mitch@imendio.com>

	* glib/gatomic.c: #include "config.h" before using G_ATOMIC_ARM.

2008-05-13  Kjartan Maraas  <kmaraas@gnome.org>

	* glib/gi18n.c: #include <locale.h> to fix the build.

2008-05-12  Yair Hershkovitz  <yairhr@gmail.com>

	* glib/gi18n.c (g_i18n_init): Coding convention fix. Space between
	a function name and its opening parenthesis.

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

	* glib/glib.symbols: Add g_i18n_init.

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

	Bug 530457 - G_USER_DIRECTORY_DOWNLOAD folder improperly mapped

	* glib/gutils.c (load_user_special_dirs): When running on Vista or
	later, use SHGetKnownFolderPath() to get the FOLDERID_Downloads
	folder for G_USER_DIRECTORY_DOWNLOAD, and FOLDERID_Public for
	G_USER_DIRECTORY_PUBLIC_SHARE.

2008-05-11  Yair Hershkovitz  <yairhr@gmail.com>

	Bug 503071 - Application direction changes to right to left even if
	theres no translation. 

	* glib/gi18n.c: g_i18n_init() for initializing the glib i18n,
	checking if a translation is available for the calling app. wrappers for
	gettext, dgettext and dpgettext to check first if the application
	should be translated.

	* glib/gi18n.h: symbol declaration for gettext wrappers.

	* glib/gi18n-lib.h: include gi18n.h instead of libintl.h.

	* glib/gstrfuncs.c: moved g_dpgettext() to glib/gi18n.c.

	* glib/gutils.c: use g_dgettext() instead of dgettext().

	* glib/glibintl.h: include gi18n.h.

	* glib.symbols: added gettext wrappers.

	* glib/Makefile.am: added gi18n.c.

2008-05-05  Michael Natterer  <mitch@imendio.com>

	* glib/glib.h: #define __GLIB_H_INSIDE__ around including
	everything.

	* glib/*.h: check for that define instead of __G_LIB_H__ if
	G_DISABLE_SINGLE_INCLUDES is defined.

	* glib/gdatasetprivate.h: #include <glib.h> instead of
	<glib/gdataset.h>

2008-05-02 13:24:13  Tim Janik  <timj@imendio.com>

	* glib/gmain.c: renamed GMainDispatch.dispatching_sources to be more
	descriptive and distinguishable within the source file.

2008-04-21  Tor Lillqvist  <tml@novell.com>

	Bug 528752 - Win32 build and SSL not working

	This bug report against libsoup points out an issue with the use
	of bitfields in the GIOChannel struct that should really be taken
	care of here in GLib.

	* configure.in: Add Autoconf variable GLIB_EXTRA_CFLAGS which will
	contain the -mms-bitfields flag on Windows.
	
	* glib-2.0.pc.in: Add it to Cflags.

2008-04-21  Tor Lillqvist  <tml@novell.com>

	* configure.in
	* */Makefile.am: More work on enabling static building on
	Windows. When building statically: Also define
	GOBJECT_STATIC_COMPILATION in glibconfig.h so that also the
	variables in gparamspecs.h get declared without any
	dllimport/dllexport decorations. Don't install .def files which
	obviously have no meaning for static libraries. Don't create MS
	import libraries. Don't do any resource object files.

2008-04-18 17:40:58  Tim Janik  <timj@imendio.com>

	* tests/testglib.c: fixed gstdio.h include.

	* tests/Makefile.am: properly list testglib.c SOURCES.

2008-04-17  Emmanuele Bassi  <ebassi@gnome.org>

	* glib/gchecksum.c:
	(sha_byte_reverse): Use the macro GLib provides for byte-swapping
	as it can be optimized.
	
	(g_checksum_update): Fix a compiler warning.

2008-04-15  Mukund Sivaraman  <muks@mukund.org>

	* gio/gfile.c: Fixed typos in gtk-doc comments.

2008-04-10  Mathias Hasselmann  <mathias@openismus.com>

	Bug 519137 – g_slice_dup macro needs cast for 64-bit platform

	* glib/gslice.h (g_slice_copy): Apply type casts needed
	  for proper compilation on 64-bit platforms.

2008-04-09  Federico Mena Quintero  <federico@novell.com>

	* glib/gbookmarkfile.c (bookmark_metadata_free): Don't leak
	the apps_by_name hash table if the applications list is empty.

2008-04-08  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gunicode.h: Add ISO 15924 code comments for new scripts.

2008-04-07  Matthias Clasen  <mclasen@redhat.com>

	Bug 491554 – Update to Unicode 5.1.0

	* glib/gunichartables.h:
	* glib/gunicode.h:
	* glib/gunibreak.h:
	* glib/gmirroringtable.h:
	* glib/gscripttable.h:
	* glib/gen-script-table.pl: Update to Unicode 5.1.0. Patch by
	Behdad Esfahbod

2008-04-07  Matthias Clasen  <mclasen@redhat.com>

	Bug 526619 – make test-report crash

	* glib/gtester.c: Allocate enough space for argv. Patch by
	 Hiroyuki Ikezoe

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

	* glib/gmain.c: Make the fix for bug 448943 work.

2008-04-04  Tor Lillqvist  <tml@novell.com>

	* configure.in: Make sure we don't build both shared and static at
	the same time on Windows. Put a #define for
	GLIB_STATIC_COMPILATION into glibconfig.h in the static case, so
	that the use of variables from libglib gets the GLIB_VAR macro in
	gtypes.h automatically correct. This means that a shared and
	static build of GLib can't be installed in the same prefix on
	Windows, which sucks a bit. But with variables in the GLib API,
	there isn't much we can do otherwise. The alternative would be to
	force the developer who compiles against a statically built GLib
	to use -DGLIB_STATIC_COMPILATION.

	* glibconfig.h.win32.in: Define GLIB_STATIC_COMPILATION here also,
	if needed.

2008-04-03  Tor Lillqvist  <tml@novell.com>

	* configure.in: Don't enforce shared library build only on
	Windows. It might well make sense to build static libraries in
	some use cases.

	* glib/gutils.c: Don't compile the DllMain if building libglib
	statically. Also in that case don't return NULL from
	_glib_get_installation_directory(), but return the installation
	directory of the program's .exe file.

2008-04-03  Tor Lillqvist  <tml@novell.com>

	Bug 525972 - UCS-4 not in the new win_iconv implementation

	* glib/win_iconv.c: Add UCS-4. Also add spelling of UCS-2 without
	the hyphen.

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

	Bug 448943 – g_timeout_add_seconds() problems

	* glib/gmain.c (g_timeout_set_expiration): Prevent expiration
	time going negative. Reported by Cody Russell, analyzed by
	Olivier Crete, patch by Sjoerd Simons.

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

	Bug 525674 – A typo in gmarkup.c

	* glib/gmarkup.c (g_markup_parse_context_get_element_stack): Fix
	the docs, reported by Hiroyuki Ikezoe

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

	Bug 525732 – Error in documentation for g_list_first

	* glib/glist.c (g_list_first): Fix the docs, reported by 
	Salvatore Iovene

2008-04-02  Tor Lillqvist  <tml@novell.com>

	Bug 524314 - g_convert() on Win32 implicitly converts full width
	alphanumerics into half width
	
	* glib/win_iconv.c: Update from Yukihiro Nakadaira. Use
	WC_NO_BEST_FIT_CHARS flag for WideCharToMultiByte() unless the
	//translit flag was suffixed to the codeset name.

	* glib/gconvert.c: Include win_iconv.c earlier so that its
	definition of WINVER before it includes <windows.h> is used.

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

	* glib/gmain.c (g_poll): Improve fix for #525192 below: Use
	SleepEx() so that the sleep is alertable. Thanks to John
	Ehresman.

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

	* glib/gwin32.c
	(g_win32_get_package_installation_directory_of_module): Fix Cygwin
	breakage. Patch by Lieven van der Heide.

2008-03-31 10:39:17  Tim Janik  <timj@imendio.com>

	* glib/gutils.h: reapply inlining fix from r6333 to fix:
	Bug 522292 – Gives warnings in glib/gutils.h with GCC in C99 mode
	and again:
	Bug 315437 – extern inline -> static inline

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

	Bug 525192 - 100% CPU if run main loop with no IO sources

	* glib/gmain.c (g_poll) [Win32]: Patch by Neil Roberts.

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

	* glib/gtester.c: Don't use ARG_MAX.  (#522335, patch by 
	Samuel Thibault, adapted by Sebastian Dröge)

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

	* glib/gmacros.h: Add macros wrapping the gcc alloc_size 
	function attribute.  (#523019, Rodrigo Moya)

	* glib/gmem.h: 
	* glib/gslice.h:
	* glib/gstrfuncs.h: Use the new attribute where appropriate.

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

	* glib/glibintl.h:
	* glib/gstrfuncs.c:
	* glib/gutils.c: Simple fixes to help building GLib on 
	embedded systems without NLS.  (#524350, Peter Kjellerstedt)

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

	* glib/ghash.c: Fix the build with -DG_DISABLE_ASSERT.
	(#525060, Arfrever Frehtes Taifersar Arahesis)

2008-03-30  Matthias Clasen  <mclasen@redhat.com>
	
	* glib/gthread.h: Replace occurrances of G_GNUC_PRETTY_FUNCTION
	by G_STRFUNC.  (#524344, Peter Kjellerstedt)

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

	* glib/gtestutils.c: Fix a doc typo. (#524742, Hiroyuki Ikezoe)

2008-03-22  Claudio Saavedra  <csaavedra@gnome.org>

	Bug 523877 – gbookmarkfile: avoid using g_string_append_printf() and
	other optimizations

	* glib/gbookmarkfile.c: (bookmark_metadata_dump),
	(bookmark_item_dump), (g_bookmark_file_dump), (expand_exec_line):
	Replace all calls to g_string_append_printf with g_strconcat () or
	g_string_append () where appropriate, to reduce the file creation time.
	Also, use g_string_sized_new () with an appropriate buffer size instead
	of g_string_new (NULL), to reduce time spent in memory reallocation.
	(#523877, Claudio Saavedra, Emmanuele Bassi)

2008-03-22  Emmanuele Bassi  <ebassi@gnome.org>

	Bug 518160 - replace two g_strdup_printf calls in GBookmarkFile

	* glib/gbookmarkfile.c (is_element_full): Compare the fragments
	instead of building two strings; this avoids two g_strdup_printf()
	per namespaced element enountered. (#518160, Felix Riemann)

2008-03-20  Alexander Larsson  <alexl@redhat.com>

	* configure.in:
	Final fixes for struct statfs.f_fstypename checks (OpenBSD). (#521045)
	Patch from ephraim_owns@hotmail.com

2008-03-19  Tor Lillqvist  <tml@novell.com>

	Bug 523298 - win_iconv can't convert from UTF-8 to GB18030 (or vice versa)

	* glib/win_iconv.c: Fixes for code page 54936 (GB18030)
	(mbtowc_flags): New function. Check if a code page is one of those
	for which the dwFlags parameter to MultiByteToWideChar() must be
	zero. Return 0 or MB_ERR_INVALID_CHARS.
	(mbcs_mblen): New function for multi-byte (more than two bytes for
	some characters) code pages. Only handles 54936 for now.
	(make_csconv): Use it for 54936.
	(kernel_mbtowc): Use mbtowc_flags().

2008-03-18  Sebastian Dröge  <slomo@circular-chaos.org>

	Bug 522292 - Gives warnings in glib/gutils.h with GCC in C99 mode

	* glib/gutils.h: Use "__attribute__ ((__gnu_inline__))" for inlining
	if either __GNUC_STDC_INLINE__ or __GNUC_GNU_INLINE__ are defined. In
	gcc version prior to 4.3 no correct C99-inline was implemented which
	has semantic differences to GNU inline.

2008-03-16  Tor Lillqvist  <tml@novell.com>

	* configure.in: Don't bother defining Autoconf variables for
	glib.def, gmodule.def, gobject.def and gthread.def when this can
	be handled easily in */Makefile.am which are the only files that
	use them. Remove also TESTGMODULE_EXP which isn't used at all.

	* glib/Makefile.am: Corrsponding change.
	
2008-03-14  Michael Natterer  <mitch@imendio.com>

	* glib/*.h: make it possible to disable single-file includes by
	defining G_DISABLE_SINGLE_INCLUDES when building against GLib.
	Approved by Tim Janik.

	* glib/glib.h: include <glib/gslice.h>.

	* glib/gi18n.h
	* glib/gi18n-lib.h
	* glib/gprintf.h: include <glib.h> so the above works when these
	files are included without including <glib.h> first.

2008-03-14  Alexander Larsson  <alexl@redhat.com>

        * configure.in:
	Add required includes for f_fstypename member check.

2008-03-14  Alexander Larsson  <alexl@redhat.com>

        * configure.in:
	Added checks for FEN (Solaris  File Event Notification)

2008-03-13  Tor Lillqvist  <tml@novell.com>

	* glib-zip.in: Add lib/gio-2.0.lib and lib/gio-2.0.def.

2008-03-12  Tor Lillqvist  <tml@novell.com>

	* configure.in: Expand gio/win32/Makefile.

2008-03-12  Matthias Clasen <mclasen@redhat.com>

	* configure.in: Bump version to 2.17.0

	* ChangeLog.pre-2-16: rotate ChangeLog
	
	* === branch for 2.16 ===
