From 7abd436e407c848e773f75e6545458b799994abd Mon Sep 17 00:00:00 2001 From: lace <> Date: Sun, 25 Dec 2005 10:30:43 +0000 Subject: [PATCH] Provide "cabinet_used" debug message if -v|--verbose. Fixed missing 'GNOME_VFS_OPEN_RANDOM' for the HTTP cabinets reading. Workaround FC4 gnome-vfs2-2.10.0-5 "http" not supporting the file types. --- src/install/acquire/moduriload.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/install/acquire/moduriload.c b/src/install/acquire/moduriload.c index 0753624..2e83141 100644 --- a/src/install/acquire/moduriload.c +++ b/src/install/acquire/moduriload.c @@ -203,6 +203,13 @@ struct acquire_cabinet *acquire_cabinet; acquire_cabinet=acquire_cabinet_new_from_handle(handlep,file_info,uri,cabinet_used); /* acquire_cabinet_load() will call mod_uri_load_module_from_memory(): */ acquire_cabinet_load(acquire_cabinet); + if (optarg_verbose) { +gchar *uri_text; + + uri_text=gnome_vfs_uri_to_string(uri,GNOME_VFS_URI_HIDE_PASSWORD); + g_message("cabinet_used: %s - %d",uri_text,acquire_cabinet->cabinet_done); + g_free(uri_text); + } acquire_cabinet_free(acquire_cabinet); } @@ -214,12 +221,17 @@ GnomeVFSHandle *handle; g_return_if_fail(uri!=NULL); - if (GNOME_VFS_OK!=(errvfsresult=gnome_vfs_open_uri(&handle,uri,GNOME_VFS_OPEN_READ))) + if (GNOME_VFS_OK!=(errvfsresult=gnome_vfs_open_uri(&handle,uri,GNOME_VFS_OPEN_READ|GNOME_VFS_OPEN_RANDOM))) goto fail; CAPTIVE_MEMZERO(&file_info_local); if (GNOME_VFS_OK!=(errvfsresult=gnome_vfs_get_file_info_from_handle(handle,&file_info_local,GNOME_VFS_FILE_INFO_DEFAULT))) goto fail_close_handle; - if (file_info_local.type!=GNOME_VFS_FILE_TYPE_REGULAR) { + if (1 + && file_info_local.type!=GNOME_VFS_FILE_TYPE_REGULAR + /* FC4 gnome-vfs2-2.10.0-5 "http" returns GNOME_VFS_FILE_TYPE_UNKNOWN + * on the original info query so we need to try directory first. + */ + && file_info_local.type!=GNOME_VFS_FILE_TYPE_UNKNOWN) { errvfsresult=GNOME_VFS_ERROR_WRONG_FORMAT; goto fail_file_info_local_clear; } @@ -311,6 +323,13 @@ GnomeVFSResult errvfsresult; GNOME_VFS_DIRECTORY_VISIT_SAMEFS, /* visit_options; 'GNOME_VFS_DIRECTORY_VISIT_LOOPCHECK'? */ (GnomeVFSDirectoryVisitFunc)mod_uri_load_directory_visit_func, uri); /* data */ + /* FC4 gnome-vfs2-2.10.0-5 "http" returns GNOME_VFS_FILE_TYPE_UNKNOWN + * on the original info query so we need to try directory first. + */ + if (errvfsresult==GNOME_VFS_ERROR_NOT_A_DIRECTORY) { + mod_uri_load_file(uri); + return; + } if (errvfsresult!=GNOME_VFS_OK) { gchar *uri_text; @@ -348,8 +367,12 @@ gchar *uri_text; return; } switch (file_info_local.type) { - case GNOME_VFS_FILE_TYPE_REGULAR: mod_uri_load_file(uri); - case GNOME_VFS_FILE_TYPE_DIRECTORY: mod_uri_load_directory(uri); + case GNOME_VFS_FILE_TYPE_REGULAR: mod_uri_load_file(uri); break; + case GNOME_VFS_FILE_TYPE_DIRECTORY: mod_uri_load_directory(uri); break; + /* FC4 gnome-vfs2-2.10.0-5 "http" returns GNOME_VFS_FILE_TYPE_UNKNOWN + * on the original info query so we need to try directory first. + */ + case GNOME_VFS_FILE_TYPE_UNKNOWN: mod_uri_load_directory(uri); break; default: /* GNOME_VFS_ERROR_WRONG_FORMAT */; } gnome_vfs_file_info_clear(&file_info_local); -- 1.8.3.1