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

	* === Released 2.18.1 ===

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

	* gcontenttype.c (g_content_type_guess): can't assign the return
	value of g_strdupv() to an array. Fill the array manually with
	const strings instead (it is never freed anyway). Fixes the
	build. Also fixed indentation.

2008-09-16  Wouter Bolsterlee  <wbolster@svn.gnome.org>

	* gdesktopappinfo.c (g_desktop_app_info_new_from_keyfile):
	Fix trivial typo to unbreak the build (there was a colon
	instead of a semicolon at the end of a statement).

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

	Bug 552352 – g_app_info_launch doesn't work if "Path" key in .desktop 
	file is empty

	* gdesktopappinfo.c (g_desktop_app_info_new_from_keyfile): Ignore
	an empty Path value.  

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

	Bug 551681 – g_content_type_guess() too naive with filenames

	* gcontenttype.c (g_content_type_guess): Check whether there's a '/'
	at the end of the filename, and declare it a directory.
	Patch by Bastien Nocera

2008-09-14  Cosimo Cecchi  <cosimoc@gnome.org>

	Bug 551887 – Docs for g_desktop_app_info_new_from_filename ()
	aren't clear.

	* gdesktopappinfo.c: add a note in the docs clarifying what the
	"filename" parameter really is.

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

	* gwin32appinfo.c (g_win32_app_info_launch): Don't call
	FormatMessage() etc here. Call g_win32_error_message() instead
	which already does all that. Besides, the code was broken as it
	called the default "A" version of FormatMessage() but still
	thought it produced a wide string.

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

	* gfileinfo.c (g_file_info_get_content_type): remove dangling 's'
	in the documentation.

2008-09-08  Christian Neumair  <cneumair@gnome.org>

	* gunixmount.c (eject_unmount_read_error), (eject_unmount_do):
	* gunixvolume.c (eject_mount_read_error), (eject_mount_do):
	Use non-blocking pipe for mount helper I/O. Fixes #550647.

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

	Bug 551149 – xdgmime mem leak

	* xdgmime/xdgmime.c (xdg_mime_init_from_directory): Plug
	a memory leak. Patch by Christian Persch

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

	* gwin32mount.c (g_win32_mount_finalize): Don't unref icon if
	NULL.

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

	* === Released 2.18.0 ===

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

	* *.h: big header formatting cleanup: indentation, vtable
	formatting, consistent spacing in (* vfunc), trailing whitespace
	removal. Formatting should be pretty consistent in all GIO headers
	now.

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

	* gmount.h: Document guess_content_type sync vfunc.

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

	* gbufferedoutputstream.h (struct _GBufferedOutputStreamClass):
	fix parent_class member to be GFilterOutputStreamClass (not
	GOutputStreamClass). Drop three pointers of padding, which is
	exactly what GFilterOutputStreamClass adds to GOutputStreamClass,
	so the class struct size stays the same.

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

	Bug 550059 – Wrong docs for g_emblemed_icon_add_emblem

	* gemblemedicon.c (g_emblemed_icon_get_add_emblem): Don't document
	nonexisting return values. Pointed out by Cosimo Cecchi.

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

	Bug 548988 - g_file_replace fails on Windows when the target file
	exists already

	* glocalfileoutputstream.c (g_local_file_output_stream_close): On
	Windows, close the file before potentially renaming it (in case we
	have been writing to a file with a temporary name).

	(g_local_file_output_stream_close, handle_overwrite_open): Use
	GLocalFileStat instead of plain struct stat, for passing to
	_g_local_file_info_create_etag(). Thus also use _fstati64()
	instead of plain fstat() on Windows.

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

	* === Released 2.17.7 ===

2008-08-15  Padraig O'Briain  <padraig.obriain@sun.com>

	* gunixmounts.c: Add zfs to ignore_fs array in guess_system_internal:
	Fix for #542156.

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

	* win32/gwinhttpvfs.c
	* win32/gwinhttpvfs.h
	* win32/gwinhttpfile.c
	* win32/gwinhttpfileinputstream.c
	* win32/gwinhttpfileoutputstream.c: Refactor some common code
	snippets into helper functions. Check HTTP response status
	codes. Implement g_winhttp_file_query_info(), looking at
	Content-Length, Content-Type and Last-Modified.

	* win32/winhttp.h: Add some symbolic constants that are not
	publicly documented. Just a handful, so it should be OK to use
	information from the Windows SDK's headers.

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

	Bug 546582 - Callbacks from GFileMonitor present a GFile in the
	wrong folder

	* win32/gwin32directorymonitor.c
	(g_win32_directory_monitor_callback): Patch by Erik van Pienbroek.

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

	* ginputstream.c:
	* goutputstream.c: Add intro docs.

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

	* win32/gwinhttpfileoutputstream.c
	(g_winhttp_file_output_stream_write): Don't write the
	Content-Length header ourselves, WinHttpSendRequest() takes care
	of that when the dwTotalLength parameter is non-zero. Increment
	offset by the number of actual bytes sent, although I wonder if
	such a scenario is possible where less than requested would be
	sent and accepted by the server without errors.

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

	* win32/gwinhttpvfs.c
	* win32/gwinhttpvfs.h
	* win32/gwinhttpfile.c
	* win32/gwinhttpfile.h
	* win32/gwinhttpfileinputstream.c
	* win32/gwinhttpfileinputstream.h
	* win32/gwinhttpfileoutputstream.c
	* win32/gwinhttpfileoutputstream.h: New files implementing
	GWinHttpVfs and related classes, a GVfs for HTTP and HTTPS URIs on
	Windows. The implementation uses the WinHttp API. Both reading and
	writing are supported, i.e. GET and PUT requests. When writing,
	each write call is done using a separate PUT request with a
	Content-Range header. Requests for file URIs and plain pathnames
	are forwarded to GLocalVfs.

	* win32/winhttp.h: Reverse engineered <winhttp.h>, borrowed from
	WINE. Used as there is no <winhttp.h> bundled with mingw, and
	requiring people to download the Windows SDK just for this one
	header is not reasonable.

	* win32/Makefile.am: Add above files.

	* giomodule.c: Call _g_winhttp_vfs_get_type() on Windows to set up
	the plumbing for the above.

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

	* gfilenamecompleter.c
	* glocaldirectorymonitor.c
	* gmountoperation.c
	* gunionvolumemonitor.c
	* gunixmount.c
	* gunixmounts.c
	* gunixvolume.c
	* gunixvolumemonitor.c
	* gvolumemonitor.c
	* gwin32mount.c
	* gwin32volumemonitor.c: use canonical signal names.

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

	* Makefile.am: Put a list of the platform-dependent .la files in
	the subdirectories in the platform_deps Make variable, and make
	libgio-2.0.la depend on that, so that it gets relinked if one of
	the dependent libraries has changed.

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

	* Makefile.am (platform_libadd): Remove -lwininet which had been
	added by mistake. We will probably eventually be using WinHTTP,
	not the older WinInet anyway. (Actually I am working on it.)

2008-08-10  Felix Riemann  <friemann@svn.gnome.org>

	Bug 547080 – g_file_copy leaks expected errors

	* gfile.c: (g_file_copy): Clear G_IO_ERROR_NOT_SUPPORTED errors
	before trying the next fallback routine.

2008-08-09  Loïc Minier  <lool@dooz.org>

	Bug 535124 – umask 002 not being applied for new directories, new
	files get the correct umask

	* gfile.c (g_file_make_directory)
	(g_file_make_directory_with_parents): Document ownership and
	permissions of newly created directories as being the default
	ones of the process.

2008-08-08  Loïc Minier  <lool@dooz.org>

	Bug 535124 – umask 002 not being applied for new directories, new
	files get the correct umask

	* glocalfile.c: (g_local_file_make_directory): Use 0777 instead of
	0755 as umask

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

	* gwin32mount.c: Remove unused code. Whitespace cleanup.

	* gwin32volumemonitor.c (get_connected_drives): Put questionable
	code that didn't actually do anything inside #if 0, and add a
	comment wondering what the code was supposed to do. This also gets
	rid of a leftover debugging printout.

2008-08-07  Paul Pogonyshev  <pogonyshev@gmx.net>

	* gfileicon.c (g_file_icon_get_property)
	(g_file_icon_set_property): New functions.
	(g_file_icon_class_init): Hook them up.  Install `GFileIcon:file'
	property.
	(g_file_icon_new): Use the property (bug #546132).

2008-08-06  Paul Pogonyshev  <pogonyshev@gmx.net>

	* gthemedicon.c (g_themed_icon_get_property): Also handle
	`PROP_USE_DEFAULT_FALLBACKS'.
	(g_themed_icon_class_init): Make
	`GThemedIcon:use-default-fallbacks' read-write (bug #546483).

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

	Bug 546371 – Improve docs re g_file_monitor

	* gfilemonitor.c: Mention g_file_monitor() in the docs.

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

	* === Released 2.17.6 ===

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

	* === Released 2.17.5 ===

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

	Bug 546017 – Don't copy attributes when copying a symlink

	* gfile.c (g_file_copy_attributes): Specify
	G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS in the call to 
	g_file_set_attributes_from_info. Patch by Christian Kellner

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

	* gemblemedicon.[hc]: 
	* gio.symbols:
	* gemblem.[hc]: Add GEmblem to make the emblem mechanism
	a bit more extensible. Work by Clemens Buss.

	* gioenums.h: Add GEmblemOrigin.
	* Makefile.am: Glue

2008-08-03  Carlos Garcia Campos  <carlosgc@gnome.org>

	Bug 546079 – leak in xdgmime
	
	* xdgmime/xdgmime.c (xdg_mime_shutdown): Fix memory leak.
	
2008-08-03  Tor Lillqvist  <tml@novell.com>

	* win32/gwin32directorymonitor.h
	* win32/gwin32directorymonitor.c: Whitespace cleanup to match GLib
	style.

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

	* win32/gwin32directorymonitor.c
	(g_win32_directory_monitor_callback): Make prototype match
	LPOVERLAPPED_COMPLETION_ROUTINE to avoid warning. Cast
	LPOVERLAPPED parameter to local GWin32DirectoryMonitorPrivate
	pointer.

	(g_win32_directory_monitor_constructor):
	GLocalDirectoryMonitor::dirname is in UTF-8 like all other file
	names in the GLib API on Windows, so convert to UTF-16 and open
	with CreateFileW().

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

	Bug 541036 - Gnumeric crashes when trying to open Desktop or
	user's folder under Windows

	* win32/gwin32directorymonitor.c
	(g_win32_directory_monitor_constructor): Ignore error from
	CreateFile() when opening directory. Instead of asserting, just
	store INVALID_HANDLE_VALUE then in
	GWin32DirectoryMonitorPrivate::hDirectory. Also ignore error from
	ReadDirectoryChangesW().
	(g_win32_directory_monitor_cancel): Don't attempt to close
	directory handle if it is INVALID_HANDLE_VALUE.

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

	* gdesktopappinfo.c: Remove debug spew

2008-08-01  Hans Breuer  <hans@breuer.org>

	* makefile.msc : add gemblembedicon

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

	Bug 545457 – gdmsetup crashed with SIGSEGV in
	g_unix_mount_guess_should_display()

	* gunixvolumemonitor.c (get_mount_for_mount_path): Don't 
	crash if no mount is found.

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

	Bug 545203 – gfile.c: argument is different type.

	* gfile.c (open_read_async_thread): Pass a GError **
	to g_file_set_error_literal.
	Reported by Kazuki Iwamoto

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

	Bug 545157 – wrong/no list of "open with" applications for .cc and
	.cpp files

	* gdesktopappinfo.c (get_all_desktop_entries_for_mime_type):
	Collect all ancestors, not just direct parents. Pointed
	out by Bastien Nocera

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

	* Makefile.am: Install gemblemedicon.h

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

	* gemblemedicon.[hc]: Add a GIcon implementation that can
	add an emblem to another icon.

	* gio.h:
	* Makefile.am:
	* gio.symbols: Glue

	* gloadableicon.c:
	* gfileicon.c: Small documentation additions.

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

	* gwin32appinfo.c (g_win32_app_info_get_icon): Correct return
	type.

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

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

2008-07-24  David Zeuthen  <davidz@redhat.com>

	* gmount.[ch]:
	* gio.symbols:
	Also export a g_mount_guess_content_type_sync() function.

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

	529694 – SELinux context setting support

	* gfileinfo.c: Support setting selinux attributes.
	Patch by Tomas Bzatek

2008-07-22  Priit Laes <plaes@plaes.org>

	Bug 544140 - fam-helper 64-bit issue?

	* fam/fam-helper.c: Added missing include so compiler doesn't complain.

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

	* === Released 2.17.4 ===

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

	* gvolumemonitor.[hc]:
	* gmountoperation.c:
	* gioenums.h:
	* gdrive.c:
	* gvfs.c:
	* gmount.c: Documentation fixes

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

	543504 – crash in Epiphany Web Browser: Opening local file

	* gappinfo.c:
	* gasyncresult.c:
	* gdesktopappinfo.c:
	* gdrive.c:
	* gfile.c:
	* gicon.c:
	* gloadableicon.c:
	* gmount.c:
	* gseekable.c:
	* gvolume.c: Register types thread-safely.
	Patch by Christian Persch

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

	* gcontenttype.c: Remove debug spew

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

	Bug 543560 – enable gio-FEN back-end warnings on Solaris will crash
	any applications

	* fen/fen-kernel.c: Remove a warning that was causing
	crashes. Reported by Lin Ma.

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

	Bug 543040 – async reading on dummy file will crash on
	GIO_USE_VFS=local

	* gfile.c (open_read_async_thread): Cope with read_fn being
	NULL. Reported by Lin Ma.  

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

	* gio.symbols:
	* gcontenttype.[hc]: Add g_content_type_guess_for_tree().

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

	* gvfs.h:
	* gdesktopappinfo.h: 
	* giomodule.c: Rename a chapter id to avoid filename conflict.

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

	Bug 540616 – mem leak in filechooser button

	* gunixvolumemonitor.c (get_mount_for_mount_path): Free
	the mount entry. Reported by Chrisitan Persch

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

	* gfile.c: Small documentation fixes.

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

	* gunixmounts.c: Use g_strcmp0 instead of rolling our own.

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

	* gvolumemonitor.c:
	* gfile.c:
	* gvolume.c:
	* gmount.c: Documentation improvements.

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

	* gio.symbols:
	* gmount.[hc]: Add g_mount_guess_content_type(). 

2008-07-06  David Zeuthen  <davidz@redhat.com>

	* gio.symbols:
	* gvolume.[ch]: Add new method g_volume_get_activation_root(). This
	is needed for easily handling adoption of foreign volumes by
	out-of-process volume monitors (#541793)

2008-07-06  David Zeuthen  <davidz@redhat.com>

	* gvolumemonitor.[ch]:
	* gunionvolumemonitor.c: Export the eject-button signal on the
	volume monitor class (#541794).

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

	* gappinfo.c: More doc tweaks

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

	* gappinfo.c: Clarify some docs

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

	* gdesktopappinfo.c: Fix a stupid mistake.

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

	* === Released 2.17.3 ===

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

	* gfilemonitor.c: Fix the build.

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

	Bug 536160 – Add g_file_monitor()

	* gio.symbols:
	* gfile.[hc]: Add g_file_monitor which can return either
	a file or a directory monitor.  Proposed by Behdad Esfahbod

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

	536733 – gio build failure on Irix

	* glocalfile.c: Use a configure check for structfs.f_bavail.

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

	Bug 534639 – add g_desktop_app_info_new_from_keyfile

	* gio.symbols:
	* gdesktopappinfo.[hc]: Add a function to create a
	GDesktopAppInfo from a GKeyFile. Proposed by Josselin Mouette.

2008-07-02  Wouter Bolsterlee  <wbolster@svn.gnome.org>

	* gappinfo.c: Fix ulink in doc to make gtk-doc happy.

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

	* gunixmounts.c: Fix a doc typo.

2008-07-01  Cody Russell  <bratsche@gnome.org>

	* gio/gcontenttype.c:
	* gio/gwin32appinfo.c:
	* gio/gwin32volumemonitor.c:
	* gio/gwin32mount.c: Fixed some include problems.

2008-07-01  Cody Russell  <bratsche@gnome.org>

	* gio/gioenums.h:
	* gio/giotypes.h:
	Moved all relevant typedefs into these files.

	* gio/*.[ch]:
	Updated wrt added files.

	Split types into separate file for easier maintainership. (#538564)

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

	Bug 540331 – g_file_append_to () documentation: can return NULL

	* gfile.c (g_file_append_to): Clarify docs.
	Patch by Jared Moore

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

	Bug 539090 – g_content_type_from_mime_type() should unalias

	* gcontentype.c (g_content_type_from_mime_type): Unalias.
	Patch by Markus Bergman

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

	Bug 538836 – make check failure on PPC and ALPHA: pltcheck.sh on
	g_atomic_pointer_get

	* pltcheck.sh: Allow g_atomic_pointer_get, to fix 'make check'
	on ppc and alpha. Reported by Mart Raudsepp

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

	* tests/Makefile.am: 
	* tests/memory-output-stream.c: Add some tests for
	GMemoryOutputStream. 

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

	Bug 540423 – unrecoverable error after g_seekable_truncate(seekable,
	0, ...)

	* gmemoryoutputstream.c (array_resize): Handle truncation to
	zero correctly. Reported by Akira Tagoh

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

	* gmemoryoutputstream.c: Trivial doc fixes

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

	Bug 540802 – g_list_prepend doesn't concat lists

	* giomodule.c (_g_io_modules_ensure_loaded): Don't g_list_prepend
	one list to another. Pointed out by Jan Arne Petersen

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

	* gfileicon.c: remove semicolons from G_IMPLEMENT_INTERFACE().

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

	* glocalfileinfo.c: Don't do fallback for user-home and user-desktop
	to avoid problems with partial icon themes.
	
2008-06-17  Hans Breuer  <hans@breuer.org>

	* gwin32mount.[ch] gwin32volumemonitor.[ch] : bits and pieces from 
	gtk-2-12 and gunix*.[hc] to make the file chooser show drive letter
	access again on win32, see bug #538127
	* giomodule.c : ensure GWin32VolumeMonitor is registered
	* glocaldireoctorymonitor.c : initial state on win32 is_mounted=TRUE
	* Makefile.am makefile.msc : updated

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

	* glocalfileenumerator.c(_g_local_file_enumerator_new) : declaration 
	and initialization in one step avoids c99ism

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

	* gio/gappinfo.c
	* gio/gbufferedinputstream.c
	* gio/gcancellable.c
	* gio/gdatainputstream.c
	* gio/gdesktopappinfo.c
	* gio/gfile.c
	* gio/gfileenumerator.c
	* gio/gfileinputstream.c
	* gio/gfileoutputstream.c
	* gio/ginputstream.c
	* gio/glocaldirectorymonitor.c
	* gio/glocalfile.c
	* gio/glocalfileenumerator.c
	* gio/glocalfileinfo.c
	* gio/glocalfilemonitor.c
	* gio/glocalfileoutputstream.c
	* gio/gmemoryinputstream.c
	* gio/gmemoryoutputstream.c
	* gio/goutputstream.c
	* gio/gwin32appinfo.c: Use g_set_error_literal where appropriate. Patch from 
	bug #535947.

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

	Bug 538362 - Get Win32 icons back in the file chooser

	* gcontenttype.c (g_content_type_get_icon): Look up the icon
	corresponding to a file extension in the Registry. Patch by Hans
	Breuer.
	(get_registry_classes_key): Handle also REG_EXPAND_SZ type values.
	
2008-06-16  Tor Lillqvist  <tml@novell.com>

	Patches by Hans Breuer:

	* glocalfile.c (is_xp_or_later): Handle compiling against older
	SDK headers with missing VerifyVersionInfo().  Conditioned on
	_MSC_VER, but should probably use some better test.
	* glocalfile.c (g_local_file_query_filesystem_info): Don't test
	uninitialised statfs_result variable on Win32.

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

	* *.c: chain up unconditionally in finalize() and dispose(). Also
	don't dereference these function pointers when calling them since
	that has no meaning at all.

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

	* gfileenumerator.c:
	Remove check for dispose implementation as it annoys Emmanuele.
	
2008-06-16  Ross Burton  <ross@burtonini.com>

	Bug 536252 – GFileEnumerator should allow access to the containing
	GFile
	
	* gfileenumerator.c:
	* gfileenumerator.h:
	* gfile.h:
	Add g_file_enumerator_get_container() and a container writeable
	construct-only property.  Also shuffle around typedefs to make it
	compile.
	
	* glocalfileenumerator.c:
	* glocalfileenumerator.h:
	* glocalfile.c:
	Instead of a string filename take a GFile in the constructor and
	use it to set the container property.
	
	* gio.symbols:
	Update with new API.

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

	* gfile.c: Make includes more uniform

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

	* tests/live-g-file.c (sample_struct):
	Use less fancy unicode filenames, so the test doesn't fail
	on Mac OS X (#531476).

2008-06-12  Matthias Clasen  <mclasen@redhat.com>
	
	* === Released 2.17.2 ===

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

	* === Released 2.17.1 ===

2008-06-11  A. Walton  <awalton@gnome.org>

	* tests/g-file.c (test_g_file_new_null):
	Fix broken test case.

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

	* pltcheck.sh: We use g_clear_error now.

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

	* glocalfile.c (g_local_file_enumerate_children): Revert
	an unintended change.

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

	* gfile.c (g_file_replace_contents): Don't unref before the last use.

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

	Bug 537546 – 'desktop' shortcut in file chooser looks like a generic
	folder
	
	* glocalfileinfo.c (_g_local_file_info_get): Return user-desktop
	as icon for the desktop directory, also make user-home and
	user-desktop the preferred icons.

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

	* gio.symbols:
	* gthemedicon.[hc] (g_themed_icon_prepend_name): New function,
	to add a name to the front of the list.

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

	Bug 537392 – Additional colon in xattr name

	* glocalfileinfo.c (set_xattr): Skip the second colon of the prefix,
	too. Reported by  Alessandro Morandi 

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

	Bug 536641 – Filesystem querying in gio does not list AFS and autofs
	file systems

	* glocalfile.c (get_fs_type): Add afs and autofs.
	Patch by Danny Baumann.

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

	Bug 528600 – g_dummy_file_get_parent("scheme://example.com/")

	* gdummyfile.c (g_dummy_file_get_parent): Return NULL if there
	is no parent.  (Owen Taylor, patch by Christian Neumair)
	
2008-06-10  Paolo Borelli  <pborelli@katamail.com>

	* gfile.c (g_file_replace_contents): do not leak the output stream.

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

	* gcontenttype.c (g_content_type_get_icon): fix SEGV by not using
	uninitialized memory as array index.

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

	* gcontenttype.c (g_content_type_can_be_executable)
	(g_content_type_get_icon) [Win32]: Add TODO comments.

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

	* xdgmime/Makefile.am: Fix the build

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

	* gcontenttype.c (g_content_type_get_icon): Use icons specified
	in the shared mime database, if available.

	* xdgmime/*: Sync with upstream. This brings support for
	glob weights, generic icons, and changes the cache format to 
	version 1.1.

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

	* Makefile.am: don't define G_DISABLE_SINGLE_INCLUDES, it's in
	the global CPPFLAGS now.

	* tests/data-input-stream.c
	* tests/data-output-stream.c
	* tests/g-file-info.c
	* tests/g-file.c
	* tests/live-g-file.c
	* tests/memory-input-stream.c: don't include <glib/gtestutils.h>

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

	* === Released 2.17.0 ===

	* tests/live-g-file.c: Clean up after the tests, so make distcheck
	doesn't complain about leftover files.

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

	* glocalfile.c: (g_local_file_query_filesystem_info):
	Fix #533369. Make G_FILE_ATTRIBUTE_FILESYSTEM_TYPE work on Solaris.

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

	* gmemoryoutputstream.h: declare
	g_memory_output_stream_get_data_size().

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

	* tests/*: Make tests work 

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

	* gio.symbols: Add g_memory_output_stream_get_data_size.

2008-05-25  Ross Burton  <ross@burtonini.com>

	* glocalfile.c:
	Fix typo in error message (#534764).

2008-05-25  Ross Burton  <ross@burtonini.com>

	* Makefile.am:
	Fix circular dependency loop for gioenumtypes.h (#534759).

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

	* Makefile.am : EXTRA_DIST += makefile.msc

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

	* gcontenttype.h:
	* gcontenttype.c: (g_content_type_from_mime_type):
	New function to create a content type from a mime type. (#527175,
	Milan Crha)

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

	Bug 532965 – Should not return filesystem::free for certain file systems

	* glocalfile.c (g_local_file_query_filesystem_info) Don't return
	free space for ncpfs.

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

	Bug 530196 – _g_local_file_has_trash_dir() doesn't handle st_dev == 0

	* glocalfile.c (_g_local_file_has_trash_dir): Handle the case that
	st_dev might be zero.

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

	* win32/gwin32directorymonitor.c: #define _WIN32_WINNT 0x0400 to
	get declaration of ReadDirectoryChangesW() from Platform SDK headers.

2008-05-13  Bastien Nocera  <hadess@hadess.net>

	* gfile.c (has_valid_scheme): A URI scheme must start with a
	letter, even if later more characters are allowed (#532852)

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

	* Makefile.am. build with G_DISABLE_SINGLE_INCLUDES to prevent
	code from being checked in that breaks the build of applications
	which use G_DISABLE_SINGLE_INCLUDES.

	* makegioalias.pl: make the alias file include "glib.h" instead of
	"glibconfig.h".

	* gio.symbols: whitespace change to force regeneration of the
	alias file after above script change.

	* gfileinfo.h: remove inlcusion of <glib/gfileutils.h>.

	* gfilenamecompleter.c: remove inclusion of "gurifuncs.h".

	* gioerror.h: #include <glib.h> instead of <glib/gerror.h>.

	* glocalfileinfo.c: remove inclusion of <glib/gchecksum>.

2008-04-28  David Zeuthen  <davidz@redhat.com>

	* gunixmounts.c (g_unix_mount_guess_should_display): Avoid
	displaying mounts in a subdirectory not accessible to the
	user (#526320).

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

	* Makefile.am: fix library versioning (it was 0.0.0).

2008-04-21  Lin Ma  <Lin.Ma@Sun.COM>

	* fen/fen-data.c, fen/fen-helper.c, fen/fen-missing.c, fen/fen-node.c:
	Default disable all loggings.
	* fen/fen-kernel.c: (printevent), (port_add_kevent),
	(port_fetch_event_cb): Fixed two macro nits.

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

	* xdgmime/xdgmime.c: Rework the timestamp checking code
	to protect against duplicate directories in XDG_DATA_DIRS.
	Fixes fd.o bug 12513, reported by Joe Shaw.

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

	Partically revert the last commit after realizing that
	xdg_mime_media_type_equal doesn't have to init at all.

	* xdgmime/xdgmime.h:
	* xdgmime/xdgmime.c: Get rid of _xdg_mime_media_type_equal

	* xdgmime/xdgmimecache.c: Use xdg_mime_media_type_equal

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

	Avoid possible memory corruption in xdgmime, fd.o bug 12512,
	reported by Joe Shaw and Federico Mena Quintero.

	* xdgmime/xdgmime.c(_xdg_mime_media_type_equal): Implement.
	(xdg_mime_media_type_equal): Turn into a wrapper around the 
	_-prefixed version.

	* xdgmime/xdgmimecache.c: Use the _-prefixed versions of comparison
	functions throughout.

2008-04-16  Michael Meeks  <michael.meeks@novell.com>

	* gdesktopappinfo.c (g_desktop_app_info_new_from_filename): 
	tolerate an empty TryExec= line without failing; nautilus used
	to create launchers with these in previous versions. Fixes #528433

2008-04-09  Padraig O'Briain  <padraig.obriain@sun.com>

	* gdesktopappinfo.c: In g_app_info_create_from_commandline set comment
	after name. Fixes #527132.

2008-04-08  Tomas Bzatek  <tbzatek@redhat.com>

	* gfile.c: (g_file_replace):
	Doc update

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

	Bug 526796 – Wrong order of arguments in g_file_copy's fallback

	* gfile.c (file_copy_fallback): Fix the argument order. Patch
	by Christian Kellner.

2008-04-04  Sebastien Bacher  <seb128@ubuntu.com>

	* gunixmounts.c: (g_unix_mount_guess_should_display):
	Don't list the user directory as a mount, fix potential issue
	when other users have a similar naming and don't special case the
	gvfs mounts there since that's not required (#525866)

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

	* glocalfile.c (get_parent):
	Don't leak parent.
	
2008-03-31  A. Walton  <awalton@svn.gnome.org>

	* gfile.c (g_file_query_file_type):
	Always return a GFileType enum value (#520715).

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

	* glocalfileenumerator.c:
	Read readdir() info in chunks (of 1000) and sort
	the chunks by inode before stat:ing.
	This is a 20% performance increase in testing
	gvfs-ls on /usr/bin with cold cache.

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

	* gmemoryoutputstream.c:
	Clarify docs for g_memory_output_stream_get_size.
	Add g_memory_output_stream_get_data_size.

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

	* gio.symbols:
	* gfile.c:
	* gfile.h: Add g_file_query_file_type convenience function
	to query the type of a file.  (#520715, Mikkel Kamstrup Erlandsen)

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

	* gfileenumerator.c:
	* gfile.c: Fix some documentation typos.  (#524950, Rob Bradford)

2008-03-28  A. Walton  <awalton@svn.gnome.org>

	* giomodule.c (_g_io_modules_ensure_loaded):
	Adds GIO_EXTRA_MODULES environment variable support, closing bug 
	#523039.

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

	* gfile.c:
	(copy_stream_with_progress):
	Fix up last commit.
	
2008-03-28  Alexander Larsson  <alexl@redhat.com>

	* gfile.c:
	(copy_stream_with_progress):
	(file_copy_fallback):
	Fallback to g_file_query_info for source size
	if g_file_input_stream_query_info fails. (#524579)

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

	* glocalfile.c (g_local_file_move):
	Reuse old string instead of adding new one.

2008-03-28  Lin Ma  <Lin.Ma@Sun.COM>

	* fen/*.[hc]: still copyright issue. I hate copyright.

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

	* glocalfile.c (g_local_file_move):
	Return G_IO_ERROR_IS_DIRECTORY, not G_IO_ERROR_WOULD_MERGE when moving
	file over directory. This is according to the docs and what the move via
	copy+remove fallback does.

2008-03-27  Lin Ma  <Lin.Ma@Sun.COM>

	* fen/*.[hc]: Updated copyright.

2008-03-20  Lin Ma  <Lin.Ma@Sun.COM>

	* fen/fen-data.c: (fdata_adjust_changed): Removed a bad formatted msg.

2008-03-20  Lin Ma  <Lin.Ma@Sun.COM>

	* fen/fen-data.c: (process_events), (fdata_add_event): Fixed FEN does
	not emit attribute changed events when optimizing changed events.
	* fen/fen-helper.c, fen/fen-kernel.c: Added ifdef to default disable
	warning messages.

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

	* gmountoperation.[hc]: Small documentation additions

2008-03-19  Sebastien Bacher  <seb128@ubuntu.com>

	* gunixmounts.c: (guess_mount_type): 
	consider nfs4 mounts as G_UNIX_MOUNT_TYPE_NFS (Closes: #523338)

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

	* gfile.c:
	(copy_stream_with_progress):
	Bump block side for copy to 64k to minimize
	overhead for low latency links. (#523015)

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

	* Makefile.am (libgio_2_0_la_DEPENDENCIES): Make libgio-2.0.la
	depend on gio.def on Windows.

2008-03-12  David Zeuthen  <davidz@redhat.com>

	* gio.symbols:
	* gunixmounts.[ch]:
	Add g_unix_mount_monitor_set_rate_limit() function (#521946)

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

	* gunixmounts.c:
	(guess_mount_type):
	Avoid redudant tests (#521851)
	Patch from Josselin Mouette

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

	* gfilemonitor.c:
	(g_file_monitor_is_cancelled):
	Fix C89 issue (#521672)
	Patch from Jens Granseuer

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

	* fam/fam-helper.[ch]:
	* fam/fam-module.c:
	Shut down fam (including removing fam GSource) when
	module is unloaded (#521513)
	Patch from Joe Marcus Clarke   

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

	* giomodule.c:
	(_g_io_modules_ensure_loaded):
	Fix up FEN ifdefs

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

	* glocalfile.c:
	(g_local_file_query_filesystem_info):
	Use right define name for f_fstypename member check

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

	* Makefile.am:
	* fen/Makefile.am: Added.
	* fen/fen-data.[ch]: Added.
	* fen/fen-dump.[ch]: Added.
	* fen/fen-helper.[ch]: Added.
	* fen/fen-kernel.[ch]: Added.
	* fen/fen-missing.[ch]: Added.
	* fen/fen-node.[ch]: Added.
	* fen/fen-sub.[ch]: Added.
	* fen/gfendirectorymonitor.[ch]: Added.
	* fen/gfenfilemonitor.[ch]: Added.
	* giomodule.c:
	Added Solaris FEN file notification backend.
	Patch from Lin Ma <Lin.Ma@Sun.COM>

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

	* Makefile.am: Actually use the gio.def file when linking the
	library on Windows. Produce .lib library for Microsoft's toolchain
	when possible. Install the .lib and .def file like for the other
	libraries of GLib.

2008-03-13  Tomas Bzatek  <tbzatek@redhat.com>

	* tests/live-g-file.c:
	Include live-g-file in standard set of tests, making a temporary
	directory in source structure.
	
	Clean target directory before the tests (write mode only)

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

	Bug 517419 - gio win32 directory monitor
	Implementation by Vlad Grecescu.
	
	* win32/Makefile.am
	* win32/gwin32directorymonitor.h
	* win32/gwin32directorymonitor.c: New files.

	* giomodule.c: Set up the GWin32DirectoryMonitor plumbing.

	* Makefile.am: Add the win32 subdirectory.

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

	* glocalfileinfo.h: Introduce a macro GLocalFileStat that is the
	normal struct stat on Unix but struct _stati64 on Windows to have
	access to 64-bit file size information. Use that instead of struct
	stat in the functions declared here in this private header.

	* glocalfileinfo.c: Corresponding changes. Move some G_OS_WIN32,
	S_ISLNK and HAVE_UTIMES ifdefs and add some more to avoid compiler
	warnings about unused functions and variables. Don't set
	meaningless attributes like inode numbers on Windows.

2008-03-12  Benjamin Otte  <otte@gnome.org>

	* gvfs.h:
	trim whitespace so gtk-doc groks the function name

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

	* glocalfile.c (_g_local_file_has_trash_dir): Implement as empty,
	returning FALSE, on Win32.

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

	* glocalfile.c:
	* glocalfileinfo.[ch]:
	Correctly implement can_trash by actually
	looking for a trash dir, not just assuming
	one exists.

2008-03-10  Matthias Clasen  <mclasen@redhat.com>
	
	* === Released 2.16.1 ===

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

	* gthemedicon.c:
	Fix crashes in new constructor and properties code

2008-03-10  Murray Cumming  <murrayc@murrayc.com>

	* gfile.c: Minor spelling correction in documentation:
	existance -> existence.

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

	* === Released 2.16.0 ===

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

	* gio.symbols: Remove g_file_contains_file here, too.

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

	* gthemedicon.c: Add properties to make bindings happy.  (#517676,
	Samuel Cormier-Iijima)

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

	* glocalfile.c: Define FILE_READ_ONLY_VOLUME if it is missing from
	winnt.h. (#521145)

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

	* glocalfile.c:
	(g_local_file_query_filesystem_info):
	Use struct statfs.f_fstypename if availible (e.g. on OpenBSD)
	Patch from Jasper Lievisse Adriaanse

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

	* gfileinfo.h: Correct milliseconds to microseconds in the doc
	comments for the *_USEC attributes.

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

	* gfile.c (g_file_query_exists):
	Add g_return_val_if_fail check (#520700)

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

	* gdesktopappinfo.c:
	* gfilemonitor.c:
	* gthemedicon.c:
	* gunionvolumemonitor.c:
	* gunixmounts.c:
	* tests/g-file.c:
	* tests/live-g-file.c:
	* xdgmime/xdgmimecache.c:
	Fix sparse warnings (#519489)

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

	* gfilemonitor.c:
	Make cancellation threadsafe (i.e.
	guarantee its only done once, and always
	done)
	
	* glocaldirectorymonitor.c:
	Make sure we the monitor lives while the
	mounts_changed callback is being called (#520484)

2008-03-04  Wouter Bolsterlee  <wbolster@svn.gnome.org>

	* gbufferedinputstream.c: Fix typo in parameter
	documentation.

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

	* gfile.c:
	Remove deprecated symbols we kept for one release.

2008-03-04  Murray Cumming  <murrayc@murrayc.com>

	* ginputstream.c:
	* goutputstream.c: Tiny documentation corrections.

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

	* gunionvolumemonitor.c:
	* gvolumemonitor.h:
	Fix the adopt_orphan_mount vfunc to take a
	volume_monitor reference in an ABI compat way.
	This change is not API compat, but the added
	arg is not used in the only user of this vfunc, so
	all we get is a harmless warning in gvfs (#520169)
	
2008-03-01  Benjamin Otte  <otte@gnome.org>

	* gfile.c:
	clarify docs for g_file_delete().

2008-02-29  Alexander Larsson  <alexl@redhat.com>

	* glocalfileinfo.c:
	(get_content_type):
	Make sure empty files get text/plain type (#518720)

2008-02-27  Alexander Larsson  <alexl@redhat.com>

	* gcontenttype.c:
	Fix type warnings
	
	* gunixvolume.c:
	(g_unix_volume_mount):
	Add missing GMountMountFlags argument

2008-02-26  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c:
	(g_local_file_delete):
	Handle filesystems (like ntfs-3g) that return EEXIST instead
	of ENOTEMPTY (#518816)

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

	* === Released 2.15.6 ===

2008-02-25  Wouter Bolsterlee  <wbolster@svn.gnome.org>

	* gfile.c (g_file_find_enclosing_mount):
	* ginputstream.c (g_input_stream_set_pending):
	* glocalfile.c (g_local_file_find_enclosing_mount):
	* gmount.c (g_mount_unmount), (g_mount_eject), (g_mount_remount):
	* goutputstream.c (g_output_stream_set_pending):

	Fixup translator comments (#518578).

2008-02-25  Wouter Bolsterlee  <wbolster@svn.gnome.org>

	* gfile.c (g_file_find_enclosing_mount):
	* giomodule.c:
	* glocalfile.c (g_local_file_find_enclosing_mount):
	* goutputstream.c:

	Fix a few typos in translator comments and documentation.

2008-02-25  Alexander Larsson  <alexl@redhat.com>

	* gfile.c:
	* ginputstream.c:
	* glocalfile.c:
	* gmount.c:
	* goutputstream.c:
	Add translator comments (#518578)

2008-02-25  Alexander Larsson  <alexl@redhat.com>

	* gfile.c:	
	Reintroduce g_file_contains_file, keep around for one
	unstable release cycle to avoid crashing to many apps.
	Make sure to delete after release.

2008-02-25  Alexander Larsson  <alexl@redhat.com>

	* gfile.[ch]:
	Remove deprecated g_file_contains_file.

2008-02-25  Alexander Larsson  <alexl@redhat.com>

	* gfilemonitor.c:
	Emit actual change signals in an idle handler.
	This avoids reentrance and locking problems in
	the file notification backends.
	
2008-02-25  Alexander Larsson  <alexl@redhat.com>

	* gunixmounts.c:
	(g_unix_mount_guess_should_display):
	Remove type guessing, instead just display
	mounts in /media and in ~/.

2008-02-25  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c:
	Make new strings reuse old ones.
	
2008-02-25  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c:
	Implement trashing and filesystem::readonly for win32 (#517235)
	Patch from Yevgen Muntyan

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

	* gfileinfo.h: Documentation fixes.

2008-02-22  Alexander Larsson  <alexl@redhat.com>

	* gcontenttype.c (g_content_type_get_icon):
	Look at old-style gnome mime icon names too, as many
	have not moved to the new style.

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

	* *.c: Correct the @include in for section docs.

2008-02-21  David Zeuthen  <davidz@redhat.com>

	* glocalfileinfo.c: (_g_local_file_info_get):
	* gcontenttype.c:
	(g_content_type_get_icon): Implement this function by
	moving bits from glocalfileinfo.c
	(g_content_type_get_description): Unalias before getting
	description (#517687)

	* gfile.c: (g_file_class_init),
	(g_file_query_filesystem_info_async),
	(g_file_query_filesystem_info_finish),
	(query_filesystem_info_data_free),
	(query_filesystem_info_async_thread),
	(g_file_real_query_filesystem_info_async),
	(g_file_real_query_filesystem_info_finish):
	* gfile.h: Implement async version of
	g_file_query_filesystem_info()

	* gfileinfo.h: Add new attributes for filesystem::use-preview

	* gio.symbols: Update

	* gthemedicon.c: (g_themed_icon_append_name):
	* gthemedicon.h: Add new new convenience function.

	* gunionvolumemonitor.c: (g_union_volume_monitor_dispose),
	(get_mounts), (get_volumes), (get_connected_drives),
	(get_volume_for_uuid), (get_mount_for_uuid),
	(g_union_volume_monitor_init), (populate_union_monitor),
	(g_volume_monitor_get), (_g_mount_get_for_mount_path),
	(g_volume_monitor_adopt_orphan_mount):
	* gvolumemonitor.c:
	* gvolumemonitor.h: Use recursive locks so it's safe for volume
	monitor implementations to call into the main volume monitor. Also
	separate object initialization and volume monitor initialization
	such that non-native volume monitors can properly adopt their
	mounts away.

2008-02-21  Alexander Larsson  <alexl@redhat.com>

	* gfile.c:
	Fix doc typo
	
2008-02-21  Alexander Larsson  <alexl@redhat.com>

	* gfile.c:
	Add more documentation about how GFiles work (from #517086)

2008-02-21  Alexander Larsson  <alexl@redhat.com>

	* gfile.[ch]:
	* gio.symbols:
	Add new g_file_has_prefix that does the same as g_file_contains_file.
	Deprecate g_file_contains_file and add a macro that converts
	it to g_file_has_prefix.
	The reason for this change is that the contains_file() name seems to
	imply that this does more work than what it does, but its really only
	a name match (from #517086)
	
	* gdummyfile.c:
	* glocalfile.c:
	* tests/g-file.c:
	Update to match the above change.

2008-02-20  Benjamin Otte  <otte@gnome.org>

	* gfile.c: (g_file_mount_mountable), (g_file_unmount_mountable),
	(g_file_eject_mountable):
	even more cases of not returning in error path

2008-02-20  Benjamin Otte  <otte@gnome.org>

	* gfile.c: (g_file_mount_mountable): 
	return from function in error path.

2008-02-18  Sylvain Pasche <sylvain.pasche@gmail.com>

	* gfile.h:
	 Remove trailing coma in GMountMountFlags struct

2008-02-18  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c:
	* glocalfileinfo.c:
	* glocalfileoutputstream.c:
	Use g_unlink/g_rename instead of unlink/rename;
	do not pass raw filenames to g_set_error. (#517239)
	Patch from Yevgen Muntyan.

2008-02-18  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c:
	* glocalfileoutputstream.c:
	Open files with O_BINARY on windows. (#517140)

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

	* glocalfileoutputstream.c:
	Correctly check for HAVE_FCHMOD and HAVE_FCHOWN

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

	* glocalfile.c:
	Copy permissions with file on copy (#514084)
	This is what cp does and makes sure e.g. the
	exec permissions are kept.
	Its kinda weird in that it keeps the permission bits
	the same while the uid and gid are different. However
	the new uid is the user so its not a security issue,
	and I've heard no complaints about cp on this issue.

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

	* gfileinfo.h: add G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT

2008-02-13  Alexander Larsson  <alexl@redhat.com>

	* inotify/inotify-path.c:
	Define IN_ONLYDIR if not in header (#515346)

2008-02-12  Alexander Larsson  <alexl@redhat.com>

	* tests/live-g-file.c:
	C89 fixes (#515892)

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

	* === Released 2.15.5 ===

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

	* gio.symbols: Add g_mount_mount_flags_get_type.

2008-02-11  Alexander Larsson  <alexl@redhat.com>

	* gfileinfo.c:
	(g_file_info_set_attribute_mask):
	(g_file_attribute_matcher_matches_id):
	Correctly handle NULL GAttributeMatcher meaning
	matches nothing. (Fixes #513492)

2008-02-11  Alexander Larsson  <alexl@redhat.com>

	* gfile.[ch]:
	* gmount.[ch]:
	* gvolume.[ch]:
	Added GMountMountFlags enum and added a flags
	argument to all mount calls.
	
	This is an API/ABI change for future extensibility,
	as I think we will need at least an
	inhibit-autorun flag (the panel needs this).
	There are no flags defined yet though.

2008-02-11  Alexander Larsson  <alexl@redhat.com>

	* gfileinfo.h:
	Added new standard::description attribute.
	Requested by Vincent, and useful for both
	panel and nautilus

2008-02-11  Alexander Larsson  <alexl@redhat.com>

	* gdesktopappinfo.c:
	Minor docs cleanup

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

	* *.c: Documentation additions

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

	* gappinfo.h: Formatting cleanup
	* gappinfo.c: Fix up docs.

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

	* gunixmounts.c: Consistently use getmntent_r() and fall
	back to getmntent().  (#515492)

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

	* gbufferedinputstream.c:
	* ginputstream.c:
	* goutputstream.c: Use G_STRFUNC instead of __FUNCTION__.

	* tests/data-input-stream.c:
	* tests/data-output-stream.c: Portability fixes.

2008-02-08  Alexander Larsson  <alexl@redhat.com>

	* gio.symbols: 
	* gunixvolume.c:
	* gvolume.[ch]:
	Add g_volume_should_automount.
	Docs needed.

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

	* tests/Makefile.am (TEST_PROGS): live-g-file won't build on
	Win32, too Unix-specific.

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

	* pltcheck.sh: Skip g_bit_*().  Inline functions may end up with
	a local plt if the compiler doesn't support what we want.  Bug #514702

2008-02-06  Murray Cumming,,,  <murrayc@murrayc.com>

	reviewed by: <delete if not using a buddy>

	* gfile.c:
	* gunixinputstream.c:
	* gunixoutputstream.c:

2008-02-06  Tomas Bzatek  <tbzatek@redhat.com>

	* tests/Makefile.am:
	* tests/live-g-file.c:
	* tests/live-g-file.txt:
	New GIO testing module working over real data

2008-02-06  Tomas Bzatek  <tbzatek@redhat.com>

	* glocalfileoutputstream.c (g_local_file_output_stream_close):
	Fallback to rename() if link() is not available
	(when no support on target filesystem)

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

	* gfileinfo.c (g_file_info_get_icon): replace
	"icon && G_IS_ICON (icon)" by simply "G_IS_ICON (icon)".

2008-02-06  Tomas Bzatek  <tbzatek@redhat.com>

	* gfile.c (g_file_create):
	Documentation update of error codes

2008-02-06  Alexander Larsson  <alexl@redhat.com>

	* gdesktopappinfo.c:
	Update to use both mimeapps.list and
	defaults.list as discussed on xdg list.

2008-02-06  Benjamin Otte  <otte@gnome.org>

	* gasyncresult.c:
	* gfilenamecompleter.c:
	Fix some typos in the documentation.

2008-02-06  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c (g_local_file_trash):
	Don't succeed with trash if newly created
	trash dir has the wrong owner. (#514696)

2008-02-05  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c (g_local_file_move):
	Don't spew warnings when destination is not
	a GLocalFile.

2008-02-03  Hans Breuer  <hans@breuer.org>

	* makefile.msc : update

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

	* gcontenttype.c (_g_unix_content_type_get_parents): assign the
	return value of xdg_mime_list_mime_parents() to a variable of the
	correct type.

2008-02-01  Alexander Larsson  <alexl@redhat.com>

	* gappinfo.c (g_app_info_launch_uris):
	Actually call the launch_uris method, not
	launch.

2008-02-01  Alexander Larsson  <alexl@redhat.com>

	* gdesktopappinfo.c (g_desktop_app_info_equal):
	Ensure appinfos with no id but same pointer value
	compare equal

2008-02-01  Alexander Larsson  <alexl@redhat.com>

	* gappinfo.c (g_app_info_launch_default_for_uri): 
	Don't leak appinfo.
	
2008-02-01  Alexander Larsson  <alexl@redhat.com>

	* gappinfo.[ch]:
	* gio.symbols:
	Add g_app_info_launch_default_for_uri utility
	function. (#513256)

2008-02-01  Cosimo Cecchi  <cosimoc@svn.gnome.org>

	* gdesktopappinfo.c:
	Doc fix for g_app_info_get_default_for_uri_scheme ()
	Bug #513483.

2008-01-30  Alexander Larsson  <alexl@redhat.com>

	* gappinfo.c:
	Add doc comment about uris vs GFiles to
	g_app_info_launch()
	
	* gdesktopappinfo.c:
	Ensure uris passed to g_app_info_launch_uris()
	are not roundtriped through GFile (as that
	may be slightly destructive for e.g. mailto: links)

2008-01-30  Alexander Larsson  <alexl@redhat.com>

	* tests/data-input-stream.c:
	* tests/data-output-stream.c:
	C89 fixes from Jens Granseuer (#512849)

2008-01-30  Alexander Larsson  <alexl@redhat.com>

	* fam/fam-helper.c:
	Fix gamin/fam difference build issue. (#509419)

2008-01-29  Alexander Larsson  <alexl@redhat.com>

	* gappinfo.h:
	* gdesktopappinfo.c:
	Add G_APP_INFO_CREATE_SUPPORTS_URIS flag

2008-01-29  Alexander Larsson  <alexl@redhat.com>

	* gdesktopappinfo.c:
	* gdesktopappinfo.h:
	giomodule-priv.h include moved to .c file.

2008-01-29  Alexander Larsson  <alexl@redhat.com>

	* gnativevolumemonitor.h (struct _GNativeVolumeMonitorClass):
	Remove unused prio/name fields.

2008-01-29  Alexander Larsson  <alexl@redhat.com>

	* gcontenttype.c (looks_like_text):
	Don't treat whitespace as control chars.

2008-01-29  Alexander Larsson  <alexl@redhat.com>

	* gdesktopappinfo.c:
	Lazily create the desktop files for appinfos created
	by g_app_info_create_from_commandline() when needed
	for mime associations. This allows run-time use
	of GAppInfo object without creating unnecessary
	files on disk.

2008-01-29  Alexander Larsson  <alexl@redhat.com>

	* gio.symbols:
	Added new symbols to gio.symbols

2008-01-29  Alexander Larsson  <alexl@redhat.com>

	* gfile.[ch]:
	Add g_file_query_default_handler utility to easily look up
	the GAppInfo that handles a file.
	
	* gdesktopappinfo.[ch]:
	* giomodule.c:
	Set up an extension point for g_app_info_get_default_for_uri_scheme()
	
	* gvfs.c:
	Remove unused function

2008-01-29  Alexander Larsson  <alexl@redhat.com>

	* gfileenumerator.c:
	Mention need to free returned value in
	g_file_enumerator_next_files_finish docs.
	Fix leak if g_file_enumerator_next_files_finish()
	not called.

2008-01-29  Alexander Larsson  <alexl@redhat.com>

	* gcontenttype.c:
	(_g_unix_content_type_get_parents):
	Use list_parents, not get_parents from xdgmime, because
	the later doesn't use the cache.
	
	* xdgmime/xdgmimecache.c:
	(_xdg_mime_cache_list_mime_parents):
	Don't list the same type as parent multiple times.

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

	* === Released 2.15.4 ===

2008-01-28  Alexander Larsson  <alexl@redhat.com>

	* glocalvfs.c:
	Register local vfs with prio 0.
	
	* gvfs.h:
	Remove old name and prio class members

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

	* tests/g-file.c: Disable some tests that are failing in
	the absence of a http backend.

2008-01-28  Alexander Larsson  <alexl@redhat.com>

	* giomodule.[ch]:
	* gio.symbols:
	Add registration hooks for extension points.
	Register the gio extension points.
	
	* fam/gfamdirectorymonitor.c:
	* fam/gfamfilemonitor.c:
	* glocaldirectorymonitor.[ch]:
	* glocalfilemonitor.[ch]:
	* gnativevolumemonitor.h:
	* gunionvolumemonitor.c:
	* gunixvolumemonitor.c:
	* gvfs.[ch]:
	* gvolumemonitor.h:
	* inotify/ginotifydirectorymonitor.c:
	* inotify/ginotifyfilemonitor.c:
	Use the extension points registration instead
	of g_type_children().

2008-01-28  Matthias Clasen  <mclasen@redhat.com>
	
	* gdrive.[hc]: 
	* gvolume.[hc]: Document new API. 

	* gfile.c (g_file_copy_async): Fix docs

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

	* gbufferedinputstream.c:
	* ginputstream.c:
	* goutputstream.c: Replace uses of G_GNUC_PRETTY_FUNCTION by
	__FUNCTION__.
	
2008-01-27  Matthias Clasen  <mclasen@redhat.com>

	* glocalfile.c: Avoid trivial differences in translatable strings.

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

	* fam/fam-helper.c (fam_event_to_file_monitor_event): Make this
	build with gcc 3.4  (#509419)

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

	* gfilemonitor.c: Add references to g_file_monitor_file/directory()
	(#509994, Murray Cumming)

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

	* gioscheduler.h: Make GIOSchedulerJobFunc return boolean
	* gioscheduler.c: Keep calling io jobs until they return FALSE;
	this allows big jobs to be executed in chunks, instead of blocking
	the main loop for a long time.

	* gsimpleasyncresult.c:
	* giofile.c: Adapt callers.

2008-01-25  Alexander Larsson  <alexl@redhat.com>

	* gdesktopappinfo.c:
	Implement changes discussed on xdg list.
	Now we can add supported mimetypes by just using defaults.list
	We can also remove associations in defaults.list.

2008-01-25  Alexander Larsson  <alexl@redhat.com>

	* gdesktopappinfo.c:
	Don't make local copy of desktop file
	for mimetype changes if the file already
	supports the new mimetype.

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

	* ginputstream.c:
	* goutputstream.c:
	* gbufferedinputstream.c:
	* glocalfile.c: String improvements.  (#511966, 
	 Theppitak Karoonboonyanan)

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

	* gioscheduler.h: Expand docs a bit.

2008-01-24  Alexander Larsson  <alexl@redhat.com>

	* gdrive.[ch]:
	Add g_drive_get_identifier and
	g_drive_enumerate_identifiers

	* gvolume.[ch]:
	Add g_volume_get_identifier and
	g_volume_enumerate_identifiers
	
	* gio.symbols:
	Add symbols
	
	* gunixvolume.c:
	Implement identifiers for unix backend

2008-01-24  Alexander Larsson  <alexl@redhat.com>

	* gfile.[ch]:
	* gfile.h:
	* gio.symbols:
	Add g_file_copy_async() (#511580)
	Based on patch from Carlos Garcia Campos

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

	* gioscheduler.c: Some documentation additions.

2008-01-22  Alexander Larsson  <alexl@redhat.com>

	* gdesktopappinfo.c:
	(g_desktop_app_info_new):
	Don't leak basename.
	
2008-01-22  Alexander Larsson  <alexl@redhat.com>

	* gdesktopappinfo.c:
	(g_desktop_app_info_new_from_filename):
	Don't leak GKeyFile

2008-01-22  Alexander Larsson  <alexl@redhat.com>

	* glocalfileinfo.c (get_thumbnail_attributes):
	Fix leak of uri

2008-01-22  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c:
	(canonicalize_filename):
	Canonicalize paths that start with more than
	two slashes.
	
	* tests/g-file.c:
	(compare_two_files):
	(test_g_file_new_for_path):
	Test the above

2008-01-22  Alexander Larsson  <alexl@redhat.com>

	* glocalfile.c:
	Allow UTF-8 in file:// parse names.
	
	* tests/Makefile.am:
	* tests/data-input-stream.c:
	* tests/data-output-stream.c:
	* tests/g-file-info.c:
	* tests/g-file.c:
	Added a bunch of tests from Tomas Bzatek

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

	* === Released 2.15.3 ===

2008-01-21  Alexander Larsson  <alexl@redhat.com>

	* gfileinputstream.[ch]:
	* gfileoutputstream.[ch]:
	* gio.symbols:
	Remove duplicated GSeekable functions. (#509990)
	Just use the g_seekable_xxx() calls instead.

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

	* glocal*.c:
	* gvolumemanager.c: Whitespace cleanups.

	* glocalfileoutputsteam.c (_g_local_file_output_stream_create):
	Use the right mode when creating the file.

2008-01-21  Murray Cumming,,,  <murrayc@murrayc.com>

	* gfileenumerator.c:
	* gfileinputstream.c:
	* ginputstream.c:
	* goutputstream.c: Documentation: Fixed minor typos 
	and added more mentions of specific _finish() functions.

2008-01-21  Alexander Larsson  <alexl@redhat.com>

	* inotify/Makefile.am:
	* inotify/inotify-helper.c:
	* inotify/inotify-kernel.c:
	* inotify/inotify-path.c:
	* inotify/local_inotify.h: Removed.
	* inotify/local_inotify_syscalls.h: Removed.
	Removed the included copies of the inotify
	headers. We now only use the <sys/inotify.h>
	header which exists on modern systems.
	This fixes problems on ARM and SH5 (#510448)
	but is also generally much cleaner and future
	safe. For instance, if other OSes add support
	for inotify it should "just work".

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

	* inotify/*.c: Coding style fixes.
	* inotify/inotify-missing.c: Use g_timeout_add_seconds
	for the 1/4 Hz timer.

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

	* gfile.c:
	* gfilemonitor.[hc]:
	* gmemoryinputstream.c:
	* gmemoryoutputstream.c:
	* gmountoperation.c:
	* gthemedicon.c: Documentation updates

2008-01-20  Murray Cumming  <murrayc@murrayc.com>

	* gfile.c: documentation: Fixed more minor 
	typos.

2008-01-18  Murray Cumming  <murrayc@murrayc.com>

	* gmount.c: (g_mount_remount): documentation: 
	Mention g_mount_remount_finish() instead of 
	g_mount_unmount_finish().

2008-01-18  Murray Cumming  <murrayc@murrayc.com>

	* gappinfo.c:
	* gcancellable.c:
	* gfile.c: Fixed some minor typos in the 
	documentation. 

2008-01-18  Murray Cumming  <murrayc@murrayc.com>

	* gio/gvolumemonitor.c: 
	(g_volume_monitor_get_connected_drives): 
	(g_volume_monitor_get_volumes): 
	(g_volume_monitor_get_mounts): Documentation: 
	Clarify the ownership of the regurn GLists.

2008-01-17  Alexander Larsson  <alexl@redhat.com>

	* gfile.h:
	Add the async find_enclosing_mount version
	to the header file too.

2008-01-17  Alexander Larsson  <alexl@redhat.com>

	* gfile.c:
	Add async version of find_enclosing_mount
	with default implementation.

2008-01-17  Alexander Larsson  <alexl@redhat.com>

	* gfile.c:
	(g_file_copy):
	(g_file_move):
	Allow calls to implementation of copy and write
	even if the type of the file implementations is
	different. This can be used to implement native
	upload and download calls in a vfs.
	
	* glocalfile.c:
	(g_local_file_move):
	Protect against the case where move is called
	with one file not being local.
	
	Make sure we call the progress callback once
	in the native move operation so that the caller
	knows how many bytes were copied.

2008-01-16  Murray Cumming  <murrayc@murrayc.com>

	* gappinfo.c:
	* gdatainputstream.c:
	* gfile.c:
	* gfileoutputstream.c:
	* ginputstream.c:
	* gmount.c:
	* goutputstream.c:
	* gseekable.c:
	* gunixmounts.c: Corrected some typos in the documentation:
	occured -> occurred.
	its -> it's (where appropriate).

2008-01-16  Alexander Larsson  <alexl@redhat.com>

	* gfile.[ch]:
	* gio.symbols:
	Add g_file_query_exists (#508771)

2008-01-15  Murray Cumming  <murrayc@murrayc.com>

	* gdrive.c:
	* gfile.c:
	* gmount.c:
	* gvolume.c: For async functions that have no non-async 
	version, document that the GAsyncReadyCallback may be NULL.
	Bug #509626.

2008-01-15  Alexander Larsson  <alexl@redhat.com>

	* gmemoryinputstream.c:
	* gmemoryoutputstream.c:
	Don't do pointer arithmetic on void * (#508602)
	Patch from Kazuki IWAMOTO

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

	* === Released 2.15.2 ===

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

	* gfile.c (g_file_monitor_file):
	Don't set error here, since we fallback to polling monitor.

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

	* gfile.[ch]:
	(g_file_monitor_directory):
	(g_file_monitor_file):
	Add GError to file monitor calls
	
	* glocaldirectorymonitor.c:
	* glocaldirectorymonitor.h:
	* glocalfile.c:
	* glocalfilemonitor.c:
	* glocalfilemonitor.h:
	* gunixmounts.c:
	Update for above change

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

	* glocalfile.c:
	(match_prefix):
	Handle root correctly in g_file_get_relative_path (#508719)

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

	* gasyncresult.c:
	Clean up docs and example for GAsyncResult (#508074)

2008-01-11  Murray Cumming  <murrayc@murrayc.com>

	* gfile.c: Clarify the sentence about GAsyncReadyCallback, 
	and correct some spelling mistakes. Bug #508108.

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

	* glocalfileinfo.c: Add a comment.

2008-01-10  Murray Cumming  <murrayc@murrayc.com>

	* gfileinfo.c: GFileInfo description: Mention 
	how to actually set attributes in a GFile and how to discover 
	which attributes are settable. Bug #508378.

2008-01-10  A. Walton  <awalton@svn.gnome.org>

	* gdesktopappinfo.c: (g_app_info_get_all_for_type),
	(g_app_info_get_default_for_type):
	Check for NULL content types.

2008-01-10  Frederic Crozat  <fcrozat@mandriva.com>

	* gunixmounts.c: add rpc_pipefs to systemfs list (#508309).

2008-01-09  Murray Cumming  <murrayc@murrayc.com>

	* gfile.c: *_async() functions: Several small corrections 
	to the documentation, mostly correcting copy/paste errors 
	and improving some sentences.

2008-01-09  Dan Winship  <danw@gnome.org>

	* glocalfile.c (get_unique_filename): x86_64 fix

2008-01-09  Alexander Larsson  <alexl@redhat.com>

	* gio.symbols:
	* gunixmount.c:
	* gunixmounts.[ch]:
	Add g_unix_mount_guess_should_display and use
	for unix volume monitor backend.
	This means we more or less show what the
	gnome-vfs backend did.
	Based on patch from Padraig O'Briain

2008-01-09  Alexander Larsson  <alexl@redhat.com>

	* gio.symbols:
	* gthemedicon.[ch]:
	Add g_themed_icon_new_with_default_fallbacks
	
	* gunixmounts.c:
	Use default fallbacks for icons

2008-01-09  Alexander Larsson  <alexl@redhat.com>

	* gio-marshal.list:
	* gmountoperation.[ch]:
	Change the API a bit so that unhandled methods
	get reported via the reply, rather than by
	the signal emission return value. This is because
	some handlers can't know this immediately without
	doing I/O, and this is an async operation that
	should not block.

2008-01-09  Alexander Larsson  <alexl@redhat.com>

	* fam/fam-helper.c:
	* fam/gfamdirectorymonitor.c:
	* fam/gfamfilemonitor.c:
	Fix double free crash (#508224)
	Patch from Joe Marcus Clarke

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

	* === Released 2.15.1 ===

2008-01-07  Alexander Larsson  <alexl@redhat.com>

	* gunixinputstream.c (g_unix_input_stream_skip_finish):
	Fix warning (#507835)

2008-01-07  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am:
	Pass --internal to glib-genmarshal
	
	* gfilemonitor.c:
	* gmountoperation.c:
	* gio-marshal.list:
	Use better types for signal arguments (#507822)

2008-01-07  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am:
	Build test subdir after .
	Remove gdirectorymonitor.[ch]
	
	* gdirectorymonitor.[ch]:
	* gfilemonitor.c:
	* gfile.[ch]:
	* gio.h:
	Remove GDirectoryMonitor and make
	GFileMonitor the baseclass for both file and
	directory monitors. Lift the more generic
	rate limiting code from GDirectoryMonitor
	into GFileMonitor.
	
	* fam/fam-helper.c:
	* fam/gfamdirectorymonitor.[ch]:
	* inotify/ginotifydirectorymonitor.[ch]:
	* inotify/inotify-helper.c:
	* glocaldirectorymonitor.[ch]:
	* glocalfile.c:
	* gvolumemonitor.c:
	Update for the removed GDirectoryMonitor.
	
	* gmemoryoutputstream.c:
	Remove ununsed variable

2008-01-07  Alexander Larsson  <alexl@redhat.com>

	* gmemoryinputstream.c:
	Translate error strings
	
	* gio.symbols:
	* gmemoryoutputstream.[ch]:
	New implementation that avoids using GByteArray
	in implementation and API. (#506377)

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

	* tests/*: Add a test for memory input streams.
	
	* Makefile.am: Add tests to SUBDIRS.

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

	* glocalfilemonitor.c:
	* glocaldirectorymonitor.c: Mark property nicks and blurbs
	for translation.

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

	* gdesktopappinfo.c: Fix a docs typo.

	* gfileattribute.c: Add information about extended attributes
	to the documentation.  (#505058)

2008-01-04  Alexander Larsson  <alexl@redhat.com>

	* gio-marshal.list:
	* gmountoperation.c:
	Use the right type (uint) for the ask_password signal.

2008-01-04  Alexander Larsson  <alexl@redhat.com>

	* gappinfo.[ch]:
	* gwin32appinfo.c:
	* gio.symbols:
	Add g_app_info_supports_files() 
	Remove desktop arg from g_app_info_should_show().
	
	* gdesktopappinfo.[ch]:
	Implement g_app_info_supports_files() and new should_show()
	Add g_desktop_app_info_set_desktop_env() to set the desktop
	for should_show(). (This will be set by gtk+ later)

2008-01-04  Alexander Larsson  <alexl@redhat.com>

	* gio.symbols:
	* gmemoryinputstream.[ch]:
	Improve API so that you can use multiple chunks
	of memory and custom destroy functions. (#506374)

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

	* gfileinfo.c:
	Handle NULL attribute matchers safely, as we return this
	for empty attribute matcher strings.

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

	* gunixmounts.c (g_unix_is_mount_path_system_internal):
	Add /usr/local to list of internal mountpoints

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

	* glocalfileinfo.c:
	Check for HAVE_LCHOWN (#505887)
	
2008-01-03  Alexander Larsson  <alexl@redhat.com>

	* gfileinfo.h:
	* glocalfileinfo.c:
	Add define for selinux context attribute.
	Fix missing : -> :: namespace separator change
	Fix missing _ -> - name change for xattr-sys.
	(#505058)

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

	* fam/Makefile.am:
	Link to libglib and libgobject directly (#504879)
	Patch from Sebastien Bacher

2008-01-01  Wouter Bolsterlee  <wbolster@svn.gnome.org>

	* gfile.c: Expanded the g_file_new_for_commandline_arg
	description a bit, based on the code and the docs of the
	other g_file_new_for_* functions.

2007-12-31  Wouter Bolsterlee  <wbolster@svn.gnome.org>

	* gfilemonitor.h: Fixed typo in docs.

2007-12-31  Mathias Hasselmann  <mathias@openismus.com>

	Updates to GIO documentation. (#506395, Mikael Hermansson)

	* gcontenttype.c: Describe memory management for return value of
	g_content_types_get_registered(). Missing piece from #505815.
	* gdrive.c, gmount.c, gvolumemonitor.c: Add more description to
	GVolume, GDrive, GMounts, which hopefully gives the user less
	confusions when using this API. Following explainations from
	Alexander Larsson on gtk-devel-list.

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

	* gfileinfo.c: Expand the long description.

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

	* fam/Makefile.am:
	* inotify/Makefile.am: Use GLIB_DEBUG_FLAGS. This should
	fix builds with --disable-visibility.  (#500273, Christian Persch)

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

	* gdesktopfileinfo.c (g_app_info_get_all): Don't include NULLs
	in the list of returned app infos.

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

	* gappinfo.c: Fix a cross-reference

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

	* gfileinputstream.c:
	* gfileoutputstream.c:
	* gloadableicon.h:
	* gunixmounts.c:
	* gmount.h:
	* gdesktopappinfo.c:
	* gvolumemonitor.c: 
	* gfileinfo.c: Documentation updates.

2007-12-26  Matthias Clasen  <mclasen@redhat.com> 

	* gdesktopappinfo.c: Include crt_externs.h.  (#505730,
	Tommi Komulainen)

2007-12-26  Matthias Clasen  <mclasen@redhat.com> 

	* gcontenttype.c (g_content_types_get_registered): Don't return
	freed memory (#505815, Mikael Hermansson)

2007-12-25  Paolo Borelli  <pborelli@katamail.com>

	* glocalfileinfo.c (set_info_from_stat): fix typo in the ifdef
	used to detect statbuf->st_blocks. (#505042)

2007-12-24  Matthias Clasen  <mclasen@redhat.com>

	* gdesktopappinfo.c (g_desktop_app_info_launch): Fix the
	environment handling.  (#504829, Cosimo Cecchi)

2007-12-22  Matthias Clasen  <mclasen@redhat.com>

	* gappinfo.c: Doc improvements
	
	* gdesktopappinfo.c (g_app_info_get_all): Return app infos,
	not ids.

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

	* === Released 2.15.0 ===

2007-12-20  Hans Breuer  <hans@breuer.org>

	* makefile.msc : don't build gdesktopappinfo.obj, it collides 
	with symbols gwin32appinfo.obj, added gmount.obj
	* gio.symbols : mark g_desktop_app_* as G_OS_UNIX

2007-12-20  Alexander Larsson  <alexl@redhat.com>

	* gfile.c:
	* gfileattribute.c:
	* gfileinfo.c:
	* gfileinfo.h:
	* gfilenamecompleter.c:
	* glocalfile.c:
	* glocalfileinfo.c:
	* gpollfilemonitor.c:
	File attribute renames:
	std:: -> standard::
	fs:: -> filesystem::
	id::fs -> id::filesystem
	
2007-12-20  Alexander Larsson  <alexl@redhat.com>

	* gfile.[ch]:
	* gdrive.[ch]:
	* gmount.[ch]:
	* gvolume.[ch]:
	* gunixmount.c:
	* gunixvolume.c:
	* gio.symbols:
	Add GMountUnmountFlags to all unmount and
	eject calls.
	Add g_mount_remount() call.

2007-12-20  Alexander Larsson  <alexl@redhat.com>

	* gvfs.c (get_default_vfs):
	Fix unused variable warning

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

	* pltcheck.sh: Update

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

	* gunionvolumemonitor.c:
	* gunixmount.c: Remove C99 comments

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

	* gio.symbols: Add some missing symbols

2007-12-19  Alexander Larsson  <alexl@redhat.com>

	* giomodule.c:
	Make g_io_modules_load_all_in_directory not unuse
	loaded modules so that users of it can do stuff
	before unloading.
	Init internal "module" types.
	Initialize static prio and name for types so that
	we don't have to load modules to get it.
	
	* gnativevolumemonitor.h:
	* gvolumemonitor.h:
	Move is_supported to parent class so that
	non-native monitors can avoid being initialized
	too. (For instance GDaemonVolumeMonitor if we're
	not using GDaemonVfs.)
	
	* glocaldirectorymonitor.[ch]:
	* glocalfilemonitor.[ch]:
	* gunionvolumemonitor.c:
	* gunixvolumemonitor.c:
	* gvfs.c:
	Find plugins using the static prio+name to
	avoid unnecessarily loading the modules.

2007-12-19  Alexander Larsson  <alexl@redhat.com>

	* giomodule.c:
	Remove warnings

2007-12-19  Alexander Larsson  <alexl@redhat.com>

	* gunionvolumemonitor.c:
	Store the native type as GType, not class so that
	we can unload it. But still avoid unnecessarily
	unload modules.

2007-12-19  David Zeuthen  <davidz@redhat.com>

	Introduce g_volume_monitor_adopt_orphan_mount() function. Also
	add signals 'disconnected' and 'eject-button' on GDrive. Add
	signal 'removed' on GVolume and 'unmounted' on GMount.

	* gdrive.c: (g_drive_base_init):
	* gdrive.h:
	* gfile.c: (g_file_mount_mountable),
	(g_file_mount_enclosing_volume):
	* gio.symbols:
	* gioerror.h:
	* gmount.c: (g_mount_base_init):
	* gmount.h:
	* gunionvolumemonitor.c: (g_volume_monitor_adopt_orphan_mount):
	* gunixvolumemonitor.c: (update_volumes), (update_mounts):
	* gvolume.c: (g_volume_base_init), (g_volume_mount):
	* gvolume.h:
	* gvolumemonitor.h:

2007-12-17  Matthias Clasen  <mclasen@redhat.com>

	* *.c: Fix up includes in the section docs.

2007-12-17  Alexander Larsson  <alexl@redhat.com>

	* gnativevolumemonitor.h:
	* gunionvolumemonitor.c:
	* gunixvolumemonitor.c:
	Add is_supported() to GNativeVolumeMonitorClass so
	that we can avoid having to create an object to see
	if the backend is supported at runtime.
	Also add name member and an env var to pick a specific
	volume monitor backend.
	
	* gmountprivate.h:
	* glocalfile.c:
	Add cancellable to _g_mount_get_for_mount_path()
	
	* glocaldirectorymonitor.c:
	* glocalfilemonitor.c:
	Avoid loading and unloading modules while sorting.

2007-12-17  Matthias Clasen  <mclasen@redhat.com>

	* gio.symbols:
	* gunixmounts.[hc]: Namespace waste reduction, move some
	g_get_unix_mount functions to the g_unix_mount namespace.

	* gunixmounts.c:
	* gunixvolumemonitor.c:
	* glocalfile.c:
	* glocaldirectorymonitor.c: Update all callers.

	* gunixmounts.h: Remove leftover g_unix_get_canonical_device_path

2007-12-17  Alexander Larsson  <alexl@redhat.com>

	* gfile.c:
	Add doc comments about what GFile operations are
	guaranteed to not block.

2007-12-17  Alexander Larsson  <alexl@redhat.com>

	* gunixmounts.c:
	Add missing #ifdef fixing OSX build.
	(#503334, patch from Richard Hult)

2007-12-14  David Zeuthen  <davidz@redhat.com>

	* Makefile.am:
	* gio.symbols:
	* gmount.c: (g_mount_get_uuid), (g_mount_can_eject),
	(g_mount_eject), (g_mount_eject_finish):
	* gmount.h:
	* gunionvolumemonitor.c: (g_union_volume_monitor_finalize),
	(get_volume_for_uuid), (get_mount_for_uuid),
	(g_union_volume_monitor_class_init),
	(get_default_native_type_with_exclude), (get_default_native_type),
	(get_native_type), (update_native_type),
	(g_union_volume_monitor_init), (_g_mount_get_for_mount_path):
	* gunixmount.c: (_g_unix_mount_new), (g_unix_mount_get_uuid),
	(g_unix_mount_can_eject), (eject_unmount_cb),
	(eject_unmount_read_error), (eject_unmount_do),
	(g_unix_mount_unmount), (g_unix_mount_eject),
	(g_unix_mount_eject_finish), (g_unix_mount_mount_iface_init):
	* gunixmounts.c: (g_unix_mount_guess_can_eject),
	(g_unix_mount_point_guess_can_eject):
	* gunixmounts.h:
	* gunixvolume.c: (_g_unix_volume_new), (g_unix_volume_get_uuid),
	(g_unix_volume_can_eject), (g_unix_volume_get_drive),
	(eject_mount_cb), (eject_mount_read_error), (eject_mount_do),
	(g_unix_volume_mount), (g_unix_volume_eject),
	(g_unix_volume_eject_finish), (g_unix_volume_volume_iface_init):
	* gunixvolumemonitor.c: (get_volume_for_uuid),
	(get_mount_for_uuid), (g_unix_volume_monitor_class_init),
	(update_mounts):
	* gvolume.c: (g_volume_get_uuid), (g_volume_can_eject),
	(g_volume_eject), (g_volume_eject_finish):
	* gvolume.h:
	* gvolumemonitor.c: (g_volume_monitor_get_volume_for_uuid),
	(g_volume_monitor_get_mount_for_uuid):
	* gvolumemonitor.h:

	Provide eject() on both GMount and GVolume and utility functions
	to guess whether a GUnixMountPoint or GUnixMountEntry should be
	ejected. Introduce the concept of UUID's and wire it into GVolume
	and GMount and provide API on GVolumeMonitor to find such
	instances. Also handle the case where an external
	GNativeVolumeMonitor fails to initialize. Lock around the
	_g_get_mount_for_mount_path() function such that volume monitor
	implementations won't have to do locking themselves.

2007-12-17  Matthias Clasen  <mclasen@redhat.com>

	* gdesktopappinfo.c:
	* gunixmounts.c:
	* gfileinfo.c:
	* gvolumemonitor.c:
	* gfile.h:
	* gioscheduler.c:
	* gvolume.h: Documentation updates

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

	* gunixmounts.c:
	* gfile.h: Doc updates

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

	* gcontenttype.c:
	* gdesktopappinfo.c: Use hash table iterators.

2007-12-14  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am:
	* gfileattribute.[ch]:
	* gfileattribute-priv.h:
	Move GFileAttributeValue to a private header, as
	its sort of ugly.
	
	* gfile.[ch]:
	Make set_attribute take a type + a pointer instead
	of a GFileAttributeValue.
	
	* gfileinfo.[ch]:
	Fix up for above changes.
	Add g_file_info_get_attribute_data to get
	all info in one call, g_file_info_get_attribute_status
	to get the status and g_file_info_get_attribute_as_string.
	
	* gio.symbols:
	* glocalfile.c:
	* glocalfileinfo.[ch]:
	Update for changes
	
	* gunixmounts.c:
	Make _guess_type static.

2007-12-14  Yevgen Muntyan  <muntyan@tamu.edu>

	* Makefile.am:
	* inotify/Makefile.am: Fixed build when srcdir != builddir,
	made mkenums and friends use temporary files to avoid leaving
	empty generated files on failure (#503470).

2007-12-14  Alexander Larsson  <alexl@redhat.com>

	* gmountoperation.h:
	Fix AKS -> ASK typo

2007-12-14  Alexander Larsson  <alexl@redhat.com>

	* gappinfo.h:
	* gfile.[ch]:
	* gfileattribute.[ch]:
	* gio.symbols:
	* glocalfile.c:
	* glocalfileoutputstream.c:
	* gmountoperation.[ch]:
	* goutputstream.[ch]:
	Clean up all flags enums to not have _FLAGS in them
	Make the names of some of the enums better.

	* glocalfileinfo.c:
	Fix warning
	
2007-12-14  Michael Natterer  <mitch@imendio.com>

	* gio.symbols: fix g_io_scheduler symbol names.

2007-12-14  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am:
	* fam/Makefile.am:
	* gappinfo.h:
	* gasyncresult.h:
	* gbufferedinputstream.h:
	* gbufferedoutputstream.h:
	* gcancellable.h:
	* gcontenttype.h:
	* gdatainputstream.h:
	* gdataoutputstream.h:
	* gdesktopappinfo.h:
	* gdirectorymonitor.h:
	* gdrive.h:
	* gfile.h:
	* gfileattribute.h:
	* gfileenumerator.h:
	* gfileicon.h:
	* gfileinfo.h:
	* gfileinputstream.h:
	* gfilemonitor.h:
	* gfilenamecompleter.h:
	* gfileoutputstream.h:
	* gfilterinputstream.h:
	* gfilteroutputstream.h:
	* gicon.h:
	* ginputstream.h:
	* gio.h:
	* gioerror.h:
	* giomodule.h:
	* gioscheduler.h:
	* gloadableicon.h:
	* gmemoryinputstream.h:
	* gmemoryoutputstream.h:
	* gmount.h:
	* gmountoperation.h:
	* goutputstream.h:
	* gseekable.h:
	* gsimpleasyncresult.h:
	* gthemedicon.h:
	* gunixinputstream.h:
	* gunixmounts.h:
	* gunixoutputstream.h:
	* gvfs.h:
	* gvolume.h:
	* gvolumemonitor.h:
	* inotify/Makefile.am:
	Only allow including <gio/gio.h> from apps

2007-12-14  Alexander Larsson  <alexl@redhat.com>

	* gioscheduler.[ch]:
	* gsimpleasyncresult.c:
	Rename gioscheduler calls so they all use the g_io_schedule_ prefix.
	Split out the send_to_mainloop call into two versions instead
	of having the block argument.

2007-12-13  Alexander Larsson  <alexl@redhat.com>

	* gcancellable.[ch]:
	* gio.symbols:
	* gbufferedinputstream.c:
	* gfileenumerator.c:
	* gfileinputstream.c:
	* gfileoutputstream.c:
	* ginputstream.c:
	* gioscheduler.c:
	* goutputstream.c:
	g_push/pop_current_cancellable ->
	g_cancellable_push/pop_current

2007-12-13  Alexander Larsson  <alexl@redhat.com>

	* gfile.[ch]:
	* gio.symbols:
	Rename g_mount_for_location to g_file_mount_enclosing_volume.

2007-12-13  Alexander Larsson  <alexl@redhat.com>

	* gmountoperation.h:
	G_PASSWORD_FLAGS_ANON_SUPPORTED -> G_PASSWORD_FLAGS_ANONYMOUS_SUPPORTED

2007-12-12  Alexander Larsson  <alexl@redhat.com>

	* gioscheduler.c:
	Fix race condition when freeing proxy in
	g_io_job_send_to_mainloop().

2007-12-12  Alexander Larsson  <alexl@redhat.com>

	* gfileattribute.c:
	* gfileinfo.[ch]:
	* glocalfile.c:
	* glocalfileinfo.c:
	Make attribute namespace separator "::" instead of ":".
	Use - instead of _ as separator in attribute names.

2007-12-12  Alexander Larsson  <alexl@redhat.com>

	* gbufferedinputstream.h:
	* gbufferedoutputstream.h:
	* gdatainputstream.h:
	* gdataoutputstream.h:
	* gdirectorymonitor.h:
	* gfileenumerator.h:
	* gfileinputstream.h:
	* gfilemonitor.h:
	* gfileoutputstream.h:
	* gfilterinputstream.h:
	* gfilteroutputstream.h:
	* ginputstream.h:
	* glocalfileinputstream.h:
	* glocalfileoutputstream.h:
	* gmemoryinputstream.h:
	* gmemoryoutputstream.h:
	* gnativevolumemonitor.h:
	* goutputstream.h:
	* gunixinputstream.h:
	* gunixoutputstream.h:
	* gvfs.h:
	* gvolumemonitor.h:
	s/parent/parent_instance/ in GObjects

2007-12-12  Alexander Larsson  <alexl@redhat.com>

	* gdrive.h:
	* gmount.h:
	* gvolume.h:
	No need for padding for interfaces
	
2007-12-12  Alexander Larsson  <alexl@redhat.com>

	* gappinfo.[ch]:
	* gasyncresult.c:
	* gbufferedinputstream.c:
	* gbufferedoutputstream.c:
	* gcancellable.c:
	* gcontenttype.c:
	* gdatainputstream.[ch]:
	* gdesktopappinfo.c:
	* gdirectorymonitor.c:
	* gfile.[ch]:
	* gfileattribute.[ch]:
	* gfileicon.[ch]:
	* gfileinfo.h:
	* gfileinputstream.h:
	* gfilemonitor.[ch]:
	* gfileoutputstream.[ch]:
	* gfilterinputstream.h:
	* gfilteroutputstream.h:
	* gicon.h:
	* gioscheduler.c:
	* gloadableicon.[ch]:
	* gmemoryinputstream.c:
	* gmountoperation.c:
	* gthemedicon.c:
	Fix up a bunch of details in the docs.

	* glocalfileinfo.c:
	CR/LF -> LF fixups
	
2007-12-11  David Zeuthen  <davidz@redhat.com>

	Rework how volumes, drives and volume monitoring is
	done. Previosly the model was

	 GDrive <1-1> GVolume

	where a GDrive instance represented a mount point and a GVolume
	instance represented a mounted file system. This patch changes it
	the model to

		GDrive <1-N> GVolume <1-1> GMount

	where GMount now serves the purpose of the old GVolume and the new
	GVolume serves the purpose of the old GDrive. In addition the new
	GDrive interface is used to represent a collection of GVolume
	instances (typically partitions) and also contains utility to query
	the state of the physical drive the GDrive object represents (such
	as checking for media, polling the drive, ejecting the media etc.).

	Also implement mounting and unmounting in the Unix volume monitor
	backend. A subquent patch will introduce GDrive support for ejection
	of media.

	* Makefile.am:
	* gdrive.c: (g_drive_is_media_check_automatic),
	(g_drive_is_media_removable), (g_drive_has_media),
	(g_drive_can_poll_for_media), (g_drive_eject),
	(g_drive_eject_finish), (g_drive_poll_for_media),
	(g_drive_poll_for_media_finish):
	* gdrive.h:
	* gfile.c: (g_file_find_enclosing_mount):
	* gfile.h:
	* gio.symbols:
	* glocaldirectorymonitor.c:
	(g_local_directory_monitor_constructor), (mounts_changed):
	* glocalfile.c: (get_mount_info),
	(g_local_file_find_enclosing_mount),
	(g_local_file_file_iface_init):
	* gnativevolumemonitor.h:
	* gunionvolumemonitor.c: (get_mounts), (get_volumes),
	(get_connected_drives), (g_union_volume_monitor_class_init),
	(child_volume_added), (child_volume_removed),
	(child_volume_changed), (child_mount_added), (child_mount_removed),
	(child_mount_pre_unmount), (child_mount_changed),
	(child_drive_changed), (g_union_volume_monitor_add_monitor),
	(g_union_volume_monitor_remove_monitor),
	(_g_mount_get_for_mount_path):
	* gunixmounts.c: (g_unix_is_mount_path_system_internal),
	(guess_system_internal), (_g_get_unix_mounts),
	(_g_get_unix_mount_points), (g_get_unix_mount_at),
	(g_unix_mount_free), (g_unix_mount_compare),
	(g_unix_mount_get_mount_path), (g_unix_mount_get_device_path),
	(g_unix_mount_get_fs_type), (g_unix_mount_is_readonly),
	(g_unix_mount_is_system_internal), (g_unix_mount_guess_type),
	(type_to_icon), (g_unix_mount_guess_name),
	(g_unix_mount_guess_icon), (g_unix_mount_point_guess_name),
	(g_unix_mount_point_guess_icon), (_canonicalize_filename),
	(_resolve_symlink), (_resolve_dev_root):
	* gunixmounts.h:
	* gunixvolume.c: (g_unix_volume_finalize), (_g_unix_volume_new),
	(_g_unix_volume_disconnected), (_g_unix_volume_set_mount),
	(_g_unix_volume_unset_mount), (g_unix_volume_get_icon),
	(g_unix_volume_get_name), (g_unix_volume_can_mount),
	(g_unix_volume_get_drive), (g_unix_volume_get_mount),
	(_g_unix_volume_has_mount_path), (mount_cb), (mount_read_error),
	(g_unix_volume_mount), (g_unix_volume_mount_finish),
	(g_unix_volume_volume_iface_init):
	* gunixvolume.h:
	* gunixvolumemonitor.c: (g_unix_volume_monitor_finalize),
	(get_mounts), (get_volumes), (get_connected_drives),
	(get_mount_for_mount_path), (g_unix_volume_monitor_class_init),
	(mountpoints_changed), (mounts_changed),
	(g_unix_volume_monitor_init),
	(_g_unix_volume_monitor_lookup_volume_for_mount_path),
	(find_mount_by_mountpath), (update_volumes), (update_mounts):
	* gunixvolumemonitor.h:
	* gvolume.c: (g_volume_get_mount), (g_volume_can_mount),
	(g_volume_mount), (g_volume_mount_finish):
	* gvolume.h:
	* gvolumemonitor.c: (g_volume_monitor_class_init),
	(g_volume_monitor_get_connected_drives),
	(g_volume_monitor_get_volumes), (g_volume_monitor_get_mounts):
	* gvolumemonitor.h:

2007-12-10  Matthias Clasen  <mclasen@redhat.com>

	* gmountoperation.h (GPasswordFlags): Close the gap

2007-12-10  Matthias Clasen  <mclasen@redhat.com>

	* Makefile.am: Install gdesktopappinfo.h as unix-specific header.
	* gio.symbols:
	* gdesktopappinfo.[hc]: Remove _-prefixes

2007-12-10  Tor Lillqvist  <tml@novell.com>

	* glocalfile.c: Add some more G_OS_WIN32 conditionals to silence
	gcc warnings.

2007-12-10  Alexander Larsson  <alexl@redhat.com>

	* gfile.c (g_file_set_display_name):
	Don't hardcode '/' (#502727)

2007-12-09  Hans Breuer  <hans@breuer.org>

	* makefile.msc : follow lib naming convention
	* glocalfileinfo.c(win32_get_file_user_info) : working implementation
	for user and group name, tested with ../tests/gio-ls

2007-12-09  A. Walton  <awalton@svn.gnome.org>

	* gdesktopappinfo.c:
	* gdrive.c:
	* gdrive.h:
	* gfile.c:
	* gfile.h:
	* gfileattribute.c:
	* gfileenumerator.c:
	* gioerror.c:
	* gioscheduler.c:
	* gioscheduler.h:
	* gloadableicon.c:
	* gmemoryinputstream.c:
	* gmemoryoutputstream.c:
	* goutputstream.h:
	* gsimpleasyncresult.c:
	More documentation cleanup and filling in missing information, bringing
	GIO to 99% symbol coverage.

2007-12-08  Hans Breuer  <hans@breuer.org>

	[gio compiles and links on win32, not sure how much already works]
	* glocaldirectorymonitor.c : ifdefed out inotify emulation for win32
	* glocalfile.c : use HAVE_UNISTD_H; implement file system size info 
	base on win32 API; prefer g_lstat() over lstat(); instead of 
	localtime_r() use an all GLib implementation on win32;
	get_mount_info() still needs a win32 specifc implementation
	* glocalfileinfo.c : use HAVE_*_H; start of implementation of 
	win32_get_file_user_info to get owner/group info without uid/gid
	* glocalfileinputstream.c : include <io.h> on win32
	* glocalfileoutputstream.c : include <io.h> on win32 and some S_IS*
	definition, use g_win32_ftruncate() for G_OS_WIN32
	* gwin32appinfo.c : optionalize a bunch on #ifdef AssocQueryString
	it is available with mingw/w32api but a mess with the M$ Platform SDKs
	see: http://mail.gnome.org/archives/gtk-devel-list/2007-December/msg00014.html
	* makefile.msc : updated

2007-12-07  Alexander Larsson  <alexl@redhat.com>

	* glocalfileenumerator.c (_g_local_file_enumerator_new):
	Avoid warning spew if error == NULL
	
2007-12-07  Alexander Larsson  <alexl@redhat.com>

	* gfile.c:
	Update docs wrt etags

2007-12-06  Alexander Larsson  <alexl@redhat.com>

	* glocalfileinfo.h:
	Include sys/types.h for dev_t (#501919)

2007-12-06  Behdad Esfahbod  <behdad@gnome.org>

	* gio.symbols:
	* pltcheck.sh:
	Make abicheck and pltcheck pass.

2007-12-05  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am:
	* giomodule-priv.h: Added.
	* glocaldirectorymonitor.c:
	* glocalfilemonitor.c:
	* gunionvolumemonitor.c:
	* gvfs.c:
	Actually add the declaration of _g_io_modules_ensure_loaded

2007-12-05  Alexander Larsson  <alexl@redhat.com>

	* gdatainputstream.c:
	Fix warnings
	
	* gio.symbols:
	* giomodule.[ch]
	* glocaldirectorymonitor.c:
	* glocalfilemonitor.c:
	* gunionvolumemonitor.c:
	* gvfs.c:
	Make g_io_modules_ensure_loaded a private function and
	don't pass in the dirname. This means we can do magic
	directory finding in the win32 version.
	Export the actual load-modules-in-directory code so that
	gvfs can reuse that.

2007-12-05  Alexander Larsson  <alexl@redhat.com>

	* gbufferedinputstream.c:
	* gbufferedoutputstream.c:
	* gdrive.[ch]:
	* gfile.[ch]:
	* gfileenumerator.[ch]:
	* gfileinputstream.c:
	* gfileoutputstream.[ch]:
	* gfilterinputstream.c:
	* gfilteroutputstream.c:
	* ginputstream.[ch]:
	* glocalfile.c:
	* glocalfileenumerator.c:
	* glocalfileinputstream.c:
	* glocalfileoutputstream.c:
	* gmemoryinputstream.c:
	* gmemoryoutputstream.c:
	* goutputstream.[ch]:
	* gseekable.[ch]:
	* gunixdrive.c:
	* gunixinputstream.c:
	* gunixoutputstream.c:
	Rename all struct members named:
	read, write, close, truncate, or mount
	to foo_fn, as these are reserved names
	and could be defined as macros in libc.
	(#501645)

2007-12-04  Alexander Larsson  <alexl@redhat.com>

	* goutputstream.c:
	(g_output_stream_close):
	Only call flush if non-null.

2007-11-30  Dan Winship  <danw@gnome.org>

	* ginputstream.c (g_input_stream_set_pending): Make this take a
	GError and return a gboolean, and do the "outstanding operation"
	check (and the "stream is already closed" check) itself.
	(g_input_stream_clear_pending): Formerly set_pending(FALSE).

	* goutputstream.c (g_output_stream_set_pending)
	(g_output_stream_clear_pending): Likewise

	* gbufferedinputstream.c: 
	* gfileinputstream.c: 
	* gfileoutputstream.c: Update for that

	* gsimpleasyncresult.c (g_simple_async_report_gerror_in_idle):
	Like g_simple_async_report_error_in_idle, but takes a GError
	rather than building one.

2007-11-30  Dan Winship  <danw@gnome.org>

	* goutputstream.c: Don't cheat and unset the "pending" flag around
	inner calls. Instead, call the class method directly rather than
	the wrapper function that checks "pending"

2007-12-03  Behdad Esfahbod  <behdad@gnome.org>

	* glib/gnulib/Makefile.am: Fix EXTRA_DIST automake warnings. (#501107)

2007-12-03  Hans Breuer  <hans@breuer.org>

	[start of port to win32/msvc]
	* gcancellable.c : HAVE_UNIST_H and _pipe()
	* gcontenttype.c : only include <dirent.h> in the UNIX branch
	* gdatainputstream.c : pointer arithmetic on void* is a gcc extension
	* gdummyfile.c glocalfileinputstream.c gsimpleasyncresult.c : use 
	HAVE_UNIST_H
	* glocalfileoutputstream.c : use HAVE_UNIST_H and s/ssize_t/gssize/
	* glocalvfs.c : use HAVE_PWD_H
	* gio.symbols : ifdef unix specific functions with G_OS_UNIX
	* makefile.msc : new file (maybe later converted to makefile.msc.in)
	* Makefile.am : added to EXTRA_DIST

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

	* gfile.c (g_file_copy): Add a cross-reference to g_file_dup().
	(#499783)

2007-12-03  Alexander Larsson  <alexl@redhat.com>

	* glocalfileinfo.c:
	Handle OSX style xattrs API (#500506)

2007-12-03  Alexander Larsson  <alexl@redhat.com>

	* gfile.[ch]:
	* glocalfile.c:
	Add G_FILE_COPY_NO_FALLBACK_FOR_MOVE flag

2007-12-02  A. Walton  <awalton@svn.gnome.org>

	* gfile.c:
	* gfileattribute.c:
	Documentation accuracy fixes.

2007-12-01  Behdad Esfahbod  <behdad@gnome.org>

	* gioenumtypes.c.template: Fix typo.

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

	* gioenumtypes.c.template: Make threadsafe get_type() functions.

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

	* gdirectorymonitor.c:
	* gfilemonitor.c: Add properties

	* gbufferedoutputstream.c: Don't mark buffer-size property 
	as construct-only.

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

	* gbufferedoutputstream.c: Add auto-grow property.

2007-11-30  Matthias Clasen <mclasen@redhat.com>

	* *.c: Unify the capitalization of section headings.

2007-11-30  Matthias Clasen <mclasen@redhat.com>

	* gmountoperation.c: Add properties
	
	* gdatainputstream.c: Turn byte-order and newline-type into
	properties.

2007-11-30  Matthias Clasen <mclasen@redhat.com>

	* gioenumtypes.[hc].template: Templates for enum registration

	* Makefile.am: Generate gioenumtypes.[hc]

	* gio.h: Include gioenumtypes.h
	* gappinfo.h:
	* gfile.h: Add some explicit nicks.

	* gio.symbols: Add new symbols

	* pltcheck.sh: Adjust

2007-11-30  Matthias Clasen <mclasen@redhat.com>

	* *.c: Explain etags and link to the explanation

2007-11-29  Matthias Clasen <mclasen@redhat.com>

	* *.c: Explain I/O priority.

	* *.c: More coding style fixes.

2007-11-29  Matthias Clasen <mclasen@redhat.com>

	* gasyncresult.c: Add another paragraph to the intro,
	adjust coding style of example.

2007-11-29  A. Walton <awalton@svn.gnome.org>

	* gappinfo.c:
	  Fixes unknown meaning in GAppLaunchContext docs.
	* gfile.c:
	  Clarify asynchronous ops.
	* gfileattribute.c:
	  Fix entity tag docs.
	* gicon.c:
	* gthemedicon.c:
	  Provides missing gtk-doc section, fixes API docs slighly.
	* gsimpleasyncresult.c:
	  Fill in missing info in docs.
	* gunixinputstream.c:
	* gunixoutputstream.c:
	  Be more expressive in short description.
	* gunixvolume.c:
	  Remove gtk-doc stubs for non-public API.

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

	* *.c: Coding style fixups

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

	* inotify/inotify-helper.c: Don't export the lock from libgio.

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

	* Makefile.am:
	* abicheck.sh: Fix copy-and-paste leftovers 

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

	* gfile.h: Add G_FILE_COPY_FLAGS_NONE for consistency.

2007-11-28  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am:
	* gdriveprivate.h:
	Removed unnecessary file
	
	* gdesktopappinfo.[ch]:
	* gdummyfile.[ch]:
	* gfile.c:
	* glocaldirectorymonitor.[ch]:
	* glocalfile.[ch]:
	* glocalfileenumerator.[ch]:
	* glocalfileinputstream.[ch]:
	* glocalfilemonitor.[ch]:
	* glocalfileoutputstream.[ch]:
	* glocalvfs.[ch]:
	* gnativevolumemonitor.c:
	* gpollfilemonitor.[ch]:
	* gunionvolumemonitor.[ch]:
	* gunixdrive.[ch]:
	* gunixvolume.[ch]:
	* gunixvolumemonitor.[ch]:
	* gvfs.c:
	* gvolumeprivate.h:
	* inotify/ginotifydirectorymonitor.[ch]:
	* inotify/ginotifyfilemonitor.[ch]:
	* inotify/inotify-helper.c:
	Append _ to all internal functions
	
	* gio.symbols:
	Add missing symbols
	Export symbols needed for modules

2007-11-28  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am:
	* abicheck.sh: Added.
	* makegioalias.pl: Added.
	* pltcheck.sh: Added.
	* gio.symbols: Added.
	* *.c:
	* inotify/*.c
	Initial work on adding symbol handling.

	* gvfs.h:
	Correct ifdef guard name

	* fam/Makefile.am:
	* inotify/Makefile.am:
	* xdgmime/Makefile.am:
	Include toplevel Makefile.decl

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

	* gcontenttype.c: Move doc comments to the unix section.

	* *.[hc]: More trivial doc corrections.

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

	* gpollfilemonitor.c:
	* gunixmounts.c:
	* gvfs.c:
	* gfile.c:
	* gdesktopappinfo.c:
	* gwin32appinfo.c:
	* gvolume.c:
	* glocalvfs.c:
	* gvolumemonitor.c:
	* gdatainputstream.c:
	* gdatainputstream.h:
	* gdataoutputstream.c:
	* gdataoutputstream.h:
	* gfileinfo.h: Doc cleanups

2007-11-28  Andre Klapper  <a9016009@gmx.de>

	* gdesktopappinfo.c: Fix a typo.

2007-11-27  Andre Klapper  <a9016009@gmx.de>

	* glocalfileoutputstream.c: Fix a typo.

2007-11-27  Alexander Larsson  <alexl@redhat.com>

	* gio.h:
	Don't include removed headers

2007-11-27  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am:
	* gsocketinputstream.[ch]: Removed.
	* gsocketoutputstream.[ch]: Removed.
	* gunixinputstream.[ch]: Added.
	* gunixoutputstream.[ch]: Added.
	Renamed GSocket*Stream to GUnix*Stream and made
	it unix-only, since its not really only for sockets
	and it only works on unix (but is highly useful there).

2007-11-27  Andrew Walton  <awalton@svn.gnome.org>
	* gappinfo.c:
	* gappinfo.h:
	* gasynchelper.c:
	* gasyncresult.c:
	* gasyncresult.h:
	* gbufferedinputstream.c:
	* gbufferedinputstream.h:
	* gbufferedoutputstream.c:
	* gbufferedoutputstream.h:
	* gcancellable.c: 
	* gcancellable.h:
	* gcontenttype.c:
	* gdatainputstream.c:
	* gdatainputstream.h:
	* gdataoutputstream.c:
	* gdataoutputstream.h:
	* gdirectorymonitor.c:
	* gdirectorymonitor.h:
	* gdrive.c: 
	* gdrive.h:
	* gfile.c:
	* gfile.h:
	* gfileattribute.c:
	* gfileattribute.h:
	* gfileenumerator.c:
	* gfileenumerator.h:
	* gfileicon.c:
	* gfileicon.h:
	* gfileinfo.c:
	* gfileinfo.h:
	* gfileinputstream.c:
	* gfileinputstream.h:
	* gfilemonitor.c:
	* gfilemonitor.h:
	* gfilenamecompleter.c:
	* gfilenamecompleter.h:
	* gfileoutputstream.c:
	* gfileoutputstream.h:
	* gfilterinputstream.c:
	* gfilterinputstream.h:
	* gfilteroutputstream.c:
	* gfilteroutputstream.h:
	* gicon.c:
	* gicon.h:
	* ginputstream.c:
	* ginputstream.h:
	* gioerror.c:
	* gioerror.h:
	* giomodule.c:
	* giomodule.h:
	* gioscheduler.c:
	* gioscheduler.h:
	* gloadableicon.c:
	* gloadableicon.h:
	* glocalfileoutputstream.c:
	* gmemoryinputstream.c:
	* gmemoryinputstream.h:
	* gmemoryoutputstream.c:
	* gmemoryoutputstream.h:
	* gmountoperation.c: 
	* gmountoperation.h:
	* goutputstream.c:
	* goutputstream.h:
	* gpollfilemonitor.c:
	* gseekable.c:
	* gseekable.h:
	* gsimpleasyncresult.c:
	* gsimpleasyncresult.h:
	* gsocketinputstream.c:
	* gsocketinputstream.h:
	* gsocketoutputstream.c:
	* gsocketoutputstream.h:
	* gthemedicon.c:
	* gthemedicon.h:
	* gunixdrive.c:
	* gunixmounts.c: 
	* gunixmounts.h:
	* gunixvolume.c:
	* gunixvolumemonitor.c:
	* gurifuncs.c:
	* gurifuncs.h:
	* gvfs.c:
	* gvfs.h:
	* gvolume.c:
	* gvolume.h:
	* gvolumemonitor.c: 
	* gvolumemonitor.h:
	Bumps documentation to 93% symbol coverage, touching most 
	of the public files. Fixes broken function documentation prototypes. 
	Fixes GCancellable inaccuracies. Removes unnecessary incomplete 
	gtk-doc headers in private files.

2007-11-27  Jürg Billeter  <j@bitron.ch>

	* gbufferedinputstream.c: (g_buffered_input_stream_peek_buffer),
	(g_buffered_input_stream_read_byte):
	* gbufferedinputstream.h:
	New functions for efficient access to buffer and simple single byte
	reads.

	* gdatainputstream.c: (scan_for_newline), (scan_for_chars),
	(g_data_input_stream_read_until):
	* gdatainputstream.h:
	Use peek_buffer to avoid memcpy in scan_for_newline, implement
	read_until with multiple stop chars.

2007-11-27  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am:
	* fam/Makefile.am:
	* inotify/Makefile.am:
	Use the user-specified giomoduledir

2007-11-27  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am
	* gio.h:
	Add catch-all gio.h header
	Don't install gdummyfile.h

2007-11-26  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am (gioinclude_HEADERS):
	Remove trailing whitespace
	
2007-11-26  Alexander Larsson  <alexl@redhat.com>

	Merge gio-standalone into glib

2007-11-25  Christian Kellner  <gicmo@gnome.org>

	* gio/goutputstream.c:
	Fix small mistake in the docs.

2007-11-21  Christian Persch  <chpe@gnome.org>

	* gio/glocalfile.c: (g_local_file_trash):
	Convert filenames to UTF-8 for GError.
	Use g_mkdir_with_parent to create the Trash dir, and use mode 0700
	as per xdg base dir spec.

2007-11-21  Christian Persch  <chpe@gnome.org>

	* gio/gdesktopappinfo.c:
	Use that g_key_file_to_data cannot fail.
	Some misc cleanups.
	Use stock defines for the key file group and key names.
	Use bitfields.

2007-11-21  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.c:
	(copy_stream_with_progress):
	Make sure we do a final progress callback with
	the full total size.

2007-11-21  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]:
	Export g_file_copy_attributes
	Remove padding as its not needed for interfaces

2007-11-20  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.c:
	* gio/gioerror.h:
	* gio/glocalfile.c:
	Add G_IO_ERROR_WOULD_MERGE for
	copy/move dir on dir with overwrite.

2007-11-20  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.h:
	* gio/glocalfileinfo.c:
	Add COPY_NAME (this is an optional
	non-modified utf8 version of the name) that
	can roundtrip.

2007-11-20  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfileenumerator.c:
	Report errors as GIOError, not GFileError

2007-11-16  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfileoutputstream.c:
	* gio/gwin32appinfo.c:
	Fix typos in strings.
	Patch from Luca Ferretti <elle.uca@libero.it>

2007-11-15  Alexander Larsson  <alexl@redhat.com>

	* configure.ac:
	Post release version bump

=== gio-standalone 0.1.2 ===

2007-11-15  Alexander Larsson  <alexl@redhat.com>

	* docs/reference/gio/Makefile.am:
	Fix up distcheck by removing weird
	non-needed stuff

	* NEWS:
	Update for release

2007-11-14  Alexander Larsson  <alexl@redhat.com>

	* gio/gdesktopappinfo.c:
	* gio/glocaldirectorymonitor.c:
	* gio/glocalfile.c:
	* gio/glocalfileinfo.c:
	* gio/inotify/inotify-sub.c:
	* programs/gio-cat.c:
	* programs/gio-copy.c:
	* programs/gio-info.c:
	* programs/gio-ls.c:
	* programs/gio-monitor-dir.c:
	* programs/gio-monitor-file.c:
	* programs/gio-mount.c:
	* programs/gio-move.c:
	* programs/gio-rm.c:
	* programs/gio-save.c:
	* programs/gio-trash.c:
	Leak fixes from Kjartan Maraas

2007-11-14  Alexander Larsson  <alexl@redhat.com>

	* gio/fam/fam-helper.c:
	* gio/gdrive.[ch]:
	* gio/glocalfileinfo.c:
	* gio/gunixdrive.c:
	* gio/gvfs.c:
	* gio/gvolume.[ch]:
	* gio/inotify/inotify-diag.c:
	* gio/inotify/inotify-kernel.c:
	Various code cleanups from Kjartan Maraas

2007-11-14  Alexander Larsson  <alexl@redhat.com>

	* gio/gioscheduler.c:
	(init_scheduler):
	Set up threadpool so that we cache 2 unused
	idle threads for at 15 secs. This means we
	will reuse thread-local data (like dbus connections)
	for them.

2007-11-14  Alexander Larsson  <alexl@redhat.com>

	* gio/fam/fam-helper.c:
	* gio/fam/gfamdirectorymonitor.c:
	* gio/fam/gfamfilemonitor.c:
	* gio/gappinfo.c:
	* gio/gcontenttype.c:
	* gio/gdatainputstream.c:
	* gio/gdataoutputstream.c:
	* gio/gdummyfile.c:
	* gio/gfile.c:
	* gio/gfile.h:
	* gio/gfileattribute.h:
	* gio/gfileenumerator.c:
	* gio/gfileinfo.c:
	* gio/ginputstream.c:
	* gio/gioerror.h:
	* gio/glocalfile.c:
	* gio/glocalfileinfo.c:
	* gio/goutputstream.c:
	* gio/gpollfilemonitor.c:
	* gio/gsimpleasyncresult.c:
	* gio/gunixmounts.c:
	* gio/gunixmounts.h:
	* gio/inotify/ginotifydirectorymonitor.c:
	* gio/inotify/ginotifyfilemonitor.c:
	* gio/inotify/inotify-diag.c:
	* gio/inotify/inotify-kernel.c:
	* gio/inotify/inotify-path.c:
	* gio/test-gio.c:
	* gio/test-streams.c:
	* programs/gio-info.c:
	* programs/gio-monitor-dir.c:
	* programs/gio-monitor-file.c:
	Various code cleanups from Kjartan Maraas

2007-11-13  Alexander Larsson  <alexl@redhat.com>

	* gio/gdummyfile.c:
	Handle the uri-scheme calls for dummy files

2007-11-13  Marko Anastasov  <marko@marko.anastasov.name>

	* gio/gio/gfileinfo.[ch]: Use a different parameter name instead of
	'namespace' for in g_file_attribute_matcher_enumerate_namespace()
	to avoid clash with the C++ keyword.

2007-11-13  Marko Anastasov  <marko@marko.anastasov.name>

	* gio/glocalfileinfo.c: Build fix, added missing semicolon
	to an ifdef'ed call to getpwuid() in lookup_uid_data().

2007-11-11  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/glocaldirectorymonitor.c:
	* gio/glocalfilemonitor.c:
	* gio/gunionvolumemonitor.c:
	Don't use g_once_init_*() for initializations that could fail and
	could leave the initialization variable set to 0 but use GOnce.
	This prevents a deadlock on the second call when trying to create
	a monitor and no monitor type is available. Thanks to Sven Herzberg
	for reporting.

2007-11-11  Sven Herzberg  <sven@imendio.com>

	* gio/glocalfile.c: guard the #include <sys/statfs.h> by the correct
	#ifdef (make it work on MacOS X again)

2007-11-09  Andrew Walton  <awalton@svn.gnome.org>
	* Changelog:
	Fixes Changelog for last two commits (sorry guys).

2007-11-07  Andrew Walton  <awalton@svn.gnome.org>
	* gio/gappinfo.c:
	* gio/gbufferedinputstream.c:
	* gio/gdatainputstream.c:
	* gio/gfile.c:
	* gio/gfileoutputstream.c:
	* gio/gfilterinputstream.c:
	* gio/glocalfileinputstream.c:
	* gio/gurifuncs.c:
	* gio/gvfs.c:
	More consistency fixes in g*stream.c files. 
	Significant clean of gfile's documentation, filling in of 
	asynchronous operations documentation.

2007-11-07  Andrew Walton  <awalton@svn.gnome.org>
	* gio/gappinfo.c:
	* gio/gasyncresult.c:
	* gio/gbufferedinputstream.c:
	* gio/gbufferedoutputstream.c:
	* gio/gcancellable.c:
	* gio/gcontenttype.c:
	* gio/gdatainputstream.c:
	* gio/gdataoutputstream.c:
	* gio/gdesktopappinfo.c:
	* gio/gdrive.c:
	* gio/gfile.c:
	* gio/gfileattribute.c:
	* gio/gio/gfileenumerator.c:
	* gio/gfileinfo.c:
	* gio/gfileinputstream.c:
	* gio/gfilemonitor.c:
	* gio/gfileoutputstream.c:
	* gio/ginputstream.c:
	* gio/giomodule.c:
	* gio/gioscheduler.c:
	* gio/gloadableicon.c:
	* gio/glocalfileoutputstream.c:
	* gio/gmemoryoutputstream.c:
	* gio/gmountoperation.c:
	* gio/goutputstream.c:
	* gio/gseekable.c:
	* gio/gsimpleasyncresult.c:
	* gio/gunionvolumemonitor.c:
	* gio/gunixmounts.c:
	* gio/gunixvolume.c:
	* gio/gurifuncs.c:
	* gio/gvfs.c:
	* gio/gvolume.c:
	* gio/gvolumemonitor.c:
	Updated documentation stubs, working towards consistency and 
	completeness.

2007-11-07  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gmemoryoutputstream.c:
	* gio/gmemoryoutputstream.h:
	Change g_memory_output_stream_set_free_on_close() to
	g_memory_output_stream_set_free_data() as this makes more sense and
	is more consistent with GMemoryInputStream.

2007-11-07  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.c:
	Fix some docs
	
	* gio/glocalvfs.c:
	* gio/gvfs.[ch]:
	Change how we find the default vfs so that
	we can handle a gvfs failing to init

2007-11-07  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gbufferedoutputstream.c:
	* gio/gdatainputstream.c:
	* gio/gdataoutputstream.c:
	* gio/gfileinputstream.c:
	* gio/gfileoutputstream.c:
	* gio/gfilterinputstream.c:
	* gio/gfilteroutputstream.c:
	* gio/ginputstream.c:
	* gio/gmemoryinputstream.c:
	* gio/gmemoryoutputstream.c:
	* gio/goutputstream.c:
	* gio/gsimpleasyncresult.c:
	* gio/gsocketinputstream.c:
	* gio/gsocketoutputstream.c:
	Add guards to the remaining public functions, add a TODO for
	an unimplemented function and remove some useless guards.

2007-11-07  Alexander Larsson  <alexl@redhat.com>

	* configure.ac:
	Autoconf checks for the various types of
	getpwuid_r and getgrgid_r
	
	* gio/glocalfileinfo.c:
	Use the autoconf checks from above

2007-11-07  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfile.c:
	(g_local_file_query_filesystem_info):
	Some fixes for the statvfs case
	
2007-11-07  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfile.c:
	(g_local_file_query_filesystem_info):
	Pick the "best" of statfs / statvfs for the system
	if both are availible.

2007-11-07  Alexander Larsson  <alexl@redhat.com>

	Solaris fixes from Halton.Huo@Sun.COM:
	
	* gio/gdrive.c:
	* gio/gfile.c:
	* gio/gvolume.c:
	Don't return void
	
	* gio/glocalfileinfo.c:
	Fix for solaris definition of getpwuid_r
	
	* gio/test-streams.c:
	Use G_GNUC_PRETTY_FUNCTION

2007-11-07  Alexander Larsson  <alexl@redhat.com>

	* gio/gdesktopappinfo.c:
	(update_default_list):
	Remove double semicolon.
	Patch from Jens Granseuer

2007-11-06  Sebastian Dröge  <slomo@circular-chaos.org>

	* docs/reference/gio/gio-sections.txt:
	* gio/gbufferedinputstream.c:
	* gio/gbufferedinputstream.h:
	* gio/gdatainputstream.c:
	* gio/gfileenumerator.c:
	* gio/gioscheduler.c:
	* gio/gunionvolumemonitor.c:
	* gio/gvfs.c:
	* programs/gio-save.c:
	Fix typo: availible -> available. Unfortuntely this breaks API
	and ABI as g_buffered_input_stream_get_available() was renamed.
	
	* gio/gunixmounts.c:
	* gio/gbufferedinputstream.c:
	Add guards for public functions.

2007-11-06  Ross Burton  <ross@openedhand.com>

	* docs/reference/gio/Makefile.am:
	Fix invalid += usage which automake 1.10 doesn't like.

2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* gio/gappinfo.c:
	(g_app_launch_context_class_init):
	Fix warning

	Patch from Ross Burton 
	
2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* configure.ac:
	Post release version bump

=== gio-standalone 0.1.1 ===

2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* configure.ac:
	Bump version to 0.1.1
	
	* gio/gsimpleasyncresult.c:
	(g_simple_async_result_set_from_error):
	Remove bogus g_return_if_fail

2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* configure.ac:
	The name is gio-standalone
	
	* gio/Makefile.am:
	Add top src/builddir to includedir

2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* docs/reference/gio/gio-sections.txt:
	* gio/gappinfo.c:
	* gio/gbufferedinputstream.c:
	* gio/gbufferedoutputstream.c:
	* gio/gcancellable.c:
	* gio/gdatainputstream.h:
	* gio/gdataoutputstream.c:
	* gio/gdataoutputstream.h:
	* gio/gdirectorymonitor.c:
	* gio/gfile.c:
	* gio/gfileattribute.c:
	* gio/gfileattribute.h:
	* gio/gfileenumerator.c:
	* gio/gfileenumerator.h:
	* gio/gfileinfo.c:
	* gio/gfileinfo.h:
	* gio/gfileinputstream.h:
	* gio/gfilemonitor.c:
	* gio/gfileoutputstream.h:
	* gio/glocalfilemonitor.h:
	* gio/glocalfileoutputstream.h:
	* gio/gmemoryinputstream.c:
	* gio/gmemoryoutputstream.c:
	* gio/gmountoperation.c:
	* gio/goutputstream.c:
	* gio/goutputstream.h:
	* gio/gseekable.h:
	* gio/gsimpleasyncresult.c:
	* gio/gunixmounts.c:
	* gio/gunixmounts.h:
	* gio/gurifuncs.h:
	* gio/inotify/inotify-helper.c:
	Fix gtk-doc warnings

	Patch from Ross Burton 
	
2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* gio/gfilenamecompleter.c:
	(g_filename_completer_get_completions):
	fix warning
	
	* gio/gunixvolume.c:
	Remove unused function

	Patches from Ross Burton 

2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* gio/gdrive.h:
	* gio/gseekable.h:
	* gio/gvolume.h:
	Padding not needed for interfaces

2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* gio/gfilemonitor.c:
	Remove debug spew

	* gio/Makefile.am:
	Make giotypes.h an internal file
	
	* gio/gappinfo.h:
	* gio/gbufferedinputstream.h:
	* gio/gbufferedoutputstream.h:
	* gio/gcancellable.h:
	* gio/gdatainputstream.h:
	* gio/gdataoutputstream.h:
	* gio/gdirectorymonitor.c:
	* gio/gdirectorymonitor.h:
	* gio/gdrive.c:
	* gio/gdrive.h:
	* gio/gfile.c:
	* gio/gfile.h:
	* gio/gfileattribute.h:
	* gio/gfileenumerator.h:
	* gio/gfileicon.c:
	* gio/gfileicon.h:
	* gio/gfileinfo.c:
	* gio/gfileinfo.h:
	* gio/gfilemonitor.c:
	* gio/gfilemonitor.h:
	* gio/gfilenamecompleter.c:
	* gio/gfilenamecompleter.h:
	* gio/gfilterinputstream.h:
	* gio/gfilteroutputstream.h:
	* gio/ginputstream.h:
	* gio/gmemoryinputstream.h:
	* gio/gmemoryoutputstream.h:
	* gio/gmountoperation.c:
	* gio/gmountoperation.h:
	* gio/gnativevolumemonitor.c:
	* gio/goutputstream.h:
	* gio/gseekable.c:
	* gio/gseekable.h:
	* gio/gsimpleasyncresult.c:
	* gio/gsimpleasyncresult.h:
	* gio/gsocketinputstream.h:
	* gio/gsocketoutputstream.h:
	* gio/gthemedicon.c:
	* gio/gthemedicon.h:
	* gio/gvfs.h:
	* gio/gvolume.c:
	* gio/gvolume.h:
	* gio/gvolumemonitor.c:
	* gio/gvolumemonitor.h:
	Add padding in classes where it seems useful
	Don't include giotypes.h from public headers
	Move in Class definitions into c file where possible
	
	* gio/glocalfile.c:
	Fix warnings

2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* docs/reference/gio/gio-docs.xml:
	Better structure for API docs

2007-11-06  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gfileicon.c:
	* gio/gloadableicon.c:
	* gio/gsimpleasyncresult.c:
	* gio/gthemedicon.c:
	Add some more guards to public functions. Only files missing are now
	g*stream*.c.

2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* docs/reference/gio/gio-docs.xml:
	Remove old files, add missing ones

2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* docs/reference/gio/gio-sections.txt:
	Restructure
	Add missing stuff
	Hide implementation classes
	
	* gio/gdriveprivate.h:
	* gio/gvolumeprivate.h:
	Remove non-existing function declarations

2007-11-06  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gappinfo.c:
	Fix compilation warnings and add guards to the new functions.
	
	* gio/gasyncresult.c:
	* gio/gdummyfile.c:
	Add guards to the public functions.
	
	* gio/gdummyfile.c:
	Implement get_path().

2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* gio/gfilenamecompleter.c:
	Make g_filename_completer_get_completions
	return char ** instead of GList for
	typesafety.
	
	* docs/reference/gio/gio-docs.xml:
	* docs/reference/gio/gio-sections.txt:
	* gio/gappinfo.c:
	* gio/gasyncresult.c:
	* gio/gbufferedinputstream.c:
	* gio/gbufferedoutputstream.c:
	* gio/gcancellable.c:
	* gio/gcontenttype.c:
	* gio/gdatainputstream.c:
	* gio/gdataoutputstream.c:
	* gio/gdesktopappinfo.c:
	* gio/gdirectorymonitor.c:
	* gio/gdrive.c:
	* gio/gdummyfile.c:
	* gio/gfile.c:
	* gio/gfileattribute.c:
	* gio/gfileenumerator.c:
	* gio/gfileicon.c:
	* gio/gfileinfo.c:
	* gio/gfileinputstream.c:
	* gio/gfilemonitor.c:
	* gio/gfilenamecompleter.c:
	* gio/gfilenamecompleter.h:
	* gio/gfileoutputstream.c:
	* gio/gfilterinputstream.c:
	* gio/gicon.c:
	* gio/ginputstream.c:
	* gio/giomodule.c:
	* gio/gioscheduler.c:
	* gio/gloadableicon.c:
	* gio/glocaldirectorymonitor.c:
	* gio/glocalfile.c:
	* gio/glocalfileinputstream.c:
	* gio/glocalfilemonitor.c:
	* gio/glocalfileoutputstream.c:
	* gio/glocalvfs.c:
	* gio/gmemoryinputstream.c:
	* gio/gmemoryoutputstream.c:
	* gio/gmountoperation.c:
	* gio/goutputstream.c:
	* gio/gpollfilemonitor.c:
	* gio/gseekable.c:
	* gio/gsimpleasyncresult.c:
	* gio/gsocketinputstream.c:
	* gio/gsocketoutputstream.c:
	* gio/gthemedicon.c:
	* gio/gunionvolumemonitor.c:
	* gio/gunixdrive.c:
	* gio/gunixmounts.c:
	* gio/gunixvolume.c:
	* gio/gunixvolumemonitor.c:
	* gio/gurifuncs.c:
	* gio/gvfs.c:
	* gio/gvolume.c:
	* gio/gvolumemonitor.c:
	* gio/gwin32appinfo.c:
	Add (mostly stub) doc strings to public functions.
	Patch from Andrew Walton (awalton@gmail.com)

2007-11-06  Alexander Larsson  <alexl@redhat.com>

	* gio/gappinfo.[ch]:
	Added GAppLaunchContext object and pass that to launch.
	This allows simple implementation of both
	launch-on-screen and startup notification via a gtk+
	subclass of GAppLaunchContext
	
	* gio/gdesktopappinfo.c:
	Implement GAppLaunchContext API
	
	* gio/gwin32appinfo.c:
	Update to new APIs

2007-11-05  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gmountoperation.c:
	Add some guards to GMountOperation's public functions.

2007-11-05  Sebastian Dröge  <slomo@circular-chaos.org>


	* gio/gappinfo.c:
	* gio/gcancellable.c:
	* gio/gdirectorymonitor.c:
	* gio/gdrive.c:
	* gio/gfileenumerator.c:
	* gio/gfilemonitor.c:,
	* gio/gfilenamecompleter.c:
	* gio/gicon.c:
	* gio/giomodule.c:
	* gio/gioscheduler.c:
	* gio/gseekable.c:
	* gio/gurifuncs.c:
	* gio/gvolume.c:
	* gio/gvolumemonitor.c:
	Add even more guards to various public functions.

2007-11-05  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gappinfo.c:
	Add guards to the public functions of GAppInfo.

2007-11-05  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gcontenttype.c:
	Add some more guards for public functions.

2007-11-05  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/fam/fam-module.c:
	* gio/fam/gfamdirectorymonitor.c:
	* gio/fam/gfamdirectorymonitor.h:
	* gio/fam/gfamfilemonitor.c:
	* gio/fam/gfamfilemonitor.h:
	* gio/inotify/ginotifydirectorymonitor.c:
	* gio/inotify/ginotifydirectorymonitor.h:
	* gio/inotify/ginotifyfilemonitor.c:
	* gio/inotify/ginotifyfilemonitor.h:
	Add proper copyright information and remove an unused variable
	in the GInotifyFileMonitor constructor.

	* gio/gcancellable.c:
	Add a guard for a public function and an assertion to prevent
	an undefined program state.

2007-11-05  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gfileattribute.c:
	Don't run into an assertion if the given attribute value is NULL
	in g_file_attribute_value_get_*() but instead return a fallback
	value that makes sense in most situations. Passing them a attribute
	value with the wrong type will still run into an assertion.

2007-11-02  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gfileattribute.c:
	* gio/gfileinfo.c:
	Add even more guards to the public functions. Also fix the refcounting
	of GFileAttributeInfoList and GFileAttributeMatcher to be atomic and
	let g_file_info_list_attributes() filter the attributes by namespace
	instead of simply ignoring the namespace parameter.

2007-11-03  Sven Herzberg  <sven@imendio.com>

	* gio/gdesktopappinfo.c: don't use environ. Use the glib API for that.
	(This makes gio work on MacOS X again)

2007-11-02  Sebastian Dröge  <slomo@circular-chaos.org>

	* Makefile.am:
	Build the gio subdirectory before the docs. Otherwise the build will
	fail.

	* gio/gvfs.c: (g_vfs_get_name), (g_vfs_get_priority),
	(g_vfs_get_file_for_path), (g_vfs_get_file_for_uri),
	(g_vfs_get_supported_uri_schemes), (g_vfs_parse_name):
	Add guards to the public functions.

2007-11-02  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gfileattribute.c: (g_file_attribute_value_as_string):
	Cast parameter to g_type_name_from_instance() to a GTypeInstance *
	to prevent a compiler warning.

	* gio/glocalfile.c: (get_mount_info), (find_topdir_for):
	Set the G_FILE_ATTRIBUTE_FS_READONLY as boolean, not as string and
	return something in the non-void function find_topdir_for().

2007-11-01  Christian Kellner  <gicmo@gnome.org>,  Ryan Lortie  <desrt@desrt.ca>

	* configure.ac:
	* Makefile.am:
	* docs/:
	Gtkdocify!

2007-11-01  Ryan Lortie  <desrt@desrt.ca>

	* gappinfo.c (g_app_info_launch, g_app_info_launch_uris):
	* gappinfo.h (g_app_info_launch, g_app_info_launch_uris):
	* gwin32appinfo.c (g_win32_app_info_launch):
	* gdesktopappinfo.c (expand_macro, equal_up_to_equals,
	envp_for_startup_id, g_desktop_app_info_launch,
	g_desktop_app_info_launch_uris):

	Give an opaque 'startup_id' string instead of 'envp'.
	Support empty file lists for launching new windows.
	Fix infinite recursion bug when launching URIs.

2007-11-01  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gfile.c:
	Add guard to the new g_file_get_uri_scheme() function.

2007-11-01  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gfile.c:
	Convert a g_return_val_if_fail() to setting the GError instead as
	otherwise applications have to verify the parameter before otherwise
	and the parameter might come directly from the user.

2007-11-01  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/inotify/ginotify*.[ch]:
	Add missing copyright information.

2007-11-01  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gfile.c:
	Add guards in the beginning of public functions to check for valid
	parameters and fix a bug in copy_stream_with_progress() that could've
	caused writing less bytes than reading.
	* gio/glocalfileinfo.c:
	Check for a NULL parameter and set the GError accordingly then.
	* gio/goutputstream.c:
	Fix the same bug as in gfile.c that could've caused writing less bytes
	than reading in g_output_stream_real_splice().

2007-11-01  Sebastien Bacher  <seb128@ubuntu.com>

	* gio/Makefile.am:
	Use the correct gvolumeprivate.h naming

2007-11-01  Christian Kellner  <gicmo@gnome.org>

	* gio/Makefile.am:
	Remove leftover "$(daemon_sources)" entry.

2007-11-01  Christian Kellner  <gicmo@gnome.org>

	* gio/fam/*.[ch]:
	* gio/*.[ch]:
	* programs/*.[ch]:
	Add copyright information to source files.

2007-11-01  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]:
	* gio/glocalfile.c:
	Add g_file_get_uri_scheme

2007-11-01  Alexander Larsson  <alexl@redhat.com>

	* gio/gappinfo.h:
	* gio/gdesktopappinfo.c:
	* gio/gwin32appinfo.c:
	Add g_app_info_get_default_for_uri_scheme.

2007-11-01  Alexander Larsson  <alexl@redhat.com>

	* gio/Makefile.am:
	Correct filename for gdriveprivate.h

2007-10-31  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.h:
	Rename id:value to id:file
	Add id:fs
	
	* gio/glocalfileinfo.c:
	Implement id:fs

2007-10-31  Alexander Larsson  <alexl@redhat.com>

	* gio/gunixvolume.c:
	* gio/gvolume.[ch]:
	Remove g_volume_get_platform_id, as thats not
	needed with the simpler union volume monitor

2007-10-31  Alexander Larsson  <alexl@redhat.com>

	* gio/Makefile.am:
	* gio/guniondrive.[ch]: Removed.
	* gio/gunionvolume.[ch]: Removed.
	Remove GUnionDrive/Volume

	* gio/gunionvolumemonitor.c:
	Simplify union volume monitor, now we
	only have one native volume monitor and
	we use the actual volumes/drives from the
	child monitors instead of wrapping them

	* gio/gnativevolumemonitor.[ch]:
	Base class for native volume monitors.
	Includes priority and get_volume_for_mountpoint
	
	* gio/gfile.[ch]:
	Add g_file_find_enclosing_volume

	* gio/gfileinfo.h:
	Remove volume name fs attribute
	Add readonly fs attribute
	
	* gio/glocalfile.c:
	Implement readonly attribute
	remove volume name attribute
	Implement find_enclosing volume
	
	* gio/gunixmounts.c:
	Add a volume for "/".
	
	* gio/gunixvolume.[ch]:
	Set better name for /
	
	* gio/gunixvolumemonitor.[ch]:
	Derive from GNativeVolumeMonitor
	Implement get_volume_for_mountpoint
	
	* gio/gvolume.h:
	GVolume typedef moved to gfile.h
	
	* gio/gvolumeprivate.h:
	Add g_volume_get_for_mount_path

2007-10-31  Alexander Larsson  <alexl@redhat.com>

	* gio/gunixmounts.[ch]:
	Add cache info to unix mount listers
	Make getmntent use threadsafe
	Add is_system_internal attribute for GUnixMount
	
	* gio/gunixvolume.c:
	(g_unix_volume_new):
	Use is_system_internal instead of own code
	
	* gio/glocaldirectorymonitor.c:
	* gio/gunixvolumemonitor.c:
	Update to new gunixmounts API
	
	* gio/glocalfile.c:
	Fix warning

2007-10-30  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.h:
	Add volume name fsinfo attribute
	
	* gio/glocalfile.c:
	Read volume name info
	
	* gio/gunionvolumemonitor.c:
	Fix infinite loops when finalizing a union volume monitor

2007-10-30  Alexander Larsson  <alexl@redhat.com>

	* gio/goutputstream.[ch]:
	Add splice() with default implementation
	
	* gio/gsocketoutputstream.c:
	(g_socket_output_stream_write):
	Return error on cancellation correctly.
	
2007-10-26  Paolo Borelli  <pborelli@katamail.com>

	* gio/glocalfile.c (g_local_file_trash):
	Do not leak a string.

2007-10-26  Paolo Borelli  <pborelli@katamail.com>

	* gio/gfile.c (g_file_load_contents):
	Unref the stream after closing it.

2007-10-25  Alexander Larsson  <alexl@redhat.com>

	* gio/gioscheduler.h:
	Fix include

2007-10-25  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]:
	* gio/glocalfile.c:
	Add g_file_has_uri_scheme and implement for local files

2007-10-25  Paolo Borelli  <pborelli@katamail.com>

	* gio/gdesktopappinfo.c: do not leak a string.

2007-10-24  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/glocaldirectorymonitor.c: (_compare_monitor_class_by_prio),
	(g_local_directory_monitor_new):
	* gio/glocalfilemonitor.c: (_compare_monitor_class_by_prio),
	(g_local_file_monitor_new):
	Only look for the monitor type that should be used the first time
	and use g_qsort_with_data() instead of our own bubble sort
	implementation.

2007-10-24  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/Makefile.am:
	* gio/fam/Makefile.am:
	* gio/fam/fam-helper.c: (_fam_sub_startup), (_fam_sub_add):
	* gio/fam/fam-helper.h:
	* gio/fam/fam-module.c: (g_io_module_load), (g_io_module_unload):
	* gio/fam/gfamdirectorymonitor.c:
	* gio/fam/gfamdirectorymonitor.h:
	* gio/fam/gfamfilemonitor.c: (g_fam_file_monitor_finalize),
	* gio/fam/gfamfilemonitor.h:
	* gio/glocaldirectorymonitor.c:
	* gio/glocaldirectorymonitor.h:
	* gio/glocalfilemonitor.c: (g_local_file_monitor_init),
	* gio/glocalfilemonitor.h:
	* gio/inotify/Makefile.am:
	* gio/inotify/ginotifydirectorymonitor.c:
	* gio/inotify/ginotifydirectorymonitor.h:
	* gio/inotify/ginotifyfilemonitor.c:
	* gio/inotify/ginotifyfilemonitor.h:
	Implement the FAM and Inotify monitors as
	GLocal(Directory|File)Monitor subclasses and put the FAM monitors into
	their own GIO module. GLocal(Directory|File)Monitor will use the
	monitor with the highest rank that is supported on that machine.

2007-10-23  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/Makefile.am:
	Change GIO module dir to $(libdir)/gio/modules and change
	the log domain from GVFS to GIO. Also only export symbols starting
	with g_ in the resulting library.
	* gio/test-streams.c: (main):
	Set log handler for the GIO log domain.

2007-10-22  Alexander Larsson  <alexl@redhat.com>

	* gio/gfilenamecompleter.[ch]:
	Add g_filename_completer_set_dirs_only

2007-10-22  Alexander Larsson  <alexl@redhat.com>

	* gio/Makefile.am:
	* gio/gurifuncs.[ch]:
	Add some simple URI helpers
	
	* gio/gfilenamecompleter.[ch]:
	Added object for filename (parse name actually) completion
	
	* gio/glocalvfs.c:
	Handle ~ in parse names

2007-10-17  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.h:
	* gio/glocalfileinfo.c:
	Add and implement id:value attribute

2007-10-17  Alexander Larsson  <alexl@redhat.com>

	* gio/gdrive.[ch]:
	* gio/guniondrive.c:
	* gio/gunixdrive.c:
	Add and implement g_drive_has_volumes
	
2007-10-17  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.h:
	* gio/glocalfileinfo.[ch]:
	Add unix:is_mountpoint and implement for local files

2007-10-16  Alexander Larsson  <alexl@redhat.com>

	* gio/gunionvolumemonitor.c:
	(g_union_volume_monitor_init):
	Fix up the unix type getting so that it works with gcc
	
2007-10-12  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.h:
	* gio/glocalfileinfo.c:
	Add thumbnail:failed to file info

2007-10-12  Richard Hult  <richard@imendio.com>

	* gio/gvfs.c (get_default_vfs): Make the type volatile to avoid
	optimizing away the get_type call (happens with some gcc versions,
	like the one shipped with OS X 10.4).

2007-10-12  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfileinfo.c:
	(_g_local_file_info_set_attribute):
	Fix build if not HAVE_XATTR
	Patch from Milosz Derezynski <internalerror@gmail.com>

2007-10-11  Sven Herzberg  <herzi@gnome-de.org>

	* gio/gunixmounts.c: small build fix (sorry, Alex, you haven't been
	around for review, otherwise I would have asked you before
	committing)

2007-10-11  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.h:
	Add thumbnail:path attribute
	
	* gio/glocalfileinfo.c:
	Implement thumbnail:path for local files

2007-10-11  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfileinfo.c:
	(_g_local_file_info_get):
	Avoid duplicate icon names

2007-10-11  Alexander Larsson  <alexl@redhat.com>

	* gio/gthemedicon.[ch]:
	Change g_themed_icon_get_names return type to const

2007-10-10  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfileinfo.c:
	Don't reference freed memory

2007-10-10  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileattribute.c:
	Handle objects
	
	* gio/glocalfileinfo.c:
	Return icon info

2007-10-10  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.c:
	Check for NULL icons

	* gio/gfileattribute.c:
	Don't dup when getting objects (same as for string attributes)

	* gio/gicon.c (g_icon_equal):
	Safely handle NULLs in equal

2007-10-10  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.h:
	Fix c++ compilation issues
	Patch from Milosz Derezynski <internalerror@gmail.com>

2007-10-10  Alexander Larsson  <alexl@redhat.com>

	* programs/gio-monitor-dir.c:
	Don't crash if dir monitor not supported.

2007-10-09  Alexander Larsson  <alexl@redhat.com>

	* gio/gioerror.h:
	Add missing G_END_DECLS

2007-10-09  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gfile.c: (g_file_set_display_name),
	(g_file_query_settable_attributes),
	(g_file_query_writable_namespaces):
	Return NULL not FALSE on errors as the return type is a pointer.

2007-10-09  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/glocalfile.c: (g_local_file_monitor_file):
	Don't call monitor_file on the default interface vtable (which
	is NULL) but simply return NULL. The caller, GFile, will create a
	polling monitor if NULL is returned.

2007-10-09  Alexander Larsson  <alexl@redhat.com>

	* Makefile.am:
	* configure.ac:
	* gio-unix-2.0.pc.in:
	Add gio-unix-2.0.pc if OS_UNIX
	
	* gio/Makefile.am:
	Install gunixmounts.h into gio-unix-2.0 if OS_UNIX

2007-10-09  Alexander Larsson  <alexl@redhat.com>

	* gio/gunixmounts.[ch]:
	Make unix mount monitoring API sane.
	Now its just a object with mounts_changed
	and mountpoints_changed signals.
	
	* gio/glocaldirectorymonitor.c:
	* gio/gunixvolumemonitor.c:
	Use new mount monitor api

2007-10-09  Alexander Larsson  <alexl@redhat.com>

	* gio/gunixmounts.[ch]:
	Move guess type into one call for mounts and one for mountpoints
	
	* gio/gunixdrive.c:
	* gio/gunixvolume.c:
	Update

2007-10-09  Alexander Larsson  <alexl@redhat.com>

	* gio/gunixmounts.[ch]:
	Remove _ prefix in preparation to make this semi-public
	Hide implementation of structs
	
	* gio/glocaldirectorymonitor.c:
	* gio/gunixdrive.c:
	* gio/gunixvolume.c:
	* gio/gunixvolumemonitor.c:
	Update for above API changes

2007-10-08  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.c:
	Better polling fallback. This also handles the case where we have
	a monitor_file implementation, but it fails.

2007-10-08  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]:
	* gio/glocalfile.c:
	* gio/gunixmounts.c:
	* programs/gio-monitor-dir.c:
	* programs/gio-monitor-file.c:
	Added cancellable to file monitoring calls.
	These are really sync calls and need this.

2007-10-08  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/glocalvfs.c: (g_local_vfs_get_supported_uri_schemes),
	(g_local_vfs_class_init):
	* gio/gvfs.c: (g_vfs_get_supported_uri_schemes):
	* gio/gvfs.h: Add functions to get a list of supported URI schemes.

2007-10-05  Alexander Larsson  <alexl@redhat.com>

	* gio/gdirectorymonitorprivate.h: 
	* gio/gfilemonitorprivate.h: 
	* gio/gdirectorymonitor.h:
	* gio/gfilemonitor.h:
	Remove *private.h and move to the public API, so that
	we can do implementations outside gio (such as in gvfs)
	
	* gio/gdirectorymonitor.c:
	* gio/gfilemonitor.c:
	* gio/glocaldirectorymonitor.c:
	* gio/gpollfilemonitor.c:
	* gio/inotify/inotify-helper.c:
	* gio/fam/fam-helper.c:
	Update to the new header names

2007-10-05  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gdirectorymonitor.c:
	* gio/gfilemonitor.c: Mark the GFileMonitor and GDirectoryMonitor
	GTypes as abstract.

2007-10-04  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfileinfo.c (get_access_rights):
	Set CAN_TRASH when we can move the file.
	We should really also check for a parent trash dir.

2007-10-04  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.h (G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH):
	Add can_trash access attribute

2007-10-04  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfile.c:
	(g_local_file_trash):
	Create info file first. This is per-spec and allows
	us to actually trash directories.

2007-10-02  Alexander Larsson  <alexl@redhat.com>

	* gio/gdesktopappinfo.c:
	Implement the new mime support code.
	Always set app as handling mimetype when being set as default for it

2007-10-01  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfileinfo.c (_g_local_file_info_set_attribute):
	Fix up check for xattrs:

2007-10-01  Alexander Larsson  <alexl@redhat.com>

	* gio/gappinfo.c:
	(g_app_info_set_as_default_for_extension):
	(g_app_info_add_supports_type):
	(g_app_info_can_remove_supports_type):
	(g_app_info_remove_supports_type):
	Make these fail nicely if not implemented

2007-10-01  Paolo Borelli  <pborelli@katamail.com>

	* gio/glocalfileoutputstream.c:
	* gio/glocalfileoutputstream.h:
	* gio/test-gio.c:
	* gio/gfile.c:
	* gio/gfile.h:
	* gio/glocalfile.c:
	* programs/gio-save.c: 
	Add a GFileCreateFlags argument to operations that can create
	a new file.

2007-10-01  Alexander Larsson  <alexl@redhat.com>

	* gio/gappinfo.[ch]:
	* gio/gdesktopappinfo.c:
	Add more (stubbed out) mime API needed for nautilus

2007-10-01  Alexander Larsson  <alexl@redhat.com>

	* gio/gappinfo.h:
	Add GAppInfoCreateFlags flag to g_app_info_create_from_commandline.
	Add g_app_info_set_as_default_for_extension.
	
	* gio/gdesktopappinfo.c:
	Dummy for g_app_info_set_as_default_for_extension
	Support flags in g_app_info_create_from_commandline

	* gio/gwin32appinfo.c:
	* gio/test-gio.c:
	Update for API changes
	
	* gio/gthemedicon.c:
	Properly NULL-terminate list of icon names

2007-09-28  Alexander Larsson  <alexl@redhat.com>

	* gio/gloadableicon.h:
	Correct G_TYPE_LOADABLE_ICON, it was pointing to the GIcon type...

2007-09-28  Alexander Larsson  <alexl@redhat.com>

	* gio/Makefile.am:
	Install headers in $includedir/gio-standalone/
	
	* gio-2.0.pc.in: Added.
	* gio-standalone.pc.in: Removed.
	* configure.ac:
	* Makefile.am:
	Renamed pkg-config file to match glib (for future move)
	Update to the new include dir
	
	* gio/gappinfo.h:
	Add more TODO comments

2007-09-28  Alexander Larsson  <alexl@redhat.com>

	* gio/gdesktopappinfo.[ch]:
	Expose new_from_filename
	Add getter for is_hidden and handle it better

2007-09-28  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.[ch]:
	Rename g_file_size_format_for_display to
	g_format_file_size_for_display.
	Now it doesn't have the g_file prefix, so we
	can later move it to glib.

2007-09-28  Alexander Larsson  <alexl@redhat.com>

	* gio/gappinfo.[ch]:
	Add g_app_info_get_id and g_app_info_get_executable.
	Make all getters non-reffing
	Make g_app_info_launch take GFile arguments.
	Add must_support_uris argument to g_app_info_get_default_for_type.
	
	* gio/gwin32appinfo.c:
	Update to GAppInfo api changes
	
	* gio/gdesktopappinfo.c:
	Update to GAppInfo api changes
	Implement supports_xdg_startup_notify
	
	* gio/gfileicon.c (g_file_icon_get_file):
	Make getter non-reffing.
	
	* gio/test-gio.c:
	Update to new API

2007-09-27  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinfo.[ch]: 
	Add g_file_size_format_for_display helper
	
2007-09-27  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfileinfo.c:
	Set UNIX_GID from gid, not from uid

2007-09-27  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]:
	Add g_file_set_attributes_async

2007-09-27  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfile.c (g_local_file_set_display_name):
	Fix set_display_name to actually rename to the right place.
	Use lstat to look for existing files so we don't overwrite
	broken links.

2007-09-26  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]:
	Add g_file_set_display_name_async()

2007-09-26  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]:
	Add load_partial_contents async calls
	
	* gio/glocalfile.c:
	Make internal function static

2007-09-26  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfileinfo.c:
	Correctly detect broken symlinks

2007-09-26  Alexander Larsson  <alexl@redhat.com>

	* gio/gcancellable.c (g_cancellable_cancel):
	Allow cancel on NULL cancellable

2007-09-25  Alexander Larsson  <alexl@redhat.com>

	* gio/gsimpleasyncresult.c:
	Don't allocate g_error manually.
	Fixes g_slice/g_new mixup crash

2007-09-25  Alexander Larsson  <alexl@redhat.com>

	* gio/glocaldirectorymonitor.c (g_local_directory_monitor_new):
	Actually set active_backend.
	This means the monitor will be cancelled correctly.

2007-09-25  Alexander Larsson  <alexl@redhat.com>

	* gio/gdirectorymonitor.c:
	Set timeout to NULL when destroying

2007-09-25  Alexander Larsson  <alexl@redhat.com>

	* gio/gioerror.h:
	Rename G_IO_ERROR_NOT_MOUNTABLE to G_IO_ERROR_NOT_MOUNTABLE_FILE as
	that is a better description of the error.

2007-09-25  Sebastian Dröge  <slomo@circular-chaos.org>

	* gio/gvfs.c: (g_vfs_get_local):
	Make the local vfs variable static. The same instance should
	always be returned.

2007-09-24  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfileinfo.c:
	Pass in actual length read into sniffer, not the length
	we tried to read.

2007-09-21  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileenumerator.c:
	* gio/gfileinfo.c:
	* gio/gfileinfo.h:
	* gio/gfileinputstream.c:
	* gio/gfileoutputstream.c:
	* gio/ginputstream.c:
	* gio/goutputstream.c:
	Don't crash if async callbacks are NULL

2007-09-20  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]:
	Add async enumerate_children method and default
	implementation

2007-09-20  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]
	Add g_file_contains_file & g_file_get_relative_path, since they
	were needed for nautilus.
	Renamed g_file_resolve_relative to g_file_resolve_relative_path
	to make it clearer.
	
	* gio/gdummyfile.c:
	* gio/glocalfile.c:
	Implement new methods

2007-09-17  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]:
	* gio/gfileinputstream.[ch]:
	* gio/gfileoutputstream.[ch]:
	* gio/glocalfile.c:
	* gio/glocalfileenumerator.[ch]:
	* gio/glocalfileinfo.[ch]:
	* gio/glocalfileinputstream.c:
	* gio/glocalfileoutputstream.c:
	* gio/gpollfilemonitor.c:
	* programs/gio-copy.c:
	* programs/gio-info.c:
	* programs/gio-move.c:
	Rename get_file_info to query_info() to make it clearer
	that these are not simple getters, but do i/o.

2007-09-17  Alexander Larsson  <alexl@redhat.com>

	* gio/gdatainputstream.[ch]:
	* gio/test-streams.c:
	Use _read_XXX instead of _get_XXX for the i/o calls
	in GDataInputStream

2007-09-17  Alexander Larsson  <alexl@redhat.com>

	* gio/gappinfo.h:
	Added needed stuff to TODO comment

2007-09-17  Alexander Larsson  <alexl@redhat.com>

	* gio/glocalfileoutputstream.c (g_local_file_output_stream_close):
	Don't error out removing the backup copy if it doesn't
	already exist.

2007-09-14  Alexander Larsson  <alexl@redhat.com>

	* programs/Makefile.am:
	* programs/gvfs-*.c: 
	* programs/gio-*.c:
	Renamed apps from gvfs-xxx to gio-xxx.

2007-09-14  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.c:
	* gio/gfileoutputstream.[ch]:
	* gio/glocalfileoutputstream.c:
	* programs/gvfs-save.c:
	g_file_output_stream_get_etag doesn't do i/o, so remove
	cancellation and error.

2007-09-14  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]:
	Add new_etag output to replace_contents functions

2007-09-14  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileoutputstream.[ch]:
	Add async get_file_info and default implementation

2007-09-14  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinputstream.c:
	Implement fallback wrapper for async get_file_info

2007-09-14  Alexander Larsson  <alexl@redhat.com>

	* gio/gfile.[ch]:
	Add etag out argument to load_contents
	
	* gio/test-gio.c:
	Update to new API

2007-09-14  Alexander Larsson  <alexl@redhat.com>

	* gio/gcontenttype.c (looks_like_text):
	Whitespace like tab, cr and lf do not make the
	file binary.

2007-09-14  Alexander Larsson  <alexl@redhat.com>

	* gio/gfileinputstream.[ch]:
	Add async get_file_info.

2007-09-13  Alexander Larsson  <alexl@redhat.com>

	* gio/goutputstream.c (g_output_stream_write_all):
	Allow NULL for bytes_written

2007-09-13  Alexander Larsson  <alexl@redhat.com>

	* gio/gmemoryinputstream.[ch]:
	Add accessors for data

2007-09-13  Alexander Larsson  <alexl@redhat.com>

	* gio/gdatainputstream.c (g_data_input_stream_get_until):
	Don't crash if length is NULL

