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

