zip.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. typedef struct ZipHead ZipHead;
  2. enum
  3. {
  4. /*
  5. * magic numbers
  6. */
  7. ZHeader = 0x04034b50,
  8. ZCHeader = 0x02014b50,
  9. ZECHeader = 0x06054b50,
  10. /*
  11. * "general purpose flag" bits
  12. */
  13. ZEncrypted = 1 << 0,
  14. ZTrailInfo = 1 << 3, /* uncsize, csize, and crc are in trailer */
  15. ZCompPatch = 1 << 5, /* compression patched data */
  16. ZCrcPoly = 0xedb88320,
  17. /*
  18. * compression method
  19. */
  20. ZDeflate = 8,
  21. /*
  22. * internal file attributes
  23. */
  24. ZIsText = 1 << 0,
  25. /*
  26. * file attribute interpretation, from high byte of version
  27. */
  28. ZDos = 0,
  29. ZAmiga = 1,
  30. ZVMS = 2,
  31. ZUnix = 3,
  32. ZVMCMS = 4,
  33. ZAtariST = 5,
  34. ZOS2HPFS = 6,
  35. ZMac = 7,
  36. ZZsys = 8,
  37. ZCPM = 9,
  38. ZNtfs = 10,
  39. /*
  40. * external attribute flags for ZDos
  41. */
  42. ZDROnly = 0x01,
  43. ZDHidden = 0x02,
  44. ZDSystem = 0x04,
  45. ZDVLable = 0x08,
  46. ZDDir = 0x10,
  47. ZDArch = 0x20,
  48. ZHeadSize = 4 + 2 + 2 + 2 + 2 + 2 + 4 + 4 + 4 + 2 + 2,
  49. ZHeadCrc = 4 + 2 + 2 + 2 + 2 + 2,
  50. ZTrailSize = 4 + 4 + 4,
  51. ZCHeadSize = 4 + 2 + 2 + 2 + 2 + 2 + 2 + 4 + 4 + 4 + 2 + 2 + 2 + 2 + 2 + 4 + 4,
  52. ZECHeadSize = 4 + 2 + 2 + 2 + 2 + 4 + 4 + 2,
  53. };
  54. /*
  55. * interesting info from a zip header
  56. */
  57. struct ZipHead
  58. {
  59. int madeos; /* version made by */
  60. int madevers;
  61. int extos; /* version needed to extract */
  62. int extvers;
  63. int flags; /* general purpose bit flag */
  64. int meth;
  65. int modtime;
  66. int moddate;
  67. ulong crc;
  68. ulong csize;
  69. ulong uncsize;
  70. int iattr;
  71. ulong eattr;
  72. ulong off;
  73. char *file;
  74. };