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

	* === 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 ===
