Author: stephan
Date: 2007-02-27 08:23:22 +0000 (Tue, 27 Feb 2007)
New Revision: 25034

Modified:
   squeeze/trunk/libsqueeze/archive-support-gnu-tar.c
   squeeze/trunk/libsqueeze/archive-support-zip.c
Log:
fixed gnu-tar refresh

Modified: squeeze/trunk/libsqueeze/archive-support-gnu-tar.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-support-gnu-tar.c  2007-02-25 19:23:21 UTC 
(rev 25033)
+++ squeeze/trunk/libsqueeze/archive-support-gnu-tar.c  2007-02-27 08:23:22 UTC 
(rev 25034)
@@ -377,131 +377,116 @@
 gboolean
 lsq_archive_support_gnu_tar_refresh_parse_output(LSQArchiveCommand 
*archive_command)
 {
-/*
+       gchar *line = NULL;
+       gsize linesize = 0;
        GIOStatus status = G_IO_STATUS_NORMAL;
-       LSQArchive *archive = data;
-       gchar *line     = NULL;
-       gpointer props[6];
-
+       LSQArchive *archive = archive_command->archive;
        guint64 size;
-       guint linesize;
-       gint n = 0, a = 0, i = 0, o = 0;
+       gpointer props[6];
+       gint n = 0, a = 0, i = 0;
        gchar *temp_filename = NULL;
 
-       if(!LSQ_IS_ARCHIVE(archive))
-               return FALSE;
+       LSQArchiveIter *entry;
 
+       status = lsq_archive_command_read_line(archive_command, 1, &line, 
&linesize, NULL);
+       if (line == NULL)
+       {
+               if(status == G_IO_STATUS_AGAIN)
+                       return TRUE;
+               else
+                       return FALSE;
+       }
 
-       if(cond & (G_IO_PRI | G_IO_IN))
+       if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_rights)
        {
-               for(o = 0; o < 500; o++)
-               {
-                       i = 0;
+               line[10] = '\0';
+               props[i] = line;
+               i++;
+       }
+       for(n=13; n < linesize; ++n)
+               if(line[n] == ' ') break;
 
-                       status = g_io_channel_read_line(ioc, &line, 
NULL,NULL,NULL);
-                       if (line == NULL)
-                               break;
+       if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_owner)
+       {
+               line[n] = '\0';
+               props[i] = line+11;
+               i++;
+       }
 
-                       linesize = strlen(line);
+       for(++n; n < linesize; ++n)
+               if(line[n] >= '0' && line[n] <= '9') break;
 
-                       
if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_rights)
-                       {
-                               line[10] = '\0';
-                               props[i] = line;
-                               i++;
-                       }
+       a = n;
 
+       for(; n < linesize; ++n)
+               if(line[n] == ' ') break;
 
-                       for(n=13; n < linesize; ++n)
-                               if(line[n] == ' ') break;
+       if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_size)
+       {
+               line[n] = '\0';
+               size = g_ascii_strtoull(line + a, NULL, 0);
+               props[i] = &size;
+               i++;
+       }
 
-                       
if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_owner)
-                       {
-                               line[n] = '\0';
-                               props[i] = line+11;
-                               i++;
-                       }
+       a = ++n;
 
-                       for(++n; n < linesize; ++n)
-                               if(line[n] >= '0' && line[n] <= '9') break;
+       for(; n < linesize; n++) // DATE
+               if(line[n] == ' ') break;
 
-                       a = n;
+       if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_date)
+       {
+               line[n] = '\0';
+               props[i] = line + a;
+               i++;
+       }
 
-                       for(; n < linesize; ++n)
-                               if(line[n] == ' ') break;
+       a = ++n;
+       for (; n < linesize; n++) // TIME
+               if (line[n] == ' ') break;
 
-                       
if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_size)
-                       {
-                               line[n] = '\0';
-                               size = g_ascii_strtoull(line + a, NULL, 0);
-                               props[i] = &size;
-                               i++;
-                       }
+       if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_time)
+       {
+               line[n] = '\0';
+               props[i] = line + a;
+               i++;
+       }
+       n++;
 
-                       a = ++n;
+       gchar *temp = g_strrstr (&line[n],"->"); 
+       if (temp ) 
+       { 
+               temp[0] = '\0';
+       }
+       else
+       {
+               line[linesize-1] = '\0';
+       }
+       if(line[0] == 'd')
+       {
+               /* 1: Work around for gtar, which does not output 
+                * trailing slashes with directories. */
+               /* 2: The line includes the newline character, this 
+                * would probably break on platforms that use 
+                * more then one character to indicate a line-end (\r\n) */
+               if(line[linesize-2] != '/')
+                       temp_filename = g_strconcat(line + n, "/", NULL); 
+               else
+                       temp_filename = g_strdup(line + n); 
 
-                       for(; n < linesize; n++) // DATE
-                               if(line[n] == ' ') break;
-
-                       
if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_date)
-                       {
-                               line[n] = '\0';
-                               props[i] = line + a;
-                               i++;
-                       }
-
-                       a = ++n;
-                       for (; n < linesize; n++) // TIME
-                               if (line[n] == ' ') break;
-
-                       
if(LSQ_ARCHIVE_SUPPORT_GNU_TAR(archive->support)->_view_time)
-                       {
-                               line[n] = '\0';
-                               props[i] = line + a;
-                               i++;
-                       }
-
-                       n++;
-
-                       gchar *temp = g_strrstr (&line[n],"->"); 
-                       if (temp ) 
-                       { 
-                               temp[0] = '\0';
-                       }
-                       else
-                       {
-                               line[linesize-1] = '\0';
-                       }
-                       if(line[0] == 'd')
-                       {
-                               // work around for gtar, which does not output 
trailing slashes with directories
-                               if(line[linesize-2] != '/')
-                                       temp_filename = g_strconcat(line + n, 
"/", NULL); 
-                               else
-                                       temp_filename = g_strdup(line + n); 
- 
-                               entry = lsq_archive_add_file(archive, 
temp_filename);
-                               g_free(temp_filename);
-                       }
-                       else
-                       {
-                               temp_filename = line + n; 
- 
-                               entry = lsq_archive_add_file(archive, 
temp_filename);
-                       }
-                       lsq_archive_iter_set_propsv(archive, entry, 
(gconstpointer*)props);
-                       g_free(line);
-               }
+               entry = lsq_archive_add_file(archive, temp_filename);
+               g_free(temp_filename);
        }
-       if(cond & (G_IO_ERR | G_IO_HUP | G_IO_NVAL) )
+       else
        {
-               g_io_channel_shutdown ( ioc,TRUE,NULL );
-               g_io_channel_unref (ioc);
-               lsq_archive_set_status(archive, LSQ_ARCHIVESTATUS_IDLE);
-               return FALSE; 
+               temp_filename = line + n; 
+
+               entry = lsq_archive_add_file(archive, temp_filename);
        }
-       */
-       return FALSE;
+
+       lsq_archive_iter_set_propsv(entry, (gconstpointer*)props);
+       g_free(line);
+       return TRUE;
 }
 
 gboolean

Modified: squeeze/trunk/libsqueeze/archive-support-zip.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-support-zip.c      2007-02-25 19:23:21 UTC 
(rev 25033)
+++ squeeze/trunk/libsqueeze/archive-support-zip.c      2007-02-27 08:23:22 UTC 
(rev 25034)
@@ -359,7 +359,7 @@
 lsq_archive_support_zip_refresh_parse_output(LSQArchiveCommand 
*archive_command)
 {
        gchar *line = NULL;
-       gsize linesize= 0;
+       gsize linesize = 0;
        GIOStatus status = G_IO_STATUS_NORMAL;
        LSQArchive *archive = archive_command->archive;
        guint64 size;

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

Reply via email to