2000-02-22  Ettore Perazzoli  <ettore@helixcode.com>

	* Version 0.1 is released.

2000-02-21  Ettore Perazzoli  <ettore@helixcode.com>

	* libgnomevfs/gnome-vfs-cancellation.c
	(gnome_vfs_cancellation_check): If the cancellation is NULL, just
	return FALSE.
	(gnome_vfs_cancellation_ack): If the cancellation is NULL, just
	return.

	* test/test-xfer.c (xfer_progress_callback): Use
	`GNOME_VFS_SIZE_FORMAT_STR' to match the types.

	* test/test-async-directory.c (main) [!WITH_CORBA]: Do not define
	`ev', so that we don't get annoying compiler warnings.

	* test/test-xfer.c (xfer_progress_callback): Add casts.

	* test/test-directory-visit.c (directory_visit_callback): Add
	cast.

	* test/test-directory.c (print_list): Add cast.

	* test/test-async-directory.c (main): Removed unused variable.

	* modules/translate-method.c (tr_do_read_directory): Added cast to
	placate the compiler.

	* modules/file-method.c (do_get_file_info_from_handle):
	s/gnome_vfs_extract_short_name/gnome_vfs_uri_extract_short_name/.
	`gnome_vfs_extract_short_name' does not even exist!

	* modules/extfs-method.c: Add missing NULL pointer in
	initialization of `method'.

	* libgnomevfs-corba/gnome-vfs-slave.c (serve_channel_read): Use
	`GNOMEVFSFileSize' instead of `gulong'.
	(serve_channel_write): Likewise.

	* modules/Makefile.am (libhttp_la_LIBADD): Do not link the HTTP
	module with `-lghttp' (we don't actually use it).

2000-02-21  Jonathan Blandford  <jrb@redhat.com>

	* libgnomevfs/gnome-vfs-cancellation.c
	(gnome_vfs_cancellation_check): change g_return_if_fail to be a
	g_return_val_if_fail.  I don't know if the g_ function is right
	here, but until that gets straightened out, make it compile.

2000-02-21 Elliot Lee <sopwith@redhat.com>
	* libgnomevfs/gnome-vfs-configuration.c: "Home made check" is supposed to be there.
	g_return_if_fail inappropriate, change reverted.

2000-02-20  Mathieu Lacage <mathieu@advogato.org>

	* libgnomevfs/gnome-vfs-configuration.c: plug memory leak in
	module_path_element_free intorduced by someone who forgot
	the arg element. Change a home-made check in g_return_if_fail.
	* libgnomevfs/gnome-vfs-cancelation.c: Change home-made check
	in g_return_if_fail.

2000-02-18  Maciej Stachowiak  <mjs@eazel.com>

	* modules/file-method.c (do_get_file_info,
	do_get_file_info_from_handle): Use gnome_vfs_extract_short_name on
	the URI rather than g_basename on the filename to get the
	basename. g_basename is broken.

2000-02-17  Jonathan Blandford  <jrb@redhat.com>

	* modules/default-modules.conf (ghelp): add ghelp to the list of
	known domains.

2000-02-16  Elliot Lee  <sopwith@redhat.com>
	* test/test-async.c: Exit after receiving read(), no matter what result is received.
	* modules/pipe-method.c: Check fread() result for being > 0, not !EOF
	* libgnomevfs/gnome-vfs-uri.c: Don't add leading /
	* libgnomevfs/gnome-vfs-backend.c: Add assert to ensure initialization.
	* modules/default-methods.conf: Pass filename to gnome-man2html2 instead of redirecting
	it as input.

2000-02-15  John Sullivan  <sullivan@eazel.com>

	* libgnomevfs/gnome-vfs-configuration.c:
	(gnome_vfs_configuration_get_module_path): Just clarified an
	error message.

2000-02-14  Maciej Stachowiak  <mjs@eazel.com>

	* libgnomevfs/gnome-vfs-types.h: Added a GnomeVFSFIleInfoFields
	enumeration, and added a field of this type (valid_fields) to
	GnomeVFSFileInfo, so that cases where get_file_info returns
	incomplete information can be handled gracefully.
	* modules/extfs-method.c, modules/file-method.c,
	modules/ftp-method.c, modules/http-method.c,
	modules/module-shared.c, modules/pipe-method.c,
	modules/translate-method.c: Set the valid_fields

2000-02-09  Elliot Lee  <sopwith@redhat.com>

	* libgnomevfs/gnome-vfs-messages.c, libgnomevfs/gnome-vfs-method.c,
	libgnomevfs/gnome-vfs-process.c, libgnomevfs-corba/gnome-vfs-async-ops.c,
	libgnomevfs-corba/gnome-vfs-slave-launch.c, libgnomevfs-corba/gnome-vfs-slave-notify.c,
	libgnomevfs-corba/gnome-vfs-slave-process.c, modules/ftp-method.c: Remove excess
	debugging output.

	* libgnomevfs/gnome-vfs-handle.c, libgnomevfs/gnome-vfs-handle.h,
	libgnomevfs/gnome-vfs-ops.c, libgnomevfs/gnome-vfs-ops.h,
	libgnomevfs/gnome-vfs-private-ops.c,
	libgnomevfs/gnome-vfs-private-ops.h,
	libgnomevfs/gnome-vfs-private-types.h,
	libgnomevfs/gnome-vfs-seekable.c: Add gnome_vfs_truncate and gnome_vfs_truncate_handle.
	* modules/bzip2-method.c, modules/extfs-method.c,
	modules/file-method.c, modules/ftp-method.c,
	modules/gconf-method.c, modules/gzip-method.c,
	modules/http-method.c, modules/pipe-method.c,
	modules/translate-method.c: Implement truncate (or don't).
	* libgnomevfs-corba/gnome-vfs-corba.c: putenv("GNOME_DISABLE_CRASH_DIALOG=1") so we don't get stupid crash dialogs.
	* libgnomevfs-pthread/gnome-vfs-async-ops.c: Fix obvious get_file_info bug.

2000-02-07  Elliot Lee  <sopwith@redhat.com>

	* libgnomevfs-corba/gnome-vfs-slave-notify.c: When memcpy'ing over a new GnomeVFSFileInfo, reset the refcount to 1
	so that we can unref it later.
	* libgnomevfs-corba/gnome-vfs-slave.c: Fix stupid cut & paste bug that was using the wrong loop variable.
	Also unref the file_info instead of destroying it.

2000-02-02  Elliot Lee  <sopwith@redhat.com>

	* idl/gnome-vfs-slave.idl, libgnomevfs/gnome-vfs-async-ops.h,
	libgnomevfs/gnome-vfs-backend.c, libgnomevfs/gnome-vfs-types.h, libgnomevfs-corba/*.[ch], libgnomevfs-pthread/*.[ch]:
	Implement asynchronous get_file_info operation. Compiles but is untested.

	* libgnomevfs/gnome-vfs-method.c: Pass method_name and config options to the module.
	* libgnomevfs/gnome-vfs-private-types.h: Pass GnomeVFSMethod
	pointer as first arg to all method implementation routines.
	* libgnomevfs/*.c, modules/*.c: Reflect above changes.
	* libgnomevfs/gnome-vfs-configuration.[ch]: Parse and return
	module arguments from config file. Fix miscellaneous bugs.
	* modules/translate-method.c, modules/Makefile.am: Implement a
	'URI translation' module that just translates URIs according to configuration options, then passes them
	on to the real module.

2000-02-01  Darin Adler  <darin@eazel.com>

	* libgnomevfs-corba/gnome-vfs-slave-notify.c:
        Make more-easily-understood g_warning messages for
        cases where the wrong operation is in progress.

	* libgnomevfs/gnome-vfs-uri.c: Use defines instead of
        hard-coded '/' characters consistently.

2000-01-28  Elliot Lee  <sopwith@redhat.com>

	* libgnomevfs/gnome-vfs-configuration.c: Support reading multiple configuration files from multiple directories.
	* libgnomevfs/gnome-vfs-{configuration,private}.h: Move #defines from gnome-vfs-configuration.h to gnome-vfs-private.h
	* libgnomevfs/Makefile.am: Add defines of sysconfdir and libdir to cflags, remove prefix define. 
	* modules/Makefile.am: Rename modules.conf to default-modules.conf, and install into $(sysconfdir)/vfs/modules instead.

2000-01-27  Elliot Lee  <sopwith@redhat.com>

	* modules/pipe-method.[ch]: Implement a stupid one-cent trick pipe method - produces output of a pipe.

2000-01-27  John Sullivan  <sullivan@eazel.com>

	Moved, renamed, and made public GnomeVFSFileInfo-comparing routines.

	* libgnomevfs/gnome-vfs-file-info.c:
	* libgnomevfs/gnome-vfs-file-info.h:
	(gnome_vfs_file_info_compare_for_sort),
	(gnome_vfs_file_info_compare_for_sort_reversed):
	New functions, moved & renamed from static functions in
	gnome-vfs-directory-list.c. Changed third parameter from
	constgpointer to const GnomeVFSDirectorySortRule * for clarity.

	* libgnomevfs/gnome-vfs-directory-list.c:
	(compare_for_sort), (compare_for_sort_reversed): Removed.
	(gnome_vfs_directory_list_sort): Updated to reflect name change.

2000-01-18  Ettore Perazzoli  <ettore@helixcode.com>

	* libgnomevfs/gnome-vfs-directory.c (directory_visit_internal):
	Unref instead of destroying the file info.
	(directory_visit_internal): Likewise.
	(directory_visit_internal): Likewise.
	(directory_visit_internal): Likewise.
	(gnome_vfs_directory_visit_files_at_uri): Likewise.

	* libgnomevfs/gnome-vfs-directory-list.c (remove_entry): Unref
	instead of destroying the file info.
	(gnome_vfs_directory_list_destroy): Likewise.
	(load_from_handle): Likewise.

2000-01-18  John Sullivan  <sullivan@eazel.com>

	* libgnomevfs/gnome-vfs-directory-list.c: (compare_for_sort):
	Made sorting by mime type handle NULL mime types (e.g. directories).

2000-01-18  Federico Mena Quintero  <federico@helixcode.com>

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_destroy): Removed.
	It does not make sense to have this function, as we have proper
	reference counting of URIs.
	(gnome_vfs_uri_new): Use gnome_vfs_uri_unref() instead of
	destroy() for the new_uri.
	(gnome_vfs_uri_unref): Added a sanity check for the reference
	count.

2000-01-18  Elliot Lee  <sopwith@redhat.com>

	* configure.in: We want ORBit, not gnorba.

2000-01-16  John Sullivan  <sullivan@eazel.com>

	Split utils into public and private, and moved file-size-as-string
	method into new public utils.

	* libgnomevfs/gnome-vfs-private-utils.h:
	* libgnomevfs/gnome-vfs-private-utils.c:
	New files, containing most of what was in gnome-vfs-utils.h/c.

	* libgnomevfs/gnome-vfs-utils.h:	
	* libgnomevfs/gnome-vfs-utils.c:	
	Moved everything from here to gnome-vfs-private-utils.h/c, except...
	(gnome_vfs_size_as_string): Renamed to gnome_vfs_file_size_as_string,
	changed parameter from ulong to GnomeVFSFileSize, replaced 
	implementation with similar but slightly cleaner code written by Havoc
	in nautilus/src/file-manager/fm-directory-view.c

	* Makefile.am: Moved gnome-vfs-utils.h to public headers, added
	gnome-vfs-private-utils.h/.c to the build.

	* modules/http-method.c: (create_handle), (do_read): Updated all
	callers of gnome_vfs_size_as_string to reflect new name.

2000-01-16  Federico Mena Quintero  <federico@helixcode.com>

	* libgnomevfs-pthread/Makefile.am: Do not put $(VFS_LIBS) in the
	library LDADD.

2000-01-14  Darin Adler  <darin@eazel.com>

	* libgnomevfs/gnome-vfs-uri.h: libgnomevfs/gnome-vfs-uri.c:
	(gnome_vfs_uri_extract_short_name): Added a new function to get the
	short form of a uri. This is the same as the XPG version of basename,
	and the basename tool, but g_basename, gnome_vfs_uri_get_basename, and
	gnome_vfs_uri_extract_dirname use a different definition, where the
	basename of a uri that points to a directory with a trailing '/' is
	NULL. The short_name variant is useful when you want to know the name
	of a directory even though the uri might end in '/'.

2000-01-11  Darin Adler  <darin@eazel.com>

	* libgnomevfs-corba/gnome-vfs-slave-notify:
	(impl_Notify_dying): Changed the messages to use g_message instead
	of g_warning, since they are normal.

2000-01-11  Ettore Perazzoli  <ettore@helixcode.com>

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_get_basename): Do not
	strdup.

2000-01-06  Darin Adler  <darin@eazel.com>

	* libgnomevfs/gnome-vfs-backend.c: (gnome_vfs_async_open_uri):
	Implemented this missing routine.

2000-01-04  John Sullivan  <sullivan@eazel.com>

	* libgnomevfs/gnome-vfs-uri.c: (gnome-vfs-uri-new):
	Removed g_return_val_if_fail() for empty string case,
	since rest of routine handles empty string identically
	to any other bogus string.
	* libgnomevfs/gnome-vfs-ops.c: (gnome_vfs_get_file_info):
	Avoid calling gnome_vfs_uri_unref on NULL uri, to avoid
	g_return_if_fail.
	
2000-01-02  Tomasz Koczko  <kloczek@pld.org.pl>
        * configure.in, po/pl.po: added Polish translation
        (based on GNOME PL translation resources).

1999-12-30  Miguel de Icaza  <miguel@gnu.org>

	* libgnomevfs-corba/gnome-vfs-async-ops.c
	(corba_gnome_vfs_async_cancel): Removed C++ comment.

1999-12-29  Elliot Lee  <sopwith@redhat.com>

	* acconfig.h, libgnomevfs/gnome-vfs-backend.[ch],
	libgnomevfs/gnome-vfs-init.[ch], libgnomevfs-{pthread,corba}/*:
	Load the corba & pthread backends via gmodule instead of linking
	them in.
	* modules/*-method.c: Fix warnings.

1999-12-29  Jesus Bravo Alvarez  <jba@pobox.com>

	* configure.in: (ALL_LINGUAS) Added Galician (gl).

1999-12-28  Martin Norbck <d95mback@dtek.chalmers.se>

	* configure.in: Added sv to ALL_LINGUAS.
	
1999-12-28  Yuri Syrota  <rasta@renome.rovno.ua>

	* configure.in: Added "uk" to ALL_LINGUAS.
	
1999-12-27  Matthias Warkus  <mawa@iname.com>

	* configure.in: Added de to ALL_LINGUAS.

1999-12-21  Elliot Lee  <sopwith@redhat.com>

	* modules/ftp-method.c: Fix get_file_info so MIME type gets filled in.

	* modules/http-method.c: Don't pass the full URL, since this violates the HTTP spec.
	* libgnomevfs/gnome-vfs-uri.c: Properly implement handling of all the hide_options.

	* modules/http-method.c: Don't treat redirections as an error.

	This is not quite the "right" solution, since redirections are
	similar to symlinks, and this change doesn't check for the
	GNOME_VFS_FILE_INFO_FOLLOW_SYMLINKS flag. It's also possible that
	the MIME type returned from a redirection is different than the
	MIME type of the target.

1999-12-18  Havoc Pennington  <hp@pobox.com>

	* libgnomevfs/gnome-vfs-file-info.c (gnome_vfs_file_info_new):
	init refcount
	(gnome_vfs_file_info_init): init refcount
	(gnome_vfs_file_info_destroy): remove in favor of unref(), 
	with compatibility #define
	(gnome_vfs_file_info_unref): new function
	(gnome_vfs_file_info_ref): new function

	* libgnomevfs/gnome-vfs-types.h: Add refcount to GnomeVFSFileInfo.
	The refcount won't be used if the object is on the stack of course.
	
1999-12-16  Maciej Stachowiak  <mjs@eazel.com>

	* libgnomevfs-corba/gnome-vfs-async-ops.c,
	libgnomevfs-corba/gnome-vfs-slave-process.c : Avoid leaving around
	gnome-vfs-slave processes.

	* libgnomevfs/gnome-vfs-method.c (gnome_vfs_method_get): Avoid
	reinitializing the method table (nautilus was causing this to
	happen).
	
1999-12-16  Ettore Perazzoli  <ettore@helixcode.com>

	* libgnomevfs-corba/gnome-vfs-slave-notify.c
	(impl_Notify_load_directory): Actually set the list in the
	`GnomeVFSAsyncDirectoryOpInfo' struct when creating it from
	scratch.

1999-12-15  Elliot Lee  <sopwith@redhat.com>

	* libgnomevfs*/*.c: Fix warnings.
	* configure.in: Add --with-default-backend=...

1999-12-15  Darin Adler  <darin@eazel.com>

        * libgnomevfs/gnome-vfs-method.c: (load_module):
          Changed "Loading module" message to a g_message, since we
          want to ignore it, and we don't want to ignore g_warnings.
        * libgnomevfs/gnome-vfs-process.c: (wake_up):
          Changed "Process died" message to a g_message, since we
          want to ignore it, and we don't want to ignore g_warnings.
          (gnome_vfs_process_new): Changed "Process died" message to
          a g_message, since we want to ignore it, and we don't want
          to ignore g_warnings.

1999-12-15 Elliot Lee <sopwith@redhat.com>
	* libgnomevfs/gnome-vfs-ops.c: Sanity check for an invalid URI.
	* libgnomevfs/gnome-vfs-ops.[ch]: Use char instead of gchar.
	* libgnomevfs-corba/gnome-vfs-slave-process.c: Use g_message instead
	  of the incorrect g_warning.
	
1999-12-15  Darin Adler  <darin@eazel.com>

        * libgnomevfs/gnome-vfs-async-ops.h
        * libgnomevfs/gnome-vfs-context.c
        * libgnomevfs/gnome-vfs-directory-list.c
        * libgnomevfs/gnome-vfs-directory-list.h
        * libgnomevfs/gnome-vfs-directory.c
        * libgnomevfs/gnome-vfs-directory.h
        * libgnomevfs/gnome-vfs-messages.c
        * libgnomevfs/gnome-vfs-ops.c
        * libgnomevfs/gnome-vfs-ops.h
        * libgnomevfs/gnome-vfs-private-ops.c
        * libgnomevfs/gnome-vfs-private-ops.h
        * libgnomevfs/gnome-vfs-utils.c
        * libgnomevfs/gnome-vfs-utils.h
        * libgnomevfs-corba/gnome-vfs-async-ops.c
        * libgnomevfs-corba/gnome-vfs-slave-notify.c
        * libgnomevfs-pthread/gnome-vfs-async-ops.c
        * test/test-seek.c
          Made meta_keys[] take const char* instead of char*.
          Fixed some warnings.

1999-12-14  Darin Adler  <darin@eazel.com>

	* .cvsignore: Ignore more generated files.
	* libgnomevfs-corba/.cvsignore: Ignore more generated files.
	* modules/extfs/.cvsignore: Ignore more generated files.
	* test/.cvsignore: Ignore more generated files.

1999-12-14  Elliot Lee  <sopwith@redhat.com>

	* libgnomevfs-corba/gnome-vfs-async-ops.c: Implement gnome_vfs_async_load_directory_uri
	in terms of gnome_vfs_async_load_directory by converting the GnomeVFSURI to a string.
	Also, fill in the 'op_info' in gnome_vfs_async_load_directory.

1999-12-09  Havoc Pennington  <hp@redhat.com>

	* modules/gconf-method.c (vfs_module_init): Some updates, the
	GConf stuff is updated but it still doesn't match the latest 
	virtual table that modules are expected to have.

	* modules/Makefile.am (libgconf_la_LIBADD): add GTK_LIBS
	(INCLUDES): add GCONF_CFLAGS

	* configure.in (VFS_LIBS): use the located $GCONF_CONFIG instead
	of just "gconf-config", look for GTK to use the GConfClient
	GtkObject.

1999-12-08  Ramiro Estrugo  <ramiro@eazel.com>

	* modules/extfs/Makefile.am
	take out non existance extfs.ini from EXTRA_DIST to unbreak
 	'make dist'
	
1999-12-07  Havoc Pennington  <hp@pobox.com>

	* libgnomevfs-pthread/gnome-vfs-job.c (serve_channel_read): handle
	cancellation during the read, and then check for it before we
	write, and after each write.

	* libgnomevfs/gnome-vfs-iobuf.c (gnome_vfs_iobuf_read): Return
	immediately if the number of bytes to read is 0.

	* libgnomevfs-pthread/gnome-vfs-job.c (serve_channel_read):
	Rewrite this to use nonblocking writes; allows us to 
	keep reading while the main thread is blocked.

	* libgnomevfs/gnome-vfs-utils.c (gnome_vfs_size_to_string): fix
	operator precedence problem

	* libgnomevfs-pthread/gnome-vfs-job.c (serve_channel_write): Take
	a context argument, and then use gnome_vfs_write_cancellable() so
	status messages can trickle up. The messages are coming from the
	slave thread; so the status message callback setup is supposed to
	be thread safe. The one in Explorer is indeed.
	(serve_channel_read): Parallel change, add the context object.

1999-12-06  Havoc Pennington  <hp@pobox.com>

	* libgnomevfs-corba/gnome-vfs-slave-process.c
	(gnome_vfs_slave_process_new): Creates a context object.

	* libgnomevfs/gnome-vfs-async-ops.h
	(gnome_vfs_async_remove_status_callback): declare status callback
	add/remove functions.
	
	* libgnomevfs-pthread/gnome-vfs-async-ops.c
	(gnome_vfs_async_add_status_callback): implement status callback ops

	* libgnomevfs-corba/gnome-vfs-async-ops.c
	(gnome_vfs_async_remove_status_callback): implement status
	callback ops

	* libgnomevfs/gnome-vfs-messages.c: Add ID numbers for callback
	removal

	* modules/http-method.c (create_handle): Emit message about # of
	bytes to retrieve.
	(do_close): emit message saying "closing"
	(do_read): emit message about bytes read.

	* libgnomevfs/gnome-vfs-utils.c (gnome_vfs_size_to_string): New
	function, returns a string representing a size in bytes

	* libgnomevfs-pthread/gnome-vfs-job.h: replace cancellation with context

	* modules/gzip-method.c: replace cancellation with context
	
	* modules/bzip2-method.c: replace cancellation with context
	
	* modules/ftp-method.c: replace cancellation with context

	* modules/http-method.c: replace cancellation with context 

	* modules/file-method.c: replace cancellation with context 

	* modules/extfs-method.c: replace cancellation with context

1999-12-03  Havoc Pennington  <hp@pobox.com>

	* libgnomevfs/gnome-vfs-private-ops.h: replace cancellation with
	context

	* libgnomevfs/gnome-vfs-handle.h: replace cancellation with
	context

	* libgnomevfs/gnome-vfs-private-ops.c: replace cancellation with
	context

	* libgnomevfs/gnome-vfs-seekable.c: replace cancellation with
	context

	* libgnomevfs/gnome-vfs-directory.c: Replace cancellation with
	context

	* libgnomevfs/gnome-vfs-private.h: add gnome-vfs-context.h,
	include <config.h> too

	* libgnomevfs/gnome-vfs.h: add gnome-vfs-messages.h

	* libgnomevfs/gnome-vfs-private-types.h: typedef the
	GnomeVFSContext type; change GnomeVFSCancellation to
	GnomeVFSContext for all functions in the GnomeVFSMethod vtable

	* libgnomevfs/gnome-vfs-context.c,
	libgnomevfs/gnome-vfs-context.h: Proposed API for a context object
	to be passed to VFS module functions.

1999-12-04  Ettore Perazzoli  <ettore@gnu.org>

	* libgnomevfs-pthread/gnome-vfs-async-ops.c
	(gnome_vfs_async_cancel): Added comment about the need for freeing
	the handle.

1999-12-02  Havoc Pennington  <hp@pobox.com>

	* libgnomevfs/gnome-vfs-messages.c: all my filter predicates were
	backward

1999-12-02  Havoc Pennington  <hp@pobox.com>

	* libgnomevfs/gnome-vfs-messages.h,
	libgnomevfs/gnome-vfs-messages.c: New file, a simple data type to
	manage status-message callback lists. Untested, not in the build.	

1999-11-29  Elliot Lee  <sopwith@redhat.com>

	* libgnomevfs-corba/*.c: Don't __alloc() buffers for temporary usage only.
	* libgnomevfs/gnome-vfs-cancellation.c (gnome_vfs_cancellation_cancel): Now guaranteed signal-safe.

	* libgnomevfs/gnome-vfs-method.c: If init_path_list() has already been called, return TRUE to indicate success.

	* libgnomevfs/gnome-vfs-result.c: I declare the errno->GnomeVFSResult translation function "complete enough".

1999-11-24  Elliot Lee  <sopwith@redhat.com>

	* modules/Makefile.am: Try using $(GLIB_LIBS) to pick up the -L thingie for -lghttp
	* Makefile.am: Remove 'intl' dir from build.

1999-11-19  Kjartan Maraas  <kmaraas@online.no>

	* configure.in: Added "no" to ALL_LINGUAS.
	
1999-11-18  Ettore Perazzoli  <ettore@gnu.org>

	* modules/file-method.c: Removed the static function prototypes
	and moved the method struct to the end of the file so that they
	are not needed anymore.
	(rename_helper): New helper function, cut & paste from
	`do_move()'.
	(do_move): Use it.
	(do_set_file_info): New function, implementing the `set_file_info'
	method.
	(do_make_directory): Use `MAKE_ABSOLUTE' to make sure the path we
	use is absolute.
	(do_move): Likewise.
	(do_unlink): Likewise.
	(do_check_same_fs): Likewise.
	(directory_handle_new): Likewise.
	(do_get_file_info): Likewise.
	(do_create): Likewise (forgot to use `file_name' instead of
	`uri->text' here).

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_check_same_fs): Check
	that `same_fs_return' is not NULL.

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_set_file_info_uri): New
	function.
	(gnome_vfs_set_file_info): New function.
	* libgnomevfs/gnome-vfs-ops.h: Prototypes here.

	* libgnomevfs/gnome-vfs-private-ops.c
	(gnome_vfs_set_file_info_cancellable): New function.
	* libgnomevfs/gnome-vfs-private-ops.h: Prototype here.

	* libgnomevfs/gnome-vfs-private-types.h: New function typedef
	`GnomeVFSMethodSetFileInfo'.  New member `set_file_info' in
	`GnomeVFSMethod'.

	* libgnomevfs/gnome-vfs-types.h: New enum
	`GnomeVFSSetFileInfoMask'.

	* libgnomevfs/gnome-vfs-types.h: Renamed
	`GNOME_VFS_FILE_INFO_NOOPTION' to `GNOME_VFS_FILE_INFO_DEFAULT'.
	* libgnomevfs/gnome-vfs-xfer.c (create_xfer_file_list): Updated
	accordingly.

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_extract_dirname): New
	function.

1999-11-12  Ettore Perazzoli  <ettore@gnu.org>

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_append_path): Make sure
	`uri_string' is always freed.

	* libgnomevfs/gnome-vfs-configuration.c (parse_file): Free the
	line buffer on exit.

1999-11-08  Ettore Perazzoli  <ettore@gnu.org>

	* libgnomevfs/gnome-vfs-xfer.c (xfer_create_target): Set `retry'
	to `FALSE' at the start of the `while' loop.
	(xfer_open_source): Likewise.
	(xfer_file): Likewise.
	(copy_directory): Likewise.
	(move_file): Likewise.

1999-10-29 Elliot Lee <sopwith@redhat.com>

	* test/test-somethingorother.c: Make it use the file info flags
	instead of ->is_symlink.
	
	* libgnomevfs/Makefile.am: Put our build tree on the include path
	before installed stuff.

1999-10-23  Ettore Perazzoli  <ettore@gnu.org>

	* libgnomevfs/gnome-vfs-directory-filter.c
	(gnome_vfs_directory_filter_apply): If `filter' is NULL, just
	return `TRUE'.

	* libgnomevfs/gnome-vfs-iobuf.c (gnome_vfs_iobuf_read): Only read
	as much bytes as the stream gives us; not more.

	* modules/ftp-method.c (_ftpfs_read_directory): Set the "local"
	flag in the info to `FALSE'.
	(fill_file_info): Likewise.

	* modules/file-method.c (get_stat_info): Set the "local" flag to
	`TRUE'.
	(get_stat_info_from_handle): Likewise.

	* modules/extfs-method.c (read_directory_list): Set the "local"
	flag in the info object to FALSE.

	* modules/module-shared.c (gnome_vfs_stat_to_file_info): Do not
	set the "local" flag anymore.

	* modules/ftp-method.c (print_vfs_message): Made static.
	(insert_dots): Use `gnome_vfs_parse_ls_lga()' instead of
	`vfs_parse_ls_lga()', which does not exist anymore.
	(retrieve_dir): Likewise.

	* libgnomevfs/gnome-vfs-directory.c (directory_visit_internal):
	Updated to match the `GnomeVFSFileInfo' changes.
	* modules/module-shared.c (gnome_vfs_stat_to_file_info): Likewise.
	* modules/file-method.c (get_stat_info): Likewise.
	* modules/http-method.c (get_file_info_from_http_handle): Likewise.
	* modules/ftp-method.c (fill_file_info): Likewise.
	(_ftpfs_read_directory): Likewise.
	* test/gnome-file-selection/gnome-file-selection.c
	(populate_callback): Likewise.
	* test/test-directory.c (print_list): Likewise.
	* test/test-directory-visit.c (directory_visit_callback): Likewise.
	* test/test-info.c (print_file_info): Likewise.

	* libgnomevfs/gnome-vfs-file-info.h (GNOME_VFS_FILE_INFO_SYMLINK):
	New macro.
	(GNOME_VFS_FILE_INFO_LOCAL): New macro.
	(GNOME_VFS_FILE_INFO_SUID): New macro.
	(GNOME_VFS_FILE_INFO_SGID): New macro.
	(GNOME_VFS_FILE_INFO_STICKY): New macro.
	(GNOME_VFS_FILE_INFO_SET_SYMLINK): New macro.
	(GNOME_VFS_FILE_INFO_SET_LOCAL): New macro.
	(GNOME_VFS_FILE_INFO_SET_SUID): New macro.
	(GNOME_VFS_FILE_INFO_SET_SGID): New macro.
	(GNOME_VFS_FILE_INFO_SET_STICKY): New macro.

	* libgnomevfs/gnome-vfs-types.h: New enum
	`GnomeVFSFileFlags'.
	(struct _GnomeVFSFileInfo): Replaced the various gboolean 1-bit flags
	with a single `GnomeVFSFileFlags' member called `flags'.

	* test/test-info.c (main): Follow links.

	* modules/file-method.c (read_link): Zero-terminate the returned
	string.

	* modules/module-shared.c (gnome_vfs_stat_to_file_info):
	Unconditionally set the type to `GNOME_VFS_FILE_TYPE_UNKNOWN' if
	all else fails, even if `file_info' refers to a symlink.

	* modules/ftp-method.c: #include <gnome.h>, "gnome-vfs.h" and
	"gnome-vfs-private.h".

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_get_file_info): If the
	`get_file_info' function is not implemented, return
	`GNOME_VFS_ERROR_NOTSUPPORTED'.

	* test/test-info.c: New program for testing the
	`gnome_vfs_get_file_info()' API call.

	* libgnomevfs/gnome-vfs-iobuf.c (gnome_vfs_iobuf_read): Argh.
	Don't put more than `bytes' bytes in `buffer'!

1999-10-22  Ettore Perazzoli  <ettore@gnu.org>

	* libgnomevfs/gnome-vfs-iobuf.c (gnome_vfs_iobuf_read): Do not use
	`bytes_read' if NULL.
	(gnome_vfs_iobuf_write): Likewise with `bytes_written'.
	(flush): Flush output, not input.  :-P
	(refill_input_buffer): Changed to return a `GnomeVFSResult'.
	Return `GNOME_VFS_ERROR_EOF' at EOF.
	(gnome_vfs_iobuf_read): Updated accordingly.

	* libgnomevfs/gnome-vfs-method.c (load_module): Don't check for
	the `create' function anymore.

	* libgnomevfs/gnome-vfs-private.h: #include
	"gnome-vfs-inet-connection.h".

	* libgnomevfs/gnome-vfs-inet-connection.c: New file implementing
	Internet connections.
	* libgnomevfs/gnome-vfs-inet-connection.h: Corresponding header file.

	* libgnomevfs/gnome-vfs-private-types.h: New opaque typedef
	`GnomeVFSInetConnection'.

	* modules/Makefile.am: Compile the HTTP method again.

	* modules/http-method.c: New re-implementation from scratch, with
	great help from the GNU Wget sources.
	* modules/http-method.h: Corresponding header file.

	* libgnomevfs/gnome-vfs-utils.c: #include <ctype.h>.
	(gnome_vfs_atotm): New function, from GNU Wget.
	* libgnomevfs/gnome-vfs-utils.h (gnome_vfs_atotm): Prototype here.

1999-10-21  Ettore Perazzoli  <ettore@gnu.org>

	* libgnomevfs/gnome-vfs-iobuf.c (refill_input_buffer): New helper
	function.
	(gnome_vfs_iobuf_read): Changed to use it.
	(gnome_vfs_iobuf_peekc): New function.

	* libgnomevfs/gnome-vfs-private-types.h: New opaque
	`GnomeVFSIOBuf' typedef for the struct defined in
	`gnome-vfs-iobuf.c'.

	* libgnomevfs/gnome-vfs-private.h: #include "gnome-vfs-iobuf.h".

	* libgnomevfs/gnome-vfs-iobuf.h: New header file for
	`gnome-vfs-iobuf.c'.

	* libgnomevfs/gnome-vfs-iobuf.c: New file implementing buffered
	I/O on top of low-level Unix file descriptors.

1999-10-20  Ettore Perazzoli  <ettore@gnu.org>

	* modules/extfs-method.c (match): Apply filter.
	(vfs_module_shutdown): Close all the handles.
	(do_close): Remove the handle from the handle list.

	* README: Added some info about the `vfs-run' wrapper.

	* configure.in: Subst `@TOP_BUILDDIR@' with the path to the top
	building directory.  Build `$(top_builddir)/test/vfs-run' from
	`$(top_srcdir)/test/vfs-run.in'.

	* test/vfs-run.in (GNOME_VFS_MODULE_PATH): New file.

	* libgnomevfs/gnome-vfs-method.c (gnome_vfs_method_get): Set the
	effective UID/GID to the real UID/GID when loading the module, and
	restore them afterwards.  This should prevent exploits to
	setuid/setgid applications by using `GNOME_VFS_MODULE_PATH'.
	(module_get_sane_handle): Renamed to `load_module'.  Added
	debugging message displaying the complete name of the module that
	is being loaded.

	* libgnomevfs/gnome-vfs-method.c: New variable `module_path_list'.
	(init_hash_table): New helper function.
	(gnome_vfs_method_init): Use it.
	(init_path_list): New helper function to initialize
	`module_path_list' through the `GNOME_VFS_MODULE_PATH' environment
	variable.
	(install_path_list): New helper function used by `init_path_list'.
	(gnome_vfs_method_init): Use it.
	(load_module_in_path_list): New function to search for a module in
	the path list.
	(gnome_vfs_method_get): Use it.
	(module_get_sane_handle): Made const-safe.

1999-10-19  Ettore Perazzoli  <ettore@gnu.org>

	* modules/extfs-method.c (read_directory_list): New parameter
	`info_options'.  If the `GNOME_VFS_FILE_INFO_GETMIMETYPE' bit is
	set, set the MIME type in the file information struct according to
	the file name.
	(do_open_directory): Updated accordingly.

	* modules/ftp-method.c: Do not #include "parse.h" anymore.

	* libgnomevfs/gnome-vfs-cancellation.c [HAVE_CONFIG_H]: #include
	<config.h>.

	* modules/Makefile.am (CPPFLAGS): #define `_GNU_SOURCE'.
	* libgnomevfs-pthread/Makefile.am (CPPFLAGS): Likewise.
	* libgnomevfs-corba/Makefile.am (CPPFLAGS): Likewise.
	* libgnomevfs/Makefile.am (CPPFLAGS): Likewise.

	* modules/extfs-method.c: Implemented directory reading.

	* modules/extfs-method.c (get_script_path): New helper function.
	(do_open): Use it.
	(ERROR_IF_NOT_LOCAL): New macro.
	(do_open): Use it.

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_hequal): New function.
	(gnome_vfs_uri_hash): New function.
	* libgnomevfs/gnome-vfs-uri.h (gnome_vfs_uri_hash): Prototypes here.

	* modules/ftp-method.c (resolve_symlink_with_ls_options): Use
	`gnome_vfs_parse_ls_lga()' instead of `vfs_parse_ls_lga()', which
	does not exist anymore.

	* modules/parse.c: Removed.
	* modules/parse.h: Removed.

	* libgnomevfs/gnome-vfs-parse-ls.c: Removed global variables
	`columns', `column_ptr'.
	(vfs_split_text): New parameters `columns', `column_ptr'.
	(gnome_vfs_vfs_parse_ls_lga): Updated accordingly.
	(is_num): Get a string as the single parameter.
	(gnome_vfs_vfs_parse_ls_lga): Updated accordingly.
	(vfs_parse_filedate): New parameter `columns'.
	(gnome_vfs_vfs_parse_ls_lga): Updated accordingly.

	* configure.in: Check for `getdelim' and use our version if 
	not available.

	* libgnomevfs/Makefile.am: Added `getdelim' to `EXTRA_DIST'.

	* libgnomevfs/gnome-vfs-private.h [! HAVE_GETDELIM]: Declare
	prototype for `getdelim()'.

	* libgnomevfs/getdelim.c: New file, implementing `getdelim()' for
	non-GNU systems.

1999-10-18  Ettore Perazzoli  <ettore@gnu.org>

	* libgnomevfs/gnome-vfs-parse-ls.c: New file, derived from former
	`modules/parse.c'.  Reindented; made all the helper functions
	static; glibified a bit.
	* libgnomevfs/gnome-vfs-parse-ls.h: Corresponding header file.

1999-10-17  Ettore Perazzoli  <ettore@gnu.org>

	* modules/extfs-method.c (do_open): If the return value from the
	script is nonzero, return `GNOME_VFS_ERROR_NOTFOUND'.  Check that
	the parent URI is accessed through the `file' method.  Completed
	parameters passed to the extfs script.

	* modules/modules.conf: Added entries for `extfs'.

	* modules/extfs/README: New file.
	* modules/extfs/a: New file.
	* modules/extfs/deb.in: New file.
	* modules/extfs/hp48: New file.
	* modules/extfs/mailfs: New file.
	* modules/extfs/patchfs: New file.
	* modules/extfs/rpm: New file.
	* modules/extfs/rpms: New file.
	* modules/extfs/trpm: New file.
	* modules/extfs/ar.in: New file.
	* modules/extfs/arj: New file.
	* modules/extfs/cpio.in: New file.
	* modules/extfs/lha.in: New file.
	* modules/extfs/rar.in: New file.
	* modules/extfs/zip.in: New file.
	* modules/extfs/zoo.in: New file.
	* configure.in: Generate scripts from the `.in' files.

	* configure.in: Check for `awk' using `AC_PROG_AWK'.

	* modules/extfs: New subdirectory.
	* modules/extfs/Makefile.am: New file.
	* modules/Makefile.am: Updated accordingly.

	* modules/extfs-method.c: Replaced member `fd' in `ExtfsHandle'
	with `vfs_handle' (i.e. we use a VFS handle instead of a UNIX file
	descriptor).  #include <errno.h>.
	(VFS_HANDLE): New helper macro.
	(extfs_handle_close): Updated accordingly.  Return value changed
	from `void' to `GnomeVFSResult', so that we can return the result
	of the `close' operation.  Also, remove `local_path'.
	(do_open): Updated accordingly.  Also updated for the new version
	of `gnome_vfs_create_temp()'.
	(do_close): Implementated (`close' operation).
	(do_read): Implemented (`read' operation).
	(do_tell): Implemented (`tell') operation.
	(do_write): Return `GNOME_VFS_ERROR_READONLYFS' instead of
	`GNOME_VFS_ERROR_NOTSUPPORTED'.

	* libgnomevfs/gnome-vfs-utils.c (gnome_vfs_create_temp): Changed
	so that it returns a GnomeVFSHandle instead of a plain Unix file
	descriptor.  Abort if creating the file fails with something
	different from a "file exists" error.

1999-10-15  Ettore Perazzoli  <ettore@gnu.org>

	* modules/Makefile.am (CPPFLAGS): #define `PREFIX'.

	* libgnomevfs/gnome-vfs-process.c (gnome_vfs_process_new): Use
	`gnome_fs_forkexec()'.

	* libgnomevfs/gnome-vfs-process.c (get_max_fds): Removed.
	(shut_down_file_descriptors): Removed.
	* libgnomevfs/gnome-vfs-utils.c: Moved here.

	* libgnomevfs/gnome-vfs-utils.c
	(gnome_vfs_process_run_cancellable): New function.
	(gnome_vfs_forkexec): New function, cut & paste from
	`gnome_vfs_process_new()'.
	(gnome_vfs_create_temp): New function.
	* libgnomevfs/gnome-vfs-utils.h: Prototypes here.

	* libgnomevfs/gnome-vfs-process.c: #include "gnome-vfs.h" and
	"gnome-vfs-private.h", instead of just "gnome-vfs-process.h".

	* libgnomevfs/gnome-vfs-process.h
	(gnome_vfs_process_run_cancellable): Prototype.

	* libgnomevfs/gnome-vfs-process.h: New enum
	`GnomeVFSProcessRunResult'.

1999-10-14  Ettore Perazzoli  <ettore@gnu.org>

	* modules/extfs-method.c: New file, implementing MC-style extfs.
	* modules/extfs-method.h: Corresponding header.
	* modules/Makefile.am: Compile it in `libextfs.so'.

	* libgnomevfs/gnome-vfs-xfer.c (gnome_vfs_xfer_uri): Report
	progress for the operation of deleting the source directories.
	Free progress info at each iteration.

	* libgnomevfs/gnome-vfs-types.h: New GnomeVFSXferPhase value
	`GNOME_VFS_XFER_PHASE_DELETESOURCE'.

	* libgnomevfs/gnome-vfs-xfer.c (gnome_vfs_xfer_uri): Report
	`GNOME_VFS_XFER_PHASE_FILECOMPLETED' for the last file too.
	(remove_directory): New helper function.
	(gnome_vfs_xfer_uri): Use it.

	* libgnomevfs/gnome-vfs-xfer.c (fast_move): New function,
	implementing fast moving through `gnome_vfs_move()'.
	(gnome_vfs_xfer_uri): Use it if we are transferring files between
	two directories on the same file system and we are requested to
	remove the sources.

1999-10-13  Ettore Perazzoli  <ettore@gnu.org>

	* libgnomevfs/gnome-vfs-xfer.c (init_progress): New helper
	function.
	(gnome_vfs_xfer_uri): Use it.  Leak fix: free progress info if the
	progress callback returns `FALSE' in the `READYTOGO' or `XFERRING'
	phases.

	* modules/Makefile.am: Add `modules.conf' to `EXTRA_DIST'.

	* libgnomevfs/gnome-vfs-cancellation.c
	(gnome_vfs_cancellation_check): Do not complain if `cancellation'
	is NULL.

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_move_uri): New function.
	(gnome_vfs_move): New function.
	(gnome_vfs_check_same_fs_uris): New function.
	(gnome_vfs_check_same_fs): New function.
	* libgnomevfs/gnome-vfs-ops.h (gnome_vfs_move): Prototypes here.

	* libgnomevfs/gnome-vfs-private-ops.c
	(gnome_vfs_move_uri_cancellable): New function.
	(gnome_vfs_check_same_fs_uris_cancellable): New function.
	* libgnomevfs/gnome-vfs-private-ops.h
	(gnome_vfs_move_uri_cancellable): Prototypes here.

	* modules/file-method.c (do_check_same_fs): New function,
	installed as the `check_same_fs' op implementation.

	* libgnomevfs/gnome-vfs-private-types.h: New type
	`GnomeVFSCheckSameFSFunc'.  New member `check_same_fs' in
	`GnomeVFSMethod'.

	* modules/file-method.c (do_move): New function, implementing the
	`move' operation.

	* libgnomevfs/gnome-vfs-private-types.h: `GnomeVFSMethodRenameFunc'
	removed; replaced by `GnomeVFSMethodMoveFunc' with different
	parameters.  `rename' member in `struct _GnomeVFSMethod' removed;
	replaced by `move'.

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_get_basename): New
	function.
	* libgnomevfs/gnome-vfs-uri.h: Prototype here.

	* test/test-xfer.c: New file, implementing a test for the xfer
	functionality.
	* test/Makefile.am: Compile it as `test-xfer'.

	* test/test-copy.c: Removed.

	* libgnomevfs/gnome-vfs-xfer.c (gnome_vfs_xfer_uri): Honour
	`GNOME_VFS_XFER_REMOVESOURCE'.  This needs to be optimized for the
	"files are in the same file system" case of course.

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_open): Doc'ed.
	(gnome_vfs_open_uri): Doc'ed.
	(gnome_vfs_create): Doc'ed.
	(gnome_vfs_create_uri): Doc'ed.
	(gnome_vfs_close): Doc'ed.
	(gnome_vfs_read): Doc'ed.
	(gnome_vfs_write): Doc'ed.
	(gnome_vfs_seek): Doc'ed.
	(gnome_vfs_tell): Doc'ed.
	(gnome_vfs_get_file_info): Doc'ed.
	(gnome_vfs_get_file_info_uri): Doc'ed.
	(gnome_vfs_get_file_info_from_handle): Doc'ed.
	(gnome_vfs_make_directory_for_uri): Doc'ed.
	(gnome_vfs_make_directory): Doc'ed.
	(gnome_vfs_remove_directory_from_uri): Doc'ed.
	(gnome_vfs_remove_directory): Doc'ed.
	(gnome_vfs_unlink_from_uri): Doc'ed.
	(gnome_vfs_unlink): Doc'ed.

	* test/test-directory.c (main): Local variable `args' made const.

	* test/test-directory.c (filter_list): `#if 0'ed out just to make
	the compiler happy.

	* libgnomevfs/gnome-vfs-result.c (gnome_vfs_result_from_errno):
	Re-indented to make sorting easier.  Convert `EBUSY', `ENOTEMPTY',
	`EROFS', `EMLINK', `EXDEV', `EFAULT', `ELOOP', as well, using the
	new GnomeVFSResult values.

	* libgnomevfs/gnome-vfs-types.h: New errors
	`GNOME_VFS_ERROR_DIRECTORYBUSY', `GNOME_VFS_ERROR_DIRECTORYNOTEMPTY',
	`GNOME_VFS_ERROR_TOOMANYLINKS', `GNOME_VFS_ERROR_READONLYFS',
	`GNOME_VFS_ERROR_NOTSAMEFS', `GNOME_VFS_ERROR_NAMETOOLONG'.
	* libgnomevfs/gnome-vfs-result.c: Added corresponding string
	descriptions.

1999-10-12  Ettore Perazzoli  <ettore@gnu.org>

	* modules/file-method.c (do_open): When getting `EINTR', do not
	restart the operation if a cancellation is pending.
	(do_create): Likewise.
	(do_close): Likewise.
	(do_read): Likewise.

	* libgnomevfs-pthread/gnome-vfs-job.c (dispatch_job_callback):
	Slightly made cleaner.

	* TODO: Updated.

	* libgnomevfs-pthread/gnome-vfs-job.c (execute_open): Use
	cancellable version of the primitive.
	(execute_open_as_channel): Likewise.
	(execute_create): Likewise.
	(execute_create_as_channel): Likewise.
	(execute_close): Likewise
	(execute_read): Likewise.

	* libgnomevfs/gnome-vfs-configuration.c [HAVE_CONFIG_H]: #include
	<config.h>.

	* libgnomevfs/gnome-vfs-private.h: #include "gnome-vfs-private-ops.h".

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_open_uri): Made a simple
	wrapper for the cancellable version in `gnome-vfs-private-ops.c'.
	(gnome_vfs_create_uri): Likewise.
	(gnome_vfs_close): Likewise.
	(gnome_vfs_read): Likewise.
	(gnome_vfs_write): Likewise.
	(gnome_vfs_seek): Likewise.
	(gnome_vfs_get_file_info_uri): Likewise.
	(gnome_vfs_get_file_info_from_handle): Likewise.
	(gnome_vfs_make_directory_for_uri): Likewise.
	(gnome_vfs_remove_directory_from_uri): Likewise.
	(gnome_vfs_unlink_from_uri): Likewise.

	* libgnomevfs/gnome-vfs-private-ops.h: New file.

	* libgnomevfs/gnome-vfs-private-ops.c: New file.

	* libgnomevfs/gnome-vfs-result.c: New error description for
	`GNOME_VFS_ERROR_CANCELLED'.

	* libgnomevfs/gnome-vfs-types.h: New error `GNOME_VFS_ERROR_CANCELLED'.

	* libgnomevfs-pthread/gnome-vfs-job.c (gnome_vfs_job_cancel): Use
	the new `cancellation' member instead of `cancelled'.
	(dispatch_job_callback): Likewise.
	(gnome_vfs_job_new): Initialize `cancellation'.
	(gnome_vfs_job_destroy): Destroy it.
	(execute_open): Do not check `cancelled' anymore.
	(execute_create): Likewise.
	(execute_load_directory_not_sorted): Likewise.
	(execute_load_directory_sorted): Likewise.
	(xfer_callback): Likewise.

	* libgnomevfs-pthread/gnome-vfs-job.h (struct _GnomeVFSJob):
	Removed member `cancelled'.  Replaced by new member
	`cancellation', of type `GnomeVFSCancellation'.

	* modules/bzip2-method.c: Updated all the method implementation
	functions to accept the `cancellation' parameter.  It is not
	honoured yet though.
	* modules/file-method.c: Likewise.
	* modules/gzip-method.c: Likewise.
	* modules/http-method.c: Likewise.

	* libgnomevfs/gnome-vfs-seekable.c: Updated to accept the
	`cancellation' parameter.  It does not honour it yet though.
	(read_file): Pass `NULL' as the `cancellation' parameter for
	`read'.
	(write_file): Likewise for `write'.
	(do_close): Likewise for `close'.

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_open_uri): Pass `NULL' as
	the `cancellation' parameter to the `open' implementation.
	(gnome_vfs_open_uri): Likewise.
	(gnome_vfs_create_uri): Pass `NULL' as the `cancellation'
	parameter to the `create' implementation.
	(gnome_vfs_close): Pass `NULL' as the `cancellation' parameter to
	`gnome_vfs_handle_do_close()'.
	(gnome_vfs_read): Likewise with `gnome_vfs_handle_do_read()'.
	(gnome_vfs_write): Likewise with `gnome_vfs_handle_do_write()'.
	(gnome_vfs_seek): Likewise with `gnome_vfs_handle_do_seek()'.
	(gnome_vfs_get_file_info): Likewise with the `get_file_info'
	implementation.
	(gnome_vfs_get_file_info_uri): Likewise.
	(gnome_vfs_get_file_info_from_handle): Likewise with
	`gnome_vfs_handle_do_get_file_info()'.
	(gnome_vfs_make_directory_for_uri): Likewise with the
	`make_directory' implementation.
	(gnome_vfs_make_directory): Likewise.
	(gnome_vfs_remove_directory_from_uri): Likewise with the
	`remove_directory'implementation.
	(gnome_vfs_unlink_from_uri): Likewise for `unlink'.

	* libgnomevfs/gnome-vfs-handle.c (gnome_vfs_handle_do_close): New
	parameter `cancellation'.
	(gnome_vfs_handle_do_read): Likewise.
	(gnome_vfs_handle_do_write): Likewise.
	(gnome_vfs_handle_do_seek): Likewise.
	(gnome_vfs_handle_do_get_file_info): Likewise.
	* libgnomevfs/gnome-vfs-handle.h: Updated prototypes accordingly.

	* libgnomevfs/gnome-vfs-directory.c (open): New parameter
	`cancellation'.
	(open_from_uri): Likewise.  Pass it to the `open_directory'
	implementation.
	(gnome_vfs_directory_open): Updated accordingly.
	(gnome_vfs_directory_open_from_uri): Update accordingly.
	(gnome_vfs_directory_read_next): Pass `NULL' as the `cancellation'
	parameter in the call to the `read_directory' implementation.
	(gnome_vfs_directory_close): Pass `NULL' as the `cancellation'
	parameter in the call to the `close_directory' implementation.

	* libgnomevfs/gnome-vfs-private-types.h: New opaque typedef
	`GnomeVFSCancellation'.  Added new `cancellation' parameter to all
	the method implementation typedefs.

	* libgnomevfs/gnome-vfs-private.h: #include
	"gnome-vfs-cancellation.h".

	* libgnomevfs/gnome-vfs-cancellation.c: New file, implementing
	cancellation for the VFS method implementations.

	* libgnomevfs/gnome-vfs-cancellation.h: New file.

	* modules/modules.conf: Added `ugzip' for compatibility with the
	Midnight Commander's VFS.

	* libgnomevfs/gnome-vfs-configuration.c (parse_line): Set
	`method_start' again after saving a method name.

1999-10-11  Ettore Perazzoli  <ettore@gnu.org>

	* test/test-sync.c (main): Abort reporting an error if
	`gnome_vfs_uri_new()' returns NULL.

	* modules/modules.conf: New file: configuration for the current VFS
	modules.
	* modules/Makefile.am: Install it in the `modulesdir'.

	* libgnomevfs/gnome-vfs-method.c (gnome_vfs_method_get): Use
	`gnome_vfs_configuration_get_module_path()' to retrieve the module
	name.  This also fixes a memory leak introduced by Michael's
	commit of 1999-08-31.

	* libgnomevfs/gnome-vfs-init.c (gnome_vfs_init): Initialize the
	configuration system by calling `gnome_vfs_configuration_init()'.

	* libgnomevfs/gnome-vfs-constants.h: New constant
	`GNOME_VFS_MODULE_CFGFILE', `GNOME_VFS_MODULE_DIR'.

	* libgnomevfs/gnome-vfs-private.h: #include
	"gnome-vfs-configuration.h".

	* libgnomevfs/gnome-vfs-configuration.c: New file.

	* libgnomevfs/gnome-vfs-configuration.h: New file.

1999-10-10  Ettore Perazzoli  <ettore@gnu.org>

	* libgnomevfs/gnome-vfs-file-info.c: Doc'ed.

	* libgnomevfs/gnome-vfs-directory.c: Doc'ed.

	* libgnomevfs/gnome-vfs-directory-list.c: Doc'ed.

	* libgnomevfs/gnome-vfs-directory-filter.c: Doc'ed.

	* doc/writing-modules.sgml: New file.

1999-10-08  Ettore Perazzoli  <ettore@gnu.org>

	* modules/Makefile.am (CPPFLAGS): #define
	`_POSIX_PTHREAD_SEMANTICS'.
	* libgnomevfs/Makefile.am (CPPFLAGS): Likewise.

	* libgnomevfs-corba/gnome-vfs-slave-notify.c: #define `SUN_LEN()'
	if not already #defined.

	* libgnomevfs-corba/gnome-vfs-slave.c (setup_and_serve_channel):
	Change `socklen_t' into `int'.
	(setup_and_serve_channel): Use `[AP]F_UNIX' instead of
	`[AP]F_LOCAL' if the latter are not available.

	* libgnomevfs-corba/gnome-vfs-slave-process.c: #include
	<sys/types.h> first, <sys/socket.h> afterwards as pointed out by
	Michael.
	* libgnomevfs-corba/gnome-vfs-slave-notify.c: Likewise.

1999-10-07  Ettore Perazzoli  <ettore@gnu.org>

	* libgnomevfs/gnome-vfs-process.c: If the
	`GNOME_VFS_PROCESS_SETSID' option is set, call `setsid()'
	after forking and calling the user-specified function.

	* libgnomevfs/gnome-vfs-private.h: Do not #include
	"gnome-vfs-process.h".

	* libgnomevfs/gnome-vfs.h: #include "gnome-vfs-process.h".  This
	makes the GnomeVFSProcess stuff public, thus making my work on the
	file manager slightly easier.  It should not be public in the
	final version though; instead, I would like to have something like
	this in glib or gnome-libs.

	* libgnomevfs/Makefile.am: Install `gnome-vfs-process.h'.

	* libgnomevfs/gnome-vfs-process.h (gnome_vfs_process_new): Update
	prototype.

	* libgnomevfs/gnome-vfs-process.c (gnome_vfs_process_new): New
	parameter `options' instead of `use_search_path' and
	`close_file_descriptors'.
	* libgnomevfs-corba/gnome-vfs-slave-launch.c
	(gnome_vfs_slave_launch): Updated accordingly.

	* libgnomevfs/gnome-vfs-process.h: New enum
	`GnomeVFSProcessOptions'.

	* libgnomevfs/gnome-vfs-types.h: New value
	`GNOME_VFS_URI_HIDE_TOPLEVEL_METHOD' in `GnomeVFSURIHideOptions'.
	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_to_string): Honour
	it.

1999-10-07  Miguel de Icaza  <miguel@gnu.org>

	* modules/ftp-method.c (linear_read): Close first to comply to
	RFC959.

1999-10-04  Ettore Perazzoli  <ettore@comm2000.it>

	* modules/module-shared.c (gnome_vfs_set_meta_for_list): Use
	`gnome_vfs_set_meta()' instead of `set_meta()'.

	* libgnomevfs/gnome-vfs-seekable.c (init_seek): Removed local
	variable `txt_uri'.

	* libgnomevfs-corba/gnome-vfs-slave.c (load_directory_sorted):
	Updated to use `gnome_vfs_directory_list_load()' instead of
	`gnome_vfs_directory_load()'.
	* libgnomevfs-pthread/gnome-vfs-job.c
	(execute_load_directory_sorted):  Likewise.
	* test/test-directory.c (main): Likewise.

	* libgnomevfs/gnome-vfs-directory-list.c
	(gnome_vfs_directory_list_load): New version of
	`gnome_vfs_directory_load', for consistency.
	(gnome_vfs_directory_list_load_from_uri): Likewise for
	`gnome_vfs_directory_load_from_uri'.

	* libgnomevfs/gnome-vfs-directory.c (gnome_vfs_directory_load):
	Removed.
	(gnome_vfs_directory_load_from_uri): Removed.
	(gnome_vfs_uri_append_path): If the original URI is empty, return
	the URI from the new path.

1999-09-30  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs/gnome-vfs-uri.c (my_streq): New function.
	(compare_elements): Use it instead of `strcmp' so that it works
	even with NULL fields.
	(gnome_vfs_uri_equal): Likewise.

1999-09-29  Rodrigo Stulzer Lopes <rodrigo@conectiva.com.br>

	* configure.in: add pt_BR to ALL_LINGUAS

1999-09-29  Ettore Perazzoli  <ettore@comm2000.it>

	* modules/ftp-method.c (MUTEX_LOCK): New macro to lock a mutex.
	Defined to empty if `G_THREADS_ENABLED' is not defined.
	(MUTEX_UNLOCK): New macro to unlock a mutex.  Defined to empty if
	`G_THREADS_ENABLED' is not defined.
	(ftpfs_connection_new) [G_THREADS_ENABLED]: Initialize
	`access_mutex'.
	(ftpfs_connection_unref): Perform locking.  Free the lock if
	refcounting is zero.

	* modules/ftp-method.h [G_THREADS_ENABLED]: New member
	`access_lock' in `ftpfs_connection_t'.

	* modules/ftp-method.c: Define a static lock for
	`connections_hash'.
	(ftpfs_connection_destroy): Removed.
	(ftpfs_connection_unref): Perform locking on `connections_hash'.
	(lookup_conn): Likewise.
	(ftpfs_connection_new): Likewise.

	* modules/ftp-method.c (ftpfs_open_directory): Use the raw URI
	path, without using `g_dirname()'.

1999-09-28  Ettore Perazzoli  <ettore@comm2000.it>

	* modules/bzip2-method.c: Re-indented in GNOME style.

	* configure.in: Added `--enable-gconf' option to explicitly enable
	the GConf module backend; if not specified, GConf support is not
	compiled even if GConf is available.  For now, the GConf API is
	too much of a moving target to rely on it by default.

	* modules/ftp-method.c (ftpfs_get_file_info): `#if 0'ed completely
	to get it to compile.  Always return `GNOME_VFS_ERROR_NOTSUPPORTED'.

1999-09-27  Miguel de Icaza  <miguel@gnu.org>

	* modules/module-shared.c (gnome_vfs_set_meta_for_list,
	gnome_vfs_set_meta, gnome_vfs_stat_to_file_info,
	gnome_vfs_mime_type_from_mode): moved here some code from the file
	backend that can be reused by the ftp backend.
	
	* modules/ftp-method.c: directory listings work.  Still some work
	is required.

1999-09-27  Cody Russell  <bratsche@dfw.net>

	* modules/bzip2-method.c: At Ettore's request, reformatted the
	code to look more like the rest of the code. Function return
	values are now on the preceeding line of the function name.

1999-09-27  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs-pthread/gnome-vfs-job.c (dispatch_open_callback):
	Unref before calling the callback, not after that.
	(dispatch_create_callback): Likewise.
	(dispatch_open_as_channel_callback): Likewise.

	* modules/bzip2-method.c (do_open): Removed unused variables.

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_equal): New function.

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_open_from_uri): Renamed
	to `gnome_vfs_open_uri'.
	(gnome_vfs_create_for_uri): Renamed to `gnome_vfs_create_uri'.
	(gnome_vfs_get_file_info_from_uri): Renamed to
	`gnome_vfs_get_file_info_uri'.

	* libgnomevfs-pthread/gnome-vfs-job.c (execute_open_as_channel):
	Close and unref channels.
	(execute_create_as_channel): Likewise.
	(gnome_vfs_job_destroy): Use `g_io_channel_close()' instead of
	`close()'.
	(execute_open_as_channel): Wait for ack from the notification.
	(execute_create_as_channel): Likewise.

	* libgnomevfs/gnome-vfs-init.c (gnome_vfs_init): Ignore SIGPIPE.

1999-09-26  Dave Camp  <campd@oit.edu>

	* modules/gconf-method.c (do_get_file_info_from_handle): New method.
	(vfs_module_init): Don't pass the "application" parameter to
	g_conf_init().

11999-09-25  Cody Russell  <bratsche@dfw.net>

	* modules/bzip2-method.c: Removed MAKE_ABSOLUTE().

1999-09-25  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs/gnome-vfs-constants.h (GNOME_VFS_OFFSET_FORMAT_STR)
	[!HAVE_GINT64]: Change "L" to "l".

	* modules/bzip2-method.c (struct _Bzip2MethodHandle): Removed
	`modification_time' member.
	(bzip2_method_handle_new): Removed `modification_time' parameter.
	(do_open): Do not pass it as an uninitialized value nor zero
	anymore.  Open the file using the parent URI correctly.
	(bzip2_read_open): Removed bogus static prototype.
	(do_open): Write mode `#if 0'ed out as it wouldn't work anyway.

	* modules/Makefile.am: Enable compilation of the bzip2 module.

1999-09-25  Kjartan Maraas  <kmaraas@online.no>

	* configure.in: Added da to ALL_LINGUAS.
	
1999-09-18  Cody Russell  <bratsche@dfw.net>

	* modules/bzip2-method.[ch]: Added. Note that this method is not
	currently finished, and so I've disabled building of it for now.

	* modules/Makefile.am: Added Bzip2, but it's currently commented
	out.

	* configure.in: Fixed a typo. "gconf will not be build"
	s/build/built.

1999-09-18  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs-pthread/gnome-vfs-job.c (gnome_vfs_job_new):
	Initialize the `cancelled' member to `FALSE'.
	(gnome_vfs_job_cancel): Set `cancelled' to `TRUE'.
	(dispatch_job_callback): If the job was cancelled, do not dispatch
	the callback.
	(execute_open): If the job was cancelled, return FALSE so that the
	thread dies.
	(execute_create): Likewise.
	(execute_load_directory_not_sorted): Interrupt if job is
	cancelled.  Also, close the directory handle on exit.
	(execute_load_directory_sorted): Likewise.
	(xfer_callback): If the job is cancelled, return FALSE.

	* libgnomevfs-pthread/gnome-vfs-job.h (struct _GnomeVFSJob): New
	member `cancelled'.

1999-09-18  Michael Meeks  <michael@nuclecu.unam.mx>

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_has_parent): remove
	unused 'p'

	* modules/ftp-method.c, gzip-method.c, gconf-method.c:
	pad method structure.

	* modules/http-method.c: Add comment explaining the coding stall.

	* modules/file-method.c (do_unlink): implement.

	* libgnomevfs/gnome-vfs-seekable.c (do_close, init_seek): do unlink of
	tmp file. 

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_unlink),
	(gnome_vfs_unlink_for_uri): Added.

	* libgnomevfs/gnome-vfs-ops.h: add unlinks.

	* libgnomevfs/gnome-vfs-private-types.h: Add unlink, update truncate.

1999-09-17  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs/gnome-vfs-constants.h: #include "gnome-vfs-types.h"
	and <glibconfig.h>.  #define `GNOME_VFS_SIZE_FORMAT_STR' and
	`GNOME_VFS_OFFSET_FORMAT_STR' according to the size of
	`GnomeVFSFileSize' and `GnomeVFSFileOffset'
	(i.e. according to whether gint64 exists or not).

	* libgnomevfs/gnome-vfs-types.h: #include <glibconfig.h>.

1999-09-16  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs-pthread/gnome-vfs-job.c
	(execute_load_directory_sorted): If the directory is empty, notify
	one single EOF.

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_has_parent): New function.
	(gnome_vfs_uri_get_parent): New function.
	(set_uri_element): Make sure there is a slash at the beginning of
	the string.

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_to_string): Do not
	try to copy `toplevel_info' if it is NULL.
	(gnome_vfs_uri_dup): If `uri' is NULL, do not spit out a warning.

	* libgnomevfs-pthread/gnome-vfs-job.c
	(dispatch_load_directory_callback): Do not unref the URI here
	unless we are reporting an error!
	(execute_open): Return FALSE if the operation failed, so that the
	thread is killed.
	(execute_create): Likewise.
	(execute_open_as_channel): Return FALSE on any error, and after closing
	the file.
	(execute_create_as_channel): Likewise.

	* libgnomevfs/gnome-vfs-directory.c (directory_visit_internal): Use new
	`gnome_vfs_uri_append_path()' instead of old
	`gnome_vfs_uri_append_text()'.
	(gnome_vfs_directory_visit_files_at_uri): Likewise.
	(CHECK_IF_SUPPORTED): Removed bogus `vfs' parameter.  All
	occurrences updated.

	* libgnomevfs/gnome-vfs-xfer.c (create_xfer_file_list): Use new
	`gnome_vfs_uri_append_path()' instead of old
	`gnome_vfs_uri_append_text()'.
	(gnome_vfs_xfer_uri): Likewise.

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_dup): Handle the
	toplevel URI element correctly.
	(gnome_vfs_uri_append_text): Removed.
	(gnome_vfs_uri_append_path): New function.

1999-09-15  Ettore Perazzoli  <ettore@comm2000.it>

	* test/Makefile.am (EXTRA_DIST): Add all the `.c' files.

	* libgnomevfs-corba/Makefile.am (gnome_vfs_slave_SOURCES): List
	built sources on top.
	(libgnomevfs_corba_la_SOURCES): Likewise.

	* libgnomevfs/Makefile.am (noinst_HEADERS): Add
	`gnome-vfs-module.h'.

1999-09-14  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs-pthread/gnome-vfs-job.c (dispatch_open_callback):
	Unref the URI.
	(dispatch_create_callback): Likewise.
	(dispatch_open_as_channel_callback): Likewise.
	(dispatch_create_as_channel_callback): Likewise.
	(dispatch_load_directory_callback): Likewise.

	* libgnomevfs-pthread/gnome-vfs-async-ops.c
	(gnome_vfs_async_open_uri): New function.
	(gnome_vfs_async_open_uri_as_channel): New function.
	(gnome_vfs_async_create_uri): New function.
	(gnome_vfs_async_load_directory_uri): New function.
	(gnome_vfs_async_open): Updated to work with the GnomeVFSJob
	changes using the GnomeVFSURI-based counterpart.
	(gnome_vfs_async_open_as_channel): Likewise.
	(gnome_vfs_async_create): Likewise.
	(gnome_vfs_async_create_as_channel): Likewise.
	(gnome_vfs_async_load_directory): Likewise.

	* libgnomevfs-pthread/gnome-vfs-job.c (execute_open): Updated to
	work with the GnomeVFSJob changes.
	(execute_open_as_channel): Likewise.
	(execute_create): Likewise.
	(execute_create_as_channel): Likewise.
	(execute_load_directory_not_sorted): Likewise.
	(execute_load_directory_sorted): Likewise.

	* libgnomevfs-pthread/gnome-vfs-job.h: Use a `GnomeVFSURI' instead
	of a string for all the jobs, except for the xfer one.

	* libgnomevfs/gnome-vfs-async-ops.h (gnome_vfs_async_open_uri):
	New function prototype.
	(gnome_vfs_async_open_uri_as_channel): New function prototype.
	(gnome_vfs_async_create_uri): New function prototype.
	(gnome_vfs_async_create_uri_as_channel): New function prototype.
	(gnome_vfs_async_load_directory_uri): New function prototype.

	* libgnomevfs/gnome-vfs-directory-list.c
	(gnome_vfs_directory_list_sort): Re-assign `entries' to sort the
	list, and set the current position to "none".
	(gnome_vfs_directory_list_set_position): Allow setting a NULL
	position.

	* libgnomevfs/gnome-vfs-directory-filter.c
	(gnome_vfs_directory_filter_new): Do not return NULL if type is
	"none", but some option is specified.

	* libgnomevfs/gnome-vfs-types.h: New GnomeVFSDirectoryFilterOption
	`GNOME_VFS_DIRECTORY_FILTER_NOSELFDIR' to skip `.' and
	`GNOME_VFS_DIRECTORY_FILTER_NOPARENTDIR' to skip `..'.
	* libgnomevfs/gnome-vfs-directory-filter.c (common_filter): Honour
	them.

	* test/test-directory.c (sort_list): Measure sorting speed if
	`--measure-speed' is specified.
	(main): Sort the list even if `--measure-speed' is specified.
	Removed bogus filtering (it did not fit with the popt argument
	parsing).

	* test/test-async-directory.c: New option `--sort' (`-s').
	(main): Do not sort the directory unless it is specified.

	* test/test-async-directory.c: Changed alias for `--measure-speed'
	from `-s' to `-m'.
	* test/test-directory.c: Likewise.

	* idl/gnome-vfs-slave.idl
	(GNOME::VFS:Slave::Notify::load_directory): The problem with
	`oneway' notifications was an ORBit bug, and has now been
	fixed: make this method `oneway' again.

	* libgnomevfs/gnome-vfs-directory-list.c
	(gnome_vfs_directory_list_get): New function.
	* libgnomevfs/gnome-vfs-directory-list.h: Prototype here.

1999-09-13  Ettore Perazzoli  <ettore@comm2000.it>

	* idl/gnome-vfs-slave.idl: Made all the Notify methods non-oneway.
	[No matter what Sopwith says, ORBit does seem to discard oneway
	calls.  Too bad, this could give us up to 20% more speed in
	`load_directory'.]

1999-09-12  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs-corba/gnome-vfs-async-ops.c
	(gnome_vfs_async_cancel): New function.  Just a stub for now.

	* libgnomevfs-pthread/gnome-vfs-job.c (gnome_vfs_job_cancel): New
	function.  Just a stub for now.

	* libgnomevfs-pthread/gnome-vfs-job.h (gnome_vfs_job_cancel):
	New prototype.

	* libgnomevfs-pthread/gnome-vfs-async-ops.c
	(gnome_vfs_async_cancel): New function.

	* libgnomevfs/gnome-vfs-async-ops.h (gnome_vfs_async_cancel): New
	prototype.

	* libgnomevfs-pthread/gnome-vfs-job.c (execute_close): Notify with
	ack and return `FALSE' so that the thread is killed.
	(execute_load_directory_not_sorted): Always return FALSE.
	(execute_load_directory_sorted): Likewise.
	(gnome_vfs_job_new): Start the slave only when the `GnomeVFSJob'
	structure has all the members filled.

	* libgnomevfs-corba/gnome-vfs-slave.c: Do not #define
	`SLAVE_DEBUG'.
	(DPRINTF): Flush stdout.

	* test/test-directory.c: Added speed measurement options.
	(main): Honour them.

	* libgnomevfs/gnome-vfs-directory-list.h
	(gnome_vfs_directory_list_get_num_entries): New Prototype.

	* libgnomevfs/gnome-vfs-directory-list.c
	(struct _GnomeVFSDirectoryList): New member `num_entries'.
	(remove_entry): Decrement it.
	(gnome_vfs_directory_list_new): Initialize it.
	(gnome_vfs_directory_list_prepend): Increment it.
	(gnome_vfs_directory_list_append): Increment it.
	(gnome_vfs_directory_list_get_num_entries): New function, returning
	`num_entries'.

	* libgnomevfs/gnome-vfs-utils.c: #include <string.h>.

1999-09-11  Ettore Perazzoli  <ettore@comm2000.it>

	* test/test-async-directory.c (print_list): Flush stdout after
	each line.

	* libgnomevfs-pthread/gnome-vfs-job.c
	(execute_load_directory_sorted): Set result to
	`GNOME_VFS_ERROR_EOF' for the last notification.

	* test/test-async-directory.c: Added command-line options to
	control the number of items per notification and measure speed.
	(main): Set them up and honour them.
	(directory_load_callback): Do not print anything if measuring speed.

	* test/test-async-directory.c (main): Initialize the libraries
	correctly according to the version we are compiling (CORBA or
	pthread).
	(print_list): New parameter `num_entries'.  Only print out the
	first `num_entries' elements.
	(directory_load_callback): Pass the number of entries.

	* test/Makefile.am: Compile `test-async-directory' in two
	versions: a CORBA and a pthread one.

	* libgnomevfs-pthread/gnome-vfs-job.c (JOB_DEBUG): Debugging
	macro, normally disabled.
	(job_notify): Set `want_notify_ack' before calling `wakeup'.
	(job_ack_notify): Debugging messages.
	(wakeup): Likewise.
	(job_oneway_notify): Likewise.
	(job_notify): Likewise.
	(job_close): Likewise.

	* test/gnome-file-selection/Makefile.am: Compile the pthread
	version of `gnome-file-selection-test' as well.

	* test/gnome-file-selection/gnome-file-selection.c (struct
	_GnomeFileSelectionPrivate): Removed `GnomeVFSAsyncContext'
	member, replaced by a `GnomeVFSAsyncHandle' member.
	(destroy): Don't free the context as it does not exist anymore.
	(init): Do not initialize the context.  Instead, set the handle to
	NULL.
	(start_populating): Load the directory with the new API.
	(populate_callback): Updated for the new API (get a
	GnomeVFSAsyncHandle, not a GnomeVFSAsyncContext).

	* test/Makefile.am (SUBDIRS): Compile `gnome-file-selection'
	again.

	* modules/ftp-method.c: Do not #include "util-url.h" anymore.

	* modules/util-url.c: Removed.
	* modules/util-url.h: Removed.

	* modules/ftp-method.c (ftpfs_chdir_internal): Ooops.  Use `TRUE'
	instead of `WAIT_REPLY'.
	(ftpfs_get_current_directory): Use `FALSE' instead of `NONE'.

1999-09-10  Ettore Perazzoli  <ettore@comm2000.it>

	* modules/ftp-method.c: Removed `reply_str' global.  Removed
	`NONE', `WAIT_REPLY', `WANT_STRING' #defines.
	(command): New parameters `reply_string' and `reply_string_len':
	copy the response in there instead of using the silly global.
	(login_server): Pass `TRUE' instead of `WAIT_REPLY' to `command()'
	for the `wait_reply' parameter.  Pass NULL, 0 as `reply_string',
	`reply_string_len'.
	(ftpfs_chdir_internal): Likewise.
	(open_data_connection): Likewise.
	(changetype): Likewise.
	(initconn): Likewise.
	(abort_transfer): Pass `FALSE' instead of `NONE' to `command()'
	for the `wait_reply' parameter. Pass NULL, 0 as `reply_string',
	`reply_string_len'.
	(ftpfs_get_current_directory): Likewise.
	(setup_passive): Allocate the reply in a local buffer, update the
	call to `command()'.

	* modules/ftp-method.c: Removed variable `force_expiration', it
	does not seem to be have meaningful use.  #define `logfile' to
	`stdout' so that we get some useful debugging messages.  Removed
	`code' global (this was *evil*).  Removed `got_sigpipe' global.
	(retrieve_dir): Do not reference it anymore.
	(get_reply): Return the code without dividing it by 100.
	(command): Return 421 for a transient error.  Return `COMPLETE *
	100' instead of `COMPLETE'.
	(login_server): Divide return values from `get_reply' and
	`command' by 100 before comparing with the `ftp.h' constants.
	(abort_transfer): Compare `get_reply()' return value with 426
	instead of comparing it with 4 and checking the global `code' with
	426.
	(store_file): Divide return value from `get_reply()' by 100.
	(linear_read): Likewise.
	(ftpfs_get_current_directory): Likewise.
	(retrieve_dir): Likewise.
	(abort_transfer): Divide return value from `command()' by 100.
	(login_server): Likewise.
	(setup_passive): Likewise.
	(ftpfs_get_current_directory): Likewise.
	(ftpfs_chdir_internal): Likewise.
	(open_data_connection): Likewise.
	(changetype): Likewise.
	(initconn): Likewise.
	(is_connection_closed): Removed unused function.
	(sig_pipe): Do not set `got_sigpipe' anymore.
	(net_init): Likewise.
	(command): Likewise.

	* modules/ftp-method.c (ftpfs_connection_new): New parameter
	`result_return' used to return the VFS error code for a failure.
	(ftpfs_uri_new): Likewise.
	(ftpfs_open_socket): Return a GnomeVFSResult, and set the
	connection on `conn' directly.  Return
	`GNOME_VFS_ERROR_INVALIDHOSTNAME' if the host name is not valid.
	If `gethostbyname()' fails, translate `h_errno' using
	`gnome_vfs_result_from_h_errno()'.  If any of the other Unix
	functions fails, return a sensible error code using
	`gnome_vfs_result_from_errno()'.
	(login_server): Return value changed to `GnomeVFSResult'.  Return
	`GNOME_VFS_ERROR_LOGINFAILED' on error.  Use login "anonymous" if
	user name is NULL.
	(ftpfs_open): Use the new result parameter in `ftpfs_uri_new()'.
	(ftpfs_create): Likewise.
	(command): Adapted to the new `ftpfs_connection_connect()'.
	(ftpfs_connection_connect): Return type changed to
	`GnomeVFSResult'.  Return an appropriate result value.
	(hash_conn): Deal with NULL host/user names gracefully.
	(get_file_entry): Return `GNOME_VFS_ERROR_NOTFOUND' if the file is
	not found, instead of `GNOME_VFS_ERROR_GENERIC'.

	* libgnomevfs/gnome-vfs-result.c: #include <netdb.h> and declare
	`h_errno' as extern
	(gnome_vfs_result_from_h_errno): New function.
	* libgnomevfs/gnome-vfs-result.h (gnome_vfs_result_from_h_errno):
	Prototype here.

	* libgnomevfs/gnome-vfs-types.h: New errors
	`GNOME_VFS_ERROR_HOSTNOTFOUND', `GNOME_VFS_ERROR_INVALIDHOSTNAME',
	`GNOME_VFS_ERROR_HOSTHASNOADDRESS', `GNOME_VFS_ERROR_LOGINFAILED'.
	* libgnomevfs/gnome-vfs-result.c: Added the corresponding
	description strings.

	* modules/ftp-method.c (resolve_symlink_without_ls_options): Use
	`gnome_vfs_canonicalize_pathname()' instead of
	`canonicalize_pathname' from `util-url.c'.
	(ftpfs_open): Return `GNOME_VFS_ERROR_INVALIDURI' instead of
	`GNOME_VFS_ERROR_WRONGFORMAT'.
	(ftpfs_create): Likewise.
	(ftpfs_connection_new): Get const string parameters, and
	g_strdup() all of them when filling the connection struct.
	(ftpfs_parse_uri): Renamed to `ftpfs_uri_new'.  Use the new
	members in `GnomeVFSToplevelURI' instead of parsing the string.
	(ftpfs_connection_new): Removed unused parameter `path'; callers
	updated.
	(lookup_conn): If the specified port is zero, use the default FTP
	port.
	(ftpfs_connection_new): Likewise.

	* test/test-sync.c (main): Do things through a GnomeVFSURI and use
	`gnome_vfs_uri_to_string()', so that we can debug the new stuff.

	* libgnomevfs/gnome-vfs-xfer.c (gnome_vfs_xfer_uri): Hide password
	when setting source/target URIs in the progress info.

	* libgnomevfs/gnome-vfs-uri.c (set_uri_element): New helper
	function.  It sets the URI element canonicalizing it as well.
	(gnome_vfs_uri_new): Changed to use `set_uri_element' and allocate
	the special toplevel URI element.
	(gnome_vfs_uri_to_string): New parameter `hide_options'.  Add
	host/user information to the string, hiding the information
	specified in `hide_options'.

	* libgnomevfs/gnome-vfs-types.h: New enum `GnomeVFSURIHideOptions'.

	* libgnomevfs/gnome-vfs-utils.c (gnome_vfs_canonicalize_pathname):
	New function, stolen from `util-url.c'.  Slightly changed so that
	it does not remove trailing slashes anymore (we do want them!).

	* libgnomevfs/gnome-vfs-uri.c: Use the constants defined in
	`gnome-vfs-constants.h'.

	* libgnomevfs/gnome-vfs.h: #include `gnome-vfs-constants.h'.

	* libgnomevfs/gnome-vfs-constants.h: New file defining VFS
	constants.

1999-09-09  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs/gnome-vfs-uri.c (gnome_vfs_uri_new): Allocate the
	toplevel URI as a `GnomeVFSToplevelURI'.
	(gnome_vfs_uri_get_toplevel): New function.
	(gnome_vfs_uri_get_host_name): New function.
	(gnome_vfs_uri_get_host_port): New function.
	(gnome_vfs_uri_get_user_name): New function.
	(gnome_vfs_uri_get_password): New function.
	(gnome_vfs_uri_set_host_name): New function.
	(gnome_vfs_uri_set_host_port): New function.
	(gnome_vfs_uri_set_user_name): New function.
	(gnome_vfs_uri_set_password): New function.
	(destroy_element): If it's a toplevel URI, free its extra strings
	as well.
	(string_head): New helper function.
	(split_toplevel_uri): New function, derived from the Midnight
	Commander code in `util-url.c'.  Changed semantics and parameters,
	optimized and prettified a little bit.

	* libgnomevfs/gnome-vfs-types.h: New type `GnomeVFSToplevelURI'.

1999-09-08  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs-pthread/gnome-vfs-job.c (execute_open): Do not set
	`handle' on the notification.
	(execute_create): Likewise.
	(execute_close): Likewise.

	* libgnomevfs-pthread/gnome-vfs-async-ops.c
	(gnome_vfs_async_close): Do not set `handle' on the request.
	(gnome_vfs_async_read): Likewise.
	(gnome_vfs_async_write): Likewise.

	* libgnomevfs-pthread/gnome-vfs-job.c (gnome_vfs_job_new):
	Initialize the `handle' member to NULL.
	(execute_open): Set `handle'.
	(execute_create): Likewise.
	(execute_close): Use `job->handle' instead of the (now gone)
	request-specific member.
	(execute_read): Likewise.
	(execute_write): Likewise.
	(execute_close): Set `handle' to NULL.

	* libgnomevfs-pthread/gnome-vfs-job.h: Removed `handle' members
	from all the `*Job' structs.
	(struct _GnomeVFSJob): New member `handle'.

	* libgnomevfs-pthread/gnome-vfs-job.c (execute_xfer): Return FALSE.
	(execute_load_directory): Return FALSE;

	* libgnomevfs-pthread/gnome-vfs-async-ops.c
	(gnome_vfs_async_context_new): Removed.
	(gnome_vfs_async_context_destroy): Removed.
	(struct _GnomeVFSAsyncContext): Removed.
	(struct _GnomeVFSAsyncHandle): Removed.
	(gnome_vfs_async_open): Updated for the new API.  Create a new job
	for this file and return it as the handle.
	(gnome_vfs_async_open_as_channel): Likewise.
	(gnome_vfs_async_create): Likewise.
	(gnome_vfs_async_create_as_channel): Likewise.
	(gnome_vfs_async_close): Updated for the new API.  
	(gnome_vfs_async_read): Updated for the new API.
	(gnome_vfs_async_write): Updated for the new API.
	(gnome_vfs_async_load_directory): Updated for the new API.  Create
	a new job for this file and return it as the handle.
	(gnome_vfs_async_xfer): Likewise.

	* libgnomevfs-pthread/gnome-vfs-job.c (gnome_vfs_job_new): Removed
	parameter `context'.
	(dispatch_open_callback): Updated to match the new number of
	parameters of callback functions.  Pass the job as the
	`GnomeVFSAsyncHandle' parameter.
	(dispatch_create_callback): Likewise.
	(dispatch_open_as_channel_callback): Likewise.
	(dispatch_create_as_channel_callback): Likewise.
	(dispatch_read_callback): Likewise.
	(dispatch_write_callback): Likewise.
	(dispatch_xfer_callback): Likewise.
	(dispatch_close_callback): Likewise.  Destroy the job on return.
	(dispatch_load_directory_callback): Likewise.

	* libgnomevfs-pthread/gnome-vfs-job.h (struct _GnomeVFSJob):
	Removed member `context'.

	* libgnomevfs-pthread/gnome-vfs-job.c (gnome_vfs_job_new): Create
	new slave first.  If this fails, return NULL.

	* test/test-channel.c (io_channel_callback): Handle combined
	conditions.

	* libgnomevfs/gnome-vfs-types.h: Removed `GnomeVFSAsyncContext'
	definition.

	* libgnomevfs-corba/gnome-vfs-slave-notify.c (impl_Notify_open):
	Duplicate the file handle object.
	(impl_Notify_close): Relese the file handle object.

	* test/test-async.c: Adapted to the new API.
	* test/test-async-channel.c: Likewise.
	* test/test-channel.c: Likewise.

	* test/Makefile.am: Do not compile the pthread versions of the
	tests anymore.  Do not compile the gnome-file-selection test for
	now.

	* libgnomevfs-corba/gnome-vfs-async-ops.c: Updated all the
	functions to handle the new parameters and use the new modules.
	(gnome_vfs_async_context_destroy): Removed.
	(gnome_vfs_async_context_reset): Removed.
	(gnome_vfs_async_context_new): Removed.
	(create_notify_object): Removed.
	(context_from_servant): Removed.

	* libgnomevfs-corba/gnome-vfs-slave-notify.c: New file,
	implementing the `GNOME::VFS::Slave::Notify' interface.
	* libgnomevfs-corba/gnome-vfs-slave-notify.h: Header for it.

	* libgnomevfs-corba/gnome-vfs-slave-process.c: New file,
	replacing GnomeVFSAsyncContext handling.
	* libgnomevfs-corba/gnome-vfs-slave-process.h: Header for it.

	* libgnomevfs/gnome-vfs-types.h: Removed
	`GnomeVFSAsyncContextResetCallback' typedef.

	* libgnomevfs/gnome-vfs-types.h: The callbacks no longer take a
	`GnomeVFSAsyncContext *' parameter.  Instead, they now take a
	`GnomeVFSAsyncHandle *' parameter.

	* libgnomevfs/gnome-vfs-async-ops.h: Removed prototypes for
	(gnome_vfs_async_context_new): Removed prototype.
	(gnome_vfs_async_context_reset): Removed prototype.
	(gnome_vfs_async_context_destroy): Remove prototype.
	(gnome_vfs_async_open): Removed parameter `context'; new parameter
	`handle_return'.
	(gnome_vfs_async_open_as_channel): Likewise.
	(gnome_vfs_async_create): Likewise.
	(gnome_vfs_async_create_as_channel): Likewise.
	(gnome_vfs_async_load_directory): Likewise.
	(gnome_vfs_async_xfer): Likewise.

1999-09-08  Michael Meeks  <michael@nuclecu.unam.mx>

	* libgnomevfs/gnome-vfs-seekable.c (init_seek): Split out file read
	(read_file): to here & added (write_file): to put back the cache.
	(do_close): write file back. (init_seek): Add dirty bit.
	NB. dirt bit could cause problems with 0 length created files.

1999-09-07  Michael Meeks  <michael@imaginator.com>

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_open_from_uri): Added new
	improved re-open for non-random capable file methods.

	* doc/writing-modules.txt: Updated.

	* libgnomevfs/gnome-vfs-seekable.c: Actualy does something now.

	* modules/file-method.c (do_create): Fixed unix_mode on created file
	to allow reading from a created file.

1999-09-06  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs-pthread/gnome-vfs-job.c (gnome_vfs_job_new):
	Initialize `wakeup_channel_lock'.
	(gnome_vfs_job_destroy): Free it.
	(wakeup): New helper function.
	(job_oneway_notify): Use it.  Lock the channel mutex before doing
	the notification.
	(job_notify): Likewise.
	(job_ack_notify): Unlock the channel mutex.

	* libgnomevfs-pthread/gnome-vfs-job.h: New member
	`wakeup_channel_lock' in `GnomeVFSJob'.

	* libgnomevfs-pthread/gnome-vfs-job.c (job_notify): Set
	`want_notify_ack' to TRUE before waiting for the acknowledgment
	condition.
	(job_ack_notify): Signal the acknowledgment condition only if
	`want_notify_ack' is TRUE.

	* libgnomevfs-pthread/gnome-vfs-job.h: New member
	`want_notify_ack' in `GnomeVFSJob'.

1999-09-06  Michael Meeks  <michael@imaginator.com>

	* libgnomevfs/gnome-vfs-private.h: Add include gnome-vfs-seekable.h

	* libgnomevfs/gnome-vfs-seekable.[ch]: Created.

	* libgnomevfs/Makefile.am: Include them.

	* libgnomevfs/gnome-vfs-handle.c (gnome_vfs_handle_new): Added
	OPEN_RANDOM hook here.

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_open_from_uri): and removed
	hook from here.

	* test/test-seek.c: Implemented fully.

	* modules/file-method.c (do_tell, do_seek): correct order to offset
	then whence.

	* test/gnome-file-selection/gicon.c (gicon_get_icon_for_file): Add
	precondition.

1999-09-06  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs-corba/gnome-vfs-async-ops.c
	(impl_Notify_open_as_channel): If the operation fails, the context
	is not busy anymore.

	* libgnomevfs/gnome-vfs-method.c: New type `MethodElement'.
	(gnome_vfs_method_get): Put `MethodElement's in the hash table
	instead of `GnomeVFSMethod's.
	(module_get_sane_handle): Do not check for get_file_info.

	* modules/file-method.c (do_open): Removed wrong directory test.
	(do_create): Removed stupid stat check.
	(do_seek): Call LSEEK() correctly.
	(do_tell): Likewise.

1999-09-05  Michael Meeks  <michael@imaginator.com>

	* test/Makefile.am (noinst_PROGRAMS): Added test_seek.

	* libgnomevfs/gnome-vfs-method.c (module_get_sane_handle):
	Add check for 'seek' and no 'tell'.

1999-09-05  Ettore Perazzoli  <ettore@comm2000.it>

	* modules/file-method.c (do_open): Fstat the file; if it's a
	directory, return `GNOME_VFS_ERROR_ISDIRECTORY'.
	(do_create): Likewise.

1999-09-04  Ettore Perazzoli  <ettore@comm2000.it>

	* modules/file-method.c (stat_to_file_info): New helper function.
	(get_stat_info_from_handle): New function to get GnomeVFSFileInfo
	from an existing handle.
	(do_get_file_info_from_handle): New function, implementing the
	`get_file_info_from_handle' method.

	* modules/ftp-method.c: Likewise.
	* modules/gconf-method.c: Likewise.
	* modules/http-method.c: Likewise.

	* modules/gzip-method.c: Set the `get_file_info_from_handle'
	method to NULL.

	* libgnomevfs/gnome-vfs-private-types.h: New member
	`get_file_info_from_handle' in `GnomeVFSMethod'.

	* libgnomevfs/gnome-vfs-handle.c
	(gnome_vfs_handle_do_get_file_info): New function.

	* libgnomevfs/gnome-vfs-ops.c
	(gnome_vfs_get_file_info_from_handle): New function.

	* libgnomevfs/gnome-vfs-private-types.h: New typedef.
	`GnomeVFSMethodGetFileInfoFromHandleFunc'.

	* modules/file-method.c (do_create): Renamed `file_method' to
	`file_handle'.

1999-09-02  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs/gnome-vfs-process.c: Improved SIGCHLD handling.
	(sigchld_handler): Instead of waking the GLIB loop up once for
	every dead child, wake it up only for registered children.
	(foreach_pid_func): Helper function for `sigchld_handler'.  It
	sends a pointer to the process struct and the exit status to the
	wake up GIOChannel.
	(wake_up): Handle the information as sent by `foreach_pid_func'.

1999-09-01  Dave Camp  <campd@oit.edu>

	* modules/gconf-method.c: Explicitly set the `remove_directory'
	method to NULL.

1999-09-01  Ettore Perazzoli  <ettore@comm2000.it>

	* modules/http-method.c: Explicitly set the `remove_directory'
	method to NULL.

	* modules/ftp-method.c (ftpfs_remove_directory): New function, for
	future implementation of the `remove_directory' method.

	* modules/gzip-method.c: Explicitly set the `remove_directory' and
	`rename' methods to NULL.

	* modules/file-method.c (do_remove_directory): New function,
	implementing the `remove_directory' method.

	* libgnomevfs/gnome-vfs-ops.c
	(gnome_vfs_remove_directory_from_uri): New function.
	(gnome_vfs_remove_directory): New function.

	* libgnomevfs/gnome-vfs-private-types.h: New typedef
	`GnomeVFSMethodRemoveDirectoryFunc'.  Added member
	`remove_directory' to `GnomeVFSMethod'.

	* libgnomevfs/gnome-vfs-ops.c (gnome_vfs_tell): Removed parameter
	`whence'.

	* libgnomevfs/gnome-vfs-handle.c (gnome_vfs_handle_do_tell):
	Removed parameter `whence'.

	* libgnomevfs/gnome-vfs-private-types.h: Removed parameter
	`whence' from the `GnomeVFSMethodTellFunc' function typedef.
	* modules/file-method.c: Updated accordingly.
	* modules/ftp-method.c: Updated accordingly.
	* modules/http-method.c: Updated accordingly.

1999-09-01  Dave Camp  <campd@oit.edu>

	* modules/gconf-method.c (set_mime_type_value): Return a 
	GnomeVFSResult, check return value of calls.
	(set_mime_type_dir): Ditto.
	(set_stat_info_dir): Ditto.
	(file_info_value): Ditto.
	(file_info_dir): Ditto.
	(read_directory): Ditto.

1999-09-01  Dave Camp  <campd@oit.edu>

	* configure.in: Check for GConf.

	* modules/Makefile.am: Build libgconf.la if HAVE_GCONF is set.

	* modules/gconf-method.c: New file.

1999-09-01  Ettore Perazzoli  <ettore@comm2000.it>

	* test/test-async-directory.c (directory_load_callback): Added
	cast for printf.

	* modules/file-method.c:  Removed `init()' prototype.
	* modules/gzip-method.c: Likewise.

	* libgnomevfs-pthread/gnome-vfs-job.c (serve_channel_read): Use
	`GnomeVFSFileSize' appropriately.
	(serve_channel_write): Likewise.

	* test/test-async-directory.c (print_list): Fix format string to
	handle long longs.
	* test/test-async.c (read_callback): Likewise.
	* test/test-copy.c (xfer_progress_callback): Likewise.
	* test/test-directory.c (print_list): Likewise.
	* test/test-directory-visit.c (directory_visit_callback): Likewise.

	* modules/file-method.c: #define `_LARGEFILE64_SOURCE' before
	including anything.  #define `OPEN' to `open64' if available, to
	`open' otherwise.  #define `LSEEK' to `lseek64' if available, to
	`lseek' otherwise.  Likewise, #define `OFF_T' to either `off_t' or
	`off64_t', accordingly.
	(do_open): Use the `OPEN' macro instead of `open()'.
	(do_create): Likewise.
	(do_seek): Use the `LSEEK' macro instead of `lseek()'.
	(do_tell): Likewise.
	(do_tell): Use the `OFF_T' instead of `off_t'.

	* libgnomevfs/gnome-vfs-types.h: Define `GnomeVFSFileSize' as
	`guint64' and `GnomeVFSFileOffset' to `gint64' if we have gint64
	support

	* configure.in: Check for `open64' and `lseek64'.

	* libgnomevfs/gnome-vfs-types.h: Added comment with instructions
	for modifying the GnomeVFSResult properly.

	* libgnomevfs/gnome-vfs-result.c: Added status strings for
	`GNOME_VFS_ERROR_INTERRUPTED' and `GNOME_VFS_ERROR_FILEEXISTS'.

1999-08-31  Michael Meeks  <michael@imaginator.com>

	* modules/file-method.c: Rename module init and add shutdown & include.
	* modules/ftp-method.c: ditto.
	* modules/gzip-method.c: ditto.
	* modules/http-method.c: ditto.

	* libgnomevfs/gnome-vfs-module.h: Create.

	* libgnomevfs/gnome-vfs-method.c (module_get_sane_handle): Add &
	use new function name macros.
	(gnome_vfs_method_get): move some stuff & call get_sane_handle.

1999-08-31  Miguel de Icaza  <miguel@gnu.org>

	* modules/ftp-method.c: new global: got_sigpipe.
	(ftpfs_connection_connect): Init sigpipe handler;  Only connect if
	connection is invalid.
	(get_file_entry): Apply IS_LINEAR on proper flags.
	(ftpfs_open): Use the linear state as computed in get_file_entry.
	(ftpfs_read): Implemented.
	(ftpfs_close): Implemented.
	(ftpfs_create): Implemented.
	(ftpfs_seek): Implemented.
	(ftpfs_tell): Implemented.

1999-08-30  Miguel de Icaza  <miguel@gnu.org>

	* modules/ftp-method.c (ftpfs_dir_unref): New method.

1999-08-29  Miguel de Icaza  <miguel@gnu.org>

	* libgnomevfs/gnome-vfs-types.h: New error types.
	
	* libgnomevfs/gnome-vfs-result.c: Return nice results for it.

1999-08-30  Miguel de Icaza  <miguel@nuclecu.unam.mx>

	* modules/ftp-method.c (IS_LINEAR): Define macro.
	GNOME_VFS_OPEN_RANDOM means we need seek support, otherwise we are
	a linear transfer.  Cool.

1999-08-28  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs-corba/gnome-vfs-async-ops.c
	(impl_Notify_load_directory): Copy `name' and allocate it
	dynamically.

	* libgnomevfs-corba/gnome-vfs-slave.c (allocate_info_list):
	Initialize `name' to NULL.
	(copy_file_info): Copy `name' into the CORBA `FileInfo' struct
	using `set_corba_string'.

	* idl/gnome-vfs-slave.idl: Added member `name' to `FileInfo'.

	* modules/file-method.c (read_directory): Allocate the name in the
	`GnomeVFSFileInfo' struct dynamically.
	(do_get_file_info): Set `name' in the info using `g_basename'.

	* libgnomevfs/gnome-vfs-file-info.c (gnome_vfs_file_info_clear):
	Free `name'.
	(gnome_vfs_file_info_copy): Realloc `name' in the destination
	`GnomeVFSFileInfo'.

	* libgnomevfs/gnome-vfs-types.h: Removed #definition of
	`GNOME_VFS_FILE_NAME_LEN'.  Member `name' of `GnomeVFSFileInfo'
	changed from `char []' to `char *'.

1999-08-27  Miguel de Icaza  <miguel@nuclecu.unam.mx>

	* modules/util-url.c, modules/ftp-method.c: New files for the
	implementation of the FTP backend.

1999-08-26  Miguel de Icaza  <miguel@nuclecu.unam.mx>

	* test/gnome-file-selection/gnome-file-selection.c
	(setup_directory_clist): Also push the colormap and pop the
	colormap. 

1999-08-27  Ettore Perazzoli  <ettore@comm2000.it>

	* test/gnome-file-selection/gicon.c: Do not #define `ICONDIR'
	manually anymore.

	* test/gnome-file-selection/Makefile.am (INCLUDES): Added quick &
	dirty `-DICONDIR' definition.

1999-08-26  Ettore Perazzoli  <ettore@comm2000.it>

	* libgnomevfs-pthread/gnome-vfs-job.h: Changed `is_empty' member
	of `GnomeVFSJob' from 1-bit wide gboolean to plain gboolean.

	* modules/Makefile.am (modules_LTLIBRARIES): Removed previously
	commented HTTP module.

	* test/Makefile.am: Minor cleanup.
	(noinst_PROGRAMS): Replace `test-async-pthread' with
	`test-async_pthread' and `test-async-corba' with
	`test-async_corba'.  Added `test-channel_corba' and
	`test-channel_pthread'.
	(test-channel_corba): New target, compiling `test-channel.c' with
	the CORBA-based VFS.
	(test-channel_pthread): New target, compiling `test-channel.c'
	with the PThread-based VFS.

	* libgnomevfs-pthread/gnome-vfs-job.c (serve_channel_write): New
	function.
	(serve_channel_read): New function.
	(execute_open_as_channel): New function.
	(execute_create_as_channel): New function.
	(gnome_vfs_job_execute): Call `execute_open_as_channel()' and
	`execute_create_as_channel()' for jobs
	`GNOME_VFS_JOB_OPEN_AS_CHANNEL' and
	`GNOME_VFS_JOB_CREATE_AS_CHANNEL', respectively.
	(dispatch_open_or_create_as_channel_callback): New function.
	(dispatch_job_callback): Handle `GNOME_VFS_JOB_OPEN_AS_CHANNEL'
	and `GNOME_VFS_JOB_CREATE_AS_CHANNEL' through it.

	* libgnomevfs-pthread/gnome-vfs-async-ops.c
	(gnome_vfs_async_open_as_channel): New function.
	(gnome_vfs_async_create_as_channel): New function.

	* libgnomevfs-pthread/gnome-vfs-job.h: New structs
	`GnomeVFSOpenAsChannelJob', `GnomeVFSCreateAsChannelJob'; added
	corresponding members to `GnomeVFSJob'.  New values
	`GNOME_VFS_JOB_OPEN_AS_CHANNEL' and
	`GNOME_VFS_JOB_CREATE_AS_CHANNEL' in `GnomeVFSJobType'.

	* test/test-async-directory.c: Removed translation marks.
	* test/test-async.c: Likewise.
	* test/test-directory-visit.c: Likewise.
	* test/test-directory.c: Likewise.

	* libgnomevfs/gnome-vfs-result.c (gnome_vfs_result_from_errno):
	Translate `EPERM' with `GNOME_VFS_ERROR_NOTPERMITTED'.

	* libgnomevfs/gnome-vfs-types.h: Added value
	`GNOME_VFS_ERROR_NOTPERMITTED' to GnomeVFSError.

	* test/test-channel.c: New test program.

	* libgnomevfs-corba/gnome-vfs-slave.h (setup_and_serve_channel):
	New function.
	(serve_channel_read): New function.
	(serve_channel_write): New function.
	(impl_Request_open_as_channel): New function.
	(impl_Request_create_as_channel): New function.
	(init_Request): Install `impl_Request_open_as_channel' and
	`impl_Request_create_as_channel' as the implementations for
	`Request::open_as_channel' and `Request::create_as_channel',
	respectively.

	* libgnomevfs-corba/gnome-vfs-async-ops.c: New values
	`GNOME_VFS_ASYNC_OP_OPEN_AS_CHANNEL',
	`GNOME_VFS_ASYNC_OP_CREATE_AS_CHANNEL'
	`GNOME_VFS_ASYNC_OP_CHANNEL' in enum `GnomeVFSAsyncOperation'.
	Sorted values in alphabetical order.
	(gnome_vfs_async_open_as_channel): New function.
	(gnome_vfs_async_create_as_channel): New function.
	(impl_Notify_open_as_channel): New function.
	(create_notify_object): Install it as the implementation of
	`Notify::open_as_channel'.

	* idl/gnome-vfs-slave.idl (Request::open_as_channel): New method.
	(Request::create_as_channel): New method.
	(Notify::open_as_channel): New method.

	* libgnomevfs/gnome-vfs-async-ops.h
	(gnome_vfs_async_open_as_channel): Declare new function.
	(gnome_vfs_async_create_as_channel): Declare new function.

	* libgnomevfs/gnome-vfs-types.h: New typedefs
	`GnomeVFSAsyncOpenAsChannelCallback',
	`GnomeVFSAsyncCreateAsChannelCallback'.

	* libgnomevfs-corba/gnome-vfs-async-ops.c
	(gnome_vfs_async_create): Added precondition that file must be
	open for writing.
	(impl_Notify_reset): Oops.  Removed typo (`*' before parameter
	`servant').

1999-08-26  Michael Meeks  <michael@imaginator.com>

	* test/gnome-file-selection/gnome-file-selection.c
	(clean_file_list): Added. (change_dir): Clean list.
	(populate_callback): Add only files.

1999-08-26  Michael Meeks  <michael@imaginator.com>

	* test/gnome-file-selection/gnome-file-selection.c (destroy): 
	Destroy file_list.
	(GnomeFileSelectionPrivate): Changed file_list to GList.
	(select_icon_callback): use this list, add lots of preconditions.

1999-08-26  Michael Meeks  <michael@imaginator.com>

	* libgnomevfs/gnome-vfs-types.h: Add GnomeVFSFileSize, and
	GnomeVFSFileOffset ( unsigned, signed ). and push through the
	whole API - How will CORBA deal with this ?

1999-08-25  Michael Meeks  <michael@imaginator.com>

	* doc/writing-modules.txt: Started.

1999-08-25  Michael Meeks  <michael@imaginator.com>

	* http-method.[ch]: First pass at implementing.
	
	* modules/file-method.c: Add NULL RenameFunc to methods, and
	remove const from do_make_directory's GnomeVFSURI.

	* modules/Makefile.am: Add libhttp.la, commented out.

1999-08-25  Ettore Perazzoli  <ettore@comm2000.it>

	* modules/file-method.c: Preconditions return `GNOME_VFS_INTERNAL'
	instead of `GNOME_VFS_BAD_POINTER'.

	* libgnomevfs/gnome-vfs-types.h: Removed value
	`GNOME_VFS_BAD_POINTER' from the `GnomeVFSResult' enum.

1999-08-25  Michael Meeks  <michael@imaginator.com>

	* modules/file-method.c: Update all preconditions to return BAD_POINTER
	as their GnomeVFSResult instead of FALSE.

	* libgnomevfs/gnome-vfs-types.h: Added GNOME_VFS_ERROR_BAD_POINTER.

	* modules/gzip-method.h: Rename conditional include
	from _FILE_H to _GZIP_H

1999-08-25  Ettore Perazzoli  <ettore@comm2000.it>

	* configure.in: Add gnomeui libs to `VFSCORBA_LIBS'.
