summaryrefslogtreecommitdiff
path: root/apps/plugins/properties.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/properties.c')
-rw-r--r--apps/plugins/properties.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/apps/plugins/properties.c b/apps/plugins/properties.c
index d6692bc893..e127a2908e 100644
--- a/apps/plugins/properties.c
+++ b/apps/plugins/properties.c
@@ -69,22 +69,23 @@ static bool file_properties(char* selected_file)
69 { 69 {
70 while(0 != (entry = rb->readdir(dir))) 70 while(0 != (entry = rb->readdir(dir)))
71 { 71 {
72 struct dirinfo info = rb->dir_get_info(dir, entry);
72 if(!rb->strcmp(entry->d_name, selected_file+dirlen)) 73 if(!rb->strcmp(entry->d_name, selected_file+dirlen))
73 { 74 {
74 unsigned log; 75 unsigned log;
75 rb->snprintf(str_dirname, sizeof str_dirname, "Path: %s", tstr); 76 rb->snprintf(str_dirname, sizeof str_dirname, "Path: %s", tstr);
76 rb->snprintf(str_filename, sizeof str_filename, "Name: %s", 77 rb->snprintf(str_filename, sizeof str_filename, "Name: %s",
77 selected_file+dirlen); 78 selected_file+dirlen);
78 log = human_size_log(entry->size); 79 log = human_size_log(info.size);
79 rb->snprintf(str_size, sizeof str_size, "Size: %ld %cB", 80 rb->snprintf(str_size, sizeof str_size, "Size: %ld %cB",
80 entry->size >> (log*10), human_size_prefix[log]); 81 info.size >> (log*10), human_size_prefix[log]);
81 rb->snprintf(str_date, sizeof str_date, "Date: %04d/%02d/%02d", 82 rb->snprintf(str_date, sizeof str_date, "Date: %04d/%02d/%02d",
82 ((entry->wrtdate >> 9 ) & 0x7F) + 1980, /* year */ 83 ((info.wrtdate >> 9 ) & 0x7F) + 1980, /* year */
83 ((entry->wrtdate >> 5 ) & 0x0F), /* month */ 84 ((info.wrtdate >> 5 ) & 0x0F), /* month */
84 ((entry->wrtdate ) & 0x1F)); /* day */ 85 ((info.wrtdate ) & 0x1F)); /* day */
85 rb->snprintf(str_time, sizeof str_time, "Time: %02d:%02d", 86 rb->snprintf(str_time, sizeof str_time, "Time: %02d:%02d",
86 ((entry->wrttime >> 11) & 0x1F), /* hour */ 87 ((info.wrttime >> 11) & 0x1F), /* hour */
87 ((entry->wrttime >> 5 ) & 0x3F)); /* minutes */ 88 ((info.wrttime >> 5 ) & 0x3F)); /* minutes */
88 89
89 num_properties = 5; 90 num_properties = 5;
90 91
@@ -158,11 +159,12 @@ static bool _dir_properties(DPS* dps)
158 /* walk through the directory content */ 159 /* walk through the directory content */
159 while(result && (0 != (entry = rb->readdir(dir)))) 160 while(result && (0 != (entry = rb->readdir(dir))))
160 { 161 {
162 struct dirinfo info = rb->dir_get_info(dir, entry);
161 /* append name to current directory */ 163 /* append name to current directory */
162 rb->snprintf(dps->dirname+dirlen, dps->len-dirlen, "/%s", 164 rb->snprintf(dps->dirname+dirlen, dps->len-dirlen, "/%s",
163 entry->d_name); 165 entry->d_name);
164 166
165 if (entry->attribute & ATTR_DIRECTORY) 167 if (info.attribute & ATTR_DIRECTORY)
166 { 168 {
167 unsigned log; 169 unsigned log;
168 170
@@ -188,7 +190,7 @@ static bool _dir_properties(DPS* dps)
188 else 190 else
189 { 191 {
190 dps->fc++; /* new file */ 192 dps->fc++; /* new file */
191 dps->bc += entry->size; 193 dps->bc += info.size;
192 } 194 }
193 if(ACTION_STD_CANCEL == rb->get_action(CONTEXT_STD,TIMEOUT_NOBLOCK)) 195 if(ACTION_STD_CANCEL == rb->get_action(CONTEXT_STD,TIMEOUT_NOBLOCK))
194 result = false; 196 result = false;
@@ -290,7 +292,8 @@ enum plugin_status plugin_start(const void* parameter)
290 { 292 {
291 if(!rb->strcmp(entry->d_name, file+dirlen)) 293 if(!rb->strcmp(entry->d_name, file+dirlen))
292 { 294 {
293 its_a_dir = entry->attribute & ATTR_DIRECTORY ? true : false; 295 struct dirinfo info = rb->dir_get_info(dir, entry);
296 its_a_dir = info.attribute & ATTR_DIRECTORY ? true : false;
294 found = true; 297 found = true;
295 break; 298 break;
296 } 299 }