diff options
Diffstat (limited to 'os2/os2zip.h')
-rw-r--r-- | os2/os2zip.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/os2/os2zip.h b/os2/os2zip.h new file mode 100644 index 0000000..06d0a02 --- /dev/null +++ b/os2/os2zip.h @@ -0,0 +1,84 @@ +/* + * @(#) 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 1987 + * + * Ported to OS/2 by Kai Uwe Rommel + * Addition of other OS/2 file system specific code + * Placed into the public domain + */ + + +#define MAXNAMLEN 256 +#define MAXPATHLEN 256 + +#define _A_RONLY 0x01 +#define _A_HIDDEN 0x02 +#define _A_SYSTEM 0x04 +#define _A_VOLID 0x08 +#define _A_DIR 0x10 +#define _A_ARCHIVE 0x20 + + +struct dirent +{ + ino_t d_ino; /* a bit of a farce */ + int d_reclen; /* more farce */ + int d_namlen; /* length of d_name */ + char d_name[MAXNAMLEN + 1]; /* null terminated */ + /* nonstandard fields */ + long d_size; /* size in bytes */ + unsigned d_mode; /* DOS or OS/2 file attributes */ + unsigned d_time; + unsigned d_date; +}; + +/* The fields d_size and d_mode are extensions by me (Kai Uwe Rommel). + * The find_first and find_next calls deliver this data without any extra cost. + * If this data is needed, these fields save a lot of extra calls to stat() + * (each stat() again performs a find_first call !). + */ + +struct _dircontents +{ + char *_d_entry; + long _d_size; + unsigned _d_mode, _d_time, _d_date; + struct _dircontents *_d_next; +}; + +typedef struct _dirdesc +{ + int dd_id; /* uniquely identify each open directory */ + long dd_loc; /* where we are in directory entry is this */ + struct _dircontents *dd_contents; /* pointer to contents of dir */ + struct _dircontents *dd_cp; /* pointer to current position */ +} +DIR; + + +extern DIR *opendir(const char *); +extern struct dirent *readdir(DIR *); +extern void seekdir(DIR *, long); +extern long telldir(DIR *); +extern void closedir(DIR *); +#define rewinddir(dirp) seekdir(dirp, 0L) + +int GetFileMode(char *name); +ulg GetFileTime(char *name); +void SetFileTime(char *path, ulg stamp); +char *getVolumeLabel(int drive, unsigned long *time, unsigned long *mode, + time_t *utim); + +int IsFileNameValid(char *name); +int IsFileSystemFAT(char *dir); +void ChangeNameForFAT(char *name); + +char *GetLongNameEA(const char *name); +char *GetLongPathEA(const char *name); +void GetEAs(char *name, char **bufptr, size_t *size, + char **cbufptr, size_t *csize); + +char *StringLower(char *); |