Provide "cabinet_used" debug message if -v|--verbose.
authorlace <>
Sun, 25 Dec 2005 10:30:43 +0000 (10:30 +0000)
committerlace <>
Sun, 25 Dec 2005 10:30:43 +0000 (10:30 +0000)
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

index 0753624..2e83141 100644 (file)
@@ -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);