Author: peter
Date: 2007-01-22 19:38:05 +0000 (Mon, 22 Jan 2007)
New Revision: 24699

Modified:
   squeeze/trunk/libsqueeze/archive-support-gnu-tar.c
   squeeze/trunk/libsqueeze/archive-support-rar.c
   squeeze/trunk/libsqueeze/archive-support.c
   squeeze/trunk/libsqueeze/archive-tempfs.c
   squeeze/trunk/libsqueeze/archive-tempfs.h
   squeeze/trunk/libsqueeze/archive.c
Log:
view supported
tempfs gets cleaned on close


Modified: squeeze/trunk/libsqueeze/archive-support-gnu-tar.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-support-gnu-tar.c  2007-01-22 19:31:43 UTC 
(rev 24698)
+++ squeeze/trunk/libsqueeze/archive-support-gnu-tar.c  2007-01-22 19:38:05 UTC 
(rev 24699)
@@ -274,7 +274,6 @@
                gchar *command = NULL;
                gchar *files = lsq_concat_filenames(filenames);
                g_object_set_data(G_OBJECT(archive), LSQ_ARCHIVE_FILES, files);
-               lsq_archive_set_status(archive, LSQ_ARCHIVESTATUS_ADD);
                gchar *archive_path = g_shell_quote(archive->path);
                if(!archive->file_info) /* FIXME */
                {
@@ -364,7 +363,6 @@
                                NULL
                                );
                gchar *files = lsq_concat_filenames(filenames);
-               lsq_archive_set_status(archive, LSQ_ARCHIVESTATUS_EXTRACT);
                gchar *archive_path = g_shell_quote(archive->path);
                gchar *dest_path = g_shell_quote(extract_path);
                if(archive->file_info) /* FIXME */
@@ -439,7 +437,6 @@
                gchar *command = NULL;
                gchar *files = lsq_concat_filenames(filenames);
                g_object_set_data(G_OBJECT(archive), LSQ_ARCHIVE_FILES, files);
-               lsq_archive_set_status(archive, LSQ_ARCHIVESTATUS_REMOVE);
                gchar *archive_path = g_shell_quote(archive->path);
                if(archive->file_info)
                {

Modified: squeeze/trunk/libsqueeze/archive-support-rar.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-support-rar.c      2007-01-22 19:31:43 UTC 
(rev 24698)
+++ squeeze/trunk/libsqueeze/archive-support-rar.c      2007-01-22 19:38:05 UTC 
(rev 24699)
@@ -279,7 +279,7 @@
                {
                        if(!g_strcasecmp((gchar 
*)thunar_vfs_mime_info_get_name(archive->mime_info), "application/x-rar"))
                        {
-                               command = g_strconcat("unrar e ", archive_path, 
" ", files, " ", dest_path, NULL);
+                               command = g_strconcat("unrar x ", archive_path, 
" ", files, " ", dest_path, NULL);
                                lsq_execute(command, archive, NULL, NULL, NULL, 
NULL);
                        }       
                } else

Modified: squeeze/trunk/libsqueeze/archive-support.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-support.c  2007-01-22 19:31:43 UTC (rev 
24698)
+++ squeeze/trunk/libsqueeze/archive-support.c  2007-01-22 19:38:05 UTC (rev 
24699)
@@ -307,7 +307,8 @@
        gchar *full_file;
        while(files)
        {       
-               full_file = g_strconcat(lsq_tempfs_get_root_dir(archive), 
files->data, NULL);
+               lsq_tempfs_chmod(archive, files->data, 0644);
+               full_file = g_strconcat(lsq_tempfs_get_root_dir(archive), "/", 
files->data, NULL);
 #ifdef DEBUG
                g_debug("Open file: '%s'", full_file);
 #endif

Modified: squeeze/trunk/libsqueeze/archive-tempfs.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-tempfs.c   2007-01-22 19:31:43 UTC (rev 
24698)
+++ squeeze/trunk/libsqueeze/archive-tempfs.c   2007-01-22 19:38:05 UTC (rev 
24699)
@@ -39,7 +39,7 @@
 {
        gchar *filename;
        struct timespec mod_time;
-} SQTempFileMonitor;
+} LSQTempFileMonitor;
 
 static void lsq_tempfs_clean_dir(const gchar *path)
 {
@@ -48,6 +48,8 @@
        if(!path)
                return;
 
+       g_debug("clean %s", path);
+
        GDir *dir = g_dir_open(path, 0, NULL);
 
        if(dir)
@@ -56,7 +58,9 @@
 
                while(file)
                {
-                       lsq_tempfs_clean_dir(path);
+                       file = g_strconcat(path, "/", file, NULL);
+                       lsq_tempfs_clean_dir(file);
+                       g_free((gchar*)file);
                        file = g_dir_read_name(dir);
                }
 
@@ -72,6 +76,19 @@
                return;
 
        lsq_tempfs_clean_dir(archive->temp_dir);
+
+       GSList *iter = archive->monitor_list;
+       while(iter)
+       {
+               g_free(((LSQTempFileMonitor*)iter->data)->filename);
+               g_free(iter->data);
+               iter = g_slist_next(iter);
+       }
+       g_slist_free(archive->monitor_list);
+       archive->monitor_list = NULL;
+
+       g_free(archive->temp_dir);
+       archive->temp_dir = NULL;
 }
 
 const gchar* lsq_tempfs_get_root_dir(LSQArchive *archive)
@@ -117,7 +134,7 @@
                if(!lsq_tempfs_make_root_dir(archive))
                        return FALSE;
 
-       gchar *full_path = g_strconcat(archive->temp_dir, path, NULL);
+       gchar *full_path = g_strconcat(archive->temp_dir, "/", path, NULL);
 
        gboolean error = g_mkdir_with_parents(full_path, mode);
 
@@ -126,6 +143,21 @@
        return !error;
 }
 
+gboolean lsq_tempfs_chmod(LSQArchive *archive, const gchar *path, gint mode)
+{
+       if(!archive->temp_dir)
+               if(!lsq_tempfs_make_root_dir(archive))
+                       return FALSE;
+
+       gchar *full_path = g_strconcat(archive->temp_dir, "/", path, NULL);
+
+       gboolean error = g_chmod(full_path, mode);
+
+       g_free(full_path);
+
+       return !error;
+}
+
 gboolean
 lsq_tempfs_monitor_file(LSQArchive *archive, const gchar *path)
 {
@@ -138,7 +170,7 @@
        if(g_stat(path, &status))
                return FALSE;
        
-       SQTempFileMonitor *monitor = g_new(SQTempFileMonitor, 1);
+       LSQTempFileMonitor *monitor = g_new(LSQTempFileMonitor, 1);
        monitor->filename = g_strdup(path);
        monitor->mod_time = status.st_mtim;
 
@@ -164,11 +196,11 @@
 
        while(iter)
        {
-               if(strcmp(path, ((SQTempFileMonitor*)iter->data)->filename) == 
0)
+               if(strcmp(path, ((LSQTempFileMonitor*)iter->data)->filename) == 
0)
                {
-                       if((((SQTempFileMonitor*)iter->data)->mod_time.tv_sec > 
status.st_mtim.tv_sec) ||
-                               
(((SQTempFileMonitor*)iter->data)->mod_time.tv_nsec > status.st_mtim.tv_nsec &&
-                               
((SQTempFileMonitor*)iter->data)->mod_time.tv_sec >= status.st_mtim.tv_sec))
+                       if((((LSQTempFileMonitor*)iter->data)->mod_time.tv_sec 
> status.st_mtim.tv_sec) ||
+                               
(((LSQTempFileMonitor*)iter->data)->mod_time.tv_nsec > status.st_mtim.tv_nsec &&
+                               
((LSQTempFileMonitor*)iter->data)->mod_time.tv_sec >= status.st_mtim.tv_sec))
                        {
                                changed = TRUE;
                        }

Modified: squeeze/trunk/libsqueeze/archive-tempfs.h
===================================================================
--- squeeze/trunk/libsqueeze/archive-tempfs.h   2007-01-22 19:31:43 UTC (rev 
24698)
+++ squeeze/trunk/libsqueeze/archive-tempfs.h   2007-01-22 19:38:05 UTC (rev 
24699)
@@ -32,6 +32,8 @@
 
 gboolean lsq_tempfs_make_dir(LSQArchive *archive, const gchar *path, gint 
mode);
 
+gboolean lsq_tempfs_chmod(LSQArchive *archive, const gchar *path, gint mode);
+
 gboolean
 lsq_tempfs_monitor_file(LSQArchive *archive, const gchar *path);
 

Modified: squeeze/trunk/libsqueeze/archive.c
===================================================================
--- squeeze/trunk/libsqueeze/archive.c  2007-01-22 19:31:43 UTC (rev 24698)
+++ squeeze/trunk/libsqueeze/archive.c  2007-01-22 19:38:05 UTC (rev 24699)
@@ -28,6 +28,7 @@
 #include "archive.h"
 #include "archive-support.h"
 #include "slist.h"
+#include "archive-tempfs.h"
 
 #include "internals.h"
 
@@ -244,6 +245,7 @@
                                kill ( archive->child_pid , SIGHUP);
                        break;
        }
+       lsq_tempfs_clean_root_dir(archive);
        lsq_opened_archive_list = g_slist_remove(lsq_opened_archive_list, 
object);
 }
 
@@ -314,7 +316,6 @@
                                g_signal_emit(G_OBJECT(archive), 
lsq_archive_signals[LSQ_ARCHIVE_SIGNAL_REFRESHED], 0, NULL);
                        if((archive->old_status == 
LSQ_ARCHIVESTATUS_PREPARE_VIEW))// && (archive->status == 
LSQ_ARCHIVESTATUS_IDLE))
                        {
-                               g_debug("view");
                                g_signal_emit(G_OBJECT(archive), 
lsq_archive_signals[LSQ_ARCHIVE_SIGNAL_VIEW_PREPARED], 0, archive->files, NULL);
                                iter = archive->files;
                                while(iter)

_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to