[Xfce4-commits] r25034 - squeeze/trunk/libsqueeze

Stephan Arts stephan at xfce.org
Tue Feb 27 09:23:22 CET 2007


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;



More information about the Xfce4-commits mailing list