Hex Artifact Content

Not logged in

Artifact 6f288846948232f7920dd1a4ba3c3368554bef0e:


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..