OpendTect  6.3
ziphandler.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Salil Agarwal
8  Date: 30 August 2012
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "generalmod.h"
14 #include "bufstringset.h"
15 #include "typeset.h"
16 #include "od_iosfwd.h"
17 #include "uistrings.h"
18 
19 
20 class ZipArchiveInfo;
21 
27 {
28 
29 public:
30 
31  ZipFileInfo(const char* fnm,
32  od_int64 compsize,
33  od_int64 uncompsize,
34  od_int64 offset)
35  : fnm_(fnm)
36  , compsize_(compsize)
37  , uncompsize_(uncompsize)
38  , localheaderoffset_(offset) {}
39 
44 
45 };
46 
47 
54 public:
55 
56  friend class ZipUtils;
57  friend class Zipper;
58  friend class UnZipper;
59 
60  enum CompLevel { NoComp=0, SuperFast=1, Fast=3, Normal=6,
61  Maximum=9 };
62 
64  : initialfilecount_(0)
65  , uncompfilesize_(0)
66  , compfilesize_(0)
67  , offsetofcentraldir_(0)
68  , istrm_(0)
69  , ostrm_(0)
70  , curinputidx_(0)
71  , curfileidx_(0)
72  , totalsize_(0)
73  , nrdonesize_(0) {}
74 
75  ~ZipHandler();
76 
77  const uiString errorMsg()const;
78 
79  bool getArchiveInfo(const char*,
81 
82  bool getFileList(const char*,BufferStringSet&);
83 
84  od_uint16 dateInDosFormat(const char*) const;
85  od_uint16 timeInDosFormat(const char*) const;
86  bool setTimeDateModified(const char*,od_uint16,
87  od_uint16)const;
88 
89  bool getBitValue(const unsigned char byte,
90  int bitposition) const;
91  void setBitValue(unsigned char& byte, int
92  bitposition, bool value) const;
93 
94 
95 protected:
96 
97  bool initUnZipArchive(const char*,const char*);
98  bool unZipFile(const char* srcfnm,const char* fnm,
99  const char* path);
100 
101  bool extractNextFile();
102  int readLocalFileHeader();
103  bool openStreamToWrite();
104 
105  bool doZUnCompress();
106  bool readEndOfCentralDirHeader();
107  bool readCentralDirHeader(ObjectSet<ZipFileInfo>*
108  zfileinfo=0);
109  bool readZIP64EndOfCentralDirLocator();
110  bool readZIP64EndOfCentralDirRecord();
111  bool readXtraFldForZIP64(const char*,int);
112  bool readAndSetFileAttr();
113 
114  bool initMakeZip(const char*,const BufferStringSet&);
115  bool initAppend(const char*,const char*);
116 
117  bool compressNextFile();
118  bool doZCompress();
119  int openStrmToRead(const char* src);
120  bool setLocalFileHeader();
121  bool setLocalFileHeaderForDir();
122  bool setLocalFileHeaderForLink();
123  bool setZIP64Header();
124  bool setEndOfArchiveHeaders();
125  bool setCentralDirHeader();
126  bool setEndOfCentralDirHeader(od_int64,od_uint32);
127  bool setZIP64EndOfDirRecord(od_int64);
128  bool setZIP64EndOfDirLocator(od_int64);
129  od_uint32 setExtFileAttr(od_uint32);
130 
131  const BufferStringSet& getAllFileNames() { return allfilenames_; }
133  { return cumulativefilecounts_.last(); }
134  int getCumulativeFileCount(int) const;
135  void setCompLevel(CompLevel);
136 
137  od_int64 getTotalSize()const { return totalsize_; }
138  od_int64 getNrDoneSize()const { return nrdonesize_; }
139 
140  bool reportReadError(const char* filenm=0) const;
141  bool reportWriteError(const char* filenm=0) const;
142  bool reportStrmReadError(od_istream*,
143  const char*) const;
144  void closeInputStream();
145  void closeOutputStream();
146 
149 
152 
155 
158 
161 
163 
168 
171 
173 
176 
179 
182 
183 };
#define mExpClass(module)
Definition: commondefs.h:157
int curfileidx_
Definition: ziphandler.h:165
uiString errormsg_
Definition: ziphandler.h:147
Handles zipping and unzipping of files.
Definition: ziphandler.h:52
OD class for stream write common access to the user log file, or std::cout in batch progs...
Definition: od_ostream.h:25
od_uint16 compmethod_
Definition: ziphandler.h:159
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
od_uint16 lastmodtime_
Definition: ziphandler.h:169
od_int64 getNrDoneSize() const
Definition: ziphandler.h:138
#define od_int64
Definition: plftypes.h:34
BufferString srcfile_
Definition: ziphandler.h:150
od_int64 od_stream_Pos
Definition: od_iosfwd.h:19
od_int64 localheaderoffset_
Definition: ziphandler.h:43
TypeSet< od_int64 > cumulativefilecounts_
Definition: ziphandler.h:167
od_int64 uncompfilesize_
Definition: ziphandler.h:157
ZipHandler()
Definition: ziphandler.h:63
od_uint32 crc_
Definition: ziphandler.h:172
Definition: uistring.h:88
ZipFileInfo(const char *fnm, od_int64 compsize, od_int64 uncompsize, od_int64 offset)
Definition: ziphandler.h:31
Set of BufferString objects.
Definition: bufstringset.h:25
od_int64 compsize_
Definition: ziphandler.h:41
OD class for stream read.
Definition: od_istream.h:23
od_int64 totalsize_
Definition: ziphandler.h:177
od_int64 nrdonesize_
Definition: ziphandler.h:178
BufferString destfile_
Definition: ziphandler.h:154
Gives information of zip archives.
Definition: ziparchiveinfo.h:26
CompLevel complevel_
Definition: ziphandler.h:160
Zip Utilities.
Definition: ziputils.h:22
od_int64 uncompsize_
Definition: ziphandler.h:42
od_int64 getTotalSize() const
Definition: ziphandler.h:137
It is an Executor class which uncompresses files of zip format but user should instead use ZipUtils::...
Definition: ziputils.h:115
od_stream_Pos offsetoflocalheader_
Definition: ziphandler.h:175
#define od_uint32
Definition: plftypes.h:30
od_uint16 lastmoddate_
Definition: ziphandler.h:170
od_int64 initialfilecount_
Definition: ziphandler.h:166
CompLevel
Definition: ziphandler.h:60
od_uint16 srcfnmsize_
Definition: ziphandler.h:151
od_int64 compfilesize_
Definition: ziphandler.h:156
It is an Executor class which compresses files into zip format but user should not use it directly in...
Definition: ziputils.h:85
od_ostream * ostrm_
Definition: ziphandler.h:180
od_stream_Pos offsetofcentraldir_
Definition: ziphandler.h:174
BufferString fnm_
Definition: ziphandler.h:40
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
Zip file information.
Definition: ziphandler.h:26
BufferString destbasepath_
Definition: ziphandler.h:153
#define od_uint16
Definition: plftypes.h:26
int curinputidx_
Definition: ziphandler.h:164
FixedString Maximum()
Definition: keystrs.h:163
od_int64 getCumulativeFileCount() const
Definition: ziphandler.h:132
const BufferStringSet & getAllFileNames()
Definition: ziphandler.h:131
BufferStringSet allfilenames_
Definition: ziphandler.h:148
od_istream * istrm_
Definition: ziphandler.h:181
int curnrlevels_
Definition: ziphandler.h:162

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017