From: Toni Wilen Date: Sat, 14 Sep 2019 07:08:25 +0000 (+0300) Subject: Use stat(), d_type is not always supported. X-Git-Tag: 4300~120 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=3017dafaa795167ee3b1ddccbc2363878554f83d;p=francis%2Fwinuae.git Use stat(), d_type is not always supported. --- diff --git a/cputest/asm.S b/cputest/asm.S index bf18aad7..8fa532b0 100644 --- a/cputest/asm.S +++ b/cputest/asm.S @@ -85,7 +85,7 @@ _setcpu: cmp.w #5,d1 bcc.s .scend2 | 68020-68040 only - move.c d0,msp + movec d0,msp .scend2: rts diff --git a/cputest/main.c b/cputest/main.c index 35ea9bf2..0afc5f55 100644 --- a/cputest/main.c +++ b/cputest/main.c @@ -7,7 +7,7 @@ #include #include #include - +#include #ifdef _MSC_VER #include "msc_dirent.h" @@ -1342,7 +1342,9 @@ static void process_test(uae_u8 *p) regs.pc = opcode_memory_addr; regs.fpiar = opcode_memory_addr; +#ifdef M68K memcpy((void*)regs.ssp, (void*)regs.regs[15], 0x20); +#endif xmemcpy(&test_regs, ®s, sizeof(struct registers)); if (flag_mode == 0) { @@ -1623,6 +1625,15 @@ static int getparamval(const char *p) static char path[256]; +static int isdir(const char *dirpath, const char *name) +{ + struct stat buf; + char path[FILENAME_MAX]; + + snprintf(path, sizeof(path), "%s%s", dirpath, name); + return stat(path, &buf) == 0 && S_ISDIR(buf.st_mode); +} + int main(int argc, char *argv[]) { char opcode[16]; @@ -1632,7 +1643,7 @@ int main(int argc, char *argv[]) #ifndef M68K - char *params[] = { "", "unpk", "", NULL }; + char *params[] = { "", "lslw.w", "", NULL }; argv = params; argc = 3; @@ -1640,7 +1651,7 @@ int main(int argc, char *argv[]) vbr_zero = calloc(1, 1024); - cpu_lvl = 2; + cpu_lvl = 0; #else @@ -1751,7 +1762,8 @@ int main(int argc, char *argv[]) struct dirent *dr = readdir(d); if (!dr) break; - if (dr->d_type == DT_DIR && dr->d_name[0] != '.') { + int d = isdir(path, dr->d_name); + if (d && dr->d_name[0] != '.') { strcpy(dirs + diroff, dr->d_name); diroff += MAX_FILE_LEN; if (diroff >= MAX_FILE_LEN * MAX_MNEMOS) {