[Xfce4-commits] r26024 - xarchiver/trunk/src

Giuseppe Torelli colossus at xfce.org
Tue Aug 28 12:28:22 CEST 2007


Author: colossus
Date: 2007-08-28 10:28:22 +0000 (Tue, 28 Aug 2007)
New Revision: 26024

Modified:
   xarchiver/trunk/src/extract_dialog.c
   xarchiver/trunk/src/mime.c
   xarchiver/trunk/src/rpm.c
Log:
Added rpm and deb mime types.
Fixed compiler warnings in rpm.c and extract.c..


Modified: xarchiver/trunk/src/extract_dialog.c
===================================================================
--- xarchiver/trunk/src/extract_dialog.c	2007-08-28 02:32:01 UTC (rev 26023)
+++ xarchiver/trunk/src/extract_dialog.c	2007-08-28 10:28:22 UTC (rev 26024)
@@ -853,7 +853,7 @@
 
 	if (result == 0 || stop_flag)
 	{
-		xa_delete_temp_directory ( tmp_dir, 0 );
+		xa_delete_temp_directory (archive,0);
 		gtk_widget_hide (viewport2);
 		Update_StatusBar (_("Operation canceled."));
 		return FALSE;
@@ -876,16 +876,16 @@
 	g_string_free ( unescaped_names, TRUE );
 	if (result == 0 || stop_flag)
 	{
-		xa_delete_temp_directory (tmp_dir,0);
+		xa_delete_temp_directory (archive,0);
 		gtk_widget_hide (viewport2);
 		Update_StatusBar (_("Operation canceled."));
 		return FALSE;
 	}
 
 	if (cpio_flag)
-		xa_delete_temp_directory ( tmp_dir, 0 );
+		xa_delete_temp_directory (archive,0);
 	else
-		xa_delete_temp_directory ( tmp_dir, 1 );
+		xa_delete_temp_directory (archive,1);
 
 	return result;
 }

Modified: xarchiver/trunk/src/mime.c
===================================================================
--- xarchiver/trunk/src/mime.c	2007-08-28 02:32:01 UTC (rev 26023)
+++ xarchiver/trunk/src/mime.c	2007-08-28 10:28:22 UTC (rev 26024)
@@ -46,7 +46,8 @@
 		icon_name = "gnome-mime-application-vnd.ms-powerpoint";
 	else if (strcmp(mime,"application/zip") == 0 || strcmp(mime,"application/x-rar") == 0 || strcmp(mime,"application/x-tar") == 0
 		|| strcmp(mime,"application/x-7z-compressed") == 0 || strcmp(mime,"application/x-bzip-compressed-tar") == 0
-		|| strcmp (mime,"application/x-compressed-tar") == 0 || strcmp (mime,"application/x-lha") == 0 )
+		|| strcmp (mime,"application/x-compressed-tar") == 0 || strcmp (mime,"application/x-lha") == 0
+		|| strcmp (mime,"application/x-rpm") == 0 || strcmp (mime,"application/x-deb") == 0 )
 		icon_name = "package";
 	else if (strcmp(mime,"application/x-shockwave-flash") == 0 || strcmp(mime,"video/mpeg") == 0 || strcmp(mime,"video/quicktime") == 0
 		|| strcmp(mime,"video/x-msvideo") == 0)

Modified: xarchiver/trunk/src/rpm.c
===================================================================
--- xarchiver/trunk/src/rpm.c	2007-08-28 02:32:01 UTC (rev 26023)
+++ xarchiver/trunk/src/rpm.c	2007-08-28 10:28:22 UTC (rev 26024)
@@ -30,10 +30,10 @@
 GIOStatus status;
 gboolean result;
 GError *error = NULL;
-GIOChannel *ioc_cpio , *input_ioc, *output_ioc;
+GIOChannel *ioc_cpio,*input_ioc;
 void xa_get_cpio_line_content (gchar *line, gpointer data);
 
-void OpenRPM ( XArchive *archive )
+void OpenRPM (XArchive *archive)
 {
 	unsigned char bytes[8];
 	unsigned short int i;
@@ -117,7 +117,7 @@
 	{	
 		fclose (stream);
 		g_free (gzip_tmp);
-		xa_delete_temp_directory (tmp_dir,1);
+		xa_delete_temp_directory (archive,1);
 		return;
 	}
 	/* Let's decompress the gzip/bzip2 resulting file*/
@@ -133,9 +133,9 @@
 	idx = xa_find_archive_index (current_page);
 	gchar *gzip = data;
 	
-    if ( WIFEXITED( exit_code ) )
+    if (WIFEXITED( exit_code) )
     {
-	    if ( WEXITSTATUS ( exit_code ) )
+	    if ( WEXITSTATUS (exit_code) )
     	{
             Update_StatusBar ( _("Operation failed."));
             gtk_widget_hide ( viewport2 );
@@ -143,7 +143,7 @@
 		    response = xa_show_message_dialog (GTK_WINDOW (MainWindow),GTK_DIALOG_MODAL,GTK_MESSAGE_QUESTION,GTK_BUTTONS_YES_NO,_("An error occurred while decompressing the cpio archive."),_("Do you want to view the command line output?") );
 			if (response == GTK_RESPONSE_YES)
 				xa_show_cmd_line_output (NULL);
-			xa_delete_temp_directory (tmp_dir,1);
+			xa_delete_temp_directory (archive[idx],1);
 			g_free (cpio_tmp);
 			xa_set_button_state (1,1,GTK_WIDGET_IS_SENSITIVE(close1),0,0,0,0,0);
 			//TODO:
@@ -152,67 +152,62 @@
 		}
 	}
 
-	/* Now I have to open the CPIO temp file in read mode and spawn the
-	 * command cpio -tv with an input pipe so to receive the output from
-	 * the opened CPIO temp file */
+	/* Now I have to read the CPIO temp file and send its content to the
+	 * command cpio -tv so to receive its output in the xa_get_cpio_line_content() */
 
 	archive[idx]->parse_output = xa_get_cpio_line_content;
 	xa_spawn_async_process ( archive[idx] , "cpio -tv" , 1);
 	if ( archive[idx]->child_pid == 0 )
 	{
-		xa_delete_temp_directory (tmp_dir,1);
+		xa_delete_temp_directory (archive[idx],1);
 		g_free ( cpio_tmp );
 		return FALSE;
 	}
-	output_ioc = g_io_channel_unix_new ( archive[idx]->output_fd );
-	g_io_channel_set_encoding (output_ioc, locale , NULL);
-	g_io_channel_set_flags ( output_ioc , G_IO_FLAG_NONBLOCK , NULL );
+	ioc_cpio = g_io_channel_new_file (gzip,"r",NULL);
+	g_free (gzip);
+	g_io_channel_set_encoding (ioc_cpio,NULL,NULL);
+	g_io_channel_set_flags (ioc_cpio,G_IO_FLAG_NONBLOCK,NULL);
 
 	input_ioc = g_io_channel_unix_new ( archive[idx]->input_fd );
-	g_io_add_watch (input_ioc, G_IO_IN|G_IO_OUT|G_IO_PRI|G_IO_ERR|G_IO_HUP|G_IO_NVAL, WriteCPIOInput, NULL );
-	g_io_channel_set_encoding (input_ioc, NULL , NULL);
+	g_io_add_watch (input_ioc, G_IO_IN|G_IO_OUT|G_IO_PRI, WriteCPIOInput, archive[idx] );
+	g_io_channel_set_encoding (input_ioc,NULL,NULL);
 
-	ioc_cpio = g_io_channel_new_file (gzip , "r" , NULL);
-	g_free (gzip);
-	g_io_channel_set_encoding (ioc_cpio , NULL , NULL);
-	g_io_channel_set_flags ( ioc_cpio , G_IO_FLAG_NONBLOCK , NULL );
+	g_child_watch_add (archive[idx]->child_pid, (GChildWatchFunc) xa_watch_child, archive[idx]);
 
-	g_child_watch_add ( archive[idx]->child_pid, (GChildWatchFunc) xa_watch_child, archive[idx]);
-
   return NULL;
 }
 
 /* input pipe */
 gboolean WriteCPIOInput (GIOChannel *ioc, GIOCondition cond, gpointer data)
 {
+	XArchive *archive = data;
+
 	if (cond & (G_IO_IN | G_IO_PRI | G_IO_OUT) )
     {
-		/* Doing so I write to the input pipe of the g_spawned "cpio -tv" so to produce the list of files in the cpio archive */
-		status = g_io_channel_read_chars ( ioc_cpio , buffer, sizeof(buffer), &bytes_read, &error);
-		if ( status != G_IO_STATUS_EOF)
+		/* Doing so I write to the input pipe of the spawned "cpio -tv" so to output the list of files in the cpio archive */
+		status = g_io_channel_read_chars (ioc_cpio,buffer, sizeof(buffer), &bytes_read, NULL);
+		if (status != G_IO_STATUS_EOF)
 		{
-			status = g_io_channel_write_chars ( ioc , buffer , bytes_read , &bytes_written , &error );
+			status = g_io_channel_write_chars (ioc,buffer,bytes_read, &bytes_written, &error);
 			if (status == G_IO_STATUS_ERROR)
 			{
 				response = xa_show_message_dialog (GTK_WINDOW (MainWindow),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("An error occurred:"),error->message);
 				g_error_free (error);
-				xa_delete_temp_directory (tmp_dir,1);
-				CloseChannels ( ioc_cpio );
-				CloseChannels ( ioc );
+				xa_delete_temp_directory (archive,1);
+				CloseChannels (ioc_cpio);
+				CloseChannels (ioc);
 				return FALSE;
 			}
-			/*
-			while ( bytes_read != bytes_written )
-				status = g_io_channel_write_chars ( ioc , buffer + bytes_written , bytes_read - bytes_written , &bytes_written , &error );
-			g_print ("*Written:%d\tStatus:%d\n",bytes_written,status);
-			*/
-			g_io_channel_flush ( ioc , NULL );
+			/*while ( bytes_read != bytes_written )
+				status = g_io_channel_write_chars (ioc,buffer + bytes_written,bytes_read - bytes_written,&bytes_written,&error);*/
+
+			g_io_channel_flush (ioc,NULL);
 			return TRUE;
 		}
 		else
 		{
-			CloseChannels ( ioc_cpio );
-			CloseChannels ( ioc );
+			CloseChannels (ioc_cpio);
+			CloseChannels (ioc);
 			return FALSE;
 		}
 	}
@@ -343,8 +338,8 @@
 	g_free (command);
 	if (archive[idx]->child_pid == 0)
 	{
-		fclose ( stream );
-		xa_delete_temp_directory (tmp_dir,1);
+		fclose (stream);
+		xa_delete_temp_directory (archive[idx],1);
 		g_free (tmp);
 		return;
 	}



More information about the Xfce4-commits mailing list