summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/codecs.c18
-rw-r--r--apps/codecs.h2
-rw-r--r--apps/codecs/sid.c6
-rw-r--r--apps/filetree.c18
-rw-r--r--apps/misc.c10
-rw-r--r--apps/onplay.c9
-rw-r--r--apps/plugin.c11
-rw-r--r--apps/plugin.h3
-rw-r--r--apps/plugins/disktidy.c11
-rw-r--r--apps/plugins/lua/luadir.c3
-rw-r--r--apps/plugins/md5sum.c4
-rw-r--r--apps/plugins/properties.c23
-rw-r--r--apps/plugins/random_folder_advance_config.c3
-rw-r--r--apps/plugins/stats.c3
-rw-r--r--apps/plugins/theme_remove.c3
-rw-r--r--apps/tagcache.c6
-rw-r--r--apps/tagtree.c2
17 files changed, 76 insertions, 59 deletions
diff --git a/apps/codecs.c b/apps/codecs.c
index b072c65..25cc659 100644
--- a/apps/codecs.c
+++ b/apps/codecs.c
@@ -55,20 +55,16 @@
#define LOGF_ENABLE
#include "logf.h"
-#if (CONFIG_PLATFORM & PLATFORM_HOSTED)
-
+#if (CONFIG_PLATFORM & PLATFORM_SDL)
#define PREFIX(_x_) sim_ ## _x_
+#else
+#define PREFIX(_x_) _x_
+#endif
+
+#if (CONFIG_PLATFORM & PLATFORM_HOSTED)
#if CONFIG_CODEC == SWCODEC
unsigned char codecbuf[CODEC_SIZE];
#endif
-void *sim_codec_load_ram(char* codecptr, int size, void **pd);
-void sim_codec_close(void *pd);
-
-#else /* !PLATFORM_HOSTED */
-
-#define PREFIX
-#define sim_codec_close(x)
-
#endif
size_t codec_size;
@@ -110,7 +106,7 @@ struct codec_api ci = {
#if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE
__div0,
#endif
- PREFIX(sleep),
+ sleep,
yield,
#if NUM_CORES > 1
diff --git a/apps/codecs.h b/apps/codecs.h
index 97b33ec..520aaee 100644
--- a/apps/codecs.h
+++ b/apps/codecs.h
@@ -159,7 +159,7 @@ struct codec_api {
#if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE
void (*__div0)(void);
#endif
- void (*sleep)(int ticks);
+ unsigned (*sleep)(unsigned ticks);
void (*yield)(void);
#if NUM_CORES > 1
diff --git a/apps/codecs/sid.c b/apps/codecs/sid.c
index 318cd1b..455bdbc 100644
--- a/apps/codecs/sid.c
+++ b/apps/codecs/sid.c
@@ -101,7 +101,7 @@ void sidPoke(int reg, unsigned char val) ICODE_ATTR;
#define rel 13
enum {
- adc, _and, asl, bcc, bcs, beq, bit, bmi, bne, bpl, brk, bvc, bvs, clc,
+ adc, _and, asl, bcc, bcs, beq, bit, bmi, bne, bpl, _brk, bvc, bvs, clc,
cld, cli, clv, cmp, cpx, cpy, dec, dex, dey, eor, inc, inx, iny, jmp,
jsr, lda, ldx, ldy, lsr, _nop, ora, pha, php, pla, plp, rol, ror, rti,
rts, sbc, sec, sed, sei, sta, stx, sty, tax, tay, tsx, txa, txs, tya,
@@ -204,7 +204,7 @@ static const float decayReleaseTimes[16] ICONST_ATTR =
};
static const int opcodes[256] ICONST_ATTR = {
- brk,ora,xxx,xxx,xxx,ora,asl,xxx,php,ora,asl,xxx,xxx,ora,asl,xxx,
+ _brk,ora,xxx,xxx,xxx,ora,asl,xxx,php,ora,asl,xxx,xxx,ora,asl,xxx,
bpl,ora,xxx,xxx,xxx,ora,asl,xxx,clc,ora,xxx,xxx,xxx,ora,asl,xxx,
jsr,_and,xxx,xxx,bit,_and,rol,xxx,plp,_and,rol,xxx,bit,_and,rol,xxx,
bmi,_and,xxx,xxx,xxx,_and,rol,xxx,sec,_and,xxx,xxx,xxx,_and,rol,xxx,
@@ -908,7 +908,7 @@ static inline void cpuParse(void)
setflags(FLAG_N,bval&0x80);
setflags(FLAG_V,bval&0x40);
break;
- case brk:
+ case _brk:
pc=0; /* Just quit the emulation */
break;
case clc:
diff --git a/apps/filetree.c b/apps/filetree.c
index 0a1b49d..1dc510f 100644
--- a/apps/filetree.c
+++ b/apps/filetree.c
@@ -153,10 +153,10 @@ static void check_file_thumbnails(struct tree_context* c)
while((entry = readdir(dir)) != 0) /* walk directory */
{
int ext_pos;
-
+ struct dirinfo info = dir_get_info(dir, entry);
ext_pos = strlen((char *)entry->d_name) - strlen(file_thumbnail_ext);
if (ext_pos <= 0 /* too short to carry ".talk" */
- || (entry->attribute & ATTR_DIRECTORY) /* no file */
+ || (info.attribute & ATTR_DIRECTORY) /* no file */
|| strcasecmp((char *)&entry->d_name[ext_pos], file_thumbnail_ext))
{ /* or doesn't end with ".talk", no candidate */
continue;
@@ -284,15 +284,17 @@ int ft_load(struct tree_context* c, const char* tempdir)
for ( i=0; i < global_settings.max_files_in_dir; i++ ) {
int len;
struct dirent *entry = readdir(dir);
+ struct dirinfo info;
struct entry* dptr =
(struct entry*)(c->dircache + i * sizeof(struct entry));
if (!entry)
break;
+ info = dir_get_info(dir, entry);
len = strlen((char *)entry->d_name);
/* skip directories . and .. */
- if ((entry->attribute & ATTR_DIRECTORY) &&
+ if ((info.attribute & ATTR_DIRECTORY) &&
(((len == 1) && (!strncmp((char *)entry->d_name, ".", 1))) ||
((len == 2) && (!strncmp((char *)entry->d_name, "..", 2))))) {
i--;
@@ -300,7 +302,7 @@ int ft_load(struct tree_context* c, const char* tempdir)
}
/* Skip FAT volume ID */
- if (entry->attribute & ATTR_VOLUME_ID) {
+ if (info.attribute & ATTR_VOLUME_ID) {
i--;
continue;
}
@@ -308,12 +310,12 @@ int ft_load(struct tree_context* c, const char* tempdir)
/* filter out dotfiles and hidden files */
if (*c->dirfilter != SHOW_ALL &&
((entry->d_name[0]=='.') ||
- (entry->attribute & ATTR_HIDDEN))) {
+ (info.attribute & ATTR_HIDDEN))) {
i--;
continue;
}
- dptr->attr = entry->attribute;
+ dptr->attr = info.attribute;
/* check for known file types */
if ( !(dptr->attr & ATTR_DIRECTORY) )
@@ -362,8 +364,8 @@ int ft_load(struct tree_context* c, const char* tempdir)
}
dptr->name = &c->name_buffer[name_buffer_used];
dptr->time_write =
- (long)entry->wrtdate<<16 |
- (long)entry->wrttime; /* in one # */
+ (long)info.wrtdate<<16 |
+ (long)info.wrttime; /* in one # */
strcpy(dptr->name, (char *)entry->d_name);
name_buffer_used += len + 1;
diff --git a/apps/misc.c b/apps/misc.c
index c35e2c5..4b89a5d 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -28,6 +28,7 @@
#include "misc.h"
#include "lcd.h"
#include "file.h"
+#include "filefuncs.h"
#ifndef __PCTOOL__
#include "lang.h"
#include "dir.h"
@@ -708,11 +709,12 @@ void check_bootfile(bool do_rolo)
{
if(!strcasecmp(entry->d_name, BOOTFILE))
{
+ struct dirinfo info = dir_get_info(dir, entry);
/* found the bootfile */
if(wrtdate && do_rolo)
{
- if((entry->wrtdate != wrtdate) ||
- (entry->wrttime != wrttime))
+ if((info.wrtdate != wrtdate) ||
+ (info.wrttime != wrttime))
{
static const char *lines[] = { ID2P(LANG_BOOT_CHANGED),
ID2P(LANG_REBOOT_NOW) };
@@ -722,8 +724,8 @@ void check_bootfile(bool do_rolo)
rolo_load(BOOTDIR "/" BOOTFILE);
}
}
- wrtdate = entry->wrtdate;
- wrttime = entry->wrttime;
+ wrtdate = info.wrtdate;
+ wrttime = info.wrttime;
}
}
closedir(dir);
diff --git a/apps/onplay.c b/apps/onplay.c
index 7291257..f5b8476 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -26,7 +26,6 @@
#include "debug.h"
#include "lcd.h"
-#include "dir.h"
#include "file.h"
#include "audio.h"
#include "menu.h"
@@ -63,6 +62,7 @@
#include "statusbar-skinned.h"
#include "pitchscreen.h"
#include "viewport.h"
+#include "filefuncs.h"
static int context;
static char* selected_file = NULL;
@@ -484,14 +484,14 @@ static int remove_dir(char* dirname, int len)
entry = readdir(dir);
if (!entry)
break;
-
+ struct dirinfo info = dir_get_info(dir, entry);
dirname[dirlen] ='\0';
/* inform the user which dir we're deleting */
splash(0, dirname);
/* append name to current directory */
snprintf(dirname+dirlen, len-dirlen, "/%s", entry->d_name);
- if (entry->attribute & ATTR_DIRECTORY)
+ if (info.attribute & ATTR_DIRECTORY)
{ /* remove a subdirectory */
if (!strcmp((char *)entry->d_name, ".") ||
!strcmp((char *)entry->d_name, ".."))
@@ -783,6 +783,7 @@ static bool clipboard_pastedirectory(char *src, int srclen, char *target,
if (!entry)
break;
+ struct dirinfo info = dir_get_info(srcdir, entry);
/* append name to current directory */
snprintf(src+srcdirlen, srclen-srcdirlen, "/%s", entry->d_name);
snprintf(target+targetdirlen, targetlen-targetdirlen, "/%s",
@@ -790,7 +791,7 @@ static bool clipboard_pastedirectory(char *src, int srclen, char *target,
DEBUGF("Copy %s to %s\n", src, target);
- if (entry->attribute & ATTR_DIRECTORY)
+ if (info.attribute & ATTR_DIRECTORY)
{ /* copy/move a subdirectory */
if (!strcmp((char *)entry->d_name, ".") ||
!strcmp((char *)entry->d_name, ".."))
diff --git a/apps/plugin.c b/apps/plugin.c
index e0455c5..9e08951 100644
--- a/apps/plugin.c
+++ b/apps/plugin.c
@@ -59,7 +59,7 @@
#include "usbstack/usb_hid.h"
#endif
-#if (CONFIG_PLATFORM & PLATFORM_HOSTED)
+#if (CONFIG_PLATFORM & PLATFORM_SDL)
#define PREFIX(_x_) sim_ ## _x_
#else
#define PREFIX
@@ -349,7 +349,7 @@ static const struct plugin_api rockbox_api = {
#if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE
__div0,
#endif
- PREFIX(sleep),
+ sleep,
yield,
&current_tick,
default_event_handler,
@@ -529,7 +529,7 @@ static const struct plugin_api rockbox_api = {
playlist_insert_track,
playlist_insert_directory,
playlist_shuffle,
- PREFIX(audio_play),
+ audio_play,
audio_stop,
audio_pause,
audio_resume,
@@ -722,6 +722,7 @@ static const struct plugin_api rockbox_api = {
/* new stuff at the end, sort into place next time
the API gets incompatible */
+ dir_get_info,
};
int plugin_load(const char* plugin, const void* parameter)
@@ -940,11 +941,11 @@ static int open_wrapper(const char* pathname, int flags, ...)
{
va_list ap;
va_start(ap, flags);
- fd = sim_open(pathname, flags, va_arg(ap, unsigned int));
+ fd = open(pathname, flags, va_arg(ap, unsigned int));
va_end(ap);
}
else
- fd = sim_open(pathname, flags);
+ fd = open(pathname, flags);
#else
fd = file_open(pathname,flags);
#endif
diff --git a/apps/plugin.h b/apps/plugin.h
index 422f58f..ddd9130 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -459,7 +459,7 @@ struct plugin_api {
#if defined(CPU_ARM) && CONFIG_PLATFORM & PLATFORM_NATIVE
void (*__div0)(void);
#endif
- void (*sleep)(int ticks);
+ unsigned (*sleep)(unsigned ticks);
void (*yield)(void);
volatile long* current_tick;
long (*default_event_handler)(long event);
@@ -894,6 +894,7 @@ struct plugin_api {
/* new stuff at the end, sort into place next time
the API gets incompatible */
+ struct dirinfo (*dir_get_info)(struct DIR* parent, struct dirent *entry);
};
/* plugin header */
diff --git a/apps/plugins/disktidy.c b/apps/plugins/disktidy.c
index c5f0f4a..1e6c153 100644
--- a/apps/plugins/disktidy.c
+++ b/apps/plugins/disktidy.c
@@ -244,7 +244,9 @@ enum tidy_return tidy_removedir(char *path, int *path_length)
/* silent error */
continue;
- if (entry->attribute & ATTR_DIRECTORY)
+
+ struct dirinfo info = rb->dir_get_info(dir, entry);
+ if (info.attribute & ATTR_DIRECTORY)
{
/* dir ignore "." and ".." */
if ((rb->strcmp(entry->d_name, ".") != 0) && \
@@ -297,6 +299,7 @@ enum tidy_return tidy_clean(char *path, int *path_length)
while((status == TIDY_RETURN_OK) && ((entry = rb->readdir(dir)) != 0))
/* walk directory */
{
+ struct dirinfo info = rb->dir_get_info(dir, entry);
/* check for user input and usb connect */
button = rb->get_action(CONTEXT_STD, TIMEOUT_NOBLOCK);
if (button == ACTION_STD_CANCEL)
@@ -312,7 +315,7 @@ enum tidy_return tidy_clean(char *path, int *path_length)
rb->yield();
- if (entry->attribute & ATTR_DIRECTORY)
+ if (info.attribute & ATTR_DIRECTORY)
{
/* directory ignore "." and ".." */
if ((rb->strcmp(entry->d_name, ".") != 0) && \
@@ -326,7 +329,7 @@ enum tidy_return tidy_clean(char *path, int *path_length)
/* silent error */
continue;
- if (tidy_remove_item(entry->d_name, entry->attribute))
+ if (tidy_remove_item(entry->d_name, info.attribute))
{
/* delete dir */
tidy_removedir(path, path_length);
@@ -347,7 +350,7 @@ enum tidy_return tidy_clean(char *path, int *path_length)
{
/* file */
del = 0;
- if (tidy_remove_item(entry->d_name, entry->attribute))
+ if (tidy_remove_item(entry->d_name, info.attribute))
{
/* get absolute path */
/* returns an error if path is too long */
diff --git a/apps/plugins/lua/luadir.c b/apps/plugins/lua/luadir.c
index 730c40c..c8c21d2 100644
--- a/apps/plugins/lua/luadir.c
+++ b/apps/plugins/lua/luadir.c
@@ -56,8 +56,9 @@ static int dir_iter (lua_State *L) {
luaL_argcheck (L, !d->closed, 1, "closed directory");
if ((entry = rb->readdir (d->dir)) != NULL) {
+ struct dirinfo info = rb->dir_get_info(d->dir, entry);
lua_pushstring (L, entry->d_name);
- lua_pushboolean (L, entry->attribute & ATTR_DIRECTORY);
+ lua_pushboolean (L, info.attribute & ATTR_DIRECTORY);
return 2;
} else {
/* no more entries => close directory */
diff --git a/apps/plugins/md5sum.c b/apps/plugins/md5sum.c
index fe1c65e..c993018 100644
--- a/apps/plugins/md5sum.c
+++ b/apps/plugins/md5sum.c
@@ -95,7 +95,9 @@ static void hash_dir( int out, const char *path )
char childpath[MAX_PATH];
rb->snprintf( childpath, MAX_PATH, "%s/%s",
rb->strcmp( path, "/" ) ? path : "", entry->d_name );
- if( entry->attribute & ATTR_DIRECTORY )
+
+ struct dirinfo info = rb->dir_get_info(dir, entry);
+ if (info.attribute & ATTR_DIRECTORY)
{
if( rb->strcmp( entry->d_name, "." )
&& rb->strcmp( entry->d_name, ".." ) )
diff --git a/apps/plugins/properties.c b/apps/plugins/properties.c
index d6692bc..e127a29 100644
--- a/apps/plugins/properties.c
+++ b/apps/plugins/properties.c
@@ -69,22 +69,23 @@ static bool file_properties(char* selected_file)
{
while(0 != (entry = rb->readdir(dir)))
{
+ struct dirinfo info = rb->dir_get_info(dir, entry);
if(!rb->strcmp(entry->d_name, selected_file+dirlen))
{
unsigned log;
rb->snprintf(str_dirname, sizeof str_dirname, "Path: %s", tstr);
rb->snprintf(str_filename, sizeof str_filename, "Name: %s",
selected_file+dirlen);
- log = human_size_log(entry->size);
+ log = human_size_log(info.size);
rb->snprintf(str_size, sizeof str_size, "Size: %ld %cB",
- entry->size >> (log*10), human_size_prefix[log]);
+ info.size >> (log*10), human_size_prefix[log]);
rb->snprintf(str_date, sizeof str_date, "Date: %04d/%02d/%02d",
- ((entry->wrtdate >> 9 ) & 0x7F) + 1980, /* year */
- ((entry->wrtdate >> 5 ) & 0x0F), /* month */
- ((entry->wrtdate ) & 0x1F)); /* day */
+ ((info.wrtdate >> 9 ) & 0x7F) + 1980, /* year */
+ ((info.wrtdate >> 5 ) & 0x0F), /* month */
+ ((info.wrtdate ) & 0x1F)); /* day */
rb->snprintf(str_time, sizeof str_time, "Time: %02d:%02d",
- ((entry->wrttime >> 11) & 0x1F), /* hour */
- ((entry->wrttime >> 5 ) & 0x3F)); /* minutes */
+ ((info.wrttime >> 11) & 0x1F), /* hour */
+ ((info.wrttime >> 5 ) & 0x3F)); /* minutes */
num_properties = 5;
@@ -158,11 +159,12 @@ static bool _dir_properties(DPS* dps)
/* walk through the directory content */
while(result && (0 != (entry = rb->readdir(dir))))
{
+ struct dirinfo info = rb->dir_get_info(dir, entry);
/* append name to current directory */
rb->snprintf(dps->dirname+dirlen, dps->len-dirlen, "/%s",
entry->d_name);
- if (entry->attribute & ATTR_DIRECTORY)
+ if (info.attribute & ATTR_DIRECTORY)
{
unsigned log;
@@ -188,7 +190,7 @@ static bool _dir_properties(DPS* dps)
else
{
dps->fc++; /* new file */
- dps->bc += entry->size;
+ dps->bc += info.size;
}
if(ACTION_STD_CANCEL == rb->get_action(CONTEXT_STD,TIMEOUT_NOBLOCK))
result = false;
@@ -290,7 +292,8 @@ enum plugin_status plugin_start(const void* parameter)
{
if(!rb->strcmp(entry->d_name, file+dirlen))
{
- its_a_dir = entry->attribute & ATTR_DIRECTORY ? true : false;
+ struct dirinfo info = rb->dir_get_info(dir, entry);
+ its_a_dir = info.attribute & ATTR_DIRECTORY ? true : false;
found = true;
break;
}
diff --git a/apps/plugins/random_folder_advance_config.c b/apps/plugins/random_folder_advance_config.c
index 55d9bf9..eca33dc 100644
--- a/apps/plugins/random_folder_advance_config.c
+++ b/apps/plugins/random_folder_advance_config.c
@@ -98,7 +98,8 @@ void traversedir(char* location, char* name)
if (check)
{
- if (entry->attribute & ATTR_DIRECTORY) {
+ struct dirinfo info = rb->dir_get_info(dir, entry);
+ if (info.attribute & ATTR_DIRECTORY) {
char *start;
dirs_count++;
rb->snprintf(path,MAX_PATH,"%s/%s",fullpath,entry->d_name);
diff --git a/apps/plugins/stats.c b/apps/plugins/stats.c
index ecf335d..6a70a47 100644
--- a/apps/plugins/stats.c
+++ b/apps/plugins/stats.c
@@ -178,7 +178,8 @@ void traversedir(char* location, char* name)
/* Skip .. and . */
if (rb->strcmp(entry->d_name, ".") && rb->strcmp(entry->d_name, ".."))
{
- if (entry->attribute & ATTR_DIRECTORY) {
+ struct dirinfo info = rb->dir_get_info(dir, entry);
+ if (info.attribute & ATTR_DIRECTORY) {
traversedir(fullpath, entry->d_name);
dirs++;
}
diff --git a/apps/plugins/theme_remove.c b/apps/plugins/theme_remove.c
index d679338..674342a 100644
--- a/apps/plugins/theme_remove.c
+++ b/apps/plugins/theme_remove.c
@@ -236,7 +236,8 @@ static int remove_dir(char* dirname, int len)
/* append name to current directory */
rb->snprintf(dirname+dirlen, len-dirlen, "/%s", entry->d_name);
- if (entry->attribute & ATTR_DIRECTORY)
+ struct dirinfo info = rb->dir_get_info(dir, entry);
+ if (info.attribute & ATTR_DIRECTORY)
{
/* remove a subdirectory */
if (!rb->strcmp((char *)entry->d_name, ".") ||
diff --git a/apps/tagcache.c b/apps/tagcache.c
index 6e416dd..a6cfb4c 100644
--- a/apps/tagcache.c
+++ b/apps/tagcache.c
@@ -4222,6 +4222,8 @@ static bool check_dir(const char *dirname, int add_files)
success = true;
break ;
}
+
+ struct dirinfo info = dir_get_info(dir, entry);
if (!strcmp((char *)entry->d_name, ".") ||
!strcmp((char *)entry->d_name, ".."))
@@ -4234,14 +4236,14 @@ static bool check_dir(const char *dirname, int add_files)
entry->d_name);
processed_dir_count++;
- if (entry->attribute & ATTR_DIRECTORY)
+ if (info.attribute & ATTR_DIRECTORY)
check_dir(curpath, add_files);
else if (add_files)
{
tc_stat.curentry = curpath;
/* Add a new entry to the temporary db file. */
- add_tagcache(curpath, (entry->wrtdate << 16) | entry->wrttime
+ add_tagcache(curpath, (info.wrtdate << 16) | info.wrttime
#if defined(HAVE_TC_RAMCACHE) && defined(HAVE_DIRCACHE)
, dir->internal_entry
#endif
diff --git a/apps/tagtree.c b/apps/tagtree.c
index 8c7f7a2..78c48b4 100644
--- a/apps/tagtree.c
+++ b/apps/tagtree.c
@@ -51,7 +51,7 @@
#include "audio.h"
#include "appevents.h"
#include "storage.h"
-#include "dir_uncached.h"
+#include "dir.h"
#define FILE_SEARCH_INSTRUCTIONS ROCKBOX_DIR "/tagnavi.config"