home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / unzip540.zip / amiga / z-stat.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  3KB  |  88 lines

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