0000: 2f 2f 20 41 72 63 68 69 76 65 72 2e 68 0d 0a 2f // Archiver.h../
0010: 2f 2d 2d 20 43 41 72 63 68 69 76 65 72 20 2d 2d /-- CArchiver --
0020: 20 63 6f 6d 6d 6f 6e 20 69 6e 74 65 72 66 61 63 common interfac
0030: 65 20 69 6e 20 27 4e 6f 61 68 27 20 66 6f 72 20 e in 'Noah' for
0040: 61 72 68 69 76 69 6e 67 20 72 6f 75 74 69 6e 65 arhiving routine
0050: 20 2d 2d 0d 0a 0d 0a 23 69 66 6e 64 65 66 20 41 --....#ifndef A
0060: 46 58 5f 41 52 43 48 49 56 45 52 5f 48 5f 5f 33 FX_ARCHIVER_H__3
0070: 35 39 41 32 45 44 33 5f 32 46 39 37 5f 34 38 30 59A2ED3_2F97_480
0080: 45 5f 42 43 39 34 5f 32 34 38 33 34 45 42 41 36 E_BC94_24834EBA6
0090: 34 39 38 5f 5f 49 4e 43 4c 55 44 45 44 5f 0d 0a 498__INCLUDED_..
00a0: 23 64 65 66 69 6e 65 20 41 46 58 5f 41 52 43 48 #define AFX_ARCH
00b0: 49 56 45 52 5f 48 5f 5f 33 35 39 41 32 45 44 33 IVER_H__359A2ED3
00c0: 5f 32 46 39 37 5f 34 38 30 45 5f 42 43 39 34 5f _2F97_480E_BC94_
00d0: 32 34 38 33 34 45 42 41 36 34 39 38 5f 5f 49 4e 24834EBA6498__IN
00e0: 43 4c 55 44 45 44 5f 0d 0a 0d 0a 65 6e 75 6d 20 CLUDED_....enum
00f0: 7b 0d 0a 09 61 43 68 65 63 6b 20 3d 20 31 2c 20 {...aCheck = 1,
0100: 61 4d 65 6c 74 20 3d 20 32 2c 20 61 4c 69 73 74 aMelt = 2, aList
0110: 20 3d 20 34 2c 20 61 4d 65 6c 74 45 61 63 68 20 = 4, aMeltEach
0120: 3d 20 38 2c 20 61 43 6f 6d 70 72 65 73 73 20 3d = 8, aCompress =
0130: 20 31 36 2c 20 61 41 72 63 68 69 76 65 20 3d 20 16, aArchive =
0140: 33 32 2c 20 61 53 66 78 20 3d 20 36 34 2c 0d 0a 32, aSfx = 64,..
0150: 7d 3b 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 61 55 6e };..enum {...aUn
0160: 6b 6e 6f 77 6e 3d 30 2c 20 61 53 69 6e 67 6c 65 known=0, aSingle
0170: 46 69 6c 65 2c 20 61 53 69 6e 67 6c 65 44 69 72 File, aSingleDir
0180: 2c 20 61 4d 75 6c 74 69 0d 0a 7d 3b 0d 0a 0d 0a , aMulti..};....
0190: 73 74 72 75 63 74 20 61 72 63 6e 61 6d 65 20 7b struct arcname {
01a0: 0d 0a 09 61 72 63 6e 61 6d 65 28 20 63 6f 6e 73 ...arcname( cons
01b0: 74 20 6b 69 50 61 74 68 26 20 62 2c 63 6f 6e 73 t kiPath& b,cons
01c0: 74 20 63 68 61 72 20 2a 73 2c 63 6f 6e 73 74 20 t char *s,const
01d0: 63 68 61 72 20 2a 6c 20 29 0d 0a 09 09 3a 20 62 char *l )....: b
01e0: 61 73 65 64 69 72 28 62 29 2c 73 6e 61 6d 65 28 asedir(b),sname(
01f0: 73 29 2c 6c 6e 61 6d 65 28 6c 29 20 7b 7d 0d 0a s),lname(l) {}..
0200: 09 63 6f 6e 73 74 20 6b 69 50 61 74 68 26 20 62 .const kiPath& b
0210: 61 73 65 64 69 72 3b 0d 0a 09 63 6f 6e 73 74 20 asedir;...const
0220: 63 68 61 72 2a 20 20 20 6c 6e 61 6d 65 3b 0d 0a char* lname;..
0230: 09 63 6f 6e 73 74 20 63 68 61 72 2a 20 20 20 73 .const char* s
0240: 6e 61 6d 65 3b 0d 0a 7d 3b 0d 0a 0d 0a 73 74 72 name;..};....str
0250: 75 63 74 20 61 72 63 66 69 6c 65 20 7b 0d 0a 09 uct arcfile {...
0260: 49 4e 44 49 56 49 44 55 41 4c 49 4e 46 4f 20 69 INDIVIDUALINFO i
0270: 6e 66 3b 0d 0a 09 75 6e 69 6f 6e 20 7b 0d 0a 09 nf;...union {...
0280: 09 62 6f 6f 6c 20 73 65 6c 65 63 74 65 64 3b 0d .bool selected;.
0290: 0a 09 09 62 6f 6f 6c 20 69 73 66 69 6c 65 3b 0d ...bool isfile;.
02a0: 0a 09 7d 3b 0d 0a 7d 3b 0d 0a 0d 0a 23 64 65 66 ..};..};....#def
02b0: 69 6e 65 20 61 66 6c 41 72 72 61 79 20 6b 69 41 ine aflArray kiA
02c0: 72 72 61 79 3c 61 72 63 66 69 6c 65 3e 0d 0a 23 rray<arcfile>..#
02d0: 64 65 66 69 6e 65 20 77 66 64 41 72 72 61 79 20 define wfdArray
02e0: 6b 69 41 72 72 61 79 3c 57 49 4e 33 32 5f 46 49 kiArray<WIN32_FI
02f0: 4e 44 5f 44 41 54 41 3e 0d 0a 0d 0a 63 6c 61 73 ND_DATA>....clas
0300: 73 20 43 41 72 63 68 69 76 65 72 0d 0a 7b 0d 0a s CArchiver..{..
0310: 70 75 62 6c 69 63 3a 20 2f 2f 2d 2d 3c 20 61 74 public: //--< at
0320: 74 72 69 62 75 74 65 20 3e 2d 2d 0d 0a 0d 0a 09 tribute >--.....
0330: 69 6e 74 20 61 62 69 6c 69 74 79 28 29 3b 0d 0a int ability();..
0340: 09 69 6e 74 20 63 61 6e 63 6f 6d 70 72 65 73 73 .int cancompress
0350: 62 79 28 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 by( const char*
0360: 65 78 74 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a ext, const char*
0370: 20 6d 68 64 2c 20 62 6f 6f 6c 20 73 66 78 20 29 mhd, bool sfx )
0380: 3b 0d 0a 0d 0a 09 63 6f 6e 73 74 20 63 68 61 72 ;.....const char
0390: 2a 20 20 20 20 20 6d 6c 74 5f 65 78 74 28 29 3b * mlt_ext();
03a0: 0d 0a 09 63 6f 6e 73 74 20 6b 69 53 74 72 26 20 ...const kiStr&
03b0: 20 20 20 63 6d 70 5f 65 78 74 28 29 3b 0d 0a 09 cmp_ext();...
03c0: 63 6f 6e 73 74 20 53 74 72 41 72 72 61 79 26 20 const StrArray&
03d0: 63 6d 70 5f 6d 68 64 5f 6c 69 73 74 28 29 3b 0d cmp_mhd_list();.
03e0: 0a 09 63 6f 6e 73 74 20 69 6e 74 20 20 20 20 20 ..const int
03f0: 20 20 63 6d 70 5f 6d 68 64 5f 64 65 66 61 75 6c cmp_mhd_defaul
0400: 74 28 29 3b 0d 0a 09 62 6f 6f 6c 20 20 20 20 20 t();...bool
0410: 20 20 20 20 20 20 20 76 65 72 28 20 6b 69 53 74 ver( kiSt
0420: 72 26 20 73 74 72 20 29 3b 0d 0a 09 73 74 61 74 r& str );...stat
0430: 69 63 20 62 6f 6f 6c 20 47 65 74 56 65 72 73 69 ic bool GetVersi
0440: 6f 6e 49 6e 66 6f 53 74 72 28 20 63 68 61 72 2a onInfoStr( char*
0450: 20 6e 61 6d 65 2c 20 63 68 61 72 2a 20 62 75 66 name, char* buf
0460: 2c 20 73 69 7a 65 5f 74 20 63 62 42 75 66 20 29 , size_t cbBuf )
0470: 3b 0d 0a 0d 0a 70 75 62 6c 69 63 3a 20 2f 2f 2d ;....public: //-
0480: 2d 3c 20 61 63 74 69 6f 6e 20 3e 2d 2d 0d 0a 0d -< action >--...
0490: 0a 09 62 6f 6f 6c 20 63 68 65 63 6b 28 20 63 6f ..bool check( co
04a0: 6e 73 74 20 6b 69 50 61 74 68 26 20 61 6e 61 6d nst kiPath& anam
04b0: 65 20 29 3b 0d 0a 09 69 6e 74 20 20 63 6f 6e 74 e );...int cont
04c0: 65 6e 74 73 28 20 63 6f 6e 73 74 20 6b 69 50 61 ents( const kiPa
04d0: 74 68 26 20 61 6e 61 6d 65 2c 20 6b 69 50 61 74 th& aname, kiPat
04e0: 68 26 20 64 6e 61 6d 65 20 29 3b 0d 0a 09 69 6e h& dname );...in
04f0: 74 20 20 6d 65 6c 74 28 20 63 6f 6e 73 74 20 61 t melt( const a
0500: 72 63 6e 61 6d 65 26 20 61 6e 61 6d 65 2c 20 63 rcname& aname, c
0510: 6f 6e 73 74 20 6b 69 50 61 74 68 26 20 64 64 69 onst kiPath& ddi
0520: 72 2c 20 63 6f 6e 73 74 20 61 66 6c 41 72 72 61 r, const aflArra
0530: 79 2a 20 66 69 6c 65 73 3d 4e 55 4c 4c 20 29 3b y* files=NULL );
0540: 0d 0a 09 62 6f 6f 6c 20 6c 69 73 74 28 20 63 6f ...bool list( co
0550: 6e 73 74 20 61 72 63 6e 61 6d 65 26 20 61 6e 61 nst arcname& ana
0560: 6d 65 2c 20 61 66 6c 41 72 72 61 79 26 20 66 69 me, aflArray& fi
0570: 6c 65 73 20 29 3b 0d 0a 09 69 6e 74 20 20 63 6f les );...int co
0580: 6d 70 72 65 73 73 28 20 63 6f 6e 73 74 20 6b 69 mpress( const ki
0590: 50 61 74 68 26 20 62 61 73 65 2c 20 63 6f 6e 73 Path& base, cons
05a0: 74 20 77 66 64 41 72 72 61 79 26 20 66 69 6c 65 t wfdArray& file
05b0: 73 2c 20 63 6f 6e 73 74 20 6b 69 50 61 74 68 26 s, const kiPath&
05c0: 20 64 64 69 72 2c 20 69 6e 74 20 6d 65 74 68 6f ddir, int metho
05d0: 64 2c 20 62 6f 6f 6c 20 73 66 78 20 29 3b 0d 0a d, bool sfx );..
05e0: 09 6b 69 53 74 72 20 61 72 63 74 79 70 65 5f 6e .kiStr arctype_n
05f0: 61 6d 65 28 63 6f 6e 73 74 20 63 68 61 72 2a 20 ame(const char*
0600: 61 6e 29 20 63 6f 6e 73 74 20 7b 20 72 65 74 75 an) const { retu
0610: 72 6e 20 76 5f 6e 61 6d 65 28 61 6e 29 3b 20 7d rn v_name(an); }
0620: 0d 0a 0d 0a 70 72 6f 74 65 63 74 65 64 3a 20 2f ....protected: /
0630: 2f 2d 2d 3c 20 66 6f 72 20 63 68 69 6c 64 20 3e /--< for child >
0640: 2d 2d 0d 0a 0d 0a 09 43 41 72 63 68 69 76 65 72 --.....CArchiver
0650: 28 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 6d 65 ( const char* me
0660: 78 74 20 29 3b 0d 0a 09 76 6f 69 64 20 73 65 74 xt );...void set
0670: 5f 63 6d 70 5f 65 78 74 28 20 63 6f 6e 73 74 20 _cmp_ext( const
0680: 63 68 61 72 2a 20 65 78 74 20 29 3b 0d 0a 09 76 char* ext );...v
0690: 6f 69 64 20 61 64 64 5f 63 6d 70 5f 6d 68 64 28 oid add_cmp_mhd(
06a0: 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 6d 68 64 const char* mhd
06b0: 2c 20 62 6f 6f 6c 20 64 65 66 3d 66 61 6c 73 65 , bool def=false
06c0: 20 29 3b 0d 0a 0d 0a 09 76 69 72 74 75 61 6c 20 );.....virtual
06d0: 69 6e 74 20 20 76 5f 6c 6f 61 64 28 29 7b 72 65 int v_load(){re
06e0: 74 75 72 6e 20 30 3b 7d 0d 0a 09 76 69 72 74 75 turn 0;}...virtu
06f0: 61 6c 20 62 6f 6f 6c 20 76 5f 76 65 72 28 20 6b al bool v_ver( k
0700: 69 53 74 72 26 20 73 74 72 20 29 7b 72 65 74 75 iStr& str ){retu
0710: 72 6e 20 66 61 6c 73 65 3b 7d 0d 0a 09 76 69 72 rn false;}...vir
0720: 74 75 61 6c 20 62 6f 6f 6c 20 76 5f 63 68 65 63 tual bool v_chec
0730: 6b 28 20 63 6f 6e 73 74 20 6b 69 50 61 74 68 26 k( const kiPath&
0740: 20 61 6e 61 6d 65 20 29 7b 72 65 74 75 72 6e 20 aname ){return
0750: 66 61 6c 73 65 3b 7d 0d 0a 09 76 69 72 74 75 61 false;}...virtua
0760: 6c 20 69 6e 74 20 20 76 5f 63 6f 6e 74 65 6e 74 l int v_content
0770: 73 28 20 63 6f 6e 73 74 20 6b 69 50 61 74 68 26 s( const kiPath&
0780: 20 61 6e 61 6d 65 2c 20 6b 69 50 61 74 68 26 20 aname, kiPath&
0790: 64 6e 61 6d 65 20 29 7b 72 65 74 75 72 6e 20 61 dname ){return a
07a0: 55 6e 6b 6e 6f 77 6e 3b 7d 0d 0a 09 76 69 72 74 Unknown;}...virt
07b0: 75 61 6c 20 69 6e 74 20 20 76 5f 6d 65 6c 74 28 ual int v_melt(
07c0: 20 63 6f 6e 73 74 20 61 72 63 6e 61 6d 65 26 20 const arcname&
07d0: 61 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 6b 69 50 aname, const kiP
07e0: 61 74 68 26 20 64 64 69 72 2c 20 63 6f 6e 73 74 ath& ddir, const
07f0: 20 61 66 6c 41 72 72 61 79 2a 20 66 69 6c 65 73 aflArray* files
0800: 20 29 7b 72 65 74 75 72 6e 20 66 61 6c 73 65 3b ){return false;
0810: 7d 0d 0a 09 76 69 72 74 75 61 6c 20 62 6f 6f 6c }...virtual bool
0820: 20 76 5f 6c 69 73 74 28 20 63 6f 6e 73 74 20 61 v_list( const a
0830: 72 63 6e 61 6d 65 26 20 61 6e 61 6d 65 2c 20 61 rcname& aname, a
0840: 66 6c 41 72 72 61 79 26 20 66 69 6c 65 73 20 29 flArray& files )
0850: 7b 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 7d 0d {return false;}.
0860: 0a 09 76 69 72 74 75 61 6c 20 69 6e 74 20 20 76 ..virtual int v
0870: 5f 63 6f 6d 70 72 65 73 73 28 20 63 6f 6e 73 74 _compress( const
0880: 20 6b 69 50 61 74 68 26 20 62 61 73 65 2c 20 63 kiPath& base, c
0890: 6f 6e 73 74 20 77 66 64 41 72 72 61 79 26 20 66 onst wfdArray& f
08a0: 69 6c 65 73 2c 20 63 6f 6e 73 74 20 6b 69 50 61 iles, const kiPa
08b0: 74 68 26 20 64 64 69 72 2c 20 69 6e 74 20 6d 65 th& ddir, int me
08c0: 74 68 6f 64 2c 20 62 6f 6f 6c 20 73 66 78 20 29 thod, bool sfx )
08d0: 7b 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 7d 0d {return false;}.
08e0: 0a 09 76 69 72 74 75 61 6c 20 6b 69 53 74 72 20 ..virtual kiStr
08f0: 76 5f 6e 61 6d 65 28 63 6f 6e 73 74 20 63 68 61 v_name(const cha
0900: 72 2a 29 20 63 6f 6e 73 74 20 7b 20 72 65 74 75 r*) const { retu
0910: 72 6e 20 22 22 3b 20 7d 0d 0a 0d 0a 70 72 69 76 rn ""; }....priv
0920: 61 74 65 3a 20 2f 2f 2d 2d 3c 20 70 72 69 76 61 ate: //--< priva
0930: 74 65 20 3e 2d 2d 0d 0a 0d 0a 09 66 72 69 65 6e te >--.....frien
0940: 64 20 63 6c 61 73 73 20 43 4e 6f 61 68 41 72 63 d class CNoahArc
0950: 68 69 76 65 72 4d 61 6e 61 67 65 72 3b 0d 0a 09 hiverManager;...
0960: 62 6f 6f 6c 20 65 78 74 43 68 65 63 6b 28 20 63 bool extCheck( c
0970: 6f 6e 73 74 20 63 68 61 72 2a 20 65 78 74 20 29 onst char* ext )
0980: 3b 0d 0a 09 6b 69 53 74 72 20 6d 5f 4d 79 45 78 ;...kiStr m_MyEx
0990: 74 4c 69 73 74 2c 20 6d 5f 4d 79 43 6d 70 45 78 tList, m_MyCmpEx
09a0: 74 3b 0d 0a 09 53 74 72 41 72 72 61 79 20 6d 5f t;...StrArray m_
09b0: 4d 68 64 3b 0d 0a 09 69 6e 74 20 6d 5f 4d 68 64 Mhd;...int m_Mhd
09c0: 44 65 66 2c 6d 5f 41 62 6c 65 3b 0d 0a 09 62 6f Def,m_Able;...bo
09d0: 6f 6c 20 6e 6f 74 5f 6c 6f 61 64 65 64 3b 0d 0a ol not_loaded;..
09e0: 0d 0a 70 75 62 6c 69 63 3a 20 2f 2f 2d 2d 3c 20 ..public: //--<
09f0: 64 75 6d 6d 79 20 3e 2d 2d 0d 0a 0d 0a 09 76 69 dummy >--.....vi
0a00: 72 74 75 61 6c 20 7e 43 41 72 63 68 69 76 65 72 rtual ~CArchiver
0a10: 28 29 7b 7d 0d 0a 7d 3b 0d 0a 0d 0a 69 6e 6c 69 (){}..};....inli
0a20: 6e 65 20 69 6e 74 20 43 41 72 63 68 69 76 65 72 ne int CArchiver
0a30: 3a 3a 61 62 69 6c 69 74 79 28 29 0d 0a 7b 0d 0a ::ability()..{..
0a40: 09 69 66 28 20 6e 6f 74 5f 6c 6f 61 64 65 64 20 .if( not_loaded
0a50: 29 0d 0a 09 09 6d 5f 41 62 6c 65 3d 76 5f 6c 6f )....m_Able=v_lo
0a60: 61 64 28 29 2c 20 6e 6f 74 5f 6c 6f 61 64 65 64 ad(), not_loaded
0a70: 3d 66 61 6c 73 65 3b 0d 0a 09 72 65 74 75 72 6e =false;...return
0a80: 20 6d 5f 41 62 6c 65 3b 0d 0a 7d 0d 0a 0d 0a 69 m_Able;..}....i
0a90: 6e 6c 69 6e 65 20 69 6e 74 20 43 41 72 63 68 69 nline int CArchi
0aa0: 76 65 72 3a 3a 63 61 6e 63 6f 6d 70 72 65 73 73 ver::cancompress
0ab0: 62 79 28 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 by( const char*
0ac0: 65 78 74 2c 20 63 6f 6e 73 74 20 63 68 61 72 2a ext, const char*
0ad0: 20 6d 68 64 2c 20 62 6f 6f 6c 20 73 66 78 20 29 mhd, bool sfx )
0ae0: 0d 0a 7b 0d 0a 09 69 66 28 20 6e 6f 74 5f 6c 6f ..{...if( not_lo
0af0: 61 64 65 64 20 29 0d 0a 09 09 6d 5f 41 62 6c 65 aded )....m_Able
0b00: 3d 76 5f 6c 6f 61 64 28 29 2c 20 6e 6f 74 5f 6c =v_load(), not_l
0b10: 6f 61 64 65 64 3d 66 61 6c 73 65 3b 0d 0a 09 69 oaded=false;...i
0b20: 66 28 20 28 73 66 78 20 26 26 20 21 28 6d 5f 41 f( (sfx && !(m_A
0b30: 62 6c 65 26 61 53 66 78 29 29 20 7c 7c 20 21 28 ble&aSfx)) || !(
0b40: 6d 5f 41 62 6c 65 26 61 43 6f 6d 70 72 65 73 73 m_Able&aCompress
0b50: 29 20 7c 7c 20 21 6d 5f 4d 79 43 6d 70 45 78 74 ) || !m_MyCmpExt
0b60: 2e 69 73 53 61 6d 65 28 65 78 74 29 20 29 0d 0a .isSame(ext) )..
0b70: 09 09 72 65 74 75 72 6e 20 2d 31 3b 20 2f 2f 20 ..return -1; //
0b80: 6e 6f 0d 0a 09 66 6f 72 28 20 75 6e 73 69 67 6e no...for( unsign
0b90: 65 64 20 69 6e 74 20 69 3d 30 3b 20 69 21 3d 6d ed int i=0; i!=m
0ba0: 5f 4d 68 64 2e 6c 65 6e 28 29 3b 20 69 2b 2b 20 _Mhd.len(); i++
0bb0: 29 0d 0a 09 09 69 66 28 20 6d 5f 4d 68 64 5b 69 )....if( m_Mhd[i
0bc0: 5d 20 3d 3d 20 6d 68 64 20 29 0d 0a 09 09 09 72 ] == mhd ).....r
0bd0: 65 74 75 72 6e 20 28 69 6e 74 29 69 3b 0d 0a 09 eturn (int)i;...
0be0: 72 65 74 75 72 6e 20 2d 32 3b 20 2f 2f 20 6f 6e return -2; // on
0bf0: 6c 79 20 2d 20 27 74 79 70 65 20 6e 61 6d 65 27 ly - 'type name'
0c00: 20 6d 61 74 63 68 65 64 0d 0a 7d 0d 0a 0d 0a 69 matched..}....i
0c10: 6e 6c 69 6e 65 20 62 6f 6f 6c 20 43 41 72 63 68 nline bool CArch
0c20: 69 76 65 72 3a 3a 63 68 65 63 6b 28 20 63 6f 6e iver::check( con
0c30: 73 74 20 6b 69 50 61 74 68 26 20 61 6e 61 6d 65 st kiPath& aname
0c40: 20 29 0d 0a 7b 0d 0a 09 69 66 28 20 6e 6f 74 5f )..{...if( not_
0c50: 6c 6f 61 64 65 64 20 29 0d 0a 09 09 6d 5f 41 62 loaded )....m_Ab
0c60: 6c 65 3d 76 5f 6c 6f 61 64 28 29 2c 20 6e 6f 74 le=v_load(), not
0c70: 5f 6c 6f 61 64 65 64 3d 66 61 6c 73 65 3b 0d 0a _loaded=false;..
0c80: 09 72 65 74 75 72 6e 20 28 6d 5f 41 62 6c 65 26 .return (m_Able&
0c90: 61 43 68 65 63 6b 29 3f 76 5f 63 68 65 63 6b 28 aCheck)?v_check(
0ca0: 61 6e 61 6d 65 29 3a 66 61 6c 73 65 3b 0d 0a 7d aname):false;..}
0cb0: 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 69 6e 74 20 43 ....inline int C
0cc0: 41 72 63 68 69 76 65 72 3a 3a 63 6f 6e 74 65 6e Archiver::conten
0cd0: 74 73 28 20 63 6f 6e 73 74 20 6b 69 50 61 74 68 ts( const kiPath
0ce0: 26 20 61 6e 61 6d 65 2c 20 6b 69 50 61 74 68 26 & aname, kiPath&
0cf0: 20 64 6e 61 6d 65 20 29 0d 0a 7b 0d 0a 09 69 66 dname )..{...if
0d00: 28 20 6e 6f 74 5f 6c 6f 61 64 65 64 20 29 0d 0a ( not_loaded )..
0d10: 09 09 6d 5f 41 62 6c 65 3d 76 5f 6c 6f 61 64 28 ..m_Able=v_load(
0d20: 29 2c 20 6e 6f 74 5f 6c 6f 61 64 65 64 3d 66 61 ), not_loaded=fa
0d30: 6c 73 65 3b 0d 0a 09 72 65 74 75 72 6e 20 28 6d lse;...return (m
0d40: 5f 41 62 6c 65 26 61 4c 69 73 74 29 3f 76 5f 63 _Able&aList)?v_c
0d50: 6f 6e 74 65 6e 74 73 28 61 6e 61 6d 65 2c 64 6e ontents(aname,dn
0d60: 61 6d 65 29 3a 66 61 6c 73 65 3b 0d 0a 7d 0d 0a ame):false;..}..
0d70: 0d 0a 69 6e 6c 69 6e 65 20 69 6e 74 20 43 41 72 ..inline int CAr
0d80: 63 68 69 76 65 72 3a 3a 6d 65 6c 74 28 20 63 6f chiver::melt( co
0d90: 6e 73 74 20 61 72 63 6e 61 6d 65 26 20 61 6e 61 nst arcname& ana
0da0: 6d 65 2c 20 63 6f 6e 73 74 20 6b 69 50 61 74 68 me, const kiPath
0db0: 26 20 64 64 69 72 2c 20 63 6f 6e 73 74 20 61 66 & ddir, const af
0dc0: 6c 41 72 72 61 79 2a 20 66 69 6c 65 73 20 29 0d lArray* files ).
0dd0: 0a 7b 0d 0a 09 69 66 28 20 6e 6f 74 5f 6c 6f 61 .{...if( not_loa
0de0: 64 65 64 20 29 0d 0a 09 09 6d 5f 41 62 6c 65 3d ded )....m_Able=
0df0: 76 5f 6c 6f 61 64 28 29 2c 20 6e 6f 74 5f 6c 6f v_load(), not_lo
0e00: 61 64 65 64 3d 66 61 6c 73 65 3b 0d 0a 09 72 65 aded=false;...re
0e10: 74 75 72 6e 20 28 6d 5f 41 62 6c 65 26 61 4d 65 turn (m_Able&aMe
0e20: 6c 74 29 3f 76 5f 6d 65 6c 74 28 61 6e 61 6d 65 lt)?v_melt(aname
0e30: 2c 64 64 69 72 2c 66 69 6c 65 73 29 3a 30 78 66 ,ddir,files):0xf
0e40: 66 66 66 3b 0d 0a 7d 0d 0a 0d 0a 69 6e 6c 69 6e fff;..}....inlin
0e50: 65 20 62 6f 6f 6c 20 43 41 72 63 68 69 76 65 72 e bool CArchiver
0e60: 3a 3a 6c 69 73 74 28 20 63 6f 6e 73 74 20 61 72 ::list( const ar
0e70: 63 6e 61 6d 65 26 20 61 6e 61 6d 65 2c 20 61 66 cname& aname, af
0e80: 6c 41 72 72 61 79 26 20 66 69 6c 65 73 20 29 0d lArray& files ).
0e90: 0a 7b 0d 0a 09 69 66 28 20 6e 6f 74 5f 6c 6f 61 .{...if( not_loa
0ea0: 64 65 64 20 29 0d 0a 09 09 6d 5f 41 62 6c 65 3d ded )....m_Able=
0eb0: 76 5f 6c 6f 61 64 28 29 2c 20 6e 6f 74 5f 6c 6f v_load(), not_lo
0ec0: 61 64 65 64 3d 66 61 6c 73 65 3b 0d 0a 09 72 65 aded=false;...re
0ed0: 74 75 72 6e 20 28 6d 5f 41 62 6c 65 26 61 4c 69 turn (m_Able&aLi
0ee0: 73 74 29 3f 76 5f 6c 69 73 74 28 61 6e 61 6d 65 st)?v_list(aname
0ef0: 2c 66 69 6c 65 73 29 3a 66 61 6c 73 65 3b 0d 0a ,files):false;..
0f00: 7d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 69 6e 74 20 }....inline int
0f10: 43 41 72 63 68 69 76 65 72 3a 3a 63 6f 6d 70 72 CArchiver::compr
0f20: 65 73 73 28 20 63 6f 6e 73 74 20 6b 69 50 61 74 ess( const kiPat
0f30: 68 26 20 62 61 73 65 2c 20 63 6f 6e 73 74 20 77 h& base, const w
0f40: 66 64 41 72 72 61 79 26 20 66 69 6c 65 73 2c 20 fdArray& files,
0f50: 63 6f 6e 73 74 20 6b 69 50 61 74 68 26 20 64 64 const kiPath& dd
0f60: 69 72 2c 20 69 6e 74 20 6d 65 74 68 6f 64 2c 20 ir, int method,
0f70: 62 6f 6f 6c 20 73 66 78 20 29 0d 0a 7b 0d 0a 09 bool sfx )..{...
0f80: 69 66 28 20 6e 6f 74 5f 6c 6f 61 64 65 64 20 29 if( not_loaded )
0f90: 0d 0a 09 09 6d 5f 41 62 6c 65 3d 76 5f 6c 6f 61 ....m_Able=v_loa
0fa0: 64 28 29 2c 20 6e 6f 74 5f 6c 6f 61 64 65 64 3d d(), not_loaded=
0fb0: 66 61 6c 73 65 3b 0d 0a 09 72 65 74 75 72 6e 20 false;...return
0fc0: 28 6d 5f 41 62 6c 65 26 61 43 6f 6d 70 72 65 73 (m_Able&aCompres
0fd0: 73 29 3f 76 5f 63 6f 6d 70 72 65 73 73 28 62 61 s)?v_compress(ba
0fe0: 73 65 2c 66 69 6c 65 73 2c 64 64 69 72 2c 6d 65 se,files,ddir,me
0ff0: 74 68 6f 64 2c 73 66 78 29 3a 30 78 66 66 66 66 thod,sfx):0xffff
1000: 3b 0d 0a 7d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 62 ;..}....inline b
1010: 6f 6f 6c 20 43 41 72 63 68 69 76 65 72 3a 3a 76 ool CArchiver::v
1020: 65 72 28 20 6b 69 53 74 72 26 20 73 74 72 20 29 er( kiStr& str )
1030: 0d 0a 7b 0d 0a 09 69 66 28 20 6e 6f 74 5f 6c 6f ..{...if( not_lo
1040: 61 64 65 64 20 29 0d 0a 09 09 6d 5f 41 62 6c 65 aded )....m_Able
1050: 3d 76 5f 6c 6f 61 64 28 29 2c 20 6e 6f 74 5f 6c =v_load(), not_l
1060: 6f 61 64 65 64 3d 66 61 6c 73 65 3b 0d 0a 09 72 oaded=false;...r
1070: 65 74 75 72 6e 20 76 5f 76 65 72 28 73 74 72 29 eturn v_ver(str)
1080: 3b 0d 0a 7d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 63 ;..}....inline c
1090: 6f 6e 73 74 20 63 68 61 72 2a 20 43 41 72 63 68 onst char* CArch
10a0: 69 76 65 72 3a 3a 6d 6c 74 5f 65 78 74 28 29 0d iver::mlt_ext().
10b0: 0a 7b 0d 0a 09 72 65 74 75 72 6e 20 6d 5f 4d 79 .{...return m_My
10c0: 45 78 74 4c 69 73 74 3b 0d 0a 7d 0d 0a 0d 0a 69 ExtList;..}....i
10d0: 6e 6c 69 6e 65 20 63 6f 6e 73 74 20 6b 69 53 74 nline const kiSt
10e0: 72 26 20 43 41 72 63 68 69 76 65 72 3a 3a 63 6d r& CArchiver::cm
10f0: 70 5f 65 78 74 28 29 0d 0a 7b 0d 0a 09 69 66 28 p_ext()..{...if(
1100: 20 6e 6f 74 5f 6c 6f 61 64 65 64 20 29 0d 0a 09 not_loaded )...
1110: 09 6d 5f 41 62 6c 65 3d 76 5f 6c 6f 61 64 28 29 .m_Able=v_load()
1120: 2c 20 6e 6f 74 5f 6c 6f 61 64 65 64 3d 66 61 6c , not_loaded=fal
1130: 73 65 3b 0d 0a 09 72 65 74 75 72 6e 20 6d 5f 4d se;...return m_M
1140: 79 43 6d 70 45 78 74 3b 0d 0a 7d 0d 0a 0d 0a 69 yCmpExt;..}....i
1150: 6e 6c 69 6e 65 20 63 6f 6e 73 74 20 53 74 72 41 nline const StrA
1160: 72 72 61 79 26 20 43 41 72 63 68 69 76 65 72 3a rray& CArchiver:
1170: 3a 63 6d 70 5f 6d 68 64 5f 6c 69 73 74 28 29 0d :cmp_mhd_list().
1180: 0a 7b 0d 0a 09 69 66 28 20 6e 6f 74 5f 6c 6f 61 .{...if( not_loa
1190: 64 65 64 20 29 0d 0a 09 09 6d 5f 41 62 6c 65 3d ded )....m_Able=
11a0: 76 5f 6c 6f 61 64 28 29 2c 20 6e 6f 74 5f 6c 6f v_load(), not_lo
11b0: 61 64 65 64 3d 66 61 6c 73 65 3b 0d 0a 09 72 65 aded=false;...re
11c0: 74 75 72 6e 20 6d 5f 4d 68 64 3b 0d 0a 7d 0d 0a turn m_Mhd;..}..
11d0: 0d 0a 69 6e 6c 69 6e 65 20 63 6f 6e 73 74 20 69 ..inline const i
11e0: 6e 74 20 43 41 72 63 68 69 76 65 72 3a 3a 63 6d nt CArchiver::cm
11f0: 70 5f 6d 68 64 5f 64 65 66 61 75 6c 74 28 29 0d p_mhd_default().
1200: 0a 7b 0d 0a 09 69 66 28 20 6e 6f 74 5f 6c 6f 61 .{...if( not_loa
1210: 64 65 64 20 29 0d 0a 09 09 6d 5f 41 62 6c 65 3d ded )....m_Able=
1220: 76 5f 6c 6f 61 64 28 29 2c 20 6e 6f 74 5f 6c 6f v_load(), not_lo
1230: 61 64 65 64 3d 66 61 6c 73 65 3b 0d 0a 09 72 65 aded=false;...re
1240: 74 75 72 6e 20 6d 5f 4d 68 64 44 65 66 3b 0d 0a turn m_MhdDef;..
1250: 7d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 43 41 72 63 }....inline CArc
1260: 68 69 76 65 72 3a 3a 43 41 72 63 68 69 76 65 72 hiver::CArchiver
1270: 28 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 65 78 ( const char* ex
1280: 74 6c 69 73 74 20 29 0d 0a 09 09 3a 20 6d 5f 4d tlist )....: m_M
1290: 79 45 78 74 4c 69 73 74 28 20 65 78 74 6c 69 73 yExtList( extlis
12a0: 74 20 29 2c 20 6d 5f 4d 68 64 28 33 29 2c 20 6d t ), m_Mhd(3), m
12b0: 5f 4d 68 64 44 65 66 28 30 29 2c 20 6e 6f 74 5f _MhdDef(0), not_
12c0: 6c 6f 61 64 65 64 28 74 72 75 65 29 0d 0a 7b 0d loaded(true)..{.
12d0: 0a 09 6d 5f 4d 79 45 78 74 4c 69 73 74 2e 6c 6f ..m_MyExtList.lo
12e0: 77 65 72 28 29 3b 0d 0a 7d 0d 0a 0d 0a 69 6e 6c wer();..}....inl
12f0: 69 6e 65 20 76 6f 69 64 20 43 41 72 63 68 69 76 ine void CArchiv
1300: 65 72 3a 3a 73 65 74 5f 63 6d 70 5f 65 78 74 28 er::set_cmp_ext(
1310: 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 65 78 74 const char* ext
1320: 20 29 0d 0a 7b 0d 0a 09 6d 5f 4d 79 43 6d 70 45 )..{...m_MyCmpE
1330: 78 74 20 3d 20 65 78 74 3b 0d 0a 7d 0d 0a 0d 0a xt = ext;..}....
1340: 69 6e 6c 69 6e 65 20 76 6f 69 64 20 43 41 72 63 inline void CArc
1350: 68 69 76 65 72 3a 3a 61 64 64 5f 63 6d 70 5f 6d hiver::add_cmp_m
1360: 68 64 28 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 hd( const char*
1370: 6d 65 74 68 6f 64 2c 20 62 6f 6f 6c 20 44 65 66 method, bool Def
1380: 61 75 6c 74 20 29 0d 0a 7b 0d 0a 09 6d 5f 4d 68 ault )..{...m_Mh
1390: 64 2e 61 64 64 28 6d 65 74 68 6f 64 29 3b 0d 0a d.add(method);..
13a0: 09 69 66 28 20 44 65 66 61 75 6c 74 20 29 0d 0a .if( Default )..
13b0: 09 09 6d 5f 4d 68 64 44 65 66 20 3d 20 6d 5f 4d ..m_MhdDef = m_M
13c0: 68 64 2e 6c 65 6e 28 29 20 2d 20 31 3b 0d 0a 7d hd.len() - 1;..}
13d0: 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 62 6f 6f 6c 20 ....inline bool
13e0: 43 41 72 63 68 69 76 65 72 3a 3a 65 78 74 43 68 CArchiver::extCh
13f0: 65 63 6b 28 20 63 6f 6e 73 74 20 63 68 61 72 2a eck( const char*
1400: 20 65 78 74 20 29 0d 0a 7b 0d 0a 09 63 6f 6e 73 ext )..{...cons
1410: 74 20 63 68 61 72 20 2a 78 3d 6d 5f 4d 79 45 78 t char *x=m_MyEx
1420: 74 4c 69 73 74 2c 2a 79 3b 0d 0a 09 69 6e 74 20 tList,*y;...int
1430: 6c 6e 20 3d 20 6b 69 5f 73 74 72 6c 65 6e 28 65 ln = ki_strlen(e
1440: 78 74 29 3b 0d 0a 09 77 68 69 6c 65 28 20 2a 78 xt);...while( *x
1450: 20 29 0d 0a 09 7b 0d 0a 09 09 66 6f 72 28 20 79 )...{....for( y
1460: 3d 78 2b 31 3b 20 2a 79 20 26 26 20 2a 79 21 3d =x+1; *y && *y!=
1470: 27 2e 27 3b 20 79 2b 2b 20 29 3b 0d 0a 09 09 69 '.'; y++ );....i
1480: 66 28 20 2a 79 3d 3d 27 5c 30 27 20 29 20 62 72 f( *y=='\0' ) br
1490: 65 61 6b 3b 0d 0a 0d 0a 09 09 69 66 28 20 79 2d eak;......if( y-
14a0: 78 20 3d 3d 20 6c 6e 20 29 0d 0a 09 09 7b 0d 0a x == ln )....{..
14b0: 09 09 09 77 68 69 6c 65 28 20 78 21 3d 79 20 29 ...while( x!=y )
14c0: 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 69 66 28 20 .....{......if(
14d0: 2a 78 21 3d 65 78 74 5b 6c 6e 2b 28 78 2d 79 29 *x!=ext[ln+(x-y)
14e0: 5d 20 29 0d 0a 09 09 09 09 09 62 72 65 61 6b 3b ] ).......break;
14f0: 0d 0a 09 09 09 09 78 2b 2b 3b 0d 0a 09 09 09 7d ......x++;.....}
1500: 0d 0a 09 09 09 69 66 28 20 78 3d 3d 79 20 29 0d .....if( x==y ).
1510: 0a 09 09 09 09 72 65 74 75 72 6e 20 74 72 75 65 .....return true
1520: 3b 0d 0a 09 09 7d 0d 0a 09 09 78 3d 79 2b 31 3b ;....}....x=y+1;
1530: 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 6e 20 66 61 ...}...return fa
1540: 6c 73 65 3b 0d 0a 7d 0d 0a 0d 0a 2f 2f 20 93 6e lse;..}....// .n
1550: 82 b3 82 ea 82 bd 83 70 83 58 95 b6 8e 9a 97 f1 .......p.X......
1560: 82 aa 81 41 90 e2 91 ce 83 70 83 58 82 e2 22 2e ...A.....p.X..".
1570: 2e 22 82 f0 8a dc 82 f1 82 c5 82 a2 82 ea 82 ce ."..............
1580: 74 72 75 65 0d 0a 73 74 61 74 69 63 20 62 6f 6f true..static boo
1590: 6c 20 63 6f 6e 74 61 69 6e 73 44 61 6e 67 65 72 l containsDanger
15a0: 50 61 74 68 28 20 63 6f 6e 73 74 20 63 68 61 72 Path( const char
15b0: 2a 20 70 61 74 68 20 29 0d 0a 7b 0d 0a 09 2f 2f * path )..{...//
15c0: 20 90 e2 91 ce 83 70 83 58 0d 0a 09 69 66 28 20 .....p.X...if(
15d0: 70 61 74 68 5b 30 5d 3d 3d 27 5c 5c 27 20 7c 7c path[0]=='\\' ||
15e0: 20 70 61 74 68 5b 30 5d 3d 3d 27 2f 27 20 7c 7c path[0]=='/' ||
15f0: 20 70 61 74 68 5b 30 5d 21 3d 27 5c 30 27 20 26 path[0]!='\0' &
1600: 26 20 70 61 74 68 5b 31 5d 3d 3d 27 3a 27 20 29 & path[1]==':' )
1610: 0d 0a 09 09 72 65 74 75 72 6e 20 74 72 75 65 3b ....return true;
1620: 0d 0a 0d 0a 09 2f 2f 20 22 2e 2e 22 0d 0a 09 66 .....// ".."...f
1630: 6f 72 28 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 or( const char*
1640: 70 3d 70 61 74 68 3b 20 2a 70 3b 20 29 0d 0a 09 p=path; *p; )...
1650: 7b 0d 0a 09 09 63 6f 6e 73 74 20 63 68 61 72 2a {....const char*
1660: 20 71 20 3d 20 70 3b 0d 0a 09 09 77 68 69 6c 65 q = p;....while
1670: 28 20 2a 71 21 3d 27 5c 30 27 20 26 26 20 2a 71 ( *q!='\0' && *q
1680: 21 3d 27 5c 5c 27 20 26 26 20 2a 71 21 3d 27 2f !='\\' && *q!='/
1690: 27 20 29 0d 0a 09 09 09 71 20 3d 20 3a 3a 43 68 ' ).....q = ::Ch
16a0: 61 72 4e 65 78 74 28 71 29 3b 0d 0a 0d 0a 09 09 arNext(q);......
16b0: 69 66 28 20 70 2b 32 20 3c 3d 20 71 20 29 0d 0a if( p+2 <= q )..
16c0: 09 09 7b 0d 0a 09 09 09 63 6f 6e 73 74 20 63 68 ..{.....const ch
16d0: 61 72 2a 20 72 3b 0d 0a 09 09 09 66 6f 72 28 20 ar* r;.....for(
16e0: 72 3d 70 3b 20 72 21 3d 71 3b 20 2b 2b 72 20 29 r=p; r!=q; ++r )
16f0: 0d 0a 09 09 09 09 69 66 28 20 2a 72 20 21 3d 20 ......if( *r !=
1700: 27 2e 27 20 29 0d 0a 09 09 09 09 09 62 72 65 61 '.' ).......brea
1710: 6b 3b 0d 0a 09 09 09 69 66 28 20 72 20 3d 3d 20 k;.....if( r ==
1720: 71 20 29 20 2f 2f 20 61 6c 6c 20 64 6f 74 0d 0a q ) // all dot..
1730: 09 09 09 09 72 65 74 75 72 6e 20 74 72 75 65 3b ....return true;
1740: 0d 0a 09 09 7d 0d 0a 09 09 70 20 3d 20 28 2a 71 ....}....p = (*q
1750: 20 3f 20 3a 3a 43 68 61 72 4e 65 78 74 28 71 29 ? ::CharNext(q)
1760: 20 3a 20 71 29 3b 0d 0a 09 7d 0d 0a 09 72 65 74 : q);...}...ret
1770: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 7d 0d 0a 0d urn false;..}...
1780: 0a 2f 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d ./*=*=*=*=*=*=*=
1790: 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d *=*=*=*=*=*=*=*=
17a0: 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d *=*=*=*=*=*=*=*=
17b0: 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d 2a 3d *=*=*=*=*=*=*=*=
17c0: 2a 3d 2a 3d 2a 3d 2a 3d 2a 2f 0d 0a 2f 2f 20 93 *=*=*=*=*/..// .
17d0: 9d 8d 87 83 41 81 5b 83 4a 83 43 83 6f 44 4c 4c ....A.[.J.C.oDLL
17e0: 83 8c 83 43 83 84 91 e6 93 f1 91 77 20 76 65 72 ...C.......w ver
17f0: 32 81 42 82 c2 82 a2 82 c5 82 c9 65 78 65 82 e0 2.B........exe..
1800: 93 4b 93 96 82 c9 93 ae 82 ad 0d 0a 0d 0a 63 6c .K............cl
1810: 61 73 73 20 43 41 72 63 4d 6f 64 75 6c 65 0d 0a ass CArcModule..
1820: 7b 0d 0a 70 75 62 6c 69 63 3a 0d 0a 0d 0a 09 2f {..public:...../
1830: 2f 20 8e c0 8d 73 83 52 83 7d 83 93 83 68 96 bc / ...s.R.}...h..
1840: 82 f0 8e 77 92 e8 82 b5 82 c4 8d ec 90 ac 0d 0a ...w............
1850: 09 2f 2f 20 20 81 45 83 74 83 40 83 43 83 8b 96 .// .E.t.@.C...
1860: bc 82 c6 82 b5 82 c4 92 54 82 b5 82 c4 8c a9 82 ........T.......
1870: c2 82 a9 82 e7 82 c8 82 a9 82 c1 82 bd 8f ea 8d ................
1880: 87 0d 0a 09 2f 2f 20 20 20 20 83 56 83 46 83 8b ....// .V.F..
1890: 82 cc 93 e0 95 94 83 52 83 7d 83 93 83 68 82 c6 .......R.}...h..
18a0: 89 bc 92 e8 82 b5 82 c4 88 ea 89 9e 95 db 8e 9d ................
18b0: 82 b5 82 c4 82 a8 82 ad 0d 0a 09 2f 2f 20 20 81 ...........// .
18c0: 45 8a 67 92 a3 8e 71 82 aa 20 65 78 65 20 82 a9 E.g...q.. exe ..
18d0: 20 63 6f 6d 20 82 c8 82 e7 8e c0 8d 73 83 74 83 com .......s.t.
18e0: 40 83 43 83 8b 82 c6 82 b5 82 c4 88 b5 82 a4 81 @.C.............
18f0: 42 0d 0a 09 2f 2f 20 20 81 45 82 bb 82 ea 88 c8 B...// .E......
1900: 8a 4f 82 c8 82 e7 83 41 81 5b 83 4a 83 43 83 6f .O.....A.[.J.C.o
1910: 44 4c 4c 82 c6 82 b5 82 c4 88 b5 82 a4 81 42 0d DLL...........B.
1920: 0a 09 43 41 72 63 4d 6f 64 75 6c 65 28 20 63 6f ..CArcModule( co
1930: 6e 73 74 20 63 68 61 72 2a 20 6e 61 6d 65 2c 20 nst char* name,
1940: 62 6f 6f 6c 20 75 73 3d 66 61 6c 73 65 20 29 3b bool us=false );
1950: 0d 0a 09 76 69 72 74 75 61 6c 20 7e 43 41 72 63 ...virtual ~CArc
1960: 4d 6f 64 75 6c 65 28 29 3b 0d 0a 09 62 6f 6f 6c Module();...bool
1970: 20 65 78 69 73 74 28 29 3b 0d 0a 09 62 6f 6f 6c exist();...bool
1980: 20 69 73 64 6c 6c 28 29 3b 0d 0a 0d 0a 09 6b 69 isdll();.....ki
1990: 53 74 72 20 6e 61 6d 65 28 29 20 63 6f 6e 73 74 Str name() const
19a0: 20 7b 20 72 65 74 75 72 6e 20 6b 69 50 61 74 68 { return kiPath
19b0: 3a 3a 6e 61 6d 65 28 6d 5f 6e 61 6d 65 29 3b 20 ::name(m_name);
19c0: 7d 0d 0a 0d 0a 09 2f 2f 20 8e c0 8d 73 0d 0a 09 }.....// ...s...
19d0: 69 6e 74 20 63 6d 64 28 20 63 6f 6e 73 74 20 63 int cmd( const c
19e0: 68 61 72 2a 20 63 6d 64 2c 20 62 6f 6f 6c 20 6d har* cmd, bool m
19f0: 69 6e 69 3d 66 61 6c 73 65 20 29 3b 0d 0a 0d 0a ini=false );....
1a00: 09 2f 2f 20 8f 91 8c c9 83 60 83 46 83 62 83 4e .// .....`.F.b.N
1a10: 0d 0a 09 62 6f 6f 6c 20 63 68 6b 28 20 63 6f 6e ...bool chk( con
1a20: 73 74 20 63 68 61 72 2a 20 61 6e 61 6d 65 20 29 st char* aname )
1a30: 3b 0d 0a 09 69 6e 74 20 20 61 72 63 74 79 70 65 ;...int arctype
1a40: 28 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 61 6e ( const char* an
1a50: 61 6d 65 20 29 20 63 6f 6e 73 74 3b 0d 0a 0d 0a ame ) const;....
1a60: 09 2f 2f 20 83 6f 81 5b 83 57 83 87 83 93 8f ee .// .o.[.W......
1a70: 95 f1 95 b6 8e 9a 97 f1 82 f0 95 d4 82 b7 0d 0a ................
1a80: 09 76 6f 69 64 20 76 65 72 28 20 6b 69 53 74 72 .void ver( kiStr
1a90: 26 20 73 74 72 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 & str );.....//
1aa0: 8f 91 8c c9 82 cc 92 86 90 67 82 f0 83 8a 83 58 .........g.....X
1ab0: 83 67 83 41 83 62 83 76 0d 0a 09 62 6f 6f 6c 20 .g.A.b.v...bool
1ac0: 6c 73 74 5f 64 6c 6c 28 20 63 6f 6e 73 74 20 61 lst_dll( const a
1ad0: 72 63 6e 61 6d 65 26 20 61 6e 61 6d 65 2c 20 61 rcname& aname, a
1ae0: 66 6c 41 72 72 61 79 26 20 66 69 6c 65 73 2c 20 flArray& files,
1af0: 63 6f 6e 73 74 20 63 68 61 72 2a 20 77 69 6c 64 const char* wild
1b00: 3d 22 2a 22 20 29 3b 0d 0a 09 69 6e 74 20 20 63 ="*" );...int c
1b10: 6e 74 28 20 63 6f 6e 73 74 20 6b 69 50 61 74 68 nt( const kiPath
1b20: 26 20 61 6e 61 6d 65 2c 20 6b 69 50 61 74 68 26 & aname, kiPath&
1b30: 20 64 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 63 68 dname, const ch
1b40: 61 72 2a 20 77 69 6c 64 3d 22 2a 22 20 29 3b 0d ar* wild="*" );.
1b50: 0a 09 62 6f 6f 6c 20 6c 73 74 5f 65 78 65 28 20 ..bool lst_exe(
1b60: 63 6f 6e 73 74 20 63 68 61 72 2a 20 6c 73 74 63 const char* lstc
1b70: 6d 64 2c 20 61 66 6c 41 72 72 61 79 26 20 66 69 md, aflArray& fi
1b80: 6c 65 73 2c 0d 0a 09 09 63 6f 6e 73 74 20 63 68 les,....const ch
1b90: 61 72 2a 20 42 4c 2c 20 69 6e 74 20 42 53 4c 2c ar* BL, int BSL,
1ba0: 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 45 4c 2c const char* EL,
1bb0: 20 69 6e 74 20 53 4c 2c 20 69 6e 74 20 64 78 20 int SL, int dx
1bc0: 29 3b 0d 0a 0d 0a 09 2f 2f 20 44 4c 4c 8b ad 90 );.....// DLL...
1bd0: a7 83 41 83 93 83 8d 81 5b 83 68 28 20 42 75 67 ..A.....[.h( Bug
1be0: 54 72 61 70 20 66 6f 72 20 55 6e 5a 69 70 33 32 Trap for UnZip32
1bf0: 2e 64 6c 6c 20 29 0d 0a 09 76 6f 69 64 20 75 6e .dll )...void un
1c00: 6c 6f 61 64 28 29 20 7b 20 6d 5f 64 6c 6c 2d 3e load() { m_dll->
1c10: 75 6e 6c 6f 61 64 28 29 3b 20 7d 0d 0a 09 2f 2f unload(); }...//
1c20: 20 44 4c 4c 83 49 81 5b 83 69 81 5b 91 8b 90 dd DLL.I.[.i.[....
1c30: 92 e8 28 20 42 75 67 54 72 61 70 20 66 6f 72 20 ..( BugTrap for
1c40: 55 6e 72 61 72 2e 64 6c 6c 20 29 0d 0a 09 76 6f Unrar.dll )...vo
1c50: 69 64 20 6f 77 6e 28 20 48 57 4e 44 20 77 6e 64 id own( HWND wnd
1c60: 20 29 20 7b 20 6d 5f 64 6c 6c 2d 3e 73 65 74 4f ) { m_dll->setO
1c70: 77 6e 65 72 28 20 77 6e 64 20 29 3b 20 7d 0d 0a wner( wnd ); }..
1c80: 09 76 6f 69 64 20 66 72 65 28 29 20 7b 20 6d 5f .void fre() { m_
1c90: 64 6c 6c 2d 3e 63 6c 65 61 72 4f 77 6e 65 72 28 dll->clearOwner(
1ca0: 29 3b 20 7d 0d 0a 0d 0a 70 72 69 76 61 74 65 3a ); }....private:
1cb0: 0d 0a 09 65 6e 75 6d 20 7b 20 4e 4f 54 45 58 49 ...enum { NOTEXI
1cc0: 53 54 2c 20 44 4c 4c 2c 20 44 4c 4c 47 43 41 2c ST, DLL, DLLGCA,
1cd0: 20 44 4c 4c 42 47 41 2c 20 45 58 45 2c 20 45 58 DLLBGA, EXE, EX
1ce0: 45 55 53 2c 20 53 48 4c 43 4d 44 3d 30 20 7d 20 EUS, SHLCMD=0 }
1cf0: 6d 5f 74 79 70 65 3b 0d 0a 09 6b 69 41 72 63 44 m_type;...kiArcD
1d00: 4c 4c 52 61 77 2a 20 6d 5f 64 6c 6c 3b 0d 0a 09 LLRaw* m_dll;...
1d10: 63 68 61 72 20 20 20 20 20 20 20 20 20 6d 5f 6e char m_n
1d20: 61 6d 65 5b 4d 41 58 5f 50 41 54 48 5d 3b 0d 0a ame[MAX_PATH];..
1d30: 09 63 6f 6e 73 74 20 63 68 61 72 2a 20 20 6d 5f .const char* m_
1d40: 77 69 6c 64 3b 0d 0a 7d 3b 0d 0a 0d 0a 69 6e 6c wild;..};....inl
1d50: 69 6e 65 20 62 6f 6f 6c 20 43 41 72 63 4d 6f 64 ine bool CArcMod
1d60: 75 6c 65 3a 3a 63 68 6b 28 20 63 6f 6e 73 74 20 ule::chk( const
1d70: 63 68 61 72 2a 20 61 6e 61 6d 65 20 29 0d 0a 09 char* aname )...
1d80: 7b 20 72 65 74 75 72 6e 20 6d 5f 64 6c 6c 20 3f { return m_dll ?
1d90: 20 46 41 4c 53 45 21 3d 6d 5f 64 6c 6c 2d 3e 63 FALSE!=m_dll->c
1da0: 68 65 63 6b 28 20 61 6e 61 6d 65 2c 20 6d 5f 74 heck( aname, m_t
1db0: 79 70 65 3d 3d 44 4c 4c 47 43 41 3f 32 34 3a 30 ype==DLLGCA?24:0
1dc0: 20 29 20 3a 20 66 61 6c 73 65 3b 20 7d 0d 0a 0d ) : false; }...
1dd0: 0a 69 6e 6c 69 6e 65 20 69 6e 74 20 43 41 72 63 .inline int CArc
1de0: 4d 6f 64 75 6c 65 3a 3a 61 72 63 74 79 70 65 28 Module::arctype(
1df0: 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 61 6e 61 const char* ana
1e00: 6d 65 20 29 20 63 6f 6e 73 74 0d 0a 09 7b 20 72 me ) const...{ r
1e10: 65 74 75 72 6e 20 6d 5f 64 6c 6c 20 3f 0d 0a 09 eturn m_dll ?...
1e20: 09 6d 5f 74 79 70 65 3d 3d 44 4c 4c 42 47 41 20 .m_type==DLLBGA
1e30: 3f 20 6d 5f 64 6c 6c 2d 3e 63 68 65 63 6b 28 61 ? m_dll->check(a
1e40: 6e 61 6d 65 2c 30 29 20 3a 20 6d 5f 64 6c 6c 2d name,0) : m_dll-
1e50: 3e 67 65 74 41 72 63 54 79 70 65 28 61 6e 61 6d >getArcType(anam
1e60: 65 29 0d 0a 09 20 20 3a 20 30 3b 20 7d 0d 0a 0d e)... : 0; }...
1e70: 0a 69 6e 6c 69 6e 65 20 62 6f 6f 6c 20 43 41 72 .inline bool CAr
1e80: 63 4d 6f 64 75 6c 65 3a 3a 65 78 69 73 74 28 29 cModule::exist()
1e90: 0d 0a 09 7b 20 72 65 74 75 72 6e 20 6d 5f 74 79 ...{ return m_ty
1ea0: 70 65 21 3d 4e 4f 54 45 58 49 53 54 3b 20 7d 0d pe!=NOTEXIST; }.
1eb0: 0a 0d 0a 69 6e 6c 69 6e 65 20 62 6f 6f 6c 20 43 ...inline bool C
1ec0: 41 72 63 4d 6f 64 75 6c 65 3a 3a 69 73 64 6c 6c ArcModule::isdll
1ed0: 28 29 0d 0a 09 7b 20 72 65 74 75 72 6e 20 6d 5f ()...{ return m_
1ee0: 74 79 70 65 3d 3d 44 4c 4c 20 7c 7c 20 6d 5f 74 type==DLL || m_t
1ef0: 79 70 65 3d 3d 44 4c 4c 47 43 41 3b 20 7d 0d 0a ype==DLLGCA; }..
1f00: 0d 0a 0d 0a 0d 0a 23 65 6e 64 69 66 0d 0a ......#endif..