17 #ifndef LIBPKG_ZIPFILE 18 #define LIBPKG_ZIPFILE 39 typedef unsigned short uint16;
52 mutable std::fstream _zfs;
57 std::vector<file_info*> _directory;
62 zipfile(
const string& pathname);
82 unsigned int size()
const;
140 std::map<uint16,extra_info*> _extra;
193 {
return _pathname; }
198 template<
class extra_type>
199 extra_type* create_extra();
204 template<
class extra_type>
205 const extra_type* find_extra()
const;
210 void read(std::istream& in);
216 void read_extra(std::istream& in,
int length);
263 {
return _sig==0x30435241; }
269 {
return _loadaddr; }
275 {
return _execaddr; }
286 void read(std::istream& in);
296 template<
class extra_type>
300 if (!einfo) einfo=
new extra_type();
301 return dynamic_cast<extra_type*
>(einfo);
304 template<
class extra_type>
307 std::map<uint16,extra_info*>::const_iterator f=
308 _extra.find(extra_type::tag());
309 return (f!=_extra.end())?dynamic_cast<const extra_type*>(f->second):0;
314 public std::runtime_error
325 public std::runtime_error
336 public std::runtime_error
348 static const char* make_message(
int code);
static uint16 tag()
Get tag.
Definition: zipfile.h:292
An exception class for reporting not found errors.
Definition: zipfile.h:313
extra_type * create_extra()
Create extra information record.
Definition: zipfile.h:297
zipfile(const string &pathname)
Construct zip file object.
Definition: zipfile.cc:100
unsigned long uint32
A type to represent an unsigned 32-bit integer.
Definition: zipfile.h:42
unsigned int size() const
Get number of file information records.
Definition: zipfile.cc:144
uint32 usize() const
Get uncompressed file size.
Definition: zipfile.h:184
A class to represent a file information record from a zip file.
Definition: zipfile.h:106
~zipfile()
Destroy zip file object.
Definition: zipfile.cc:122
uint32 execaddr() const
Get RISC OS execution address.
Definition: zipfile.h:274
bool valid() const
Determine whether extra information record is valid.
Definition: zipfile.h:262
uint16 method() const
Get compression method.
Definition: zipfile.h:172
The namespace used to hold the package management library.
Definition: auto_dir.cc:23
const string & pathname() const
Get pathname.
Definition: zipfile.h:192
uint32 attr() const
Get RISC OS attributes.
Definition: zipfile.h:280
unsigned short uint16
A type to represent an unsigned 16-bit integer.
Definition: zipfile.h:36
uint32 csize() const
Get compressed file size.
Definition: zipfile.h:178
const file_info * find(const string &pathname) const
Find const file information record for pathname.
Definition: zipfile.cc:137
An exception class for reporting errors in zlib.
Definition: zipfile.h:335
A class to represent a RISC OS extra information record from a zip file.
Definition: zipfile.h:231
const char * dst_pathname
Definition: path_table.cc:32
uint32 loadaddr() const
Get RISC OS load address.
Definition: zipfile.h:268
const file_info & operator[](unsigned int index) const
Get const file information record at index.
Definition: zipfile.cc:132
uint32 offset() const
Get offset to file data.
Definition: zipfile.h:166
const extra_type * find_extra() const
Find extra information record.
Definition: zipfile.h:305
const char * src_pathname
Definition: path_table.cc:31
void extract(const string &src_pathname, const string &dst_pathname) const
Extract file from zip file.
Definition: zipfile.cc:149
An exception class for reporting unsupported compression method errors.
Definition: zipfile.h:324
An interface class to represent a zip file.
Definition: zipfile.h:31