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

Giuseppe Torelli colossus at xfce.org
Tue Oct 10 06:56:13 UTC 2006


Author: colossus
Date: 2006-10-10 06:56:11 +0000 (Tue, 10 Oct 2006)
New Revision: 23335

Modified:
   xarchiver/trunk/src/7zip.c
   xarchiver/trunk/src/rpm.c
Log:
Got rid of GValues in rpm.c.
Fixed missed 'status =' in 7zip.c.


Modified: xarchiver/trunk/src/7zip.c
===================================================================
--- xarchiver/trunk/src/7zip.c	2006-10-09 22:21:10 UTC (rev 23334)
+++ xarchiver/trunk/src/7zip.c	2006-10-10 06:56:11 UTC (rev 23335)
@@ -57,12 +57,12 @@
 			{
 				for ( x = 0; x <= 7; x++)
 				{
-					g_io_channel_read_line ( ioc, &line, NULL, NULL, NULL );
+					status = g_io_channel_read_line ( ioc, &line, NULL, NULL, NULL );
 					g_free (line);
 				}
 				jump_header = TRUE;
 			}
-			g_io_channel_read_line ( ioc, &line, NULL, NULL, NULL );
+			status = g_io_channel_read_line ( ioc, &line, NULL, NULL, NULL );
 			if ( line == NULL )
 				break;
 
@@ -70,7 +70,7 @@
 			if (strncmp (line, "-------------------", 19) == 0 || strncmp (line, "\x0a",1) == 0)
 			{
 				g_free (line);
-				g_io_channel_read_line ( ioc, &line, NULL, NULL, NULL );
+				status = g_io_channel_read_line ( ioc, &line, NULL, NULL, NULL );
 				g_free (line);
 				break;
 			}

Modified: xarchiver/trunk/src/rpm.c
===================================================================
--- xarchiver/trunk/src/rpm.c	2006-10-09 22:21:10 UTC (rev 23334)
+++ xarchiver/trunk/src/rpm.c	2006-10-10 06:56:11 UTC (rev 23335)
@@ -233,19 +233,12 @@
 gboolean ReadCPIOOutput (GIOChannel *ioc, GIOCondition cond, gpointer data)
 {
 	XArchive *archive = data;
-	gchar *line = NULL;
-	gchar *start = NULL;
-	gchar *end = NULL;
-	GValue *filename = NULL;
-	GValue *size = NULL;
-	gchar *_size = NULL;
-	GValue *permissions = NULL;
-	GValue *symlink = NULL;
-	GValue *hard_link = NULL;
-	GValue *owner = NULL;
-	GValue *group = NULL;
-	gchar *temp_filename = NULL;
-	GIOStatus status;
+	gchar **fields = NULL;
+    gchar *line = NULL;
+    gchar *filename = NULL;
+	GIOStatus status = G_IO_STATUS_NORMAL;
+	GtkTreeIter iter;
+	gchar *temp = NULL;
 
     /* Is there output from "cpio -tv" to read ? */
 	if (cond & (G_IO_IN | G_IO_PRI) )
@@ -256,100 +249,51 @@
 			if (line == NULL)
 				break;
 
-			filename    = g_new0(GValue, 1);
-			permissions = g_new0(GValue, 1);
-			symlink	  = g_new0(GValue, 1);
-			owner       = g_new0(GValue, 1);
-			group       = g_new0(GValue, 1);
-			size        = g_new0(GValue, 1);
-			hard_link   = g_new0(GValue, 1);
+			fields = split_line (line , 5);
+			filename = get_last_field (line , 9);
+			gtk_list_store_append (liststore, &iter);
+			if ( g_str_has_prefix(fields[0] , "d") == FALSE)
+				archive->nr_of_files++;
+            else
+				archive->nr_of_dirs++;
 
-			start = eat_spaces (line);
-			end = strchr (start, ' ');
-			permissions = g_value_init(permissions, G_TYPE_STRING);
-			g_value_set_string ( permissions , g_strndup ( start , end - start) );
-
-			start = eat_spaces (end);
-			end = strchr (start, ' ');
-			hard_link = g_value_init (hard_link, G_TYPE_STRING);
-			g_value_set_string ( hard_link , g_strndup ( start , end - start) );
-
-			start = eat_spaces (end);
-			end = strchr (start, ' ');
-			owner = g_value_init (owner, G_TYPE_STRING);
-			g_value_set_string ( owner , g_strndup ( start , end - start) );
-
-			start = eat_spaces (end);
-			end = strchr (start, ' ');
-			group = g_value_init (group, G_TYPE_STRING);
-			g_value_set_string ( group , g_strndup ( start , end - start) );
-
-			start = eat_spaces (end);
-			end = strchr (start, ' ');
-			size = g_value_init(size, G_TYPE_UINT64);
-			_size  = g_strndup ( start , end - start);
-			g_value_set_uint64 (size , atoll (_size) );
-			g_free (_size);
-
-			start = eat_spaces (end);
-			end = strchr (start, ' ');
-			start = eat_spaces (end);
-			end = strchr (start, ' ');
-			start = eat_spaces (end);
-			end = strchr (start, ' ');
-
-			start = eat_spaces (end);
-			end = strchr (start, '\n');
-
-			symlink  = g_value_init(symlink, G_TYPE_STRING);
-			filename = g_value_init (filename, G_TYPE_STRING);
-
-			gchar *temp = g_strrstr (start,"->");
+			temp = g_strrstr (filename,"->");
 			if (temp)
 			{
-				temp_filename = g_strstrip(g_strndup(start, temp - start ));
-				g_value_set_string (symlink, g_strstrip(g_strndup (&temp[3] , strlen(temp))) );
+				gtk_list_store_set (liststore, &iter,2,g_strstrip(&temp[3]),-1);
+				temp = g_strstrip(g_strndup(filename, strlen(filename) - strlen(temp) ));
+				gtk_list_store_set (liststore, &iter,0,temp,-1);
+				g_free (temp);
 			}
 			else
 			{
-				temp_filename = g_strndup ( start , end - start);
-				g_value_set_string (symlink, g_strdup(" ") );
+				gtk_list_store_set (liststore, &iter,2,NULL,-1);
+				gtk_list_store_set (liststore, &iter,0,filename,-1);
 			}
-			g_value_set_string ( filename, temp_filename );
 
-			archive->row = g_list_prepend (archive->row,filename);
-			archive->row = g_list_prepend (archive->row,permissions);
-			archive->row = g_list_prepend (archive->row,symlink);
-			archive->row = g_list_prepend (archive->row,hard_link);
-			archive->row = g_list_prepend (archive->row,owner);
-			archive->row = g_list_prepend (archive->row,group);
-			archive->row = g_list_prepend (archive->row,size);
+			gtk_list_store_set (liststore, &iter,1,fields[0],-1);
+			gtk_list_store_set (liststore, &iter,3,fields[1],-1);
+			gtk_list_store_set (liststore, &iter,4,fields[2],-1);
+			gtk_list_store_set (liststore, &iter,5,fields[3],-1);
+			gtk_list_store_set (liststore, &iter,6,atoll(fields[4]),-1);
 
-			if (  g_str_has_prefix (g_value_get_string (permissions) , "d") == FALSE)
-				archive->nr_of_files++;
-			else
-				archive->nr_of_dirs++;
-			archive->dummy_size += g_value_get_uint64 (size);
+            while (gtk_events_pending() )
+				gtk_main_iteration();
 
+            archive->dummy_size += atoll(fields[4]);
+            g_strfreev ( fields );
 			g_free (line);
-			archive->row_cnt++;
-			if (archive->row_cnt > 99)
-			{
-		        xa_append_rows ( archive , 7 );
-			    archive->row_cnt = 0;
-			}
-	    }
+		}
 		while (status == G_IO_STATUS_NORMAL);
 
 		if (status == G_IO_STATUS_ERROR || status == G_IO_STATUS_EOF)
-		goto done;
+			goto done;
 	}
 	else if (cond & (G_IO_ERR | G_IO_HUP | G_IO_NVAL) )
 	{
-	done:
-		g_io_channel_shutdown ( ioc,TRUE,NULL );
-		g_io_channel_unref (ioc);
-		xa_append_rows ( archive , 7 );
+done:	CloseChannels (ioc);
+		gtk_tree_view_set_model (GTK_TREE_VIEW(treeview1), model);
+		g_object_unref (model);
 		archive->tmp = cpio_tmp;
 		return FALSE;
 	}



More information about the Xfce4-commits mailing list