z-stat.h
上传用户:andy_li
上传日期:2007-01-06
资源大小:1019k
文件大小:3k
源码类别:

压缩解压

开发平台:

MultiPlatform

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