1 /* 2 Copyright (c) 1990-2000 Info-ZIP. All rights reserved. 3 4 See the accompanying file LICENSE, version 2000-Apr-09 or later 5 (the contents of which are also included in zip.h) for terms of use. 6 If, for some reason, all these files are missing, the Info-ZIP license 7 also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html 8 */ 9 #ifndef __amiga_z_stat_h 10 #define __amiga_z_stat_h 11 12 /* Since older versions of the Lattice C compiler for Amiga, and all current */ 13 /* versions of the Manx Aztec C compiler for Amiga, either provide no stat() */ 14 /* function or provide one inadequate for unzip (Aztec's has no st_mode */ 15 /* field), we provide our own stat() function in stat.c by Paul Wells, and */ 16 /* this fake stat.h file by Paul Kienitz. Paul Wells originally used the */ 17 /* Lattice stat.h but that does not work for Aztec and is not distributable */ 18 /* with this package, so I made a separate one. This has to be pulled into */ 19 /* unzip.h when compiling an Amiga version, as "amiga/z-stat.h". */ 20 21 /* We also provide here a "struct dirent" for use with opendir() & readdir() */ 22 /* functions included in amiga/stat.c. If you use amiga/stat.c, this must */ 23 /* be included wherever you use either readdir() or stat(). */ 24 25 #ifdef AZTEC_C 26 # define __STAT_H 27 #else /* __SASC */ 28 /* do not include the following header, replacement definitions are here */ 29 # define _STAT_H /* do not include SAS/C <stat.h> */ 30 # define _DIRENT_H /* do not include SAS/C <dirent.h> */ 31 # define _SYS_DIR_H /* do not include SAS/C <sys/dir.h> */ 32 # define _COMMIFMT_H /* do not include SAS/C <sys/commifmt.h> */ 33 # include <dos.h> 34 #endif 35 #include <libraries/dos.h> 36 #include <time.h> 37 38 39 struct stat { 40 unsigned short st_mode; 41 time_t st_ctime, st_atime, st_mtime; 42 long st_size; 43 long st_ino; 44 long st_blocks; 45 short st_attr, st_dev, st_nlink, st_uid, st_gid, st_rdev; 46 }; 47 48 #define S_IFDIR (1<<11) 49 #define S_IFREG (1<<10) 50 51 #if 0 52 /* these values here are totally random: */ 53 # define S_IFLNK (1<<14) 54 # define S_IFSOCK (1<<13) 55 # define S_IFCHR (1<<8) 56 # define S_IFIFO (1<<7) 57 # define S_IFMT (S_IFDIR|S_IFREG|S_IFCHR|S_IFLNK) 58 #else 59 # define S_IFMT (S_IFDIR|S_IFREG) 60 #endif 61 62 #define S_IHIDDEN (1<<7) 63 #define S_ISCRIPT (1<<6) 64 #define S_IPURE (1<<5) 65 #define S_IARCHIVE (1<<4) 66 #define S_IREAD (1<<3) 67 #define S_IWRITE (1<<2) 68 #define S_IEXECUTE (1<<1) 69 #define S_IDELETE (1<<0) 70 71 int stat(const char *name, struct stat *buf); 72 int fstat(int handle, struct stat *buf); /* returns dummy values */ 73 74 typedef struct dirent { 75 struct dirent *d_cleanuplink, 76 **d_cleanupparent; 77 BPTR d_parentlock; 78 struct FileInfoBlock d_fib; 79 } DIR; 80 #define d_name d_fib.fib_FileName 81 82 extern unsigned short disk_not_mounted; /* flag set by opendir() */ 83 84 DIR *opendir(const char *); 85 void closedir(DIR *); 86 void close_leftover_open_dirs(void); /* call this if aborted in mid-run */ 87 struct dirent *readdir(DIR *); 88 int umask(void); 89 90 #ifdef AZTEC_C 91 int rmdir(const char *); 92 int chmod(const char *filename, int bits); 93 #endif 94 95 #endif /* __amiga_z_stat_h */ 96