diff --git a/include/dirent.h b/include/dirent.h index 857aad4db..010db6a11 100644 --- a/include/dirent.h +++ b/include/dirent.h @@ -81,11 +81,12 @@ struct dirent { #elif defined(__ATARI__) struct dirent { - char d_name[13]; /* 8.3 + trailing 0 */ + char d_name[13]; /* 8.3 + trailing 0 */ + unsigned char d_type; }; -#define _DE_ISREG(t) (1) -#define _DE_ISDIR(t) (0) +#define _DE_ISREG(t) ((t) != 0xC4) +#define _DE_ISDIR(t) ((t) == 0xC4) #define _DE_ISLBL(t) (0) #define _DE_ISLNK(t) (0) diff --git a/libsrc/atari/posixdirent.s b/libsrc/atari/posixdirent.s index f33a7f04f..cb84fca71 100644 --- a/libsrc/atari/posixdirent.s +++ b/libsrc/atari/posixdirent.s @@ -93,7 +93,7 @@ cioerr: sty __oserror dey dey sta (ptr1),y - cpy #9 + cpy #8 bcs @break cmp #' ' bne @next @@ -113,6 +113,8 @@ cioerr: sty __oserror bne @done @hasext: jsr copychar + ldy #13 ; d_type + sta (ptr1),y ldy #11 jsr copychar ldy #12