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