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

	* === Released 2.6.2 ===

	* NEWS: Updates

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

	* glib/gwin32.h: Remove unnecessary MSVC-only typedef for
	pid_t. (#165910) GLib does not pretend to be a POSIX emulation
	library.

	* glib/gstdio.c: In the Win32 part of all functions, handle
	invalid UTF-8 more robustly. Don't pass the resulting NULL
	wide-char or codepage strings on to C library functions, but bail
	out early. (#166084)

	* glib/gfileutils.c: Don't use potentially incorrect errno in
	several places. (#165951)
	(g_mkstemp): Set errno appropriately.

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

	* NEWS: Updates

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

	* tests/keyfile-test.c (test_key_remove): Add test case for
	key removal.

	* glib/gkeyfile.c (g_key_file_remove_key): Actually remove 
	the key from the list of pairs.  (#165980, David Hoover)

	* glib/gkeyfile.c: Doc clarifications.  (#165907, Vincent Untz)

	* tests/keyfile-test.c (test_group_remove): Add test case for
	group removal.

	* glib/gkeyfile.c (g_key_file_remove_group): Don't segfault
	if the group doesn't exist.  (#165887, Mathias Hasselmann)

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

	* tests/keyfile-test.c: Some more unit tests.

2005-01-28  Christian Rose  <menthos@menthos.com>

	* configure.in: Added "tl" to ALL_LINGUAS.

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

	* tests/run-markup-tests.sh: Let $srcdir default to .

	* tests/markups/fail-40.gmarkup: Add a test with a long entity
	name.

	* glib/gmarkup.c (unescape_text_state_inside_entity_name): Don't
	copy the entity name into a short buffer of fixed length. Instead,
	compare it in place with strncmp(), and do a full strdup() in the
	error path.  (#165100, Simon Budig)

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

	* glib/gdate.c (g_date_set_time): Don't g_assert that localtime()
	returns non-NULL. It does return NULL at least on Win32 if you
	pass it a negative time_t, which although wrong, shouldn't cause
	an application to abort. Instead return 2000-01-01 as a default
	date. Print a warning unless G_DISABLE_CHECKS. (#164622)

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

	* glib/gkeyfile.c (g_key_file_parse_value_as_integer): Don't
	interpret leading zeros as octal. The specification requires
	%f parsing, and %f doesn't allow octal.  

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

	* glib/gkeyfile.c (g_key_file_get_keys): Return keys in
	the order found in the file, rather than the opposite.
	(g_key_file_parse_value_as_string): Fix error reporting.

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

	* glib/gkeyfile.c (g_key_file_parse_data): Accept \r\n as 
	line end.  (#163030, Bastian Nocera)
	(g_key_file_load_from_data): Make -1 work as a size.
	
	* tests/keyfile-test.c: Some unit tests for the keyfile
	parser.  

	* tests/Makefile.am (test_programs): Add keyfile-test.

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

	* configure.in: sh portability fix. Use "test" and not [.
	(#163144, Robert Ögren)

	* glib/gbacktrace.c (g_on_error_stack_trace): On Win32 call
	G_BREAKPOINT() if being debugged.

	* glib/gmessages.c (g_logv): For fatal messages on Win32, use
	G_BREAKPOINT() also without G_ENABLE_DEBUG, but only if being
	debugged. Suggestion by Ulf Lamping.

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

	* glib/gkeyfile.c (g_key_file_get_boolean_list): Fix a
	sparse warning.  (#164467, Kjartan Maraas)

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

	* glib/gconvert.c (g_get_filename_charsets): Don't crash
	if G_FILENAME_ENCODING is empty.  (#164330, Pawel Sakowski)

2005-01-10  Owen Taylor  <otaylor@redhat.com>

	* Makefile.am (EXTRA_DIST): Add missing ChangeLog.pre*

2005-01-09  Hans Breuer  <hans@breuer.org>

	* glib/gfileutils.c : make it compile with mvc6 default sdk,
	(#define INVALID_FILE_ATTRIBUTES, FILE_ATTRIBUTE_DEVICE)

2005-01-09  Tor Lillqvist  <tlillqvist@novell.com>

	* glib/gwin32.c: Include also wchar.h for wcslen on
	Cygwin.
	(g_win32_error_message): Fix cast. (#163133, Roger Leigh)

	* glib/gfileutils.c: Include <io.h> on Windows for
	prototypes. (#163390, Kazuki Iwamoto)

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

	* NEWS: Typo fixes.

	* configure.in: Bump version

	* === Released 2.6.1 ===

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

	* configure.in: 
	* Makefile.am: Generate and distribute gmodule-export-2.0.pc,
	which is currently just a copy of gmodule-2.0.pc, but makes
	it explicit that it adds --export-dynamic.
	
	* gmodule-export-2.0.pc.in: Copy of gmodule-2.0.pc.in.

2005-01-06  Tor Lillqvist  <tml@iki.fi>

	* glib/Makefile.am
	* gobject/Makefile.am: glib.def and gobject.def are generated, not
	in $(srcdir). (#163143, J. Ali Harlow)

	* configure.in
	* glib/Makefile.am
	* gobject/Makefile.am: Win32 cross-compilation fixes. (#163144,
	J. Ali Harlow)

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

	* glib/gutils.h: Simplify the inlining magic to make it
	work at Oh zero.  (#162990, Kalpesh Shah) 

2005-01-04  Tor Lillqvist  <tml@iki.fi>

	* glib/guniprop.c (get_locale_type): Use g_win32_getlocale()
	instead of setlocale() on Windows. setlocale() returns strings
	like "Turkish_Turkey".

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

	Fix the inlining magic.  (#157536, Jens Hatlak, and
	#149907, Morten Welinder)
	
	* configure.in: Define G_CAN_INLINE in glibconfig.h

	* glib/gutils.h: Streamline the inlining magic a bit,
	don't use extern when implementing the non-inlined 
	version.

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

	* glib/gutils.c (g_find_program_in_path): Don't return
	directories.  (#160738, Tommi Komulainen)

	* glib/gfileutils.c (g_file_get_contents): Clarify the 
	documentation.  (#162251, Mariano Suárez-Alvarez)

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

	* glib/gutils.c (g_setenv, g_unsetenv): Clarify the 
	docs.  (#162747, Crispin Flowerday)

2005-01-01  J. Ali Harlow  <ali@juiblex.co.uk>

	* configure.in: Don't use AC_TRY_RUN to test for long long format
	when using the MSVCRT.DLL runtime since we know the answer anyway
	and it causes some mild inconvience when cross compiling.

	* README.win32: Add a reference to the cross compiling section
	of the reference manual.

	* docs/reference/glib/cross.sgml: MinGW uses MSVCRT.DLL which
	requires %I64i instead of %lli. (#161306)

2005-01-01  Tor Lillqvist  <tml@iki.fi>

	* glib/gutils.c: Make the g_getenv() ABI backward compatibility
	wrapper more robust.

2005-01-01  Tor Lillqvist  <tml@iki.fi>

	* glib/glib.symbols
	* glib/gutils.h
	* glib/gutils.c: Make also g_getenv(), g_setenv(), g_unsetenv()
	and g_find_program_in_path() take and return UTF-8 strings on
	Win32. Implement DLL ABI backward compatility for them, too. Move
	all the DLL ABI stability wrappers to the end of the file. Use
	wide character API when available in inner_find_program_in_path().

	* glib/gfileutils.c: With the UTF-8ness of g_getenv() above, just
	use g_getenv() to get PATHEXT. (Yeah, it's probably overdoing it
	to consider somebody actually having anything else than ASCII
	in PATHEXT, but...)

2004-12-31  Tor Lillqvist  <tml@iki.fi>

	* glib/gfileutils.c (g_file_test): Rewrite the Win32 version to
	use GetFileAttributes() instead of stat(). stat() is unreliable
	for corner cases like '\\server\share' or '.\'. Part of fixing
	#161797. When testing for executability, in addition to the fixed
	set of executable file name extensions also check the PATHEXT
	environment variable.

2004-12-30  Tor Lillqvist  <tml@iki.fi>

	* glib/gutils.c (g_get_current_dir): In the Win32 version, use
	GetCurrentDirectory() directly for simpler buffer length
	management. I don't trust getcwd() getting it right all the time.

2004-12-30  Matthias Clasen  <mclasen@redhat.com>

	* glib/gfileutils.c (g_file_test): Typo fix.

2004-12-30  Tor Lillqvist  <tml@iki.fi>

	* glib/gutils.c (g_path_skip_root): Require UNC paths to start
	with exactly two slashes.
	(g_get_current_dir): Use wide character API when available.
	(g_path_get_dirname): Handle UNC paths better. Part of fix for
	#161797.

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

	* configure.in: Add an OS_LINUX conditional.

	* glib/Makefile.am (TESTS): Only check the ABI on 
	linux, since the shell script is not portable, and libtool
	deficiencies may distort the ABI on other platforms.  (#161741)

2004-12-21  Matthias Clasen  <mclasen@redhat.com>

	* glib/goption.c (print_entry): Don't show
	the special G_OPTION_REMAINING entry.  (#161934,
	Matthew F. Barnes)

2004-12-20  Tor Lillqvist  <tml@iki.fi>

	* glib/gconvert.c (g_locale_to_utf8, g_filename_to_uri): Improve
	docs.

2004-12-20  Matthias Clasen  <mclasen@redhat.com>

	* tests/option-test.c: Add some tests for '--' 
	stripping.

	* glib/goption.c (g_option_context_parse): Don't
	strip '--' if it would be needed by a second option
	parser.  (#161701)

	* glib/gunicollate.c (g_utf8_collate): Make docs 
	more accurate.  (#161683, Marcin Krzyzanowski)

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

	* glib/goption.c (g_option_context_parse): Call
	post-parse hooks also if argv is NULL.  (#161668,
	Marcin Krzyzanowski)

