2005-12-09  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.9.1 ===

2005-12-09  Alexander Larsson  <alexl@redhat.com>

	* glib/glist.h: 
	* glib/gslist.h:
	Use G_GNUC_WARN_UNUSED_RESULT on list functions that return
	the whole list.

2005-12-08  Matthias Clasen  <mclasen@redhat.com>

	* NEWS: Updates

2005-12-07  Martyn Russell  <martyn@imendio.com>

	* glib/gasyncqueue.c:
	- Call g_queue_insert_sorted() instead of duplicating the code.
	- Call g_queue_sort() instead of duplicating the code.
	- Invert sort function results to make sure the same sort function
	gives the same results across glist, gslist, gqueue and
	gasyncqueue.

	* tests/asyncqueue-test.c:
	- Updated the sort function to reflect the example in the
	documentation for gasyncqueue.c.

2005-12-07  Martyn Russell  <martyn@imendio.com>

	* docs/reference/glib/glib-sections.txt:
	* docs/reference/glib/tmpl/linked_lists_double.sgml:
	* docs/reference/glib/tmpl/linked_lists_single.sgml:
	* glib/glist.[ch]: 
	* glib/gslist.[ch]: 
	- Added g_list_insert_sorted_with_data () and
	g_slist_insert_sorted_with_data ().
	- Removed the extra check in g_list_sort() and g_slist_sort() for
	GCompareDataFunc vs. GCompareFunc.
 	
2005-12-07  Tor Lillqvist  <tml@novell.com>

	* glib-gettextize.in: Look up prefix at run-time on Win32,
	assuming the standard directory structure with glib-gettextize in
	$prefix/bin.

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

	* glib/gmem.h: Exempt GTK+ from the mem chunk deprecation, since
	we need GTK+ 2.8 to compile against GLib 2.10.

2005-12-05  Manish Singh  <yosh@gimp.org>

	* tests/run-collate-test.sh: set LC_COLLATE, not LANG, to be sure
	to override any user settings.

2005-12-05  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Revert an accidential commit

2005-12-05  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutf8.c: Documentation updates.  (#323291, Morten Welinder)

	* tests/Makefile.am (TESTS_ENVIRONMENT): 
	* tests/gobject/Makefile.am (TESTS_ENVIRONMENT): Set
	MALLOC_CHECK_ and MALLOC_PERTURB_

	* tests/run-collate-tests.sh: Run the collation tests explicitly 
	in en_US locale. (#320463)

	* glib/gmem.h: Really deprecate GMemChunk.

	* glib/gdate.c: 
	* glib/gutils.c: 
	* glib/gtree.c: 
	* glib/gstring.c: 
	* glib/giochannel.c: 
	* glib/gstrfuncs.c: Add versioned deprecation docs. 

2005-12-05  Martyn Russell  <martyn@imendio.com>

	* docs/reference/glib/glib-sections.txt:
	* glib/gasyncqueue.[ch]:
	- Added support for sorting async queues by with _push_sorted(),
	_push_sorted_unlocked(), _sort() and _sort_unlocked() (#323047).
	
	* tests/Makefile.am:
	* tests/asyncqueue-test.c:
	- Added test case for gasyncqueue.c

Mon Dec  5 15:53:20 2005  Tim Janik  <timj@imendio.com>

	* glib/gslice.c: implement chain walking for arbitrary ->next pointer
	offsets in g_slice_free_chain_with_offset() based on a patch by behdad
	in bug 323178. moved time consuming logic from g_slice_free() out of
	the inner loop, so g_slice_free_chain_with_offset() provides a real
	performance benefit over g_slice_free1() now.
	
	* glib/gslice.h: renamed g_slice_free_chain() to
	g_slice_free_chain_with_offset(). implemented g_slice_free_chain() as
	a type-safe macro as suggested in bug 323178.
	simplified the macro implementation of g_slice_free() and implemented
	it in a type safe manner for all compliers as suggested by Morten
	Welinder <mortenw@gnome.org>.

	* glib/gmain.c:
	* glib/glist.c:
	* glib/gslist.c:
	* glib/glib.symbols: s/g_slice_free_chain/g_slice_free_chain_with_offset/

2005-12-05  Matthias Clasen  <mclasen@redhat.com>

	* glib/gasyncqueue.c: Add some docs.

	* tests/libmoduletestplugin_a.c: Fix compiler warnings.

	* glib/gatomic.c: In the ia64 implementation, use
	__sync builtin without _si or _di suffix.  (#321229,
	Stanislav Brabec, patch by Andreas Schwab)

2005-12-04  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gslice.h: Remove comma at the end of enum.

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

	Handle multiple user names with the same UID better.
	(#319535, Laszlo Peter)
	
	* glib/gutils.c (g_get_any_init_do): When determining user
	data, first look up $LOGNAME. If the UID doesn't match
	getuid(), fall back to the current behaviour of looking
	up the user data based on getuid().

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

	* glib/gmacros.h (G_GNUC_WARN_UNUSED_RESULT): Add a macro
	to make gcc warn if a function result is ignored.  (#145466,
	Arjan van de Ven, Alex Larsson)

	* glib/gmem.h: Add the new attribute to g_realloc and 
	g_try_realloc.

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

	* glib/glib.symbols: 
	* glib/gcache.h: Deprecate g_cache_value_foreach. (#322956,
	Nicolas Caniart)

	* glib/gmappedfile.c: Make mapping of empty files
	work.  (#321530)
	
	* glib/gfileutils.c: Don't fork a new process just to 
	fix the permissions of the created temp file.  (#321318,
	Alexis S. L. Carvalho)

2005-12-02  Matthias Clasen  <mclasen@redhat.com>

	* README.in: Add a note about Solaris threads.

	* glib/gspawn.c:
	* configure.in: Remove support for Solaris threads. 
	(#136971, Sebastian Wilhelmi, patch by Andrew Paprocki)

2005-12-02  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Define G_GUINT64_CONSTANT in analogy to
	G_GINT64_CONSTANT.  (#322568, Andrew Paprocki)

2005-12-02  Matthias Clasen  <mclasen@redhat.com>

	* glib/gslice.c: Win32 portability fixes and C99ism removal,
	pointed out by Kazuki Iwamoto.  (#323052)
	
2005-12-02  Matthias Clasen  <mclasen@redhat.com>

	* glib/gatomic.c (g_atomic_int_add): Add a missing volatile for
	the IA64 implementation.

Fri Dec  2 16:18:09 2005  Tim Janik  <timj@imendio.com>

	* glib/gslice.c: some naming and type size fixups.

Fri Dec  2 13:08:58 2005  Tim Janik  <timj@gtk.org>

	* glib/gslice.h (g_slice_free): reworked GCC-specific type-safe macro
	variant into something less verbose, but digestible for gcc-3.4.

Fri Dec  2 10:55:07 2005  Tim Janik  <timj@imendio.com>

	* tests/slice-test.c: extended to perform the benchmarking on the old
	memchunk code if 'O' is selected.

	* tests/memchunks.c: new file which contains the old GLib mem chunks
	implementation with prefix old_mem_chunk_.

	* tests/Makefile.am: added memchunks.c

Fri Dec  2 00:16:59 2005  Tim Janik  <timj@imendio.com>

	* glib/gslice.c: improved gettimeofday() timer resolution by maintaining
	acceptable load distribution of the syscall.
	(allocator_get_magazine_threshold): reduce minimum/single-thread magazine
	sizes to approximately page_size/2.5 to avoid excessive startup allocations.

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

	* tests/gobject/ifacecheck.c (test_iface_base_init): Don't
	double-free base interface members.

	* tests/Makefile.am: Remove duplicate variable.

Thu Dec  1 17:32:46 2005  Tim Janik  <timj@imendio.com>

	* glib/gslice.[hc]: new slice allocator implementation.

	* tests/slice-test.c: added random slice allocation test.

	* glib/gthread.[hc]: removed newly added private thread mem API.

	* glib/gthreadinit.h:
	* glib/gmessages.c:
	* glib/gthread.c:
	* glib/gmem.c: divided glib threading initialisation into three phases,
	initialisation where private keys and messaging are not available (only
	needed by gmem.c), initialisation without messaging but private keys
	available (gslice.c, gmessage.c), and full fledged initialisers that
	server the rest of glib. initialisation functions got renamed to reflect
	the limitations of their corresponding phases.

	* glib/gmem.c: removed memchunk code, defer allocations to 
	g_slice_* instead.

	* glib/gmem.[hc]: removed g_slice_* skeletons.

	* glib/glib.symbols: added g_slice_* symbols.

	* configure.in: check for availability of posix_memalign(3), memalign(3)
	and valloc(3). 

	* glib/Makefile.am: added gslice.[hc].

2005-12-01  Tor Lillqvist  <tml@novell.com>

	* glib/gstdio.c (g_stat): In the Win32 implementation, strip
	trailing slash(es) for non-root folders. stat() fails if non-root
	folders are specified with trailing slashes. It's too much hassle
	to demand that callers strip such slashes themselves, especially
	as it is easy to get it wrong and strip the slash of a root
	folder.
	(g_rename): On NT-based Windows, use MoveFileEx() with
	MOVEFILE_REPLACE_EXISTING to better match Unix behaviour.

2005-11-28  Matthias Clasen  <mclasen@redhat.com>

	Fix G_STMT_START / G_STMT_END on Solaris.  (#321972,
	Andrew Paprocki)
	
	* configure.in: Check whether do { } while (0) works.

	* glib/gmacros.h: Use do { } while (0) for G_STMT_START / 
	G_STMT_END if it works.
	
2005-11-28  Matthias Clasen  <mclasen@redhat.com>

	* glib/gthread.c (g_static_rw_lock_wait, g_static_rw_lock_signal): 
	* glib/gnode.c (g_node_depth_traverse_level): 
	* glib/gmem.c (g_allocator_new): 
	* glib/ghash.c (g_hash_table_unref, g_hash_table_destroy) 
	(g_hash_table_foreach_remove_or_steal): Silence compiler
	warnings.

2005-11-27  Matthias Clasen  <mclasen@redhat.com>

	* glib/gunicollate.c (g_utf8_collate_key_for_filename): 
	Don't read beyond len.  (#322520, Christian Persch)

Wed Nov 23 17:34:01 2005  Tim Janik  <timj@imendio.com>

	* glib/gdataset.c: access datalist flags via atomic pointer access
	functions, instead of acquiring the dataset lock. this is faster and
	also matches the atomic pointer readouts in gdatalistprivate.h and
	direct pointer modifications required by gobject.c.

Wed Nov 23 13:35:31 2005  Tim Janik  <timj@gtk.org>

	* glib/gdataset.c: streamlined initialization code somewhat,
	removed GData node cache.

2005-11-22  Matthias Clasen  <mclasen@redhat.com>

	* glib/ghash.c (g_hash_table_ref): 
	(g_hash_table_unref): Mark these as new API.

	Avoid double locking in g_intern_string (#322133,
	Benedikt Meurer)

	* glib/gdataset.c (g_quark_from_string_internal): New 
	internal function which factors out common parts of 
	g_quark_from[_static]_string.
	(g_quark_from_string, g_quark_from_static_string):
	Use g_quark_from_string_internal.
	(g_intern_string, g_intern_static_string): Use
	g_quark_from_string_internal, and only take the
	lock once.
	(g_quark_new): Don't store the strings shifted by -1
	in the g_quarks array.
	(g_quark_to_string): Adapt to the previous change.

Tue Nov 22 14:04:26 2005  Tim Janik  <timj@imendio.com>

	* glib/ghash.h: 
	* glib/ghash.c: 
	g_hash_table_new_full(): create hash tables with a ref count of 1.
	g_hash_table_ref(): atomically ref_count+=1
	g_hash_table_unref(): atomically ref_count-=1, destroys hash table
	when refcount reaches 0.
	g_hash_table_destroy(): just destroy keys and values, unref by 1.
	g_hash_table_insert(): 
	g_hash_table_replace(): assert ref_count>0.

	* glib/gatomic.h: 
	* glib/gatomic.c: added 'volatile' qualifier to all atomic pointer and
	integer pointers.

2005-11-20  Behdad Esfahbod  <behdad@gnome.org>

	* glib/guniprop.c (g_unichar_get_mirror_char): Remove unused
	variables. (#321984, Andrew Paprocki)

2005-11-18  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version

2005-11-17  Matthias Clasen  <mclasen@redhat.com>

	* === Released 2.9.0 ===

	* glib/glib.symbols: Updates

	* glib/gutf8.c (g_utf8_offset_to_pointer): Add some performance
	hints to the docs. (Paolo Borelli)
	
	* NEWS: Updates

	* glib/gthread.c (g_thread_foreach): Mark as new api.

	* README.in: Updates.

	* glib/glib.symbols: 
	* glib/gdate.h: 
	* glib/gdate.c (g_date_set_time_t): 
	(g_date_set_time_val): Add functions to set a date from
	a time_t and from a GTimeVal.
	(g_date_set_time): Deprecate.  (#314067, Roger Leigh)
	
	* tests/Makefile.am:
	* tests/utf8-pointer.c: Unit tests for g_utf8_pointer_to_offset
	and g_utf8_offset_to_pointer.

	* glib/gutf8.c (g_utf8_pointer_to_offset) 
	(g_utf8_offset_to_pointer): Handle negative offsets, and use
	"stutter stepping" for going backwards. (#320638, Larry
	Ewing)

	* glib/gbacktrace.c:
	* glib/gdate.c:
	* glib/gthread.c: const correctness fixes, found
	by Arjan van de Ven and gcc.
	
2005-11-16  Behdad Esfahbod  <behdad@gnome.org>

	* docs/reference/glib/tmpl/unicode.sgml: Correct typo on mentioning
	@G_UNICODE_BREAK_UNKNOWN that should be #G_UNICODE_BREAK_UNKNOWN.

2005-11-09  Behdad Esfahbod  <behdad@gnome.org>

	* glib/guniprop.c: Use bit hacks instead when checking a general
	category value against multiple values.

	* glib/gutf8.c: Change ISO10646 to Unicode in docs.

2005-11-10  Simos Xenitellis  <simos@gnome.org>

	* configure.in: Added tt (Tatar) to ALL_LINGUAS.

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

	* glib/giowin32.c (g_io_win32_set_flags): Don't call g_warning().
	(#320688) Instead set error and return failure.

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

	* glib/gmain.c (g_main_dispatch): Don't call cb_funcs->unref
	while holding the context lock.  (#320886, Andy Wingo)

2005-11-07  Billy Biggs <vektor@dumbterm.net>

	* tests/refcount/Makefile.am: Add a missing reference to libglib
	in the LDADD for this test.

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

	* glib/gmem.c (g_allocator_new): We need to set n_preallocs to a
	nonzero value, otherwise GTK+ 2.8 breaks when compiled against
	GLib 2.9.  (#320755, Luca Ferretti)

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

	* glib/Makefile.am: Apply a patch from Behdad Esfahbod to 
	use a faster lookup table for g_unichar_get_mirror_char().
	* glib/gmirroringtable.h: The new table.
	* glib/gunichartables.h: Remove bidi_mirroring_table.
	* glib/gen-unicode-tables.pl: Don't generate the mirroring
	table.
	* glib/glib-mirroring-tab/*: Sources for the program
	which generated gmirroringtable.h.

	* glib/glist.c: Avoid some code duplication.

	* glib/gscanner.h: Include gdataset.h.  (#320322)

	* glib/gdebug.h: add new GDebugFlag for fatal_criticals
	* glib/gmessages.c: (_g_debug_init): handle G_DEBUG=fatal_criticals,
	to help find critical warnings in applications.  (#320017,
	Vincent Untz)

2005-11-02  Tor Lillqvist  <tml@novell.com>

	* glib/glib.symbols: Remove large amount of trailing whitespace
	from one line. Remove #ifdef G_UNDEFINED from around
	g_hash_table_new and g_hash_table_new_full symbols, what was the
	purpose of that? Add the g_slice functions.

Tue Nov  1 16:24:20 2005  Tim Janik  <timj@imendio.com>

	* glib/gmem.[hc]: prepared deprecation of GMemChunk and GAllocator.
	added g_slice_*() API to allocate and cache small bits of memory.
	an actuall allocator implementation for g_slice_*() is still pending.

	* glib/gthread.[hc]: changes from a patch by Matthias Clasen.
	changed GRealThread list to use in-structure *next; fields instead
	of GSList, in order for thread iteration to not depenend on g_slice_*()
	indirectly.
	_g_thread_mem_private_get():
	_g_thread_mem_private_set(): added accessors for private memory,
	needed because the ordinary GPrivate implementation relies on GArray
	and GSList and therefore indirectly on working g_slice_*() allocations.

	* glib/gthread.[hc]:
	g_thread_foreach(): new public API function to loop over all existing threads.

	* glib/gdataset.c:
	* glib/gstring.c:
	* glib/gcache.c:
	* glib/garray.c: 
	* glib/gqueue.c:
	* glib/gslist.c:
	* glib/glist.c:
	* glib/ghash.c:
	* glib/gtree.c:
	* glib/ghook.c:
	* glib/gmain.c:
	* glib/gnode.c:
	removed GAllocator and free list usages and accompanying locks.
	use g_slice_*() API to allocate and cache small bits of memory.

	* glib/ghook.h: removed GMemChunk field from public API.

	* glib/gslist.h:
	* glib/glist.h: deprecate allocator API, provide _free1() for consistency.

	* glib/gnode.h: deprecate allocator API.

	* glib/gmain.c: reordered GPollRec fields so g_slice_free_chain() can
	be used for poll rec lists.

	* glib/grel.c: removed mem chunk usage, and allocated tuples via g_slice_*().
	g_relation_destroy(): free all tuples from the all_tuples hash table,
	this effectively maintains the life time track keeping of tuples.
	g_relation_delete_tuple(): free tuples which are removed from the
	all_tuples hash table. this fixes a temporary leak that was present
	in the memchunk code until the destruction of the relation.

2005-10-29  Matthias Clasen  <mclasen@redhat.com>

	* tests/convert-test.c: Add some tests for conversions between
	UTF-8, UCS-4 and UTF-16.

	* glib/gutf8.c (g_utf8_to_ucs4, g_utf8_to_utf16): Fix handling
	of len == -1, noticed by Morten Welinder.

2005-10-27  Erdal Ronahi  <erdal.ronahi@gmail.com>

	* configure.in: Added ku (Kurdish) to ALL_LINGUAS

2005-10-26  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutf8.c (g_ucs4_to_utf8): Don't set items_read twice
	in the error case, and add some documentation.  (#319806, Morten
	Welinder)

2005-10-19  Manish Singh  <yosh@gimp.org>

	* configure.in: Use AC_CHECK_FUNCS for _NSGetEnviron, to get the
	config.h symbol automatically. Fixes bug #313731.

2005-10-19  Tor Lillqvist  <tml@novell.com>

	* glib/gwin32.c (g_win32_get_package_installation_directory):
	Return a g_strdup()ed copy of the value stored in the hash table,
	so that it can be g_free()d without leaving a dangling pointer in
	the hash table. (#319232)

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

	* glib/gunicollate.c (g_utf8_collate_key_for_filename): Handle
	all-zero sequences correctly.  (#317930, Sebastien Bacher)

2005-10-05  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmarkup.c (g_markup_escape_text): Doc addition

	* Makefile.am: Add Collation tests.

	* tests/collate/*: Inputs and expected outputs for collation tests.

	* tests/run-collate-tests.sh: Script to run collation tests.

	* tests/unicode-collate.c (main): Rework slightly to make
	it usable in unit tests. Also test g_utf8_collate_key_for_filename().

2005-10-01  Behdad Esfahbod  <behdad@gnome.org>

	* docs/reference/glib/tmpl/unicode.sgml:
	* glib/gen-unicode-tables.pl:
	* glib/gunibreak.h:
	* glib/gunichartables.h:
	* glib/gunicode.h:
	* tests/casefold.txt:
	* tests/casemap.txt: Updated to Unicode 4.1.  There are five new
	GUnicodeBreakType types.  That may break some applications, like
	Pango <= 1.10.

2005-09-26  Matthias Clasen  <mclasen@redhat.com>

	* glib/gstrfuncs.c (g_ascii_strtoull): Add details to the 
	docs.  (#314393, Matthew F. Barnes)

	* glib/glib.symbols:
	* glib/gprintf.h: Remove g_snprintf() and g_vsnprintf(), since
	they are already declared in glib.h. This doesn't break documented
	use of gprintf.h, but should probably be pointed out in the 
	release notes for 2.10. (#314232, Behdad Esfahbod)

Tue Sep 20 13:16:04 2005  Tim Janik  <timj@imendio.com>

	* glib/gpattern.c (g_pattern_ph_match): applied significant recursion
	complexity optimization, based on a patch from Matthias Clasen.

	* tests/patterntest.c: more tests, mostly from matthias.

2005-09-20  Matthias Clasen  <mclasen@redhat.com>

	* glib/gqueue.c (g_queue_insert_sorted): Correct the docs.
	(#316703, Mark Drago)

Mon Sep 19 17:23:23 2005  Tim Janik  <timj@imendio.com>

	* glib/gpattern.c: applied a patch from matthias which checks on the
	upper bound of GPatternSpec length to optimize matches.
	cosmetic fixups.

	* tests/patterntest.c: added more match cases.

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

	* glib/gstrfuncs.c (g_ascii_strcasecmp, g_ascii_strncasecmp): Add
	warning to doc comment that these functions should not be used on
	encodings like CP932.

2005-09-14  Matthias Clasen  <mclasen@redhat.com>

	* tests/keyfile-test.c: Add a test for grup names of length 1.

	* glib/gkeyfile.c (g_key_file_line_is_group): Accept group names
	of length 1.  (#316309)
	
2005-09-12  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmarkup.c (g_markup_escape_text): Clarify docs.

2005-09-11  Sebastian Wilhelmi  <seppi@seppi.de>

	* tests/refcount/Makefile.am (INCLUDES): Link the the refcount
	tests to the system thread library $(G_THREAD_LIBS). Fixes #313744
	and #314217.

2005-09-11  Kjartan Maraas  <kmaraas@gnome.org>

	* glib/gmain.c: (g_child_watch_prepare), (g_child_watch_check),
	(child_watch_helper_thread): Remove some dead code. Closes
	bug #315278.

2005-09-07  Tor Lillqvist  <tml@novell.com>

	* glib/Makefile.am: Create also a console version of the
	gspawn-win32-helper program, gspawn-win32-helper-console.exe.
	It's otherwise identical to gspawn-win32-helper.exe, except marked
	as a console application (linked without the -mwindows option).
	
	* glib/gspawn-win32.c (do_spawn_directly, do_spawn_with_pipes):
	Drop the dont_wait parameter. Its truth value correlated 100% with
	the NULLness of the exit_status parameter anyway, so it's enough
	to check whether exit_status is NULL. Invert the sense of the
	dont_return_handle parameter and rename it to do_return_handle, to
	make the code easier to read by avoiding double negations.

	(g_spawn_sync_utf8, g_spawn_async_with_pipes_utf8): Modify calls
	to do_spawn_with_pipes() accordingly.

	(do_spawn_with_pipes): If we have a console, use the console
	version of the helper program, otherwise use the GUI one. This
	avoids extra console windows opening up in some situations. (In
	case a console application uses the GUI gspawn-win32-helper.exe to
	spawn another console application we would get a separate console
	for the spawned console application).

	* glib-zip.in: Distribute also gspawn-win32-helper-console.exe.

2005-09-05  Matthias Clasen  <mclasen@redhat.com>

	* glib/gmappedfile.c (g_mapped_file_new): Report an error
	if the file is too large.  (#315275, Kjartan Maraas)

	* glib/gkeyfile.c (g_key_file_load_from_fd): The return value
	of read() is signed.  (#315273, Kjartan Maraas)
	
2005-08-31  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.h: Wrapping atexit() is a bad idea on Windows, where
	the EXE and each DLL have their own atexit function chains.

	#define g_atexit as atexit instead. This means it has a
	better chance of doing what the caller wants. For instance,
	gtkhtml calls g_atexit() registering a function in gtkhtml
	itself. This caused a crash when g_atexit() was implemented as a
	function in the GLib DLL. The gtkhtml DLL was already unloaded by
	the time the GLib DLL got unloaded.

	* glib/gutils.c: #undef the #define mentioned above, to also get a
	real g_atexit() into the DLL for backward compatibility. Document
	the Windows behaviour of g_atexit(), and document the varying ways
	atexit() can behave in the context of dynamically loaded modules
	on Unix.

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

	* glib/glib.symbols: 
	* glib/gquark.h: 
	* glib/gdataset.c: Add string interning functions.

2005-08-28  Matthias Clasen  <mclasen@redhat.com>

	* glib/giochannel.c: Unify some near-duplicate strings. (#314654,
	Clytie Siddall)
	
2005-08-26  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Bump version to 2.9.0

2005-08-25  Tor Lillqvist  <tml@novell.com>

	Make also the g_spawn*() functions take parameters in the GLib
	file name encoding, i.e. UTF-8, on Windows. Has no impact on Unix
	API or ABI. Like the other GLib API that was earlier changed to
	use UTF-8 on Windows, the names of the functions that take UTF-8
	have _utf8 suffixes added by using preprocessor macros in the
	header file. The old names are kept for functions with the old
	behaviour, taking parameters in the system codepage, for DLL ABI
	stability.
	
	* glib/gspawn.h: On Win32 add the suffix _utf8 to the names of the
	g_spawn*() functions.
	
	* glib/gspawn-win32.c: Use wide-char API on NT-based
	Windows. Convert parameters from UTF-8 to wide chars (NT) or
	system codepage (Win9x) and call the C library _wspawn*() or
	spawn*() functions respectvely. Add DLL ABI stability versions
	that take parameters in the system codepage.

	* glib/gspawn-win32-helper.c: On NT-based Windows use the
	wide-char versions of argv and envp, and use wide-char API to
	change directory and spawn the program to run. Remove the verbose
	debugging output, it was too complex to modify for the wide-char
	features. (Just add temporary debugging printouts if needed, no
	need to have them permanently in the source.)

	* glib/gspawn.c: Corresponding documentation updates.

	* glib/glib.symbols: Corresponding changes: Mark the ABI stability
	symbols as PRIVATE, add the new _utf8-suffixed ones.

2005-08-24  Stepan Kasal  <kasal@ucw.cz>

	* glib/gtypes.h (G_MININT64): Cast the constant to gint64; it is
	guint64 otherwise and that can produce warnings about comparison
	between signed and unsigned.

2005-08-23  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c: Fix the crt_externs.h include.

2005-08-23  Stepan Kasal  <kasal@ucw.cz>

	* NEWS: Fix spelling of my first name.

2005-08-23  Matthias Clasen  <mclasen@redhat.com>

	* Bump version

	* === Released 2.8.1 ===

	* NEWS: Updates

2005-08-20  Hans Breuer  <hans@breuer.org>

	* glib/makefile.msc.in : link with ws2_32.lib

2005-08-18  Tor Lillqvist  <tml@novell.com>

	* configure.in: Check for <sys/wait.h>

	* glib/gbacktrace.c: Include <sys/wait.h> on if HAVE_SYS_WAIT_H.

2005-08-18  Ross Burton  <ross@burtonini.com>

	* glib/gstring.c:
	Optimise single-character insertions.
	
	* glib/gutf8.c:
	Note copied code.
	
	* tests/string-test.c:
	Add tests for new optimisation, and fix a leak.

2005-08-17  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Check for crt_externs.h and _NSGetEnviron.

	* glib/gutils.c: On Darwin, include crt-externs.h and
	define environ using _NSGetEnviron().  (#313731)

2005-08-16  Stepan Kasal  <kasal@ucw.cz>

	* glib/gutils.c (g_get_any_init): Move the body of the big if...
	(g_get_any_init_do): ... to this new function.
	(g_get_any_init): Declare as inline.
	(g_get_any_init_locked): New inline function, does the locking.
	Make use of these two throughout the code.

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

	* glib/gbacktrace.c (g_on_error_stack_trace): Wait for
	the child process and then simply return. This makes 
	The "S" option work as documented in g_on_error_query().
	(#313125, Matthew F. Barnes)

	* glib/gunicode.h: Update the link to Unicode category
	values.  (#313369, Behnam Esfahbod)

	* glib/gqueue.c (g_queue_find_custom): Clarify docs
	a little.  (#311727, Tristan van Berkom)

	* glib/abicheck.sh, gobject/abicheck.sh: Make the 
	check work on ia64 too, where some symbols ended up 
	in yet another section.

