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!");
-       }*/
+       }
 }

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to