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

	* === Released 2.12.11 ===

	* NEWS: Updates

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

	Merge from trunk:

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

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

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

	* glib/gthreadpool.c: Remove leftover debug spew.

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

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

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

	* NEWS: Updates

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

	Merge from trunk:

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

	Merge from trunk:

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

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

	Merge from trunk:

	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  Ihar Hrachyshka <iharh@gnome.org>

	* configure.in: Added be@latin to ALL_LINGUAS variable.

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 NT-based Windows use win32_strftime_helper()
	instead of strftime() to avoid codepage issues with strftime().
	Unfortunately using wcsftime() would not help either. (#404832)

2007-01-24  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>

	Merge from trunk:

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

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

	Merge from trunk:

	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>

	Merged from trunk:

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

	* makefile.mingw
	* */makefile.mingw.in: Remove from SVN. (#398069)

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>

	* configure.in: Bump version

	* === Released 2.12.9 ===

	* NEWS: Updates

2007-01-16  Matthias Clasen  <mclasen@redhat.com>
	
	Merge from trunk:

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

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

	* configure.in: Bump version

	* === Released 2.12.8 ===

	* NEWS: Updates

	Merge from trunk:

	* 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/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/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-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-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-04  Matthias Clasen  <mclasen@redhat.com> 

	* configure.in: Bump version

	* === Released 2.12.7 ===

	* tests/keyfile-test.c: Remove some debug leftovers.

	* NEWS: Updates

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
	double-width chars into consideration when computing width of a
	string.  Also fix another bug in width computation. (#346955)

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  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  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)

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

	* glib/gkeyfile.c: Convert the recently added stricter
	keyfile syntax checks into critical warnings, to help apps
	which do bad things with key files. Note that the
	stricter checks will remain in place for 2.14.  (#390532,
	Loïc Minier)

	* tests/keyfile-test.c: Adapt

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>

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

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

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

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

	* configure.in: Bump version to 2.12.7
	
	* === Released 2.12.6 ===

	* NEWS: Updates

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.

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)

	* configure.in: Bump version to 2.12.6

	* === Released 2.12.5 ===

	* NEWS: Updates

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

	* tests/keyfile-test.c: Add a test for sr@Latn. 

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

	* configure.in: Make montonic clock test work again. Does
	AC_COMPILE_IFELSE not get confdefs ? 

	* 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.  (#386838, Marco Barisione)

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

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

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/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)

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

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

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-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. (#362328, Javier Villavicencio)

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

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

	* NEWS: Updates

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

	* glib/gstdio.c (g_rename): Initialize save_errno.
	(#355206, 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)

	* Bump version

	* === Released 2.12.3 ===

	* NEWS: Updates

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

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

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

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-20  Tor Lillqvist  <tml@novell.com>

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

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

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

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

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

	* configure.in: Bump version

	* === Released 2.12.2 ===

	* NEWS: Updates

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure.in: Bump version

	* === Released 2.12.1 ===

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

	* NEWS: Updates

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

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

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

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

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

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

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

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

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

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

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

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

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

	* configure.in: Bump version

	* === Released 2.12.0 ===

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

	* NEWS: Updates

	* configure.in: Set version to 2.12.0

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

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

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

	* configure.in: Bump version

	* === Released 2.11.4 ===

	* NEWS: Updates

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

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

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

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

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

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

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

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

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

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

	* Bump version

	* === Released 2.11.3 ===

	* NEWS: Updates

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

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

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

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

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

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

	* configure.in: Bump version

	* === Released 2.11.2 ===

	* configure.in: Set interface age to 0.

	* NEWS: Updates

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

	* glib/gstrfuncs.c: Revert accidental commit.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* === Released 2.11.1 ===

	* NEWS: Updates

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* gthread/gthread-impl.c: Use GSystemThread instead of GThread for
	owner determination. (#311043, jylefort@FreeBSD.org)

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

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

	* Remove obsolete gthread/gthread-solaris.c.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* NEWS: Updates

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

	* glib/guniprop.c: Make interval_compare static.

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

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

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

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

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

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

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

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

	* NEWS: Updates

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

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

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

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

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

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

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

	* glib/grand.c (g_rand_new): Don't repeat a failed fclose()
	call, since that invokes undefined behaviour.  (Coverity)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	=== Branch for 2.10 ===
