From 9e05cc537baf69ab636d4ba5b8c4b1265e3729ee Mon Sep 17 00:00:00 2001 From: Steve Bavin Date: Thu, 8 Nov 2007 10:15:44 +0000 Subject: Add --root option to allow overriding of simulator root menu. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15526 a1c6a512-1295-4272-9138-f99709370657 --- uisimulator/common/io.c | 31 ++++++++++++++++++++----------- uisimulator/sdl/uisdl.c | 48 +++++++++++++++++++++++++++++++++++++----------- 2 files changed, 57 insertions(+), 22 deletions(-) diff --git a/uisimulator/common/io.c b/uisimulator/common/io.c index 1e0c25bad1..fff12a0832 100644 --- a/uisimulator/common/io.c +++ b/uisimulator/common/io.c @@ -139,7 +139,9 @@ void dircache_remove(const char *name); void dircache_rename(const char *oldpath, const char *newpath); #endif -#define SIMULATOR_ARCHOS_ROOT "archos" + +#define SIMULATOR_DEFAULT_ROOT "archos" +extern const char *sim_root_dir; static int num_openfiles = 0; @@ -317,6 +319,13 @@ static void io_trigger_and_wait(int cmd) yield(); } +static const char *get_sim_rootdir() +{ + if (sim_root_dir != NULL) + return sim_root_dir; + return SIMULATOR_DEFAULT_ROOT; +} + MYDIR *sim_opendir(const char *name) { char buffer[MAX_PATH]; /* sufficiently big */ @@ -325,7 +334,7 @@ MYDIR *sim_opendir(const char *name) #ifndef __PCTOOL__ if(name[0] == '/') { - snprintf(buffer, sizeof(buffer), "%s%s", SIMULATOR_ARCHOS_ROOT, name); + snprintf(buffer, sizeof(buffer), "%s%s", get_sim_rootdir(), name); dir=(DIR_T *)OPENDIR(buffer); } else @@ -360,8 +369,8 @@ struct sim_dirent *sim_readdir(MYDIR *dir) #ifdef __PCTOOL__ snprintf(buffer, sizeof(buffer), "%s/%s", dir->name, secret.d_name); #else - snprintf(buffer, sizeof(buffer), SIMULATOR_ARCHOS_ROOT "%s/%s", - dir->name, secret.d_name); + snprintf(buffer, sizeof(buffer), "%s/%s/%s", + get_sim_rootdir(), dir->name, secret.d_name); #endif STAT(buffer, &s); /* get info */ @@ -400,7 +409,7 @@ int sim_open(const char *name, int o) #ifndef __PCTOOL__ if(name[0] == '/') { - snprintf(buffer, sizeof(buffer), "%s%s", SIMULATOR_ARCHOS_ROOT, name); + snprintf(buffer, sizeof(buffer), "%s%s", get_sim_rootdir(), name); debugf("We open the real file '%s'\n", buffer); if (num_openfiles < MAX_OPEN_FILES) @@ -438,7 +447,7 @@ int sim_creat(const char *name) char buffer[MAX_PATH]; /* sufficiently big */ if(name[0] == '/') { - snprintf(buffer, sizeof(buffer), "%s%s", SIMULATOR_ARCHOS_ROOT, name); + snprintf(buffer, sizeof(buffer), "%s%s", get_sim_rootdir(), name); debugf("We create the real file '%s'\n", buffer); return OPEN(buffer, O_BINARY | O_WRONLY | O_CREAT | O_TRUNC, 0666); @@ -496,7 +505,7 @@ int sim_mkdir(const char *name) #else char buffer[MAX_PATH]; /* sufficiently big */ - snprintf(buffer, sizeof(buffer), "%s%s", SIMULATOR_ARCHOS_ROOT, name); + snprintf(buffer, sizeof(buffer), "%s%s", get_sim_rootdir(), name); debugf("We create the real directory '%s'\n", buffer); return MKDIR(buffer, 0777); @@ -511,7 +520,7 @@ int sim_rmdir(const char *name) char buffer[MAX_PATH]; /* sufficiently big */ if(name[0] == '/') { - snprintf(buffer, sizeof(buffer), "%s%s", SIMULATOR_ARCHOS_ROOT, name); + snprintf(buffer, sizeof(buffer), "%s%s", get_sim_rootdir(), name); debugf("We remove the real directory '%s'\n", buffer); return RMDIR(buffer); @@ -532,7 +541,7 @@ int sim_remove(const char *name) #endif if(name[0] == '/') { - snprintf(buffer, sizeof(buffer), "%s%s", SIMULATOR_ARCHOS_ROOT, name); + snprintf(buffer, sizeof(buffer), "%s%s", get_sim_rootdir(), name); debugf("We remove the real file '%s'\n", buffer); return REMOVE(buffer); @@ -554,9 +563,9 @@ int sim_rename(const char *oldpath, const char* newpath) #endif if(oldpath[0] == '/') { - snprintf(buffer1, sizeof(buffer1), "%s%s", SIMULATOR_ARCHOS_ROOT, + snprintf(buffer1, sizeof(buffer1), "%s%s", get_sim_rootdir(), oldpath); - snprintf(buffer2, sizeof(buffer2), "%s%s", SIMULATOR_ARCHOS_ROOT, + snprintf(buffer2, sizeof(buffer2), "%s%s", get_sim_rootdir(), newpath); debugf("We rename the real file '%s' to '%s'\n", buffer1, buffer2); diff --git a/uisimulator/sdl/uisdl.c b/uisimulator/sdl/uisdl.c index d9c64abce2..15fc1333cb 100644 --- a/uisimulator/sdl/uisdl.c +++ b/uisimulator/sdl/uisdl.c @@ -56,6 +56,7 @@ SDL_TimerID tick_timer_id; bool lcd_display_redraw = true; /* Used for player simulator */ char having_new_lcd = true; /* Used for player simulator */ bool sim_alarm_wakeup = false; +const char *sim_root_dir = NULL; bool debug_audio = false; @@ -195,40 +196,65 @@ bool gui_shutdown(void) int main(int argc, char *argv[]) { - if (argc >= 1) { + if (argc >= 1) + { int x; - for (x = 1; x < argc; x++) { - if (!strcmp("--debugaudio", argv[x])) { + for (x = 1; x < argc; x++) + { + if (!strcmp("--debugaudio", argv[x])) + { debug_audio = true; printf("Writing debug audio file.\n"); - } else if (!strcmp("--debugwps", argv[x])) { + } + else if (!strcmp("--debugwps", argv[x])) + { debug_wps = true; printf("WPS debug mode enabled.\n"); - } else if (!strcmp("--background", argv[x])) { + } + else if (!strcmp("--background", argv[x])) + { background = true; printf("Using background image.\n"); - } else if (!strcmp("--old_lcd", argv[x])) { + } + else if (!strcmp("--old_lcd", argv[x])) + { having_new_lcd = false; printf("Using old LCD layout.\n"); - } else if (!strcmp("--zoom", argv[x])) { + } + else if (!strcmp("--zoom", argv[x])) + { x++; if(x < argc) display_zoom=atoi(argv[x]); else display_zoom = 2; printf("Window zoom is %d\n", display_zoom); - } else if (!strcmp("--alarm", argv[x])) { + } + else if (!strcmp("--alarm", argv[x])) + { sim_alarm_wakeup = true; printf("Simulating alarm wakeup.\n"); - } else { + } + else if (!strcmp("--root", argv[x])) + { + x++; + if (x < argc) + { + sim_root_dir = argv[x]; + printf("Root directory: %s\n", sim_root_dir); + } + } + else + { printf("rockboxui\n"); printf("Arguments:\n"); printf(" --debugaudio \t Write raw PCM data to audiodebug.raw\n"); printf(" --debugwps \t Print advanced WPS debug info\n"); printf(" --background \t Use background image of hardware\n"); printf(" --old_lcd \t [Player] simulate old playermodel (ROM version<4.51)\n"); - printf(" --zoom [VAL]\t window zoom (will disable backgrounds)\n"); - printf(" --alarm \t Simulate a wakup-up on Alarm\n"); + printf(" --zoom [VAL]\t Window zoom (will disable backgrounds)\n"); + printf(" --alarm \t Simulate a wake-up on alarm\n"); + printf(" --root [DIR]\t Set root directory\n"); exit(0); } } -- cgit v1.2.3