fix /sdcard problem

This commit is contained in:
hissorii 2014-06-25 13:05:24 +09:00
parent e2004c1660
commit 74e75bc9d0
4 changed files with 32 additions and 16 deletions

View File

@ -1,6 +1,6 @@
ポータブルX68000エミュレータ
PX68K ( Portable (x)keropi PRO-68K )
2014/06/17
2014/06/25
いろいろなデバイスで X68000 エミュレータが動作したら楽しいな、
と思い立ち、この PX68K を作りはじめました。
@ -589,7 +589,8 @@ PX68K は以下の成分からできています。
2014/04/09 物理パッドの 8 ボタン対応 (Unix/Android)
2014/06/17 px68k ディレクトリ /sdcard 以外も対応、外部ストレージ対応
(Android)
2014/06/25 外部ストレージ対応で、ファイルを選択時に異常終了するのを修正
(Android)
9. 免責

View File

@ -1887,8 +1887,8 @@ void WinDraw_DrawMenu(int menu_state, int mkey_pos, int mkey_y, int *mval_y)
draw_str(" -- no disk --");
} else {
// 先頭のカレントディレクトリ名を表示しない
if (!strncmp(CUR_DIR_STR, p, CUR_DIR_SLEN)) {
draw_str(p + CUR_DIR_SLEN);
if (!strncmp(cur_dir_str, p, cur_dir_slen)) {
draw_str(p + cur_dir_slen);
} else {
draw_str(p);
}

View File

@ -93,6 +93,9 @@ extern int dmatrace;
DWORD LastClock[4] = {0, 0, 0, 0};
char cur_dir_str[MAX_PATH];
int cur_dir_slen;
struct menu_flist mfl;
/***** menu items *****/
@ -212,8 +215,23 @@ WinUI_Init(void)
mval_y[M_NW] = Config.NoWaitMode;
mval_y[M_JK] = Config.JoyKey;
#if defined(ANDROID)
#define CUR_DIR_STR winx68k_dir
#elif TARGET_OS_IPHONE && TARGET_IPHONE_SIMULATOR == 0
#define CUR_DIR_STR "/var/mobile/px68k/"
#else
#define CUR_DIR_STR "./"
#endif
strcpy(cur_dir_str, CUR_DIR_STR);
#ifdef ANDROID
strcat(cur_dir_str, "/");
#endif
cur_dir_slen = strlen(cur_dir_str);
p6logd("cur_dir_str %s %d\n", cur_dir_str, cur_dir_slen);
for (i = 0; i < 3; i++) {
strcpy(mfl.dir[i], CUR_DIR_STR);
strcpy(mfl.dir[i], cur_dir_str);
}
}
@ -327,7 +345,7 @@ static void menu_create_flist(int v)
char support[] = "D8888DHDMDUP2HDDIMXDFIMG";
drv = WinUI_get_drv_num(mkey_y);
printf("***** drv:%d *****\n", drv);
p6logd("***** drv:%d ***** %s \n", drv, mfl.dir[drv]);
if (drv < 0) {
return;
}
@ -340,7 +358,7 @@ static void menu_create_flist(int v)
} else {
Config.HDImage[0][0] = '\0';
}
strcpy(mfl.dir[drv], CUR_DIR_STR);
strcpy(mfl.dir[drv], cur_dir_str);
return;
}
@ -358,6 +376,8 @@ static void menu_create_flist(int v)
dp = opendir(mfl.dir[drv]);
// xxx check if dp is null...
// xxx You can get only MFL_MAX files.
for (i = 0 ; i < MFL_MAX; i++) {
dent = readdir(dp);
@ -388,9 +408,10 @@ static void menu_create_flist(int v)
i--;
continue;
}
// You can't go up over current directory.
if (!strcmp(n, "..") &&
!strcmp(mfl.dir[drv], CUR_DIR_STR)) {
!strcmp(mfl.dir[drv], cur_dir_str)) {
i--;
continue;
}

View File

@ -6,14 +6,8 @@
extern BYTE Debug_Text, Debug_Grp, Debug_Sp;
extern DWORD LastClock[4];
#if defined(ANDROID)
#define CUR_DIR_STR "/sdcard/px68k/"
#elif TARGET_OS_IPHONE && TARGET_IPHONE_SIMULATOR == 0
#define CUR_DIR_STR "/var/mobile/px68k/"
#else
#define CUR_DIR_STR "./"
#endif
#define CUR_DIR_SLEN strlen(CUR_DIR_STR)
extern char cur_dir_str[];
extern int cur_dir_slen;
void WinUI_Init(void);
int WinUI_Menu(int first);