Implemented captive-install-acquire Gnome interface.
[captive.git] / src / install / acquire / cabinet.c
index f18695c..d9ba35c 100644 (file)
@@ -37,7 +37,10 @@ void acquire_cabinet_seek(struct acquire_cabinet *acquire_cabinet,GnomeVFSFileOf
 {
        g_return_if_fail(acquire_cabinet!=NULL);
 
-       (*ui_search_is_aborted)();
+       /* Do not: (*ui_progress)(acquire_cabinet->uri);
+        * as we currently extract some specific file out of it.
+        */
+       (*ui_progress)(NULL);
 
        acquire_cabinet->offset=offset;
 }
@@ -46,7 +49,7 @@ void acquire_cabinet_seek_skip(struct acquire_cabinet *acquire_cabinet,GnomeVFSF
 {
        g_return_if_fail(acquire_cabinet!=NULL);
 
-       (*ui_search_is_aborted)();
+       (*ui_progress)(NULL);
 
        acquire_cabinet->offset+=offset;
 }
@@ -55,7 +58,7 @@ GnomeVFSFileOffset acquire_cabinet_tell(struct acquire_cabinet *acquire_cabinet)
 {
        g_return_val_if_fail(acquire_cabinet!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
 
-       (*ui_search_is_aborted)();
+       (*ui_progress)(NULL);
 
        return acquire_cabinet->offset;
 }
@@ -74,7 +77,7 @@ GnomeVFSFileSize bytes_read_now;
        g_return_val_if_fail(acquire_cabinet!=NULL,GNOME_VFS_ERROR_BAD_PARAMETERS);
        g_return_val_if_fail(buffer!=NULL || bytes==0,GNOME_VFS_ERROR_BAD_PARAMETERS);
 
-       if ((*ui_search_is_aborted)())
+       if ((*ui_progress)(NULL))
                return GNOME_VFS_ERROR_INTERRUPTED;
 
        bytes=MAX(0,MIN(bytes,acquire_cabinet->size-acquire_cabinet->offset));
@@ -209,7 +212,7 @@ int file_write(struct file *fi, UBYTE *buf, size_t length)
        g_return_val_if_fail(fi==file_write_fi_assertion,0);
        g_return_val_if_fail(file_write_bytearray!=NULL,0);
 
-       if ((*ui_search_is_aborted)())
+       if ((*ui_progress)(NULL))
                return 0;
 
        g_byte_array_append(file_write_bytearray,buf,length);
@@ -224,7 +227,7 @@ struct file *filelist,*fi;
 
        g_return_if_fail(acquire_cabinet!=NULL);
 
-       if ((*ui_search_is_aborted)())
+       if ((*ui_progress)(acquire_cabinet->uri))
                return;
 
        basecab=find_cabs_in_file(acquire_cabinet);
@@ -244,8 +247,11 @@ GnomeVFSURI *uri_fi;
                if (!captivemodid_module_length_is_valid(fi->length))
                        continue;
 
-               if ((*ui_search_is_aborted)())
+               uri_fi=gnome_vfs_uri_append_file_name(acquire_cabinet->uri,fi->filename);
+               if ((*ui_progress)(uri_fi)) {
+                       gnome_vfs_uri_unref(uri_fi);
                        return;
+                       }
 
                file_write_fi_assertion=fi;
                file_write_bytearray=g_byte_array_new();
@@ -256,11 +262,11 @@ GnomeVFSURI *uri_fi;
                if (fi->length!=file_write_bytearray->len) {
                        g_byte_array_free(file_write_bytearray,
                                        TRUE);  /* free_segment */
+                       gnome_vfs_uri_unref(uri_fi);
                        continue;
                        }
                file_buffer=g_byte_array_free(file_write_bytearray,
                                FALSE); /* free_segment */
-               uri_fi=gnome_vfs_uri_append_file_name(acquire_cabinet->uri,fi->filename);
                mod_uri_load_file_from_memory(file_buffer,fi->length,uri_fi);
                gnome_vfs_uri_unref(uri_fi);
                g_free(file_buffer);