| #ifndef __DIRENT_H__ |
| #define __DIRENT_H__ |
| /* |
| * @(#)msd_dir.h 1.4 87/11/06 Public Domain. |
| * |
| * A public domain implementation of BSD directory routines for |
| * MS-DOS. Written by Michael Rendell ({uunet,utai}michael@garfield), |
| * August 1897 |
| * |
| * Extended by Peter Lim (lim@mullian.oz) to overcome some MS DOS quirks |
| * and returns 2 more pieces of information - file size & attribute. |
| * Plus a little reshuffling of some #define's positions December 1987 |
| * |
| * Some modifications by Martin Junius 02-14-89 |
| * |
| * AK900712 |
| * AK910410 abs_path - make absolute path |
| * |
| */ |
| |
| #ifdef __EMX__ |
| #include <sys/param.h> |
| #else |
| #if defined(__IBMC__) || defined(__IBMCPP__) || defined(XP_W32_MSVC) |
| #include <stdio.h> |
| #ifdef MAXPATHLEN |
| #undef MAXPATHLEN |
| #endif |
| #define MAXPATHLEN (FILENAME_MAX * 4) |
| #define MAXNAMLEN FILENAME_MAX |
| |
| #else |
| #include <param.h> |
| #endif |
| #endif |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* attribute stuff */ |
| #ifndef A_RONLY |
| #define A_RONLY 0x01 |
| #define A_HIDDEN 0x02 |
| #define A_SYSTEM 0x04 |
| #define A_LABEL 0x08 |
| #define A_DIR 0x10 |
| #define A_ARCHIVE 0x20 |
| #endif |
| |
| struct dirent { |
| #if defined(OS2) || defined(WIN32) /* use the layout of EMX to avoid trouble */ |
| int d_ino; /* Dummy */ |
| int d_reclen; /* Dummy, same as d_namlen */ |
| int d_namlen; /* length of name */ |
| char d_name[MAXNAMLEN + 1]; |
| unsigned long d_size; |
| unsigned short d_attribute; /* attributes (see above) */ |
| unsigned short d_time; /* modification time */ |
| unsigned short d_date; /* modification date */ |
| #else |
| char d_name[MAXNAMLEN + 1]; /* garentee null termination */ |
| char d_attribute; /* .. extension .. */ |
| unsigned long d_size; /* .. extension .. */ |
| #endif |
| }; |
| |
| typedef struct _dirdescr DIR; |
| /* the structs do not have to be defined here */ |
| |
| extern DIR *opendir(const char *); |
| extern DIR *openxdir(const char *, unsigned); |
| extern struct dirent *readdir(DIR *); |
| extern void seekdir(DIR *, long); |
| extern long telldir(DIR *); |
| extern void closedir(DIR *); |
| #define rewinddir(dirp) seekdir(dirp, 0L) |
| |
| extern char *abs_path(const char *name, char *buffer, int len); |
| |
| #ifndef S_IFMT |
| #define S_IFMT (S_IFDIR | S_IFREG) |
| #endif |
| |
| #ifndef S_ISDIR |
| #define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) |
| #endif |
| |
| #ifndef S_ISREG |
| #define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) |
| #endif |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |