X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fdirent.h;h=124c7f2241bc6c30d0010b5295823ccc1c9ddadc;hb=2cd4b5109a59c3743b38369359c389cc1b9edab4;hp=11c6edc32ff7a6e944fd3d97b3ce9929f933351d;hpb=9d0a2c30076e3e8ddf51aaea698927d32c12b017;p=cc65 diff --git a/include/dirent.h b/include/dirent.h index 11c6edc32..124c7f224 100644 --- a/include/dirent.h +++ b/include/dirent.h @@ -36,14 +36,14 @@ /*****************************************************************************/ -/* Data */ +/* Data */ /*****************************************************************************/ typedef struct DIR DIR; -#if defined(__APPLE2__) || defined(__APPLE2ENH__) +#if defined(__APPLE2__) struct dirent { char d_name[16]; @@ -73,49 +73,78 @@ struct dirent { } d_mtime; }; +#define _DE_ISREG(t) ((t) != 0x0F) +#define _DE_ISDIR(t) ((t) == 0x0F) +#define _DE_ISLBL(t) (0) +#define _DE_ISLNK(t) (0) + #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) ((t) != 0xC4) +#define _DE_ISDIR(t) ((t) == 0xC4) +#define _DE_ISLBL(t) (0) +#define _DE_ISLNK(t) (0) + #elif defined(__CBM__) struct dirent { char d_name[16+1]; unsigned int d_off; unsigned int d_blocks; - unsigned char d_type; /* See CBM_T_xxx defines in cbm.h */ + unsigned char d_type; /* See _CBM_T_xxx defines */ /* bsd extensions */ unsigned char d_namlen; }; +/* File type specification macros. We need definitions of CBM file types. */ +#include + +#define _DE_ISREG(t) (((t) & _CBM_T_REG) != 0) +#define _DE_ISDIR(t) ((t) == _CBM_T_DIR) +#define _DE_ISLBL(t) ((t) == _CBM_T_HEADER) +#define _DE_ISLNK(t) ((t) == _CBM_T_LNK) + #elif defined(__LYNX__) struct dirent { - unsigned char d_blocks; - unsigned int d_offset; - char d_type; - void *d_address; - unsigned int d_size; + unsigned char d_blocks; + unsigned int d_offset; + char d_type; + void *d_address; + unsigned int d_size; }; extern struct dirent FileEntry; #pragma zpsym ("FileEntry"); +#define _DE_ISREG(t) (1) +#define _DE_ISDIR(t) (0) +#define _DE_ISLBL(t) (0) +#define _DE_ISLNK(t) (0) + #else struct dirent { char d_name[1]; }; +#define _DE_ISREG(t) (1) +#define _DE_ISDIR(t) (0) +#define _DE_ISLBL(t) (0) +#define _DE_ISLNK(t) (0) + #endif /*****************************************************************************/ -/* Code */ +/* Code */ /*****************************************************************************/ @@ -126,6 +155,10 @@ struct dirent* __fastcall__ readdir (DIR* dir); int __fastcall__ closedir (DIR* dir); +long __fastcall__ telldir (DIR* dir); + +void __fastcall__ seekdir (DIR* dir, long offs); + void __fastcall__ rewinddir (DIR* dir);