X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fdirent.h;h=124c7f2241bc6c30d0010b5295823ccc1c9ddadc;hb=1a5fa6dc512221490c5547505668a78308f904a8;hp=012ee82e9ad0dd8e54f0c7662598786daccbdc55;hpb=c732d3e360096fc8aadbb59477d25758498a2286;p=cc65 diff --git a/include/dirent.h b/include/dirent.h index 012ee82e9..124c7f224 100644 --- a/include/dirent.h +++ b/include/dirent.h @@ -36,21 +36,115 @@ /*****************************************************************************/ -/* Data */ +/* Data */ /*****************************************************************************/ typedef struct DIR DIR; +#if defined(__APPLE2__) + +struct dirent { + char d_name[16]; + unsigned d_ino; + unsigned d_blocks; + unsigned long d_size; + unsigned char d_type; + struct { + unsigned day :5; + unsigned mon :4; + unsigned year :7; + } d_cdate; + struct { + unsigned char min; + unsigned char hour; + } d_ctime; + unsigned char d_access; + unsigned d_auxtype; + struct { + unsigned day :5; + unsigned mon :4; + unsigned year :7; + } d_mdate; + struct { + unsigned char min; + unsigned char hour; + } 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 */ + 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 */ + + /* 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; +}; + +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 */ /*****************************************************************************/ @@ -61,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);