home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / directry / fff320 / zip.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-11-15  |  2.5 KB  |  98 lines

  1. #ifdef MAIN
  2.     #define EXTERN
  3. #else
  4.     #define EXTERN extern
  5. #endif
  6.  
  7. #ifndef DOS_DATE
  8. #define DOS_DATE
  9. typedef union {
  10.     unsigned u;
  11.     struct {
  12.         unsigned Day : 5;
  13.         unsigned Month : 4;
  14.         unsigned Year  : 7;
  15.         } b;
  16.     } DOS_FILE_DATE;
  17. #endif
  18.  
  19. #ifndef DOS_TIME
  20. #define DOS_TIME
  21. typedef union {
  22.     unsigned u;
  23.     struct {
  24.         unsigned Second : 5;
  25.         unsigned Minute : 6;
  26.         unsigned Hour   : 5;
  27.         } b;
  28.     } DOS_FILE_TIME;
  29. #endif
  30.  
  31. struct ZipLocalFileHeader {
  32.     unsigned VersionNeededToExtract;
  33.     unsigned GeneralPurposeBitFlag;
  34.     unsigned CompressionMethod;
  35.     DOS_FILE_TIME LastModFileTime;
  36.     DOS_FILE_DATE LastModFileDate;
  37.     unsigned long Crc32;
  38.     unsigned long CompressedSize;
  39.     unsigned long UncompressedSize;
  40.     unsigned FileNameLength;
  41.     unsigned ExtraFieldLength;
  42.     };
  43.  
  44. struct CentralDirectoryFileHeader {
  45.     unsigned VersionMadeBy;
  46.     unsigned VersionNeededToExtract;
  47.     unsigned GeneralPurposeBitFlag;
  48.     unsigned CompressionMethod;
  49.     DOS_FILE_TIME LastModFileTime;
  50.     DOS_FILE_DATE LastModFileDate;
  51.     unsigned long Crc32;
  52.     unsigned long CompressedSize;
  53.     unsigned long UncompressedSize;
  54.     unsigned FileNameLength;
  55.     unsigned ExtraFieldLength;
  56.     unsigned FileCommentLength;
  57.     unsigned DiskNumberStart;
  58.     unsigned InternalFileAttributes;
  59.     unsigned long ExternalFileAttributes;
  60.     unsigned long RelativeOffsetLocalHeader;
  61.     };
  62.  
  63. struct EndCentralDirRecord {
  64.     unsigned NumberThisDisk;
  65.     unsigned NumberDiskWithStartCentralDirectory;
  66.     unsigned TotalEntriesCentralDirOnThisDisk;
  67.     unsigned TotalEntriesCentralDirectory;
  68.     unsigned long SizeCentralDirectory;
  69.     unsigned long OffsetStartCentralDirectory;
  70.     unsigned ZipFileCommentLength;
  71.     };
  72.  
  73. typedef unsigned long SIGNATURE;
  74. typedef struct ZipLocalFileHeader ZIP_LOCAL_FILE_HEADER;
  75. typedef struct CentralDirectoryFileHeader CENTRAL_DIRECTORY_FILE_HEADER;
  76. typedef struct EndCentralDirRecord END_CENTRAL_DIRECTORY_RECORD;
  77.  
  78. #define LOCAL_FILE_HEADER_SIGNATURE 0x04034B50L
  79. #define CENTRAL_FILE_HEADER_SIGNATURE 0x02014B50L
  80. #define END_CENTRAL_DIR_SIGNATURE 0x06054B50L
  81. #define SEARCH_SIZE 2048
  82.  
  83. #ifdef MAIN
  84. char *ZipCompression[] = {
  85.     " Stored ", " Shrunk ", "Reduce-1", "Reduce-2", "Reduce-3", "Reduce-4"
  86.     };
  87. #else
  88. extern char *ZipCompression[];
  89. #endif
  90.  
  91. /*   Prototypes for ZIP Processing Functions     */
  92.  
  93. void DoZip (char *Name);
  94. void ProcessHeaders (FILE *ZIPFile, char *Path);
  95. void ProcessLocalFileHeader (FILE *ZIPFile);
  96. void ProcessCentralFileHeader (FILE *ZIPFile, char *Path);
  97. void ProcessEndCentralDir (FILE *ZIPFile);
  98. void GetString (FILE *ZIPFile, int Size, char *Buffer);