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

Giuseppe Torelli colossus at xfce.org
Mon Jul 30 23:17:32 CEST 2007


Author: colossus
Date: 2007-07-30 21:17:32 +0000 (Mon, 30 Jul 2007)
New Revision: 25941

Modified:
   xarchiver/trunk/src/archive.c
   xarchiver/trunk/src/zip.c
Log:
The entry->filename is now freed before converting it to UTF8.
Added counting of number of directories and files to zip.


Modified: xarchiver/trunk/src/archive.c
===================================================================
--- xarchiver/trunk/src/archive.c	2007-07-30 19:22:58 UTC (rev 25940)
+++ xarchiver/trunk/src/archive.c	2007-07-30 21:17:32 UTC (rev 25941)
@@ -345,7 +345,7 @@
 
 				child_entry->next = last_entry->child;
 				last_entry->child = child_entry;
-				//thid entry, last_entry->child, contains all the dirs
+				//this entry, last_entry->child, contains all the dirs
 			}
 			last_entry = child_entry;
 			p++;
@@ -406,7 +406,7 @@
 {
 	GSList *s = NULL;
 	XEntry *entry  = NULL;
-	XEntry *entry2 = NULL;
+
 	GtkTreeIter iter;
 	unsigned short int i;
 	gpointer current_column;
@@ -421,9 +421,12 @@
 			current_column = entry->columns;
 			gtk_list_store_append (archive->liststore, &iter);
 
-			//TODO: free the char in g_convert and also at line 445
 			if(!g_utf8_validate(entry->filename, -1, NULL) )
-				gtk_list_store_set (archive->liststore,&iter,0,GTK_STOCK_DIRECTORY,1,g_convert(entry->filename, -1, "UTF-8", "WINDOWS-1252", NULL, NULL, NULL),-1);
+			{
+				gchar *dummy = g_convert(entry->filename, -1, "UTF-8", "WINDOWS-1252", NULL, NULL, NULL);
+				g_free (entry->filename);
+				entry->filename = dummy;
+			}
 			else
 				gtk_list_store_set (archive->liststore,&iter,0,GTK_STOCK_DIRECTORY,1,entry->filename,-1);
 
@@ -479,6 +482,12 @@
 	
 	while (entry)
 	{
+		if(!g_utf8_validate(entry->filename, -1, NULL) )
+		{
+			gchar *dummy = g_convert(entry->filename, -1, "UTF-8", "WINDOWS-1252", NULL, NULL, NULL);
+			g_free (entry->filename);
+			entry->filename = dummy;
+		}
 		/* Remove the path from the filename */
 		gchar *slash = strrchr(entry->filename,'/');
 		if (slash != NULL)
@@ -492,10 +501,7 @@
 		current_column = entry->columns;
 		gtk_list_store_append (archive->liststore, &iter);
 		
-		if(!g_utf8_validate(entry->filename, -1, NULL))
-			gtk_list_store_set (archive->liststore,&iter,0,GTK_STOCK_DIRECTORY,1,g_convert(entry->filename, -1, "UTF-8", "WINDOWS-1252", NULL, NULL, NULL),-1);
-		else
-			gtk_list_store_set (archive->liststore,&iter,0,GTK_STOCK_DIRECTORY,1,entry->filename,-1);
+		gtk_list_store_set (archive->liststore,&iter,0,GTK_STOCK_DIRECTORY,1,entry->filename,-1);
 
 		for (i = 0; i < archive->nc; i++)
 		{

Modified: xarchiver/trunk/src/zip.c
===================================================================
--- xarchiver/trunk/src/zip.c	2007-07-30 19:22:58 UTC (rev 25940)
+++ xarchiver/trunk/src/zip.c	2007-07-30 21:17:32 UTC (rev 25941)
@@ -55,7 +55,6 @@
 void xa_get_zip_line_content (gchar *line, gpointer data)
 {
 	XArchive *archive = data;
-	XEntry *entry = NULL;
 	gchar *filename;
 	gpointer item[8];
 	unsigned short int i = 0;
@@ -77,7 +76,12 @@
 	line[n]='\0';
 	item[i] = line + a;
 	if ( (line+a)[0] == 'd')
+	{
 		is_dir = TRUE;
+		archive->nr_of_dirs++;
+	}
+	else
+		archive->nr_of_files++;
 	i++;
 	n++;
 
@@ -166,8 +170,8 @@
 	filename = line + n;
 	//item[0] = GTK_STOCK_DIRECTORY;//xa_get_mime_icon (line+a);
 
-	entry = xa_set_archive_entries_for_each_row (archive,filename,item);
-	/*if (archive->entry != NULL)
+	archive->entry = xa_set_archive_entries_for_each_row (archive,filename,item);
+	if (archive->entry != NULL)
 	{
 		archive->entry->is_dir = is_dir;
 		archive->entry->is_encrypted = encrypted;
@@ -176,5 +180,5 @@
 	{
 		//TODO: found a way to stop calling this function over and over again; i.e. kill (archive->child_pid,SIGABRT) ??
 		g_message ("*** Can't allocate memory for the archive data!");
-	}*/
+	}
 }



More information about the Xfce4-commits mailing list