From ece72492b3a0048fd250089b1692ba0590e6b2b4 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sat, 2 Jun 2007 16:35:10 +0000 Subject: [PATCH] handle large files SVN revision: 30195 --- TODO | 2 ++ src/bin/e.h | 7 +++++++ src/bin/e_fm.c | 22 ++++++++++++++++++++++ src/bin/e_fm_main.c | 20 ++++++++++++++++---- src/preload/e_precache.c | 4 ++-- 5 files changed, 49 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index 138645a9d..4aebec87a 100644 --- a/TODO +++ b/TODO @@ -37,6 +37,8 @@ Some of the things (in very short form) that need to be done to E17... ESSENTIAL FEATURES ------------------------------------------------------------------------------- +* fm2 seems to have problems with files > 2gb +* fm2 slave leaks on continual file changes * fm2 fwin windows need to use icon for that dir on window border * fm2 needs to use different theme elements for desktop * fm2 theme needs to not suck diff --git a/src/bin/e.h b/src/bin/e.h index 5e1f02eab..2ff0799fe 100644 --- a/src/bin/e.h +++ b/src/bin/e.h @@ -12,6 +12,13 @@ #define OBJECT_CHECK #endif +#ifndef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +#endif +#ifndef __USE_FILE_OFFSET64 /* for large file support */ +#define __USE_FILE_OFFSET64 +#endif + #include #include #include diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c index 2c91dd882..f34c84d25 100644 --- a/src/bin/e_fm.c +++ b/src/bin/e_fm.c @@ -1797,6 +1797,28 @@ e_fm2_client_data(Ecore_Ipc_Event_Client_Data *e) } } } + else + { + if ((sd->id == e->ref_to) && (path[0] == 0)) + { + if (e->response == 2)/* end of scan */ + { + sd->listing = 0; + if (sd->scan_timer) + { + ecore_timer_del(sd->scan_timer); + sd->scan_timer = + ecore_timer_add(0.0001, + _e_fm2_cb_scan_timer, + sd->obj); + } + else + { + _e_fm2_client_monitor_list_end(l->data); + } + } + } + } free(evdir); } break; diff --git a/src/bin/e_fm_main.c b/src/bin/e_fm_main.c index 77ef78dc4..5c0a8ac17 100644 --- a/src/bin/e_fm_main.c +++ b/src/bin/e_fm_main.c @@ -1,6 +1,13 @@ /* * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 */ +#ifndef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +#endif +#ifndef __USE_FILE_OFFSET64 /* for large file support */ +#define __USE_FILE_OFFSET64 +#endif + #include #include #include @@ -823,11 +830,14 @@ _e_cb_file_mon_list_idler(void *data) snprintf(buf, sizeof(buf), "/%s", file); else snprintf(buf, sizeof(buf), "%s/%s", ed->dir, file); - if ((!ed->fq->next) || - ((!strcmp(ed->fq->next->data, ".order")) && - (!ed->fq->next->next))) - _e_file_add(ed, buf, 2); +/* + if (//(!ed->fq->next) || + ((!strcmp(ed->fq->next->data, ".order")) + //&& (!ed->fq->next->next) + )) + _e_file_add(ed, buf, 1); else + */ _e_file_add(ed, buf, 1); } free(file); @@ -837,6 +847,7 @@ _e_cb_file_mon_list_idler(void *data) { _e_file_mon_list_sync(ed); ed->idler = NULL; + if (!ed->fq) _e_file_add(ed, "", 2); return 0; } } @@ -844,6 +855,7 @@ _e_cb_file_mon_list_idler(void *data) ed->sync = 0; ed->sync_time = 0.0; ed->idler = NULL; + if (!ed->fq) _e_file_add(ed, "", 2); return 0; } diff --git a/src/preload/e_precache.c b/src/preload/e_precache.c index 5a58b2862..c268ab779 100644 --- a/src/preload/e_precache.c +++ b/src/preload/e_precache.c @@ -114,7 +114,7 @@ evas_object_image_file_set(Evas_Object *obj, const char *file, const char *key) (*func) (obj, file, key); } -time_t +long long ecore_file_mod_time(const char *file) { static time_t (*func) (const char *file) = NULL; @@ -125,7 +125,7 @@ ecore_file_mod_time(const char *file) return (*func) (file); } -int +long long ecore_file_size(const char *file) { static int (*func) (const char *file) = NULL;