/XADMaster.framework/Versions/A/Headers/XADArchiveParser.h

https://code.google.com/p/xee/ · C Header · 188 lines · 145 code · 40 blank · 3 comment · 0 complexity · c63b0287ad7e219f389ba3ec2e14677b MD5 · raw file

  1. #import <Foundation/Foundation.h>
  2. #import "XADException.h"
  3. #import "XADString.h"
  4. #import "XADPath.h"
  5. #import "XADRegex.h"
  6. #import "CSHandle.h"
  7. #import "XADSkipHandle.h"
  8. #import "Checksums.h"
  9. extern NSString *XADFileNameKey;
  10. extern NSString *XADFileSizeKey;
  11. extern NSString *XADCompressedSizeKey;
  12. extern NSString *XADLastModificationDateKey;
  13. extern NSString *XADLastAccessDateKey;
  14. extern NSString *XADLastAttributeChangeDateKey;
  15. extern NSString *XADCreationDateKey;
  16. extern NSString *XADFileTypeKey;
  17. extern NSString *XADFileCreatorKey;
  18. extern NSString *XADFinderFlagsKey;
  19. extern NSString *XADFinderInfoKey;
  20. extern NSString *XADPosixPermissionsKey;
  21. extern NSString *XADPosixUserKey;
  22. extern NSString *XADPosixGroupKey;
  23. extern NSString *XADPosixUserNameKey;
  24. extern NSString *XADPosixGroupNameKey;
  25. extern NSString *XADDOSFileAttributesKey;
  26. extern NSString *XADWindowsFileAttributesKey;
  27. extern NSString *XADAmigaProtectionBitsKey;
  28. extern NSString *XADIsEncryptedKey;
  29. extern NSString *XADIsCorruptedKey;
  30. extern NSString *XADIsDirectoryKey;
  31. extern NSString *XADIsResourceForkKey;
  32. extern NSString *XADIsArchiveKey;
  33. extern NSString *XADIsHiddenKey;
  34. extern NSString *XADIsLinkKey;
  35. extern NSString *XADIsHardLinkKey;
  36. extern NSString *XADLinkDestinationKey;
  37. extern NSString *XADIsCharacterDeviceKey;
  38. extern NSString *XADIsBlockDeviceKey;
  39. extern NSString *XADDeviceMajorKey;
  40. extern NSString *XADDeviceMinorKey;
  41. extern NSString *XADIsFIFOKey;
  42. extern NSString *XADCommentKey;
  43. extern NSString *XADDataOffsetKey;
  44. extern NSString *XADDataLengthKey;
  45. extern NSString *XADSkipOffsetKey;
  46. extern NSString *XADSkipLengthKey;
  47. extern NSString *XADCompressionNameKey;
  48. extern NSString *XADIsSolidKey;
  49. extern NSString *XADFirstSolidEntryKey;
  50. extern NSString *XADNextSolidEntryKey;
  51. extern NSString *XADSolidObjectKey;
  52. extern NSString *XADSolidOffsetKey;
  53. extern NSString *XADSolidLengthKey;
  54. // Archive properties only
  55. extern NSString *XADArchiveNameKey;
  56. extern NSString *XADVolumesKey;
  57. extern NSString *XADDiskLabelKey;
  58. @interface XADArchiveParser:NSObject
  59. {
  60. CSHandle *sourcehandle;
  61. XADSkipHandle *skiphandle;
  62. id delegate;
  63. NSString *password;
  64. NSMutableDictionary *properties;
  65. XADStringSource *stringsource;
  66. id parsersolidobj;
  67. NSMutableDictionary *firstsoliddict,*prevsoliddict;
  68. id currsolidobj;
  69. CSHandle *currsolidhandle;
  70. BOOL shouldstop;
  71. NSAutoreleasePool *autopool;
  72. }
  73. +(void)initialize;
  74. +(Class)archiveParserClassForHandle:(CSHandle *)handle firstBytes:(NSData *)header
  75. name:(NSString *)name propertiesToAdd:(NSMutableDictionary *)props;
  76. +(XADArchiveParser *)archiveParserForHandle:(CSHandle *)handle name:(NSString *)name;
  77. +(XADArchiveParser *)archiveParserForHandle:(CSHandle *)handle firstBytes:(NSData *)header name:(NSString *)name;
  78. +(XADArchiveParser *)archiveParserForPath:(NSString *)filename;
  79. -(id)initWithHandle:(CSHandle *)handle name:(NSString *)name;
  80. -(void)dealloc;
  81. -(NSDictionary *)properties;
  82. -(NSString *)name;
  83. -(NSString *)filename;
  84. -(NSArray *)allFilenames;
  85. -(BOOL)isEncrypted;
  86. -(id)delegate;
  87. -(void)setDelegate:(id)newdelegate;
  88. -(NSString *)password;
  89. -(BOOL)hasPassword;
  90. -(void)setPassword:(NSString *)newpassword;
  91. -(XADStringSource *)stringSource;
  92. -(XADString *)linkDestinationForDictionary:(NSDictionary *)dict;
  93. -(NSData *)finderInfoForDictionary:(NSDictionary *)dict;
  94. // Internal functions
  95. +(NSArray *)scanForVolumesWithFilename:(NSString *)filename
  96. regex:(XADRegex *)regex firstFileExtension:(NSString *)firstext;
  97. -(BOOL)shouldKeepParsing;
  98. -(CSHandle *)handle;
  99. -(CSHandle *)handleAtDataOffsetForDictionary:(NSDictionary *)dict;
  100. -(XADSkipHandle *)skipHandle;
  101. -(CSHandle *)zeroLengthHandleWithChecksum:(BOOL)checksum;
  102. -(CSHandle *)subHandleFromSolidStreamForEntryWithDictionary:(NSDictionary *)dict;
  103. -(NSArray *)volumes;
  104. -(off_t)offsetForVolume:(int)disk offset:(off_t)offset;
  105. -(void)setObject:(id)object forPropertyKey:(NSString *)key;
  106. -(void)addPropertiesFromDictionary:(NSDictionary *)dict;
  107. -(void)setIsMacArchive:(BOOL)ismac;
  108. -(void)addEntryWithDictionary:(NSMutableDictionary *)dict;
  109. -(void)addEntryWithDictionary:(NSMutableDictionary *)dict retainPosition:(BOOL)retainpos;
  110. -(void)addEntryWithDictionary:(NSMutableDictionary *)dict cyclePools:(BOOL)cyclepools;
  111. -(void)addEntryWithDictionary:(NSMutableDictionary *)dict retainPosition:(BOOL)retainpos cyclePools:(BOOL)cyclepools;
  112. -(XADString *)XADStringWithString:(NSString *)string;
  113. -(XADString *)XADStringWithData:(NSData *)data;
  114. -(XADString *)XADStringWithData:(NSData *)data encodingName:(NSString *)encoding;
  115. -(XADString *)XADStringWithBytes:(const void *)bytes length:(int)length;
  116. -(XADString *)XADStringWithBytes:(const void *)bytes length:(int)length encodingName:(NSString *)encoding;
  117. -(XADString *)XADStringWithCString:(const char *)cstring;
  118. -(XADString *)XADStringWithCString:(const char *)cstring encodingName:(NSString *)encoding;
  119. -(XADPath *)XADPath;
  120. -(XADPath *)XADPathWithString:(NSString *)string;
  121. -(XADPath *)XADPathWithUnseparatedString:(NSString *)string;
  122. -(XADPath *)XADPathWithData:(NSData *)data separators:(const char *)separators;
  123. -(XADPath *)XADPathWithData:(NSData *)data encodingName:(NSString *)encoding separators:(const char *)separators;
  124. -(XADPath *)XADPathWithBytes:(const void *)bytes length:(int)length separators:(const char *)separators;
  125. -(XADPath *)XADPathWithBytes:(const void *)bytes length:(int)length encodingName:(NSString *)encoding separators:(const char *)separators;
  126. -(XADPath *)XADPathWithCString:(const char *)cstring separators:(const char *)separators;
  127. -(XADPath *)XADPathWithCString:(const char *)cstring encodingName:(NSString *)encoding separators:(const char *)separators;
  128. -(NSData *)encodedPassword;
  129. -(const char *)encodedCStringPassword;
  130. // Subclasses implement these:
  131. +(int)requiredHeaderSize;
  132. +(BOOL)recognizeFileWithHandle:(CSHandle *)handle firstBytes:(NSData *)data
  133. name:(NSString *)name;
  134. +(BOOL)recognizeFileWithHandle:(CSHandle *)handle firstBytes:(NSData *)data
  135. name:(NSString *)name propertiesToAdd:(NSMutableDictionary *)props;
  136. +(NSArray *)volumesForHandle:(CSHandle *)handle firstBytes:(NSData *)data
  137. name:(NSString *)name;
  138. -(void)parse;
  139. -(CSHandle *)handleForEntryWithDictionary:(NSDictionary *)dict wantChecksum:(BOOL)checksum;
  140. -(NSString *)formatName;
  141. -(CSHandle *)handleForSolidStreamWithObject:(id)obj wantChecksum:(BOOL)checksum;
  142. @end
  143. @interface NSObject (XADArchiveParserDelegate)
  144. -(void)archiveParser:(XADArchiveParser *)parser foundEntryWithDictionary:(NSDictionary *)dict;
  145. -(BOOL)archiveParsingShouldStop:(XADArchiveParser *)parser;
  146. -(void)archiveParserNeedsPassword:(XADArchiveParser *)parser;
  147. @end
  148. NSMutableArray *XADSortVolumes(NSMutableArray *volumes,NSString *firstfileextension);