Hex Artifact Content

Not logged in

Artifact e18cd844860064552a8fbae9d03e328a12aa4bdb:


0000: 0d 0a 23 69 6e 63 6c 75 64 65 20 22 73 74 64 61  ..#include "stda
0010: 66 78 2e 68 22 0d 0a 23 69 6e 63 6c 75 64 65 20  fx.h"..#include 
0020: 22 72 65 73 6f 75 72 63 65 2e 68 22 0d 0a 0d 0a  "resource.h"....
0030: 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ....//----------
0040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0050: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0060: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0080: 2d 2d 0d 0a 2f 2f 20 83 86 81 5b 83 65 83 42 83  --..// ...[.e.B.
0090: 8a 83 65 83 42 81 5b 0d 0a 2f 2f 2d 2d 2d 2d 2d  ..e.B.[..//-----
00a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00e0: 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 23 69 66 6e 64  -------....#ifnd
00f0: 65 66 20 4c 69 73 74 56 69 65 77 5f 53 65 74 43  ef ListView_SetC
0100: 68 65 63 6b 53 74 61 74 65 0d 0a 23 64 65 66 69  heckState..#defi
0110: 6e 65 20 4c 69 73 74 56 69 65 77 5f 53 65 74 43  ne ListView_SetC
0120: 68 65 63 6b 53 74 61 74 65 28 5f 68 77 6e 64 4c  heckState(_hwndL
0130: 56 2c 20 5f 69 2c 20 5f 66 43 68 65 63 6b 29 20  V, _i, _fCheck) 
0140: 5c 0d 0a 09 4c 69 73 74 56 69 65 77 5f 53 65 74  \...ListView_Set
0150: 49 74 65 6d 53 74 61 74 65 28 5f 68 77 6e 64 4c  ItemState(_hwndL
0160: 56 2c 20 5f 69 2c 20 5c 0d 0a 09 49 4e 44 45 58  V, _i, \...INDEX
0170: 54 4f 53 54 41 54 45 49 4d 41 47 45 4d 41 53 4b  TOSTATEIMAGEMASK
0180: 28 28 5f 66 43 68 65 63 6b 29 2b 31 29 2c 20 4c  ((_fCheck)+1), L
0190: 56 49 53 5f 53 54 41 54 45 49 4d 41 47 45 4d 41  VIS_STATEIMAGEMA
01a0: 53 4b 29 0d 0a 23 65 6e 64 69 66 0d 0a 0d 0a 0d  SK)..#endif.....
01b0: 0a 2f 2f 20 91 7d 93 fc 63 61 6c 64 69 78 46 0d  .// .}..caldixF.
01c0: 0a 0d 0a 2f 2f 20 82 c8 82 f1 82 a9 92 b7 82 a2  ...// ..........
01d0: 82 b5 95 aa 82 e8 93 ef 82 a2 82 f1 82 c5 28 77  ..............(w
01e0: 0d 0a 23 64 65 66 69 6e 65 20 49 73 44 62 6c 43  ..#define IsDblC
01f0: 68 61 72 28 78 29 20 49 73 44 42 43 53 4c 65 61  har(x) IsDBCSLea
0200: 64 42 79 74 65 28 28 42 59 54 45 29 28 78 29 29  dByte((BYTE)(x))
0210: 0d 0a 0d 0a 2f 2f 20 88 ea 94 d4 91 4f 3d 54 52  ....// .....O=TR
0220: 55 45 28 8c e3 82 eb 3d 46 41 4c 53 45 29 82 cc  UE(....=FALSE)..
0230: 89 bd 82 a9 3d 63 82 cc 83 43 83 93 83 66 83 62  ....=c...C...f.b
0240: 83 4e 83 58 82 f0 92 54 82 b5 82 c4 95 d4 82 b7  .N.X...T........
0250: 0d 0a 69 6e 74 20 47 65 74 63 58 28 63 68 61 72  ..int GetcX(char
0260: 20 2a 62 75 66 2c 63 68 61 72 20 63 2c 42 4f 4f   *buf,char c,BOO
0270: 4c 20 66 6c 29 0d 0a 7b 0d 0a 09 69 6e 74 20 72  L fl)..{...int r
0280: 74 3b 0d 0a 09 69 6e 74 20 69 2c 6c 65 6e 3b 0d  t;...int i,len;.
0290: 0a 0d 0a 09 6c 65 6e 20 3d 20 6c 73 74 72 6c 65  ....len = lstrle
02a0: 6e 28 62 75 66 29 3b 0d 0a 09 72 74 20 3d 20 30  n(buf);...rt = 0
02b0: 3b 0d 0a 09 66 6f 72 20 28 69 20 3d 20 30 3b 69  ;...for (i = 0;i
02c0: 20 3c 20 6c 65 6e 3b 69 2b 2b 29 7b 0d 0a 09 09   < len;i++){....
02d0: 2f 2f 20 32 83 6f 83 43 83 67 95 b6 8e 9a 82 c8  // 2.o.C.g......
02e0: 82 e7 94 f2 82 ce 82 b7 0d 0a 09 09 69 66 20 28  ............if (
02f0: 49 73 44 62 6c 43 68 61 72 28 62 75 66 5b 69 5d  IsDblChar(buf[i]
0300: 29 29 7b 0d 0a 09 09 09 69 2b 2b 3b 0d 0a 09 09  )){.....i++;....
0310: 09 63 6f 6e 74 69 6e 75 65 3b 0d 0a 09 09 7d 0d  .continue;....}.
0320: 0a 09 09 65 6c 73 65 7b 0d 0a 09 09 09 69 66 20  ...else{.....if 
0330: 28 62 75 66 5b 69 5d 20 3d 3d 20 63 29 7b 0d 0a  (buf[i] == c){..
0340: 09 09 09 09 72 74 20 3d 20 69 3b 0d 0a 09 09 09  ....rt = i;.....
0350: 09 2f 2f 20 8d c5 8f 89 82 cc 93 7a 82 f0 92 54  .// .......z...T
0360: 82 b7 82 cc 82 c8 82 e7 0d 0a 09 09 09 09 69 66  ..............if
0370: 20 28 66 6c 29 0d 0a 09 09 09 09 09 72 65 74 75   (fl).......retu
0380: 72 6e 28 72 74 29 3b 0d 0a 09 09 09 7d 0d 0a 09  rn(rt);.....}...
0390: 09 7d 0d 0a 09 7d 0d 0a 09 2f 2f 20 8d c5 8c e3  .}...}...// ....
03a0: 82 dc 82 c5 96 b3 82 a9 82 c1 82 bd 0d 0a 09 69  ...............i
03b0: 66 20 28 21 72 74 20 26 26 20 28 69 20 3d 3d 20  f (!rt && (i == 
03c0: 6c 65 6e 29 29 0d 0a 09 09 72 74 20 3d 20 6c 65  len))....rt = le
03d0: 6e 3b 0d 0a 0d 0a 09 72 65 74 75 72 6e 28 72 74  n;.....return(rt
03e0: 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2f 20 83 74 83 40  );..}....// .t.@
03f0: 83 43 83 8b 96 bc 8e e6 93 be 0d 0a 63 68 61 72  .C..........char
0400: 20 2a 47 65 74 46 69 6c 65 4e 61 6d 65 28 63 68   *GetFileName(ch
0410: 61 72 20 2a 62 75 66 29 0d 0a 7b 0d 0a 09 69 6e  ar *buf)..{...in
0420: 74 20 6c 79 3b 0d 0a 09 0d 0a 09 2f 2f 20 8d c5  t ly;......// ..
0430: 8c e3 82 cc 81 8f 0d 0a 09 6c 79 20 3d 20 47 65  .........ly = Ge
0440: 74 63 58 28 62 75 66 2c 27 5c 5c 27 2c 46 41 4c  tcX(buf,'\\',FAL
0450: 53 45 29 3b 0d 0a 0d 0a 09 2f 2f 20 82 bb 82 cc  SE);.....// ....
0460: 82 dc 82 dc 95 d4 82 b7 0d 0a 09 69 66 20 28 6c  ...........if (l
0470: 79 20 3d 3d 20 6c 73 74 72 6c 65 6e 28 62 75 66  y == lstrlen(buf
0480: 29 29 0d 0a 09 09 72 65 74 75 72 6e 28 62 75 66  ))....return(buf
0490: 29 3b 0d 0a 09 0d 0a 09 2f 2f 20 5c 82 cc 8e 9f  );......// \....
04a0: 82 cc 83 7c 83 43 83 93 83 5e 82 f0 95 d4 82 b7  ...|.C...^......
04b0: 0d 0a 09 72 65 74 75 72 6e 28 26 62 75 66 5b 6c  ...return(&buf[l
04c0: 79 2b 31 5d 29 3b 0d 0a 7d 0d 0a 2f 2f 20 91 7d  y+1]);..}..// .}
04d0: 93 fc 82 b1 82 b1 82 dc 82 c5 63 61 6c 64 69 78  ..........caldix
04e0: 46 0d 0a 0d 0a 73 74 61 74 69 63 20 76 6f 69 64  F....static void
04f0: 20 6d 6f 76 65 5f 6c 61 74 65 72 28 20 63 6f 6e   move_later( con
0500: 73 74 20 63 68 61 72 2a 20 66 72 6f 6d 2c 20 63  st char* from, c
0510: 6f 6e 73 74 20 63 68 61 72 2a 20 74 6f 20 29 0d  onst char* to ).
0520: 0a 7b 0d 0a 09 2f 2f 20 88 da 93 ae 90 e6 82 c6  .{...// ........
0530: 93 af 82 b6 83 66 83 42 83 8c 83 4e 83 67 83 8a  .....f.B...N.g..
0540: 82 d6 93 ae 82 a9 82 b5 82 c4 82 a8 82 ad 0d 0a  ................
0550: 09 6b 69 50 61 74 68 20 74 6d 70 28 20 74 6f 20  .kiPath tmp( to 
0560: 29 3b 0d 0a 09 3a 3a 43 6f 70 79 46 69 6c 65 28  );...::CopyFile(
0570: 20 66 72 6f 6d 2c 20 74 6d 70 2b 3d 22 2e 74 6d   from, tmp+=".tm
0580: 70 22 2c 20 46 41 4c 53 45 20 29 3b 0d 0a 09 3a  p", FALSE );...:
0590: 3a 44 65 6c 65 74 65 46 69 6c 65 28 20 66 72 6f  :DeleteFile( fro
05a0: 6d 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 4e 54 8c 6e  m );.....// NT.n
05b0: 82 c8 82 e7 4d 6f 76 65 46 69 6c 65 45 78 82 aa  ....MoveFileEx..
05c0: 90 ac 8c f7 82 b7 82 e9 82 cd 82 b8 0d 0a 09 69  ...............i
05d0: 66 28 20 3a 3a 4d 6f 76 65 46 69 6c 65 45 78 28  f( ::MoveFileEx(
05e0: 20 74 6d 70 2c 20 74 6f 2c 20 4d 4f 56 45 46 49   tmp, to, MOVEFI
05f0: 4c 45 5f 52 45 50 4c 41 43 45 5f 45 58 49 53 54  LE_REPLACE_EXIST
0600: 49 4e 47 7c 4d 4f 56 45 46 49 4c 45 5f 44 45 4c  ING|MOVEFILE_DEL
0610: 41 59 5f 55 4e 54 49 4c 5f 52 45 42 4f 4f 54 20  AY_UNTIL_REBOOT 
0620: 29 20 29 0d 0a 09 09 72 65 74 75 72 6e 3b 0d 0a  ) )....return;..
0630: 0d 0a 09 2f 2f 20 39 78 8c 6e 82 c8 82 e7 57 49  ...// 9x.n....WI
0640: 4e 49 4e 49 54 2e 49 4e 49 82 f0 82 a2 82 b6 82  NINIT.INI.......
0650: e9 0d 0a 09 63 68 61 72 20 69 6e 69 66 69 6c 65  ....char inifile
0660: 5b 4d 41 58 5f 50 41 54 48 5d 3b 0d 0a 09 3a 3a  [MAX_PATH];...::
0670: 47 65 74 57 69 6e 64 6f 77 73 44 69 72 65 63 74  GetWindowsDirect
0680: 6f 72 79 28 20 69 6e 69 66 69 6c 65 2c 20 73 69  ory( inifile, si
0690: 7a 65 6f 66 28 69 6e 69 66 69 6c 65 29 20 29 3b  zeof(inifile) );
06a0: 0d 0a 09 3a 3a 6c 73 74 72 63 61 74 28 20 69 6e  ...::lstrcat( in
06b0: 69 66 69 6c 65 2c 20 22 5c 5c 57 49 4e 49 4e 49  ifile, "\\WININI
06c0: 54 2e 49 4e 49 22 20 29 3b 0d 0a 0d 0a 09 2f 2f  T.INI" );.....//
06d0: 20 83 56 83 87 81 5b 83 67 96 bc 91 4f 82 c9 95   .V...[.g...O...
06e0: cf 8a b7 0d 0a 09 63 68 61 72 20 73 66 72 6f 6d  ......char sfrom
06f0: 5b 4d 41 58 5f 50 41 54 48 5d 2c 20 73 74 6f 5b  [MAX_PATH], sto[
0700: 4d 41 58 5f 50 41 54 48 5d 3b 0d 0a 09 3a 3a 47  MAX_PATH];...::G
0710: 65 74 53 68 6f 72 74 50 61 74 68 4e 61 6d 65 28  etShortPathName(
0720: 20 20 74 6d 70 2c 20 73 66 72 6f 6d 2c 20 4d 41    tmp, sfrom, MA
0730: 58 5f 50 41 54 48 20 29 3b 0d 0a 09 3a 3a 47 65  X_PATH );...::Ge
0740: 74 53 68 6f 72 74 50 61 74 68 4e 61 6d 65 28 20  tShortPathName( 
0750: 20 20 74 6f 2c 20 20 20 73 74 6f 2c 20 4d 41 58    to,   sto, MAX
0760: 5f 50 41 54 48 20 29 3b 0d 0a 0d 0a 09 2f 2f 20  _PATH );.....// 
0770: 52 65 6e 61 6d 65 83 5a 83 4e 83 56 83 87 83 93  Rename.Z.N.V....
0780: 82 c9 92 c7 89 c1 0d 0a 09 73 74 61 74 69 63 20  .........static 
0790: 63 68 61 72 20 62 75 66 5b 33 30 30 30 30 5d 3b  char buf[30000];
07a0: 0d 0a 09 3a 3a 47 65 74 50 72 69 76 61 74 65 50  ...::GetPrivateP
07b0: 72 6f 66 69 6c 65 53 65 63 74 69 6f 6e 28 20 22  rofileSection( "
07c0: 52 65 6e 61 6d 65 22 2c 20 62 75 66 2c 20 33 30  Rename", buf, 30
07d0: 30 30 30 2c 20 69 6e 69 66 69 6c 65 20 29 3b 20  000, inifile ); 
07e0: 0d 0a 09 63 68 61 72 2a 20 70 20 3d 20 62 75 66  ...char* p = buf
07f0: 3b 20 0d 0a 09 77 68 69 6c 65 28 2a 70 29 77 68  ; ...while(*p)wh
0800: 69 6c 65 28 2a 70 2b 2b 29 3b 0d 0a 09 3a 3a 6c  ile(*p++);...::l
0810: 73 74 72 63 70 79 28 20 70 2c 20 22 4e 55 4c 3d  strcpy( p, "NUL=
0820: 22 20 29 3b 0d 0a 09 3a 3a 6c 73 74 72 63 61 74  " );...::lstrcat
0830: 28 20 70 2c 20 73 74 6f 20 29 3b 0d 0a 09 3a 3a  ( p, sto );...::
0840: 6c 73 74 72 63 61 74 28 20 70 2c 20 22 5c 72 5c  lstrcat( p, "\r\
0850: 6e 22 20 29 3b 0d 0a 09 3a 3a 6c 73 74 72 63 61  n" );...::lstrca
0860: 74 28 20 70 2c 20 73 74 6f 20 29 3b 0d 0a 09 3a  t( p, sto );...:
0870: 3a 6c 73 74 72 63 61 74 28 20 70 2c 20 22 3d 22  :lstrcat( p, "="
0880: 20 29 3b 0d 0a 09 3a 3a 6c 73 74 72 63 61 74 28   );...::lstrcat(
0890: 20 70 2c 20 73 66 72 6f 6d 20 29 3b 0d 0a 09 77   p, sfrom );...w
08a0: 68 69 6c 65 28 2a 70 2b 2b 29 3b 0d 0a 09 2a 70  hile(*p++);...*p
08b0: 3d 27 5c 30 27 3b 20 0d 0a 0d 0a 09 2f 2f 20 82  ='\0'; .....// .
08c0: 51 94 ad 91 c5 82 c1 82 c4 8a 6d 8e c0 82 c9 8f  Q.........m.....
08d0: 91 82 ab 8d 9e 82 de 0d 0a 09 3a 3a 57 72 69 74  ..........::Writ
08e0: 65 50 72 69 76 61 74 65 50 72 6f 66 69 6c 65 53  ePrivateProfileS
08f0: 65 63 74 69 6f 6e 28 20 22 52 65 6e 61 6d 65 22  ection( "Rename"
0900: 2c 20 62 75 66 2c 20 69 6e 69 66 69 6c 65 20 29  , buf, inifile )
0910: 3b 0d 0a 09 3a 3a 57 72 69 74 65 50 72 69 76 61  ;...::WritePriva
0920: 74 65 50 72 6f 66 69 6c 65 53 74 72 69 6e 67 28  teProfileString(
0930: 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 4e 55 4c   NULL, NULL, NUL
0940: 4c 2c 20 69 6e 69 66 69 6c 65 20 29 3b 0d 0a 7d  L, inifile );..}
0950: 0d 0a 0d 0a 73 74 61 74 69 63 20 76 6f 69 64 20  ....static void 
0960: 72 65 62 6f 6f 74 57 69 6e 64 6f 77 73 28 29 0d  rebootWindows().
0970: 0a 7b 0d 0a 09 69 66 28 20 61 70 70 28 29 2d 3e  .{...if( app()->
0980: 6f 73 76 65 72 28 29 2e 64 77 50 6c 61 74 66 6f  osver().dwPlatfo
0990: 72 6d 49 64 20 3d 3d 20 56 45 52 5f 50 4c 41 54  rmId == VER_PLAT
09a0: 46 4f 52 4d 5f 57 49 4e 33 32 5f 4e 54 20 29 0d  FORM_WIN32_NT ).
09b0: 0a 09 7b 0d 0a 09 09 2f 2f 20 4e 54 8c 6e 82 c5  ..{....// NT.n..
09c0: 82 cd 93 c1 8c a0 82 f0 8e e6 93 be 82 b5 82 c8  ................
09d0: 82 ad 82 c4 82 cd 82 a2 82 af 82 c8 82 a2 0d 0a  ................
09e0: 09 09 48 41 4e 44 4c 45 20 68 54 6f 6b 65 6e 3b  ..HANDLE hToken;
09f0: 0d 0a 09 09 54 4f 4b 45 4e 5f 50 52 49 56 49 4c  ....TOKEN_PRIVIL
0a00: 45 47 45 53 20 74 6b 70 3b 0d 0a 09 09 3a 3a 4f  EGES tkp;....::O
0a10: 70 65 6e 50 72 6f 63 65 73 73 54 6f 6b 65 6e 28  penProcessToken(
0a20: 20 3a 3a 47 65 74 43 75 72 72 65 6e 74 50 72 6f   ::GetCurrentPro
0a30: 63 65 73 73 28 29 2c 0d 0a 09 09 09 54 4f 4b 45  cess(),.....TOKE
0a40: 4e 5f 41 44 4a 55 53 54 5f 50 52 49 56 49 4c 45  N_ADJUST_PRIVILE
0a50: 47 45 53 7c 54 4f 4b 45 4e 5f 51 55 45 52 59 2c  GES|TOKEN_QUERY,
0a60: 20 26 68 54 6f 6b 65 6e 20 29 3b 0d 0a 09 09 3a   &hToken );....:
0a70: 3a 4c 6f 6f 6b 75 70 50 72 69 76 69 6c 65 67 65  :LookupPrivilege
0a80: 56 61 6c 75 65 28 0d 0a 09 09 09 4e 55 4c 4c 2c  Value(.....NULL,
0a90: 20 53 45 5f 53 48 55 54 44 4f 57 4e 5f 4e 41 4d   SE_SHUTDOWN_NAM
0aa0: 45 2c 20 26 74 6b 70 2e 50 72 69 76 69 6c 65 67  E, &tkp.Privileg
0ab0: 65 73 5b 30 5d 2e 4c 75 69 64 20 29 3b 0d 0a 09  es[0].Luid );...
0ac0: 09 74 6b 70 2e 50 72 69 76 69 6c 65 67 65 43 6f  .tkp.PrivilegeCo
0ad0: 75 6e 74 20 3d 20 31 3b 0d 0a 09 09 74 6b 70 2e  unt = 1;....tkp.
0ae0: 50 72 69 76 69 6c 65 67 65 73 5b 30 5d 2e 41 74  Privileges[0].At
0af0: 74 72 69 62 75 74 65 73 20 3d 20 53 45 5f 50 52  tributes = SE_PR
0b00: 49 56 49 4c 45 47 45 5f 45 4e 41 42 4c 45 44 3b  IVILEGE_ENABLED;
0b10: 0d 0a 09 09 3a 3a 41 64 6a 75 73 74 54 6f 6b 65  ....::AdjustToke
0b20: 6e 50 72 69 76 69 6c 65 67 65 73 28 20 68 54 6f  nPrivileges( hTo
0b30: 6b 65 6e 2c 20 46 41 4c 53 45 2c 20 26 74 6b 70  ken, FALSE, &tkp
0b40: 2c 20 30 2c 20 4e 55 4c 4c 2c 20 30 20 29 3b 0d  , 0, NULL, 0 );.
0b50: 0a 09 7d 0d 0a 09 3a 3a 45 78 69 74 57 69 6e 64  ..}...::ExitWind
0b60: 6f 77 73 45 78 28 20 45 57 58 5f 52 45 42 4f 4f  owsEx( EWX_REBOO
0b70: 54 2c 20 30 20 29 3b 0d 0a 7d 0d 0a 0d 0a 73 74  T, 0 );..}....st
0b80: 61 74 69 63 20 62 6f 6f 6c 20 63 61 6e 63 65 6c  atic bool cancel
0b90: 53 68 69 74 65 49 69 64 65 73 75 6b 61 28 29 0d  ShiteIidesuka().
0ba0: 0a 7b 0d 0a 09 72 65 74 75 72 6e 20 49 44 59 45  .{...return IDYE
0bb0: 53 20 3d 3d 20 61 70 70 28 29 2d 3e 6d 73 67 42  S == app()->msgB
0bc0: 6f 78 28 20 6b 69 53 74 72 28 29 2e 6c 6f 61 64  ox( kiStr().load
0bd0: 52 73 72 63 28 20 49 44 53 5f 43 41 4e 43 45 4c  Rsrc( IDS_CANCEL
0be0: 4f 4b 20 29 2c 0d 0a 09 09 22 63 61 6c 64 69 78  OK ),...."caldix
0bf0: 22 2c 20 4d 42 5f 49 43 4f 4e 51 55 45 53 54 49  ", MB_ICONQUESTI
0c00: 4f 4e 7c 4d 42 5f 59 45 53 4e 4f 7c 4d 42 5f 44  ON|MB_YESNO|MB_D
0c10: 45 46 42 55 54 54 4f 4e 32 20 29 3b 0d 0a 7d 0d  EFBUTTON2 );..}.
0c20: 0a 0d 0a 74 65 6d 70 6c 61 74 65 20 3c 63 6c 61  ...template <cla
0c30: 73 73 20 54 3e 20 73 74 61 74 69 63 20 69 6e 6c  ss T> static inl
0c40: 69 6e 65 20 62 6f 6f 6c 20 73 68 6f 77 28 20 63  ine bool show( c
0c50: 6f 6e 73 74 20 54 26 20 64 6c 67 20 29 0d 0a 7b  onst T& dlg )..{
0c60: 0d 0a 09 28 63 6f 6e 73 74 5f 63 61 73 74 3c 54  ...(const_cast<T
0c70: 26 3e 28 64 6c 67 29 29 2e 64 6f 4d 6f 64 61 6c  &>(dlg)).doModal
0c80: 28 29 3b 0d 0a 09 72 65 74 75 72 6e 20 49 44 4f  ();...return IDO
0c90: 4b 20 3d 3d 20 28 63 6f 6e 73 74 5f 63 61 73 74  K == (const_cast
0ca0: 3c 54 26 3e 28 64 6c 67 29 29 2e 67 65 74 45 6e  <T&>(dlg)).getEn
0cb0: 64 43 6f 64 65 28 29 3b 0d 0a 7d 0d 0a 0d 0a 0d  dCode();..}.....
0cc0: 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ...//-----------
0cd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ce0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0cf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0d00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0d10: 2d 0d 0a 2f 2f 20 89 f0 93 80 8a d6 8c 57 0d 0a  -..// .......W..
0d20: 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  //--------------
0d30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0d40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0d50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0d60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
0d70: 0d 0a 23 69 6e 63 6c 75 64 65 20 22 6b 69 75 74  ..#include "kiut
0d80: 69 6c 2e 68 22 0d 0a 23 69 6e 63 6c 75 64 65 20  il.h"..#include 
0d90: 22 4c 7a 68 54 6f 6f 6c 2e 68 22 0d 0a 23 69 6e  "LzhTool.h"..#in
0da0: 63 6c 75 64 65 20 22 43 61 62 54 6f 6f 6c 2e 68  clude "CabTool.h
0db0: 22 0d 0a 23 69 6e 63 6c 75 64 65 20 22 5a 69 70  "..#include "Zip
0dc0: 54 6f 6f 6c 2e 68 22 0d 0a 23 64 65 66 69 6e 65  Tool.h"..#define
0dd0: 20 69 73 5f 6c 7a 68 28 78 78 29 20 28 78 78 5b   is_lzh(xx) (xx[
0de0: 32 5d 3d 3d 27 2d 27 20 26 26 20 78 78 5b 33 5d  2]=='-' && xx[3]
0df0: 3d 3d 27 6c 27 20 26 26 20 78 78 5b 34 5d 3d 3d  =='l' && xx[4]==
0e00: 27 68 27 20 26 26 20 78 78 5b 36 5d 3d 3d 27 2d  'h' && xx[6]=='-
0e10: 27 20 26 26 20 27 30 27 3c 3d 78 78 5b 35 5d 20  ' && '0'<=xx[5] 
0e20: 26 26 20 78 78 5b 35 5d 3c 3d 27 39 27 29 0d 0a  && xx[5]<='9')..
0e30: 23 64 65 66 69 6e 65 20 69 73 5f 7a 69 70 28 78  #define is_zip(x
0e40: 78 29 20 28 78 78 5b 32 5d 3d 3d 27 50 27 20 26  x) (xx[2]=='P' &
0e50: 26 20 78 78 5b 33 5d 3d 3d 27 4b 27 20 26 26 20  & xx[3]=='K' && 
0e60: 78 78 5b 34 5d 3d 3d 30 78 33 20 26 26 20 78 78  xx[4]==0x3 && xx
0e70: 5b 36 5d 3d 3d 30 78 34 29 0d 0a 23 64 65 66 69  [6]==0x4)..#defi
0e80: 6e 65 20 69 73 5f 63 61 62 28 78 78 29 20 28 78  ne is_cab(xx) (x
0e90: 78 5b 30 5d 3d 3d 27 4d 27 20 26 26 20 78 78 5b  x[0]=='M' && xx[
0ea0: 31 5d 3d 3d 27 53 27 20 26 26 20 78 78 5b 32 5d  1]=='S' && xx[2]
0eb0: 3d 3d 27 43 27 20 26 26 20 78 78 5b 33 5d 3d 3d  =='C' && xx[3]==
0ec0: 27 46 27 29 0d 0a 0d 0a 65 6e 75 6d 20 61 72 63  'F')....enum arc
0ed0: 74 79 70 65 7b 20 65 5f 6c 7a 68 2c 20 65 5f 7a  type{ e_lzh, e_z
0ee0: 69 70 2c 20 65 5f 63 61 62 2c 20 75 6e 6b 6e 6f  ip, e_cab, unkno
0ef0: 77 6e 20 7d 3b 0d 0a 0d 0a 73 74 61 74 69 63 20  wn };....static 
0f00: 61 72 63 74 79 70 65 20 67 65 74 5f 61 72 63 68  arctype get_arch
0f10: 69 76 65 5f 74 79 70 65 28 20 63 6f 6e 73 74 20  ive_type( const 
0f20: 63 68 61 72 2a 20 61 72 63 6e 61 6d 65 20 29 0d  char* arcname ).
0f30: 0a 7b 0d 0a 09 2f 2f 20 8e e8 94 b2 82 ab 94 bb  .{...// ........
0f40: 95 ca 0d 0a 09 61 72 63 74 79 70 65 20 61 6e 73  .....arctype ans
0f50: 20 3d 20 75 6e 6b 6e 6f 77 6e 3b 0d 0a 09 6b 69   = unknown;...ki
0f60: 46 69 6c 65 20 66 70 3b 0d 0a 09 69 66 28 20 66  File fp;...if( f
0f70: 70 2e 6f 70 65 6e 28 61 72 63 6e 61 6d 65 29 20  p.open(arcname) 
0f80: 29 0d 0a 09 7b 0d 0a 09 09 75 6e 73 69 67 6e 65  )...{....unsigne
0f90: 64 20 6c 6f 6e 67 20 61 73 69 7a 65 20 3d 20 31  d long asize = 1
0fa0: 32 38 20 3c 3c 20 31 30 3b 0d 0a 09 09 75 6e 73  28 << 10;....uns
0fb0: 69 67 6e 65 64 20 63 68 61 72 20 2a 62 75 66 20  igned char *buf 
0fc0: 3d 20 6e 65 77 20 75 6e 73 69 67 6e 65 64 20 63  = new unsigned c
0fd0: 68 61 72 5b 61 73 69 7a 65 5d 3b 0d 0a 09 09 75  har[asize];....u
0fe0: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 2a 70 3d  nsigned char *p=
0ff0: 62 75 66 2c 20 2a 65 6e 64 3d 62 75 66 2b 66 70  buf, *end=buf+fp
1000: 2e 72 65 61 64 28 20 62 75 66 2c 20 61 73 69 7a  .read( buf, asiz
1010: 65 2d 36 20 29 3b 0d 0a 0d 0a 09 09 77 68 69 6c  e-6 );......whil
1020: 65 28 20 70 21 3d 65 6e 64 20 29 0d 0a 09 09 7b  e( p!=end )....{
1030: 0d 0a 09 09 09 09 20 69 66 28 20 69 73 5f 6c 7a  ...... if( is_lz
1040: 68 28 70 29 20 29 20 7b 20 61 6e 73 3d 65 5f 6c  h(p) ) { ans=e_l
1050: 7a 68 3b 20 62 72 65 61 6b 3b 20 7d 0d 0a 09 09  zh; break; }....
1060: 09 65 6c 73 65 20 69 66 28 20 69 73 5f 7a 69 70  .else if( is_zip
1070: 28 70 29 20 29 20 7b 20 61 6e 73 3d 65 5f 7a 69  (p) ) { ans=e_zi
1080: 70 3b 20 62 72 65 61 6b 3b 20 7d 0d 0a 09 09 09  p; break; }.....
1090: 65 6c 73 65 20 69 66 28 20 69 73 5f 63 61 62 28  else if( is_cab(
10a0: 70 29 20 29 20 7b 20 61 6e 73 3d 65 5f 63 61 62  p) ) { ans=e_cab
10b0: 3b 20 62 72 65 61 6b 3b 20 7d 0d 0a 09 09 09 70  ; break; }.....p
10c0: 2b 2b 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 64 65  ++;....}......de
10d0: 6c 65 74 65 20 5b 5d 20 62 75 66 3b 0d 0a 09 7d  lete [] buf;...}
10e0: 0d 0a 09 72 65 74 75 72 6e 20 61 6e 73 3b 0d 0a  ...return ans;..
10f0: 7d 0d 0a 0d 0a 73 74 61 74 69 63 20 76 6f 69 64  }....static void
1100: 20 6d 65 6c 74 5f 69 74 28 20 63 6f 6e 73 74 20   melt_it( const 
1110: 63 68 61 72 2a 20 61 72 63 6e 61 6d 65 2c 20 63  char* arcname, c
1120: 6f 6e 73 74 20 63 68 61 72 2a 20 64 6c 6c 6e 61  onst char* dllna
1130: 6d 65 2c 20 6b 69 50 61 74 68 26 20 64 6c 6c 5f  me, kiPath& dll_
1140: 72 65 6c 5f 70 61 74 68 20 29 0d 0a 7b 0d 0a 09  rel_path )..{...
1150: 63 6f 6e 73 74 20 63 68 61 72 2a 20 65 78 74 20  const char* ext 
1160: 3d 20 6b 69 50 61 74 68 3a 3a 65 78 74 28 20 61  = kiPath::ext( a
1170: 72 63 6e 61 6d 65 20 29 3b 0d 0a 09 61 72 63 74  rcname );...arct
1180: 79 70 65 20 74 79 70 65 20 3d 20 75 6e 6b 6e 6f  ype type = unkno
1190: 77 6e 3b 0d 0a 0d 0a 09 2f 2f 20 94 bb 95 ca 0d  wn;.....// .....
11a0: 0a 09 09 20 69 66 28 20 30 3d 3d 73 74 72 69 63  ... if( 0==stric
11b0: 6d 70 28 20 65 78 74 2c 20 22 6c 7a 68 22 20 29  mp( ext, "lzh" )
11c0: 20 29 20 74 79 70 65 20 3d 20 65 5f 6c 7a 68 3b   ) type = e_lzh;
11d0: 0d 0a 09 65 6c 73 65 20 69 66 28 20 30 3d 3d 73  ...else if( 0==s
11e0: 74 72 69 63 6d 70 28 20 65 78 74 2c 20 22 7a 69  tricmp( ext, "zi
11f0: 70 22 20 29 20 29 20 74 79 70 65 20 3d 20 65 5f  p" ) ) type = e_
1200: 7a 69 70 3b 0d 0a 09 65 6c 73 65 20 69 66 28 20  zip;...else if( 
1210: 30 3d 3d 73 74 72 69 63 6d 70 28 20 65 78 74 2c  0==stricmp( ext,
1220: 20 22 63 61 62 22 20 29 20 29 20 74 79 70 65 20   "cab" ) ) type 
1230: 3d 20 65 5f 63 61 62 3b 0d 0a 09 65 6c 73 65 20  = e_cab;...else 
1240: 74 79 70 65 20 3d 20 67 65 74 5f 61 72 63 68 69  type = get_archi
1250: 76 65 5f 74 79 70 65 28 61 72 63 6e 61 6d 65 29  ve_type(arcname)
1260: 3b 0d 0a 0d 0a 09 2f 2f 20 93 57 8a 4a 0d 0a 09  ;.....// .W.J...
1270: 73 77 69 74 63 68 28 20 74 79 70 65 20 29 0d 0a  switch( type )..
1280: 09 7b 0d 0a 09 63 61 73 65 20 65 5f 6c 7a 68 3a  .{...case e_lzh:
1290: 7b 20 43 4c 7a 68 54 6f 6f 6c 28 29 2e 45 78 74  { CLzhTool().Ext
12a0: 72 61 63 74 28 20 61 72 63 6e 61 6d 65 2c 20 64  ract( arcname, d
12b0: 6c 6c 6e 61 6d 65 2c 20 64 6c 6c 5f 72 65 6c 5f  llname, dll_rel_
12c0: 70 61 74 68 20 29 3b 20 7d 62 72 65 61 6b 3b 0d  path ); }break;.
12d0: 0a 09 63 61 73 65 20 65 5f 7a 69 70 3a 7b 20 43  ..case e_zip:{ C
12e0: 5a 69 70 54 6f 6f 6c 28 29 2e 45 78 74 72 61 63  ZipTool().Extrac
12f0: 74 28 20 61 72 63 6e 61 6d 65 2c 20 64 6c 6c 6e  t( arcname, dlln
1300: 61 6d 65 2c 20 64 6c 6c 5f 72 65 6c 5f 70 61 74  ame, dll_rel_pat
1310: 68 20 29 3b 20 7d 62 72 65 61 6b 3b 0d 0a 09 63  h ); }break;...c
1320: 61 73 65 20 65 5f 63 61 62 3a 7b 20 43 43 61 62  ase e_cab:{ CCab
1330: 54 6f 6f 6c 28 29 2e 45 78 74 72 61 63 74 28 20  Tool().Extract( 
1340: 61 72 63 6e 61 6d 65 2c 20 64 6c 6c 6e 61 6d 65  arcname, dllname
1350: 2c 20 64 6c 6c 5f 72 65 6c 5f 70 61 74 68 20 29  , dll_rel_path )
1360: 3b 20 7d 62 72 65 61 6b 3b 0d 0a 09 7d 0d 0a 7d  ; }break;...}..}
1370: 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d  ........//------
1380: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1390: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
13a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
13b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
13c0: 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 44 4c 4c 8f ee  ------..// DLL..
13d0: 95 f1 8a c7 97 9d 81 46 4d 65 74 61 2d 57 57 57  .......FMeta-WWW
13e0: 43 2d 43 6f 6e 74 65 6e 74 82 cc 89 f0 90 cd 82  C-Content.......
13f0: c8 82 c7 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d  .....//---------
1400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1440: 2d 2d 2d 0d 0a 0d 0a 63 6c 61 73 73 20 44 4c 4c  ---....class DLL
1450: 49 6e 66 6f 0d 0a 7b 0d 0a 70 75 62 6c 69 63 3a  Info..{..public:
1460: 0d 0a 0d 0a 09 44 4c 4c 49 6e 66 6f 28 20 63 6f  .....DLLInfo( co
1470: 6e 73 74 20 63 68 61 72 2a 20 5f 6e 61 6d 65 2c  nst char* _name,
1480: 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 5f 68 74   const char* _ht
1490: 6d 6c 2c 20 69 6e 74 20 5f 77 77 77 63 20 29 0d  ml, int _wwwc ).
14a0: 0a 09 09 3a 20 6e 61 6d 65 28 20 5f 6e 61 6d 65  ...: name( _name
14b0: 20 29 2c 20 68 74 6d 6c 28 20 5f 68 74 6d 6c 20   ), html( _html 
14c0: 29 2c 20 77 77 77 63 28 20 5f 77 77 77 63 20 29  ), wwwc( _wwwc )
14d0: 2c 20 73 69 7a 65 28 20 30 20 29 20 7b 7d 0d 0a  , size( 0 ) {}..
14e0: 0d 0a 09 62 6f 6f 6c 20 20 50 61 72 73 65 48 54  ...bool  ParseHT
14f0: 4d 4c 28 20 63 68 61 72 2a 20 73 74 72 20 29 3b  ML( char* str );
1500: 0d 0a 09 63 6f 6e 73 74 20 6b 69 53 74 72 26 20  ...const kiStr& 
1510: 68 74 6d 6c 4e 61 6d 65 28 29 20 63 6f 6e 73 74  htmlName() const
1520: 20 7b 20 72 65 74 75 72 6e 20 68 74 6d 6c 3b 20   { return html; 
1530: 7d 0d 0a 09 62 6f 6f 6c 20 20 6e 65 65 64 54 6f  }...bool  needTo
1540: 55 70 64 61 74 65 28 20 6b 69 50 61 74 68 26 20  Update( kiPath& 
1550: 64 6c 6c 64 69 72 20 29 3b 0d 0a 09 63 6f 6e 73  dlldir );...cons
1560: 74 20 6b 69 53 74 72 26 20 67 65 74 4e 61 6d 65  t kiStr& getName
1570: 28 29 20 63 6f 6e 73 74 20 7b 20 72 65 74 75 72  () const { retur
1580: 6e 20 6e 61 6d 65 3b 20 7d 0d 0a 09 63 6f 6e 73  n name; }...cons
1590: 74 20 6b 69 53 74 72 26 20 67 65 74 53 74 61 74  t kiStr& getStat
15a0: 65 28 29 20 63 6f 6e 73 74 20 7b 20 72 65 74 75  e() const { retu
15b0: 72 6e 20 73 74 61 74 3b 20 7d 0d 0a 09 63 6f 6e  rn stat; }...con
15c0: 73 74 20 69 6e 74 20 67 65 74 53 69 7a 65 28 29  st int getSize()
15d0: 20 63 6f 6e 73 74 20 7b 20 72 65 74 75 72 6e 20   const { return 
15e0: 73 69 7a 65 3b 20 7d 0d 0a 09 63 6f 6e 73 74 20  size; }...const 
15f0: 6b 69 53 74 72 26 20 67 65 74 41 72 63 68 69 76  kiStr& getArchiv
1600: 65 4e 61 6d 65 28 29 20 63 6f 6e 73 74 20 7b 20  eName() const { 
1610: 72 65 74 75 72 6e 20 61 72 63 68 3b 20 7d 0d 0a  return arch; }..
1620: 0d 0a 70 72 69 76 61 74 65 3a 0d 0a 0d 0a 09 63  ..private:.....c
1630: 68 61 72 2a 20 47 65 74 5f 57 57 57 43 5f 43 6f  har* Get_WWWC_Co
1640: 6e 74 65 6e 74 28 20 63 68 61 72 2a 20 73 74 72  ntent( char* str
1650: 20 29 3b 0d 0a 09 62 6f 6f 6c 20 20 50 61 72 73   );...bool  Pars
1660: 65 57 57 57 43 28 20 63 68 61 72 2a 20 73 74 72  eWWWC( char* str
1670: 20 29 3b 0d 0a 09 62 6f 6f 6c 20 20 43 68 65 63   );...bool  Chec
1680: 6b 44 61 74 65 54 69 6d 65 28 20 63 6f 6e 73 74  kDateTime( const
1690: 20 63 68 61 72 2a 20 6c 6f 63 61 6c 44 4c 4c 20   char* localDLL 
16a0: 29 3b 0d 0a 09 62 6f 6f 6c 20 20 56 65 72 73 69  );...bool  Versi
16b0: 6f 6e 43 68 65 63 6b 4c 6f 67 69 63 28 0d 0a 09  onCheckLogic(...
16c0: 09 63 6f 6e 73 74 20 6b 69 53 74 72 26 20 64 6c  .const kiStr& dl
16d0: 6c 4e 61 6d 65 2c 20 63 6f 6e 73 74 20 6b 69 53  lName, const kiS
16e0: 74 72 26 20 68 74 6d 6c 56 65 72 2c 20 69 6e 74  tr& htmlVer, int
16f0: 20 56 65 72 2c 20 69 6e 74 20 73 75 62 56 65 72   Ver, int subVer
1700: 20 29 3b 0d 0a 0d 0a 70 72 69 76 61 74 65 3a 0d   );....private:.
1710: 0a 0d 0a 09 2f 2f 20 8c c5 92 e8 8f ee 95 f1 0d  ....// .........
1720: 0a 09 63 6f 6e 73 74 20 6b 69 53 74 72 20 6e 61  ..const kiStr na
1730: 6d 65 3b 20 2f 2f 20 44 4c 4c 82 cc 96 bc 91 4f  me; // DLL.....O
1740: 0d 0a 09 63 6f 6e 73 74 20 6b 69 53 74 72 20 68  ...const kiStr h
1750: 74 6d 6c 3b 20 2f 2f 20 83 60 83 46 83 62 83 4e  tml; // .`.F.b.N
1760: 90 e6 48 54 4d 4c 82 cc 96 bc 91 4f 0d 0a 09 63  ..HTML.....O...c
1770: 6f 6e 73 74 20 69 6e 74 20 20 20 77 77 77 63 3b  onst int   wwwc;
1780: 20 2f 2f 20 89 bd 94 d4 96 da 82 cc 57 57 57 43   // ........WWWC
1790: 83 5e 83 4f 82 f0 97 98 97 70 82 b7 82 e9 82 a9  .^.O.....p......
17a0: 0d 0a 0d 0a 70 72 69 76 61 74 65 3a 0d 0a 0d 0a  ....private:....
17b0: 09 2f 2f 20 48 54 4d 4c 82 a9 82 e7 8e e6 93 be  .// HTML........
17c0: 82 b7 82 e9 8f ee 95 f1 0d 0a 09 6b 69 53 74 72  ...........kiStr
17d0: 20 20 20 20 20 20 20 61 72 63 68 3b 20 2f 2f 20         arch; // 
17e0: 8f 91 8c c9 96 bc 0d 0a 09 6b 69 53 74 72 20 20  .........kiStr  
17f0: 20 20 20 20 20 76 65 72 73 3b 20 2f 2f 20 83 6f       vers; // .o
1800: 81 5b 83 57 83 87 83 93 0d 0a 09 6b 69 53 74 72  .[.W.......kiStr
1810: 20 20 20 20 20 20 20 64 74 74 6d 3b 20 2f 2f 20         dttm; // 
1820: 93 fa 95 74 26 8e 9e 8d 8f 0d 0a 09 69 6e 74 20  ...t&.......int 
1830: 20 20 20 20 20 20 20 20 73 69 7a 65 3b 20 2f 2f          size; //
1840: 20 83 54 83 43 83 59 0d 0a 0d 0a 09 2f 2f 20 83   .T.C.Y.....// .
1850: 6f 81 5b 83 57 83 87 83 93 8f c6 8d 87 82 cc 8c  o.[.W...........
1860: 8b 89 ca 0d 0a 09 6b 69 53 74 72 20 20 20 20 20  ......kiStr     
1870: 20 20 73 74 61 74 3b 20 2f 2f 20 8d 58 90 56 8f    stat; // .X.V.
1880: f3 8b b5 0d 0a 7d 3b 0d 0a 0d 0a 63 68 61 72 2a  .....};....char*
1890: 20 44 4c 4c 49 6e 66 6f 3a 3a 47 65 74 5f 57 57   DLLInfo::Get_WW
18a0: 57 43 5f 43 6f 6e 74 65 6e 74 28 20 63 68 61 72  WC_Content( char
18b0: 2a 20 78 20 29 0d 0a 7b 0d 0a 09 2f 2f 20 82 e0  * x )..{...// ..
18c0: 81 5b 82 ea 82 c2 82 c9 8e 47 81 42 0d 0a 09 77  .[.......G.B...w
18d0: 68 69 6c 65 28 20 2a 78 3d 3d 27 20 27 20 7c 7c  hile( *x==' ' ||
18e0: 20 2a 78 3d 3d 27 5c 74 27 20 7c 7c 20 2a 78 3d   *x=='\t' || *x=
18f0: 3d 27 5c 72 27 20 7c 7c 20 2a 78 3d 3d 27 5c 6e  ='\r' || *x=='\n
1900: 27 20 29 20 78 2b 2b 3b 0d 0a 09 69 66 28 20 28  ' ) x++;...if( (
1910: 78 5b 30 5d 3d 3d 27 6d 27 20 7c 7c 20 78 5b 30  x[0]=='m' || x[0
1920: 5d 3d 3d 27 4d 27 29 0d 0a 09 20 26 26 20 28 78  ]=='M')... && (x
1930: 5b 31 5d 3d 3d 27 65 27 20 7c 7c 20 78 5b 31 5d  [1]=='e' || x[1]
1940: 3d 3d 27 45 27 29 0d 0a 09 20 26 26 20 28 78 5b  =='E')... && (x[
1950: 32 5d 3d 3d 27 74 27 20 7c 7c 20 78 5b 32 5d 3d  2]=='t' || x[2]=
1960: 3d 27 54 27 29 0d 0a 09 20 26 26 20 28 78 5b 33  ='T')... && (x[3
1970: 5d 3d 3d 27 61 27 20 7c 7c 20 78 5b 33 5d 3d 3d  ]=='a' || x[3]==
1980: 27 41 27 29 20 29 0d 0a 09 7b 0d 0a 09 09 78 2b  'A') )...{....x+
1990: 3d 34 3b 0d 0a 09 09 77 68 69 6c 65 28 20 2a 78  =4;....while( *x
19a0: 3d 3d 27 20 27 20 7c 7c 20 2a 78 3d 3d 27 5c 74  ==' ' || *x=='\t
19b0: 27 20 7c 7c 20 2a 78 3d 3d 27 5c 72 27 20 7c 7c  ' || *x=='\r' ||
19c0: 20 2a 78 3d 3d 27 5c 6e 27 20 29 20 78 2b 2b 3b   *x=='\n' ) x++;
19d0: 0d 0a 09 09 69 66 28 20 28 78 5b 30 5d 3d 3d 27  ....if( (x[0]=='
19e0: 6e 27 20 7c 7c 20 78 5b 30 5d 3d 3d 27 4e 27 29  n' || x[0]=='N')
19f0: 0d 0a 09 09 20 26 26 20 28 78 5b 31 5d 3d 3d 27  .... && (x[1]=='
1a00: 61 27 20 7c 7c 20 78 5b 31 5d 3d 3d 27 41 27 29  a' || x[1]=='A')
1a10: 0d 0a 09 09 20 26 26 20 28 78 5b 32 5d 3d 3d 27  .... && (x[2]=='
1a20: 6d 27 20 7c 7c 20 78 5b 32 5d 3d 3d 27 4d 27 29  m' || x[2]=='M')
1a30: 0d 0a 09 09 20 26 26 20 28 78 5b 33 5d 3d 3d 27  .... && (x[3]=='
1a40: 65 27 20 7c 7c 20 78 5b 33 5d 3d 3d 27 45 27 29  e' || x[3]=='E')
1a50: 0d 0a 09 09 20 26 26 20 20 20 20 20 20 20 28 78  .... &&       (x
1a60: 5b 34 5d 3d 3d 27 3d 27 29 0d 0a 09 09 20 26 26  [4]=='=').... &&
1a70: 20 20 20 20 20 20 20 28 78 5b 35 5d 3d 3d 27 22         (x[5]=='"
1a80: 27 29 0d 0a 09 09 20 26 26 20 28 78 5b 36 5d 3d  ').... && (x[6]=
1a90: 3d 27 77 27 20 7c 7c 20 78 5b 36 5d 3d 3d 27 57  ='w' || x[6]=='W
1aa0: 27 29 0d 0a 09 09 20 26 26 20 28 78 5b 37 5d 3d  ').... && (x[7]=
1ab0: 3d 27 77 27 20 7c 7c 20 78 5b 37 5d 3d 3d 27 57  ='w' || x[7]=='W
1ac0: 27 29 0d 0a 09 09 20 26 26 20 28 78 5b 38 5d 3d  ').... && (x[8]=
1ad0: 3d 27 77 27 20 7c 7c 20 78 5b 38 5d 3d 3d 27 57  ='w' || x[8]=='W
1ae0: 27 29 0d 0a 09 09 20 26 26 20 28 78 5b 39 5d 3d  ').... && (x[9]=
1af0: 3d 27 63 27 20 7c 7c 20 78 5b 39 5d 3d 3d 27 43  ='c' || x[9]=='C
1b00: 27 29 0d 0a 09 09 20 26 26 20 20 20 20 20 20 20  ').... &&       
1b10: 28 78 5b 31 30 5d 3d 3d 27 22 27 29 20 29 0d 0a  (x[10]=='"') )..
1b20: 09 09 7b 0d 0a 09 09 09 78 2b 3d 31 31 3b 0d 0a  ..{.....x+=11;..
1b30: 09 09 09 77 68 69 6c 65 28 20 2a 78 3d 3d 27 20  ...while( *x==' 
1b40: 27 20 7c 7c 20 2a 78 3d 3d 27 5c 74 27 20 7c 7c  ' || *x=='\t' ||
1b50: 20 2a 78 3d 3d 27 5c 72 27 20 7c 7c 20 2a 78 3d   *x=='\r' || *x=
1b60: 3d 27 5c 6e 27 20 29 20 78 2b 2b 3b 0d 0a 09 09  ='\n' ) x++;....
1b70: 09 69 66 28 20 28 78 5b 30 5d 3d 3d 27 63 27 20  .if( (x[0]=='c' 
1b80: 7c 7c 20 78 5b 30 5d 3d 3d 27 43 27 29 0d 0a 09  || x[0]=='C')...
1b90: 09 09 20 26 26 20 28 78 5b 31 5d 3d 3d 27 6f 27  .. && (x[1]=='o'
1ba0: 20 7c 7c 20 78 5b 31 5d 3d 3d 27 4f 27 29 0d 0a   || x[1]=='O')..
1bb0: 09 09 09 20 26 26 20 28 78 5b 32 5d 3d 3d 27 6e  ... && (x[2]=='n
1bc0: 27 20 7c 7c 20 78 5b 32 5d 3d 3d 27 4e 27 29 0d  ' || x[2]=='N').
1bd0: 0a 09 09 09 20 26 26 20 28 78 5b 33 5d 3d 3d 27  .... && (x[3]=='
1be0: 74 27 20 7c 7c 20 78 5b 33 5d 3d 3d 27 54 27 29  t' || x[3]=='T')
1bf0: 0d 0a 09 09 09 20 26 26 20 28 78 5b 34 5d 3d 3d  ..... && (x[4]==
1c00: 27 65 27 20 7c 7c 20 78 5b 34 5d 3d 3d 27 45 27  'e' || x[4]=='E'
1c10: 29 0d 0a 09 09 09 20 26 26 20 28 78 5b 35 5d 3d  )..... && (x[5]=
1c20: 3d 27 6e 27 20 7c 7c 20 78 5b 35 5d 3d 3d 27 4e  ='n' || x[5]=='N
1c30: 27 29 0d 0a 09 09 09 20 26 26 20 28 78 5b 36 5d  ')..... && (x[6]
1c40: 3d 3d 27 74 27 20 7c 7c 20 78 5b 36 5d 3d 3d 27  =='t' || x[6]=='
1c50: 54 27 29 0d 0a 09 09 09 20 26 26 20 20 20 20 20  T')..... &&     
1c60: 20 20 28 78 5b 37 5d 3d 3d 27 3d 27 29 0d 0a 09    (x[7]=='=')...
1c70: 09 09 20 26 26 20 20 20 20 20 20 20 28 78 5b 38  .. &&       (x[8
1c80: 5d 3d 3d 27 22 27 29 20 29 0d 0a 09 09 09 7b 0d  ]=='"') ).....{.
1c90: 0a 09 09 09 09 78 2b 3d 39 3b 0d 0a 09 09 09 09  .....x+=9;......
1ca0: 63 68 61 72 2a 20 70 3d 78 3b 0d 0a 09 09 09 09  char* p=x;......
1cb0: 77 68 69 6c 65 28 20 2a 70 21 3d 27 5c 30 27 20  while( *p!='\0' 
1cc0: 26 26 20 2a 70 21 3d 27 22 27 20 29 20 70 2b 2b  && *p!='"' ) p++
1cd0: 3b 0d 0a 09 09 09 09 2a 70 3d 27 5c 30 27 3b 0d  ;......*p='\0';.
1ce0: 0a 09 09 09 09 72 65 74 75 72 6e 20 78 3b 0d 0a  .....return x;..
1cf0: 09 09 09 7d 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 09  ...}....}...}...
1d00: 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0d 0a 7d 0d  return NULL;..}.
1d10: 0a 0d 0a 62 6f 6f 6c 20 44 4c 4c 49 6e 66 6f 3a  ...bool DLLInfo:
1d20: 3a 50 61 72 73 65 48 54 4d 4c 28 20 63 68 61 72  :ParseHTML( char
1d30: 2a 20 73 74 72 20 29 0d 0a 7b 0d 0a 09 69 6e 74  * str )..{...int
1d40: 20 63 74 20 3d 20 77 77 77 63 3b 0d 0a 09 66 6f   ct = wwwc;...fo
1d50: 72 28 20 63 68 61 72 2a 20 70 3d 73 74 72 3b 20  r( char* p=str; 
1d60: 2a 70 3b 20 2b 2b 70 20 29 0d 0a 09 09 69 66 28  *p; ++p )....if(
1d70: 20 2a 70 20 3d 3d 20 27 3c 27 20 29 0d 0a 09 09   *p == '<' )....
1d80: 7b 0d 0a 09 09 09 66 6f 72 28 20 63 68 61 72 2a  {.....for( char*
1d90: 20 78 3d 70 2b 31 3b 20 2a 78 3b 20 2b 2b 78 20   x=p+1; *x; ++x 
1da0: 29 0d 0a 09 09 09 09 69 66 28 20 2a 78 20 3d 3d  )......if( *x ==
1db0: 20 27 3e 27 20 29 0d 0a 09 09 09 09 09 62 72 65   '>' ).......bre
1dc0: 61 6b 3b 0d 0a 09 09 09 2a 78 20 3d 20 27 5c 30  ak;.....*x = '\0
1dd0: 27 3b 0d 0a 0d 0a 09 09 09 63 68 61 72 2a 20 77  ';.......char* w
1de0: 20 3d 20 47 65 74 5f 57 57 57 43 5f 43 6f 6e 74   = Get_WWWC_Cont
1df0: 65 6e 74 28 20 70 2b 31 20 29 3b 0d 0a 09 09 09  ent( p+1 );.....
1e00: 69 66 28 20 77 20 26 26 20 28 2d 2d 63 74 29 3d  if( w && (--ct)=
1e10: 3d 30 20 29 0d 0a 09 09 09 09 72 65 74 75 72 6e  =0 )......return
1e20: 20 50 61 72 73 65 57 57 57 43 28 20 77 20 29 3b   ParseWWWC( w );
1e30: 0d 0a 0d 0a 09 09 09 70 20 3d 20 78 3b 0d 0a 09  .......p = x;...
1e40: 09 7d 0d 0a 09 72 65 74 75 72 6e 20 66 61 6c 73  .}...return fals
1e50: 65 3b 0d 0a 7d 0d 0a 0d 0a 62 6f 6f 6c 20 44 4c  e;..}....bool DL
1e60: 4c 49 6e 66 6f 3a 3a 50 61 72 73 65 57 57 57 43  LInfo::ParseWWWC
1e70: 28 20 63 68 61 72 2a 20 73 74 72 20 29 0d 0a 7b  ( char* str )..{
1e80: 0d 0a 09 63 68 61 72 20 2a 78 2c 2a 6b 2c 2a 74  ...char *x,*k,*t
1e90: 2c 2a 70 3d 73 74 72 3b 0d 0a 0d 0a 09 2f 2f 20  ,*p=str;.....// 
1ea0: 82 51 8c c2 96 da 82 cc 83 58 83 79 81 5b 83 58  .Q.......X.y.[.X
1eb0: 82 dc 82 c5 82 aa 8d 58 90 56 93 fa 8e 9e 0d 0a  .......X.V......
1ec0: 09 66 6f 72 28 20 69 6e 74 20 73 70 63 3d 32 3b  .for( int spc=2;
1ed0: 20 2a 70 3b 20 2b 2b 70 20 29 0d 0a 09 09 69 66   *p; ++p )....if
1ee0: 28 20 2a 70 3d 3d 27 20 27 20 29 0d 0a 09 09 09  ( *p==' ' ).....
1ef0: 69 66 28 20 28 2d 2d 73 70 63 29 3d 3d 30 20 29  if( (--spc)==0 )
1f00: 0d 0a 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 69  ......break;...i
1f10: 66 28 20 2a 70 3d 3d 27 5c 30 27 20 29 0d 0a 09  f( *p=='\0' )...
1f20: 09 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a  .return false;..
1f30: 09 2a 28 70 2b 2b 29 20 3d 20 27 5c 30 27 3b 0d  .*(p++) = '\0';.
1f40: 0a 09 64 74 74 6d 20 3d 20 73 74 72 3b 0d 0a 0d  ..dttm = str;...
1f50: 0a 09 2f 2f 20 5b 78 78 78 3a 20 2d 2d 2d 5d 20  ..// [xxx: ---] 
1f60: 95 94 95 aa 0d 0a 09 77 68 69 6c 65 28 20 74 72  .......while( tr
1f70: 75 65 20 29 0d 0a 09 7b 0d 0a 09 09 77 68 69 6c  ue )...{....whil
1f80: 65 28 20 2a 70 21 3d 27 5c 30 27 20 26 26 20 2a  e( *p!='\0' && *
1f90: 70 21 3d 27 5b 27 20 29 20 2b 2b 70 3b 0d 0a 09  p!='[' ) ++p;...
1fa0: 09 69 66 28 20 2a 70 21 3d 27 5c 30 27 20 29 20  .if( *p!='\0' ) 
1fb0: 2b 2b 70 3b 0d 0a 09 09 69 66 28 20 2a 70 3d 3d  ++p;....if( *p==
1fc0: 27 5c 30 27 20 29 62 72 65 61 6b 3b 0d 0a 0d 0a  '\0' )break;....
1fd0: 09 09 74 3d 78 3d 6b 3d 70 3b 0d 0a 09 09 77 68  ..t=x=k=p;....wh
1fe0: 69 6c 65 28 20 2a 78 21 3d 27 5c 30 27 20 26 26  ile( *x!='\0' &&
1ff0: 20 2a 78 21 3d 27 5d 27 20 29 20 78 2b 2b 3b 0d   *x!=']' ) x++;.
2000: 0a 09 09 77 68 69 6c 65 28 20 2a 6b 21 3d 27 5c  ...while( *k!='\
2010: 30 27 20 26 26 20 2a 6b 21 3d 27 3a 27 20 29 20  0' && *k!=':' ) 
2020: 6b 2b 2b 3b 0d 0a 09 09 69 66 28 20 2a 78 3d 3d  k++;....if( *x==
2030: 27 5c 30 27 20 7c 7c 20 2a 6b 3d 3d 27 5c 30 27  '\0' || *k=='\0'
2040: 20 7c 7c 20 6b 3e 3d 78 20 29 62 72 65 61 6b 3b   || k>=x )break;
2050: 0d 0a 09 09 2a 6b 3d 2a 78 3d 27 5c 30 27 3b 0d  ....*k=*x='\0';.
2060: 0a 09 09 70 3d 6b 2b 31 3b 0d 0a 0d 0a 09 09 69  ...p=k+1;......i
2070: 66 28 20 30 3d 3d 6c 73 74 72 63 6d 70 69 28 20  f( 0==lstrcmpi( 
2080: 74 2c 20 22 46 69 6c 65 22 20 29 20 29 0d 0a 09  t, "File" ) )...
2090: 09 09 61 72 63 68 20 3d 20 70 3b 0d 0a 09 09 65  ..arch = p;....e
20a0: 6c 73 65 20 69 66 28 20 30 3d 3d 6c 73 74 72 63  lse if( 0==lstrc
20b0: 6d 70 69 28 20 74 2c 20 22 56 65 72 22 20 29 20  mpi( t, "Ver" ) 
20c0: 29 0d 0a 09 09 7b 0d 0a 09 09 09 77 68 69 6c 65  )....{.....while
20d0: 28 20 2a 70 20 26 26 20 28 2a 70 3c 27 30 27 20  ( *p && (*p<'0' 
20e0: 7c 7c 20 27 39 27 3c 2a 70 29 20 29 0d 0a 09 09  || '9'<*p) )....
20f0: 09 09 2b 2b 70 3b 0d 0a 09 09 09 76 65 72 73 20  ..++p;.....vers 
2100: 3d 20 70 3b 0d 0a 09 09 7d 0d 0a 09 09 65 6c 73  = p;....}....els
2110: 65 20 69 66 28 20 30 3d 3d 6c 73 74 72 63 6d 70  e if( 0==lstrcmp
2120: 69 28 20 74 2c 20 22 53 69 7a 65 22 20 29 20 29  i( t, "Size" ) )
2130: 0d 0a 09 09 7b 0d 0a 09 09 09 2f 2f 20 61 74 6f  ....{.....// ato
2140: 69 0d 0a 09 09 09 66 6f 72 28 20 69 6e 74 20 6e  i.....for( int n
2150: 3d 30 3b 20 2a 70 3b 20 70 2b 2b 20 29 0d 0a 09  =0; *p; p++ )...
2160: 09 09 09 69 66 28 20 27 30 27 3c 3d 2a 70 20 26  ...if( '0'<=*p &
2170: 26 20 2a 70 3c 3d 27 39 27 20 29 0d 0a 09 09 09  & *p<='9' ).....
2180: 09 09 6e 20 3d 20 28 31 30 2a 6e 29 20 2b 20 28  ..n = (10*n) + (
2190: 2a 70 20 2d 20 27 30 27 29 3b 0d 0a 09 09 09 73  *p - '0');.....s
21a0: 69 7a 65 20 3d 20 6e 3b 0d 0a 09 09 7d 0d 0a 09  ize = n;....}...
21b0: 09 70 3d 78 2b 31 3b 0d 0a 09 7d 0d 0a 0d 0a 09  .p=x+1;...}.....
21c0: 72 65 74 75 72 6e 20 28 20 73 69 7a 65 21 3d 30  return ( size!=0
21d0: 20 26 26 20 61 72 63 68 2e 6c 65 6e 28 29 21 3d   && arch.len()!=
21e0: 30 20 29 3b 0d 0a 7d 0d 0a 0d 0a 2f 2f 2d 2d 2d  0 );..}....//---
21f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2230: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 63 61  ---------..// ca
2240: 6c 64 69 78 82 cc 90 dd 92 e8 8d 80 96 da 8a c7  ldix............
2250: 97 9d 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ....//----------
2260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
22a0: 2d 2d 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 55  --....enum {...U
22b0: 4e 4c 48 41 2c 20 55 4e 5a 49 50 2c 20 5a 49 50  NLHA, UNZIP, ZIP
22c0: 2c 20 43 41 42 2c 20 54 41 52 2c 20 55 4e 52 41  , CAB, TAR, UNRA
22d0: 52 2c 20 55 4e 47 43 41 2c 0d 0a 09 55 4e 41 52  R, UNGCA,...UNAR
22e0: 4a 2c 20 59 5a 31 2c 20 42 47 41 2c 20 4a 41 43  J, YZ1, BGA, JAC
22f0: 4b 2c 20 41 49 53 48 2c 20 49 53 48 2c 20 55 4e  K, AISH, ISH, UN
2300: 42 45 4c 2c 20 53 76 5a 49 50 2c 0d 0a 09 55 4e  BEL, SvZIP,...UN
2310: 49 4d 50 2c 20 42 48 2c 20 59 5a 32 2c 0d 0a 44  IMP, BH, YZ2,..D
2320: 4c 4c 49 44 5f 4e 55 4d 20 7d 3b 0d 0a 0d 0a 73  LLID_NUM };....s
2330: 74 72 75 63 74 20 43 6c 64 78 43 6f 6e 66 69 67  truct CldxConfig
2340: 0d 0a 7b 0d 0a 09 6b 69 53 74 72 20 20 20 55 41  ..{...kiStr   UA
2350: 3b 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  ;            // 
2360: 83 86 81 5b 83 55 81 5b 83 47 81 5b 83 57 83 46  ...[.U.[.G.[.W.F
2370: 83 93 83 67 96 bc 0d 0a 0d 0a 09 62 6f 6f 6c 20  ...g.......bool 
2380: 20 20 20 53 75 70 65 72 41 75 74 6f 4d 6f 64 65     SuperAutoMode
2390: 3b 20 2f 2f 20 81 69 97 98 97 70 82 b5 82 c8 82  ; // .i...p.....
23a0: a2 81 6a 0d 0a 09 62 6f 6f 6c 20 20 20 20 41 75  ..j...bool    Au
23b0: 74 6f 4d 6f 64 65 3b 20 20 20 20 20 20 2f 2f 20  toMode;      // 
23c0: 91 53 8e a9 93 ae 82 c8 82 e7 74 72 75 65 2c 20  .S........true, 
23d0: 83 4a 83 58 83 5e 83 80 82 c8 82 e7 66 61 6c 73  .J.X.^......fals
23e0: 65 0d 0a 0d 0a 09 6b 69 50 61 74 68 20 20 49 6e  e.....kiPath  In
23f0: 73 74 61 6c 6c 54 6f 3b 20 20 20 20 20 2f 2f 20  stallTo;     // 
2400: 83 43 83 93 83 58 83 67 81 5b 83 8b 90 e6 0d 0a  .C...X.g.[......
2410: 09 69 6e 74 20 20 20 20 20 43 68 65 63 6b 53 65  .int     CheckSe
2420: 72 76 65 72 3b 20 20 20 2f 2f 20 8d 58 90 56 83  rver;   // .X.V.
2430: 60 83 46 83 62 83 4e 82 c9 8e 67 82 a4 83 54 81  `.F.b.N...g...T.
2440: 5b 83 6f 20 91 8b 95 d3 3d 30 2c 20 43 53 44 3d  [.o ....=0, CSD=
2450: 31 2c 20 98 66 90 af 3d 32 0d 0a 0d 0a 09 69 6e  1, .f..=2.....in
2460: 74 20 20 20 20 20 50 72 6f 78 79 50 6f 72 74 3b  t     ProxyPort;
2470: 20 20 20 20 20 2f 2f 20 83 76 83 8d 83 4c 83 56       // .v...L.V
2480: 82 cc 83 7c 81 5b 83 67 94 d4 8d 86 0d 0a 09 6b  ...|.[.g.......k
2490: 69 53 74 72 20 20 20 50 72 6f 78 79 53 65 72 76  iStr   ProxyServ
24a0: 65 72 3b 20 20 20 2f 2f 20 83 76 83 8d 83 4c 83  er;   // .v...L.
24b0: 56 83 54 81 5b 83 6f 96 bc 0d 0a 09 6b 69 53 74  V.T.[.o.....kiSt
24c0: 72 20 20 20 50 72 6f 78 79 55 73 65 72 3b 20 20  r   ProxyUser;  
24d0: 20 20 20 2f 2f 20 83 76 83 8d 83 4c 83 56 83 86     // .v...L.V..
24e0: 81 5b 83 55 96 bc 81 69 97 98 97 70 82 b5 82 c8  .[.U...i...p....
24f0: 82 a2 81 6a 0d 0a 09 6b 69 53 74 72 20 20 20 50  ...j...kiStr   P
2500: 72 6f 78 79 50 77 64 3b 20 20 20 20 20 20 2f 2f  roxyPwd;      //
2510: 20 83 76 83 8d 83 4c 83 56 83 70 83 58 83 8f 81   .v...L.V.p.X...
2520: 5b 83 68 81 69 97 98 97 70 82 b5 82 c8 82 a2 81  [.h.i...p.......
2530: 6a 0d 0a 0d 0a 09 62 6f 6f 6c 20 20 20 20 47 65  j.....bool    Ge
2540: 6f 72 67 65 3b 20 20 20 20 20 20 20 20 2f 2f 20  orge;        // 
2550: 8f ed 8e 9e 90 da 91 b1 83 82 81 5b 83 68 82 c8  ...........[.h..
2560: 82 e7 74 72 75 65 2c 20 94 c4 97 70 83 82 81 5b  ..true, ...p...[
2570: 83 68 82 c8 82 e7 66 61 6c 73 65 0d 0a 09 62 6f  .h....false...bo
2580: 6f 6c 20 20 20 20 55 73 65 43 75 73 74 6f 6d 44  ol    UseCustomD
2590: 69 72 3b 20 20 2f 2f 20 91 53 8e a9 93 ae 82 c5  ir;  // .S......
25a0: 82 e0 81 41 83 4a 83 58 83 5e 83 80 82 c6 93 af  ...A.J.X.^......
25b0: 82 b6 83 66 83 42 83 8c 83 4e 83 67 83 8a 82 f0  ...f.B...N.g....
25c0: 97 70 82 a2 82 e9 0d 0a 09 62 6f 6f 6c 20 20 20  .p.......bool   
25d0: 20 53 68 6f 77 52 65 61 64 4d 65 3b 20 20 20 20   ShowReadMe;    
25e0: 2f 2f 20 8d c5 8c e3 82 c9 63 6c 64 78 83 74 83  // ......cldx.t.
25f0: 48 83 8b 83 5f 82 f0 8a 4a 82 ad 82 a9 94 db 82  H..._...J.......
2600: a9 0d 0a 0d 0a 2f 2f 20 91 7d 93 fc 63 61 6c 64  .....// .}..cald
2610: 69 78 46 0d 0a 09 6b 69 53 74 72 20 20 20 46 69  ixF...kiStr   Fi
2620: 6c 65 72 3b 20 20 20 20 20 20 20 20 20 2f 2f 20  ler;         // 
2630: 83 74 83 48 83 8b 83 5f 82 f0 8a 4a 82 ad 83 74  .t.H..._...J...t
2640: 83 40 83 43 83 89 81 5b 0d 0a 09 6b 69 53 74 72  .@.C...[...kiStr
2650: 20 20 20 46 5f 50 72 65 66 69 78 3b 20 20 20 20     F_Prefix;    
2660: 20 20 2f 2f 20 83 74 83 40 83 43 83 89 82 c9 93    // .t.@.C.....
2670: 6e 82 b7 83 49 83 76 83 56 83 87 83 93 91 4f 0d  n...I.v.V.....O.
2680: 0a 09 6b 69 53 74 72 20 20 20 46 5f 53 75 66 66  ..kiStr   F_Suff
2690: 69 78 3b 20 20 20 20 20 20 2f 2f 20 83 74 83 40  ix;      // .t.@
26a0: 83 43 83 89 82 c9 93 6e 82 b7 83 49 83 76 83 56  .C.....n...I.v.V
26b0: 83 87 83 93 8c e3 82 eb 0d 0a 09 0d 0a 2f 2f 20  .............// 
26c0: 91 7d 93 fc 82 b1 82 b1 82 dc 82 c5 63 61 6c 64  .}..........cald
26d0: 69 78 46 0d 0a 0d 0a 09 62 6f 6f 6c 20 20 20 20  ixF.....bool    
26e0: 44 6f 43 68 65 63 6b 5b 44 4c 4c 49 44 5f 4e 55  DoCheck[DLLID_NU
26f0: 4d 5d 3b 20 2f 2f 20 8a 65 44 4c 4c 82 f0 83 60  M]; // .eDLL...`
2700: 83 46 83 62 83 4e 91 ce 8f db 82 c9 82 b7 82 e9  .F.b.N..........
2710: 82 a9 82 c7 82 a4 82 a9 0d 0a 09 69 6e 74 20 20  ...........int  
2720: 20 20 20 49 6e 73 74 4d 6f 64 65 3b 20 20 20 20     InstMode;    
2730: 20 20 20 20 20 20 20 2f 2f 20 83 5f 83 45 83 93         // ._.E..
2740: 83 8d 81 5b 83 68 82 b5 82 bd 44 4c 4c 82 cc 88  ...[.h....DLL...
2750: b5 82 a2 0d 0a 09 69 6e 74 20 20 20 20 20 45 78  ......int     Ex
2760: 70 69 72 65 3b 20 20 20 20 20 20 20 20 20 20 20  pire;           
2770: 20 20 2f 2f 20 93 fa 8e 9e 83 60 83 46 83 62 83    // .....`.F.b.
2780: 4e 82 c5 8d 58 90 56 91 ce 8f db 82 c6 82 b7 82  N...X.V.........
2790: e9 94 cd 88 cd 28 92 50 88 ca 3a 44 61 79 29 0d  .....(.P..:Day).
27a0: 0a 0d 0a 09 6b 69 41 72 72 61 79 3c 44 4c 4c 49  ....kiArray<DLLI
27b0: 6e 66 6f 2a 3e 20 4c 69 73 74 3b 20 20 20 20 20  nfo*> List;     
27c0: 2f 2f 20 83 60 83 46 83 62 83 4e 91 ce 8f db 44  // .`.F.b.N....D
27d0: 4c 4c 82 cc 83 8a 83 58 83 67 0d 0a 0d 0a 09 43  LL.....X.g.....C
27e0: 6c 64 78 43 6f 6e 66 69 67 28 29 0d 0a 09 09 3a  ldxConfig()....:
27f0: 20 55 41 28 20 22 63 61 6c 64 69 78 2f 31 2e 32   UA( "caldix/1.2
2800: 31 22 20 29 0d 0a 09 09 2c 20 53 75 70 65 72 41  1" )...., SuperA
2810: 75 74 6f 4d 6f 64 65 28 20 66 61 6c 73 65 20 29  utoMode( false )
2820: 0d 0a 09 09 2c 20 41 75 74 6f 4d 6f 64 65 28 20  ...., AutoMode( 
2830: 74 72 75 65 20 29 0d 0a 09 09 2c 20 49 6e 73 74  true )...., Inst
2840: 61 6c 6c 54 6f 28 20 6b 69 50 61 74 68 3a 3a 53  allTo( kiPath::S
2850: 79 73 20 29 0d 0a 09 7b 0d 0a 09 09 6b 69 49 6e  ys )...{....kiIn
2860: 69 46 69 6c 65 20 69 6e 69 3b 0d 0a 09 09 69 6e  iFile ini;....in
2870: 69 2e 73 65 74 46 69 6c 65 4e 61 6d 65 28 20 22  i.setFileName( "
2880: 63 61 6c 64 69 78 2e 69 6e 69 22 20 29 3b 0d 0a  caldix.ini" );..
2890: 09 09 69 6e 69 2e 73 65 74 53 65 63 74 69 6f 6e  ..ini.setSection
28a0: 28 20 22 63 6f 6e 66 22 20 29 3b 0d 0a 0d 0a 09  ( "conf" );.....
28b0: 09 49 6e 73 74 61 6c 6c 54 6f 20 20 20 20 3d 20  .InstallTo    = 
28c0: 69 6e 69 2e 67 65 74 53 74 72 20 28 20 22 64 6c  ini.getStr ( "dl
28d0: 6c 22 2c 20 20 20 20 20 20 20 49 6e 73 74 61 6c  l",       Instal
28e0: 6c 54 6f 20 29 3b 0d 0a 09 09 43 68 65 63 6b 53  lTo );....CheckS
28f0: 65 72 76 65 72 20 20 3d 20 69 6e 69 2e 67 65 74  erver  = ini.get
2900: 49 6e 74 20 28 20 22 63 68 65 63 6b 73 65 72 76  Int ( "checkserv
2910: 22 2c 20 30 20 29 20 25 20 33 3b 0d 0a 09 09 50  ", 0 ) % 3;....P
2920: 72 6f 78 79 53 65 72 76 65 72 20 20 3d 20 69 6e  roxyServer  = in
2930: 69 2e 67 65 74 53 74 72 20 28 20 22 70 72 6f 78  i.getStr ( "prox
2940: 79 22 2c 20 20 20 20 20 22 22 20 29 3b 0d 0a 09  y",     "" );...
2950: 09 50 72 6f 78 79 50 6f 72 74 20 20 20 20 3d 20  .ProxyPort    = 
2960: 69 6e 69 2e 67 65 74 49 6e 74 20 28 20 22 70 72  ini.getInt ( "pr
2970: 6f 78 79 70 6f 72 74 22 2c 20 2d 38 30 20 29 3b  oxyport", -80 );
2980: 0d 0a 09 09 47 65 6f 72 67 65 20 20 20 20 20 20  ....George      
2990: 20 3d 21 69 6e 69 2e 67 65 74 42 6f 6f 6c 28 20   =!ini.getBool( 
29a0: 22 61 73 6b 68 61 6e 67 22 2c 20 20 20 66 61 6c  "askhang",   fal
29b0: 73 65 20 29 3b 20 2f 2f 20 5b 31 2e 32 31 5d 20  se ); // [1.21] 
29c0: 83 66 83 74 83 48 83 8b 83 67 82 f0 20 66 61 6c  .f.t.H...g.. fal
29d0: 73 65 20 82 c9 95 cf 8d 58 81 42 97 ac 90 ce 82  se .....X.B.....
29e0: c9 8d a1 8e 9e 81 63 0d 0a 09 09 55 73 65 43 75  ......c....UseCu
29f0: 73 74 6f 6d 44 69 72 20 3d 20 69 6e 69 2e 67 65  stomDir = ini.ge
2a00: 74 42 6f 6f 6c 28 20 22 63 75 73 74 64 69 72 22  tBool( "custdir"
2a10: 2c 20 20 20 66 61 6c 73 65 20 29 3b 0d 0a 09 09  ,   false );....
2a20: 53 68 6f 77 52 65 61 64 4d 65 20 20 20 3d 20 69  ShowReadMe   = i
2a30: 6e 69 2e 67 65 74 42 6f 6f 6c 28 20 22 72 65 61  ni.getBool( "rea
2a40: 64 6d 65 22 2c 20 20 20 20 74 72 75 65 20 29 3b  dme",    true );
2a50: 0d 0a 09 09 49 6e 73 74 4d 6f 64 65 20 20 20 20  ....InstMode    
2a60: 20 3d 20 69 6e 69 2e 67 65 74 49 6e 74 20 28 20   = ini.getInt ( 
2a70: 22 6d 6f 64 65 22 2c 20 20 20 20 20 20 31 20 29  "mode",      1 )
2a80: 3b 0d 0a 09 09 45 78 70 69 72 65 20 20 20 20 20  ;....Expire     
2a90: 20 20 3d 20 69 6e 69 2e 67 65 74 49 6e 74 20 28    = ini.getInt (
2aa0: 20 22 65 78 70 69 72 65 22 2c 20 20 20 20 37 20   "expire",    7 
2ab0: 29 3b 0d 0a 09 09 69 6e 74 20 76 65 72 73 69 6f  );....int versio
2ac0: 6e 20 20 3d 20 69 6e 69 2e 67 65 74 49 6e 74 20  n  = ini.getInt 
2ad0: 28 20 22 76 65 72 22 2c 20 20 20 20 20 31 31 30  ( "ver",     110
2ae0: 20 29 3b 0d 0a 0d 0a 2f 2f 20 91 7d 93 fc 63 61   );....// .}..ca
2af0: 6c 64 69 78 46 0d 0a 09 09 46 69 6c 65 72 20 20  ldixF....Filer  
2b00: 20 20 20 20 20 20 3d 20 69 6e 69 2e 67 65 74 53        = ini.getS
2b10: 74 72 20 28 20 22 46 69 6c 65 72 22 2c 22 65 78  tr ( "Filer","ex
2b20: 70 6c 6f 72 65 72 22 29 3b 0d 0a 09 09 46 5f 50  plorer");....F_P
2b30: 72 65 66 69 78 20 20 20 20 20 3d 20 69 6e 69 2e  refix     = ini.
2b40: 67 65 74 53 74 72 20 28 20 22 46 5f 50 72 65 66  getStr ( "F_Pref
2b50: 69 78 22 2c 22 22 29 3b 0d 0a 09 09 46 5f 53 75  ix","");....F_Su
2b60: 66 66 69 78 20 20 20 20 20 3d 20 69 6e 69 2e 67  ffix     = ini.g
2b70: 65 74 53 74 72 20 28 20 22 46 5f 53 75 66 66 69  etStr ( "F_Suffi
2b80: 78 22 2c 22 22 29 3b 0d 0a 09 09 69 66 28 20 46  x","");....if( F
2b90: 69 6c 65 72 3d 3d 22 22 20 7c 7c 20 46 69 6c 65  iler=="" || File
2ba0: 72 2e 69 73 53 61 6d 65 28 22 65 78 70 6c 6f 72  r.isSame("explor
2bb0: 65 72 22 29 20 29 0d 0a 09 09 09 46 69 6c 65 72  er") ).....Filer
2bc0: 20 3d 20 6b 69 50 61 74 68 28 6b 69 50 61 74 68   = kiPath(kiPath
2bd0: 3a 3a 57 69 6e 2c 74 72 75 65 29 2c 20 46 69 6c  ::Win,true), Fil
2be0: 65 72 20 2b 3d 20 22 65 78 70 6c 6f 72 65 72 2e  er += "explorer.
2bf0: 65 78 65 22 3b 0d 0a 2f 2f 20 91 7d 93 fc 82 b1  exe";..// .}....
2c00: 82 b1 82 dc 82 c5 63 61 6c 64 69 78 46 0d 0a 0d  ......caldixF...
2c10: 0a 09 09 66 6f 72 28 20 69 6e 74 20 69 3d 30 3b  ...for( int i=0;
2c20: 20 69 3c 44 4c 4c 49 44 5f 4e 55 4d 3b 20 2b 2b   i<DLLID_NUM; ++
2c30: 69 20 29 0d 0a 09 09 09 44 6f 43 68 65 63 6b 5b  i ).....DoCheck[
2c40: 69 5d 20 3d 20 66 61 6c 73 65 3b 0d 0a 09 09 63  i] = false;....c
2c50: 6f 6e 73 74 20 63 68 61 72 2a 20 70 74 72 20 3d  onst char* ptr =
2c60: 20 69 6e 69 2e 67 65 74 53 74 72 28 20 22 44 4c   ini.getStr( "DL
2c70: 4c 4c 69 73 74 22 2c 20 22 4c 5a 7a 43 54 52 47  LList", "LZzCTRG
2c80: 41 59 42 4a 61 49 62 37 69 48 22 20 29 3b 0d 0a  AYBJaIb7iH" );..
2c90: 09 09 77 68 69 6c 65 28 20 2a 70 74 72 20 29 0d  ..while( *ptr ).
2ca0: 0a 09 09 09 73 77 69 74 63 68 28 20 30 78 37 66  ....switch( 0x7f
2cb0: 20 26 20 28 2a 28 70 74 72 2b 2b 29 29 20 29 0d   & (*(ptr++)) ).
2cc0: 0a 09 09 09 7b 0d 0a 09 09 09 63 61 73 65 20 27  ....{.....case '
2cd0: 4c 27 3a 20 44 6f 43 68 65 63 6b 5b 55 4e 4c 48  L': DoCheck[UNLH
2ce0: 41 5d 20 3d 20 74 72 75 65 3b 20 62 72 65 61 6b  A] = true; break
2cf0: 3b 0d 0a 09 09 09 63 61 73 65 20 27 5a 27 3a 20  ;.....case 'Z': 
2d00: 44 6f 43 68 65 63 6b 5b 55 4e 5a 49 50 5d 20 3d  DoCheck[UNZIP] =
2d10: 20 74 72 75 65 3b 20 62 72 65 61 6b 3b 0d 0a 09   true; break;...
2d20: 09 09 63 61 73 65 20 27 7a 27 3a 20 44 6f 43 68  ..case 'z': DoCh
2d30: 65 63 6b 5b 5a 49 50 5d 20 20 20 3d 20 74 72 75  eck[ZIP]   = tru
2d40: 65 3b 20 62 72 65 61 6b 3b 0d 0a 09 09 09 63 61  e; break;.....ca
2d50: 73 65 20 27 43 27 3a 20 44 6f 43 68 65 63 6b 5b  se 'C': DoCheck[
2d60: 43 41 42 5d 20 20 20 3d 20 74 72 75 65 3b 20 62  CAB]   = true; b
2d70: 72 65 61 6b 3b 0d 0a 09 09 09 63 61 73 65 20 27  reak;.....case '
2d80: 54 27 3a 20 44 6f 43 68 65 63 6b 5b 54 41 52 5d  T': DoCheck[TAR]
2d90: 20 20 20 3d 20 74 72 75 65 3b 20 62 72 65 61 6b     = true; break
2da0: 3b 0d 0a 09 09 09 63 61 73 65 20 27 52 27 3a 20  ;.....case 'R': 
2db0: 44 6f 43 68 65 63 6b 5b 55 4e 52 41 52 5d 20 3d  DoCheck[UNRAR] =
2dc0: 20 74 72 75 65 3b 20 62 72 65 61 6b 3b 0d 0a 09   true; break;...
2dd0: 09 09 63 61 73 65 20 27 47 27 3a 20 44 6f 43 68  ..case 'G': DoCh
2de0: 65 63 6b 5b 55 4e 47 43 41 5d 20 3d 20 74 72 75  eck[UNGCA] = tru
2df0: 65 3b 20 62 72 65 61 6b 3b 0d 0a 09 09 09 63 61  e; break;.....ca
2e00: 73 65 20 27 41 27 3a 20 44 6f 43 68 65 63 6b 5b  se 'A': DoCheck[
2e10: 55 4e 41 52 4a 5d 20 3d 20 74 72 75 65 3b 20 62  UNARJ] = true; b
2e20: 72 65 61 6b 3b 0d 0a 09 09 09 63 61 73 65 20 27  reak;.....case '
2e30: 59 27 3a 20 44 6f 43 68 65 63 6b 5b 59 5a 31 5d  Y': DoCheck[YZ1]
2e40: 20 20 20 3d 20 74 72 75 65 3b 20 62 72 65 61 6b     = true; break
2e50: 3b 0d 0a 09 09 09 63 61 73 65 20 27 42 27 3a 20  ;.....case 'B': 
2e60: 44 6f 43 68 65 63 6b 5b 42 47 41 5d 20 20 20 3d  DoCheck[BGA]   =
2e70: 20 74 72 75 65 3b 20 62 72 65 61 6b 3b 0d 0a 09   true; break;...
2e80: 09 09 63 61 73 65 20 27 4a 27 3a 20 44 6f 43 68  ..case 'J': DoCh
2e90: 65 63 6b 5b 4a 41 43 4b 5d 20 20 3d 20 74 72 75  eck[JACK]  = tru
2ea0: 65 3b 20 62 72 65 61 6b 3b 0d 0a 09 09 09 63 61  e; break;.....ca
2eb0: 73 65 20 27 61 27 3a 20 44 6f 43 68 65 63 6b 5b  se 'a': DoCheck[
2ec0: 41 49 53 48 5d 20 20 3d 20 74 72 75 65 3b 20 62  AISH]  = true; b
2ed0: 72 65 61 6b 3b 0d 0a 09 09 09 63 61 73 65 20 27  reak;.....case '
2ee0: 49 27 3a 20 44 6f 43 68 65 63 6b 5b 49 53 48 5d  I': DoCheck[ISH]
2ef0: 20 20 20 3d 20 74 72 75 65 3b 20 62 72 65 61 6b     = true; break
2f00: 3b 0d 0a 09 09 09 63 61 73 65 20 27 62 27 3a 20  ;.....case 'b': 
2f10: 44 6f 43 68 65 63 6b 5b 55 4e 42 45 4c 5d 20 3d  DoCheck[UNBEL] =
2f20: 20 74 72 75 65 3b 20 62 72 65 61 6b 3b 0d 0a 09   true; break;...
2f30: 09 09 63 61 73 65 20 27 37 27 3a 20 44 6f 43 68  ..case '7': DoCh
2f40: 65 63 6b 5b 53 76 5a 49 50 5d 20 3d 20 74 72 75  eck[SvZIP] = tru
2f50: 65 3b 20 62 72 65 61 6b 3b 0d 0a 09 09 09 63 61  e; break;.....ca
2f60: 73 65 20 27 69 27 3a 20 44 6f 43 68 65 63 6b 5b  se 'i': DoCheck[
2f70: 55 4e 49 4d 50 5d 20 3d 20 74 72 75 65 3b 20 62  UNIMP] = true; b
2f80: 72 65 61 6b 3b 0d 0a 09 09 09 63 61 73 65 20 27  reak;.....case '
2f90: 48 27 3a 20 44 6f 43 68 65 63 6b 5b 42 48 5d 20  H': DoCheck[BH] 
2fa0: 20 20 20 3d 20 74 72 75 65 3b 20 62 72 65 61 6b     = true; break
2fb0: 3b 0d 0a 09 09 09 63 61 73 65 20 27 32 27 3a 20  ;.....case '2': 
2fc0: 44 6f 43 68 65 63 6b 5b 59 5a 32 5d 20 20 20 3d  DoCheck[YZ2]   =
2fd0: 20 74 72 75 65 3b 20 62 72 65 61 6b 3b 0d 0a 09   true; break;...
2fe0: 09 09 7d 0d 0a 09 09 69 66 28 20 76 65 72 73 69  ..}....if( versi
2ff0: 6f 6e 3c 31 31 31 20 29 0d 0a 09 09 09 44 6f 43  on<111 ).....DoC
3000: 68 65 63 6b 5b 53 76 5a 49 50 5d 20 3d 20 74 72  heck[SvZIP] = tr
3010: 75 65 3b 20 2f 2f 20 76 65 72 31 2e 31 31 82 e6  ue; // ver1.11..
3020: 82 e8 91 4f 82 c9 82 cd 37 2d 7a 69 70 33 32 2e  ...O....7-zip32.
3030: 64 6c 6c 82 cd 0d 0a 09 09 09 20 20 20 20 20 20  dll.......      
3040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3050: 20 2f 2f 20 91 b6 8d dd 82 b5 82 c8 82 a9 82 c1   // ............
3060: 82 bd 82 cc 82 c5 82 b1 82 b1 82 c5 8b ad 90 a7  ................
3070: 4f 4e 0d 0a 09 09 69 66 28 20 76 65 72 73 69 6f  ON....if( versio
3080: 6e 3c 31 31 32 20 29 0d 0a 09 09 09 44 6f 43 68  n<112 ).....DoCh
3090: 65 63 6b 5b 55 4e 49 4d 50 5d 20 3d 20 74 72 75  eck[UNIMP] = tru
30a0: 65 3b 20 2f 2f 20 76 65 72 31 2e 31 32 82 e6 82  e; // ver1.12...
30b0: e8 91 4f 82 c9 82 cd 55 6e 49 6d 70 33 32 2e 64  ..O....UnImp32.d
30c0: 6c 6c 82 cd 0d 0a 09 09 09 20 20 20 20 20 20 20  ll.......       
30d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e0: 2f 2f 20 91 b6 8d dd 82 b5 82 c8 82 a9 82 c1 82  // .............
30f0: bd 82 cc 82 c5 82 b1 82 b1 82 c5 8b ad 90 a7 4f  ...............O
3100: 4e 0d 0a 09 09 69 66 28 20 76 65 72 73 69 6f 6e  N....if( version
3110: 3c 31 31 38 20 29 0d 0a 09 09 09 44 6f 43 68 65  <118 ).....DoChe
3120: 63 6b 5b 42 48 5d 20 20 20 20 3d 20 74 72 75 65  ck[BH]    = true
3130: 3b 20 2f 2f 20 76 65 72 31 2e 31 38 82 e6 82 e8  ; // ver1.18....
3140: 91 4f 82 c9 82 cd 42 68 33 32 2e 64 6c 6c 82 cd  .O....Bh32.dll..
3150: 0d 0a 09 09 09 20 20 20 20 20 20 20 20 20 20 20  .....           
3160: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 91              // .
3170: b6 8d dd 82 b5 82 c8 82 a9 82 c1 82 bd 82 cc 82  ................
3180: c5 82 b1 82 b1 82 c5 8b ad 90 a7 4f 4e 0d 0a 09  ...........ON...
3190: 09 69 66 28 20 76 65 72 73 69 6f 6e 3c 31 32 30  .if( version<120
31a0: 20 29 0d 0a 09 09 09 44 6f 43 68 65 63 6b 5b 59   ).....DoCheck[Y
31b0: 5a 32 5d 20 20 20 3d 20 74 72 75 65 3b 20 2f 2f  Z2]   = true; //
31c0: 20 76 65 72 31 2e 32 30 82 e6 82 e8 91 4f 82 c9   ver1.20.....O..
31d0: 82 cd 59 7a 32 2e 64 6c 6c 82 cd 0d 0a 09 09 09  ..Yz2.dll.......
31e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31f0: 20 20 20 20 20 20 20 2f 2f 20 91 b6 8d dd 82 b5         // ......
3200: 82 c8 82 a9 82 c1 82 bd 82 cc 82 c5 82 b1 82 b1  ................
3210: 82 c5 8b ad 90 a7 4f 4e 0d 0a 09 7d 0d 0a 0d 0a  ......ON...}....
3220: 09 76 6f 69 64 20 47 65 6e 65 72 61 74 65 44 4c  .void GenerateDL
3230: 4c 4c 69 73 74 28 29 0d 0a 09 7b 0d 0a 09 09 69  LList()...{....i
3240: 66 28 20 44 6f 43 68 65 63 6b 5b 55 4e 4c 48 41  f( DoCheck[UNLHA
3250: 5d 20 29 0d 0a 09 09 09 4c 69 73 74 2e 61 64 64  ] ).....List.add
3260: 28 20 6e 65 77 20 44 4c 4c 49 6e 66 6f 28 20 20  ( new DLLInfo(  
3270: 22 55 6e 6c 68 61 33 32 2e 64 6c 6c 22 2c 20 20  "Unlha32.dll",  
3280: 22 75 6e 6c 68 61 33 32 2e 68 74 6d 6c 22 2c 20  "unlha32.html", 
3290: 31 20 29 20 29 3b 0d 0a 09 09 69 66 28 20 44 6f  1 ) );....if( Do
32a0: 43 68 65 63 6b 5b 55 4e 5a 49 50 5d 20 29 0d 0a  Check[UNZIP] )..
32b0: 09 09 09 4c 69 73 74 2e 61 64 64 28 20 6e 65 77  ...List.add( new
32c0: 20 44 4c 4c 49 6e 66 6f 28 20 20 22 55 6e 5a 69   DLLInfo(  "UnZi
32d0: 70 33 32 2e 64 6c 6c 22 2c 20 20 22 75 6e 7a 69  p32.dll",  "unzi
32e0: 70 33 32 2e 68 74 6d 6c 22 2c 20 31 20 29 20 29  p32.html", 1 ) )
32f0: 3b 0d 0a 09 09 69 66 28 20 44 6f 43 68 65 63 6b  ;....if( DoCheck
3300: 5b 5a 49 50 5d 20 20 20 29 0d 0a 09 09 09 4c 69  [ZIP]   ).....Li
3310: 73 74 2e 61 64 64 28 20 6e 65 77 20 44 4c 4c 49  st.add( new DLLI
3320: 6e 66 6f 28 20 20 20 22 5a 69 70 33 32 6a 2e 64  nfo(   "Zip32j.d
3330: 6c 6c 22 2c 20 20 20 22 7a 69 70 33 32 6a 2e 68  ll",   "zip32j.h
3340: 74 6d 6c 22 2c 20 31 20 29 20 29 2c 0d 0a 09 09  tml", 1 ) ),....
3350: 09 4c 69 73 74 2e 61 64 64 28 20 6e 65 77 20 44  .List.add( new D
3360: 4c 4c 49 6e 66 6f 28 20 20 20 20 22 5a 69 70 33  LLInfo(    "Zip3
3370: 32 2e 64 6c 6c 22 2c 20 20 20 22 7a 69 70 33 32  2.dll",   "zip32
3380: 6a 2e 68 74 6d 6c 22 2c 20 32 20 29 20 29 2c 0d  j.html", 2 ) ),.
3390: 0a 09 09 09 4c 69 73 74 2e 61 64 64 28 20 6e 65  ....List.add( ne
33a0: 77 20 44 4c 4c 49 6e 66 6f 28 20 22 53 66 78 33  w DLLInfo( "Sfx3
33b0: 32 67 75 69 2e 64 61 74 22 2c 20 22 73 66 78 33  2gui.dat", "sfx3
33c0: 32 67 75 69 2e 68 74 6d 6c 22 2c 20 31 20 29 20  2gui.html", 1 ) 
33d0: 29 3b 0d 0a 09 09 69 66 28 20 44 6f 43 68 65 63  );....if( DoChec
33e0: 6b 5b 43 41 42 5d 20 20 20 29 0d 0a 09 09 09 4c  k[CAB]   ).....L
33f0: 69 73 74 2e 61 64 64 28 20 6e 65 77 20 44 4c 4c  ist.add( new DLL
3400: 49 6e 66 6f 28 20 20 20 20 22 43 61 62 33 32 2e  Info(    "Cab32.
3410: 64 6c 6c 22 2c 20 20 20 20 22 63 61 62 33 32 2e  dll",    "cab32.
3420: 68 74 6d 6c 22 2c 20 31 20 29 20 29 3b 0d 0a 09  html", 1 ) );...
3430: 09 69 66 28 20 44 6f 43 68 65 63 6b 5b 54 41 52  .if( DoCheck[TAR
3440: 5d 20 20 20 29 0d 0a 09 09 09 4c 69 73 74 2e 61  ]   ).....List.a
3450: 64 64 28 20 6e 65 77 20 44 4c 4c 49 6e 66 6f 28  dd( new DLLInfo(
3460: 20 20 20 20 22 54 61 72 33 32 2e 64 6c 6c 22 2c      "Tar32.dll",
3470: 20 20 20 20 22 74 61 72 33 32 2e 68 74 6d 6c 22      "tar32.html"
3480: 2c 20 31 20 29 20 29 3b 0d 0a 09 09 69 66 28 20  , 1 ) );....if( 
3490: 44 6f 43 68 65 63 6b 5b 55 4e 52 41 52 5d 20 29  DoCheck[UNRAR] )
34a0: 0d 0a 09 09 09 4c 69 73 74 2e 61 64 64 28 20 6e  .....List.add( n
34b0: 65 77 20 44 4c 4c 49 6e 66 6f 28 20 20 22 55 6e  ew DLLInfo(  "Un
34c0: 72 61 72 33 32 2e 64 6c 6c 22 2c 20 20 22 75 6e  rar32.dll",  "un
34d0: 72 61 72 33 32 2e 68 74 6d 6c 22 2c 20 31 20 29  rar32.html", 1 )
34e0: 20 29 3b 0d 0a 09 09 69 66 28 20 44 6f 43 68 65   );....if( DoChe
34f0: 63 6b 5b 55 4e 47 43 41 5d 20 29 0d 0a 09 09 09  ck[UNGCA] ).....
3500: 4c 69 73 74 2e 61 64 64 28 20 6e 65 77 20 44 4c  List.add( new DL
3510: 4c 49 6e 66 6f 28 20 20 22 55 6e 47 43 41 33 32  LInfo(  "UnGCA32
3520: 2e 64 6c 6c 22 2c 20 20 22 75 6e 67 63 61 33 32  .dll",  "ungca32
3530: 2e 68 74 6d 6c 22 2c 20 31 20 29 20 29 3b 0d 0a  .html", 1 ) );..
3540: 09 09 69 66 28 20 44 6f 43 68 65 63 6b 5b 55 4e  ..if( DoCheck[UN
3550: 41 52 4a 5d 20 29 0d 0a 09 09 09 4c 69 73 74 2e  ARJ] ).....List.
3560: 61 64 64 28 20 6e 65 77 20 44 4c 4c 49 6e 66 6f  add( new DLLInfo
3570: 28 20 22 55 6e 61 72 6a 33 32 6a 2e 64 6c 6c 22  ( "Unarj32j.dll"
3580: 2c 20 20 22 75 6e 61 72 6a 33 32 2e 68 74 6d 6c  ,  "unarj32.html
3590: 22 2c 20 31 20 29 20 29 3b 0d 0a 09 09 69 66 28  ", 1 ) );....if(
35a0: 20 44 6f 43 68 65 63 6b 5b 59 5a 31 5d 20 20 20   DoCheck[YZ1]   
35b0: 29 0d 0a 09 09 09 4c 69 73 74 2e 61 64 64 28 20  ).....List.add( 
35c0: 6e 65 77 20 44 4c 4c 49 6e 66 6f 28 20 20 20 20  new DLLInfo(    
35d0: 20 20 22 59 7a 31 2e 64 6c 6c 22 2c 20 20 20 20    "Yz1.dll",    
35e0: 20 20 22 79 7a 31 2e 68 74 6d 6c 22 2c 20 31 20    "yz1.html", 1 
35f0: 29 20 29 3b 0d 0a 09 09 69 66 28 20 44 6f 43 68  ) );....if( DoCh
3600: 65 63 6b 5b 42 47 41 5d 20 20 20 29 0d 0a 09 09  eck[BGA]   )....
3610: 09 4c 69 73 74 2e 61 64 64 28 20 6e 65 77 20 44  .List.add( new D
3620: 4c 4c 49 6e 66 6f 28 20 20 20 20 22 42 67 61 33  LLInfo(    "Bga3
3630: 32 2e 64 6c 6c 22 2c 20 20 20 20 22 62 67 61 33  2.dll",    "bga3
3640: 32 2e 68 74 6d 6c 22 2c 20 31 20 29 20 29 3b 0d  2.html", 1 ) );.
3650: 0a 09 09 69 66 28 20 44 6f 43 68 65 63 6b 5b 4a  ...if( DoCheck[J
3660: 41 43 4b 5d 20 20 29 0d 0a 09 09 09 4c 69 73 74  ACK]  ).....List
3670: 2e 61 64 64 28 20 6e 65 77 20 44 4c 4c 49 6e 66  .add( new DLLInf
3680: 6f 28 20 20 20 22 4a 61 63 6b 33 32 2e 64 6c 6c  o(   "Jack32.dll
3690: 22 2c 20 20 20 22 6a 61 63 6b 33 32 2e 68 74 6d  ",   "jack32.htm
36a0: 6c 22 2c 20 31 20 29 20 29 3b 0d 0a 09 09 69 66  l", 1 ) );....if
36b0: 28 20 44 6f 43 68 65 63 6b 5b 41 49 53 48 5d 20  ( DoCheck[AISH] 
36c0: 20 29 0d 0a 09 09 09 4c 69 73 74 2e 61 64 64 28   ).....List.add(
36d0: 20 6e 65 77 20 44 4c 4c 49 6e 66 6f 28 20 20 20   new DLLInfo(   
36e0: 22 41 69 73 68 33 32 2e 64 6c 6c 22 2c 20 20 20  "Aish32.dll",   
36f0: 22 61 69 73 68 33 32 2e 68 74 6d 6c 22 2c 20 31  "aish32.html", 1
3700: 20 29 20 29 3b 0d 0a 09 09 69 66 28 20 44 6f 43   ) );....if( DoC
3710: 68 65 63 6b 5b 49 53 48 5d 20 20 20 29 0d 0a 09  heck[ISH]   )...
3720: 09 09 4c 69 73 74 2e 61 64 64 28 20 6e 65 77 20  ..List.add( new 
3730: 44 4c 4c 49 6e 66 6f 28 20 20 20 20 22 49 73 68  DLLInfo(    "Ish
3740: 33 32 2e 64 6c 6c 22 2c 20 20 20 20 22 69 73 68  32.dll",    "ish
3750: 33 32 2e 68 74 6d 6c 22 2c 20 31 20 29 20 29 3b  32.html", 1 ) );
3760: 0d 0a 09 09 69 66 28 20 44 6f 43 68 65 63 6b 5b  ....if( DoCheck[
3770: 55 4e 42 45 4c 5d 20 29 0d 0a 09 09 09 4c 69 73  UNBEL] ).....Lis
3780: 74 2e 61 64 64 28 20 6e 65 77 20 44 4c 4c 49 6e  t.add( new DLLIn
3790: 66 6f 28 20 20 22 55 6e 62 65 6c 33 32 2e 64 6c  fo(  "Unbel32.dl
37a0: 6c 22 2c 20 20 22 75 6e 62 65 6c 33 32 2e 68 74  l",  "unbel32.ht
37b0: 6d 6c 22 2c 20 31 20 29 20 29 3b 0d 0a 09 09 69  ml", 1 ) );....i
37c0: 66 28 20 44 6f 43 68 65 63 6b 5b 53 76 5a 49 50  f( DoCheck[SvZIP
37d0: 5d 20 29 0d 0a 09 09 09 4c 69 73 74 2e 61 64 64  ] ).....List.add
37e0: 28 20 6e 65 77 20 44 4c 4c 49 6e 66 6f 28 20 20  ( new DLLInfo(  
37f0: 22 37 2d 7a 69 70 33 32 2e 64 6c 6c 22 2c 20 20  "7-zip32.dll",  
3800: 22 37 2d 7a 69 70 33 32 2e 68 74 6d 6c 22 2c 20  "7-zip32.html", 
3810: 31 20 29 20 29 3b 0d 0a 09 09 69 66 28 20 44 6f  1 ) );....if( Do
3820: 43 68 65 63 6b 5b 55 4e 49 4d 50 5d 20 29 0d 0a  Check[UNIMP] )..
3830: 09 09 09 4c 69 73 74 2e 61 64 64 28 20 6e 65 77  ...List.add( new
3840: 20 44 4c 4c 49 6e 66 6f 28 20 20 22 55 6e 49 6d   DLLInfo(  "UnIm
3850: 70 33 32 2e 64 6c 6c 22 2c 20 20 22 75 6e 69 6d  p32.dll",  "unim
3860: 70 33 32 2e 68 74 6d 6c 22 2c 20 31 20 29 20 29  p32.html", 1 ) )
3870: 3b 0d 0a 09 09 69 66 28 20 44 6f 43 68 65 63 6b  ;....if( DoCheck
3880: 5b 42 48 5d 20 29 0d 0a 09 09 09 4c 69 73 74 2e  [BH] ).....List.
3890: 61 64 64 28 20 6e 65 77 20 44 4c 4c 49 6e 66 6f  add( new DLLInfo
38a0: 28 20 20 20 20 20 22 42 68 33 32 2e 64 6c 6c 22  (     "Bh32.dll"
38b0: 2c 20 20 20 20 20 22 62 68 33 32 2e 68 74 6d 6c  ,     "bh32.html
38c0: 22 2c 20 31 20 29 20 29 3b 0d 0a 09 09 69 66 28  ", 1 ) );....if(
38d0: 20 44 6f 43 68 65 63 6b 5b 59 5a 32 5d 20 29 0d   DoCheck[YZ2] ).
38e0: 0a 09 09 09 4c 69 73 74 2e 61 64 64 28 20 6e 65  ....List.add( ne
38f0: 77 20 44 4c 4c 49 6e 66 6f 28 20 20 20 20 20 20  w DLLInfo(      
3900: 22 59 7a 32 2e 64 6c 6c 22 2c 20 20 20 20 20 20  "Yz2.dll",      
3910: 22 79 7a 32 2e 68 74 6d 6c 22 2c 20 31 20 29 20  "yz2.html", 1 ) 
3920: 29 3b 0d 0a 09 7d 0d 0a 0d 0a 09 7e 43 6c 64 78  );...}.....~Cldx
3930: 43 6f 6e 66 69 67 28 29 0d 0a 09 7b 0d 0a 09 09  Config()...{....
3940: 69 66 28 20 21 41 75 74 6f 4d 6f 64 65 20 29 0d  if( !AutoMode ).
3950: 0a 09 09 7b 0d 0a 09 09 09 6b 69 49 6e 69 46 69  ...{.....kiIniFi
3960: 6c 65 20 69 6e 69 3b 0d 0a 09 09 09 69 6e 69 2e  le ini;.....ini.
3970: 73 65 74 46 69 6c 65 4e 61 6d 65 28 20 22 63 61  setFileName( "ca
3980: 6c 64 69 78 2e 69 6e 69 22 20 29 3b 0d 0a 09 09  ldix.ini" );....
3990: 09 69 6e 69 2e 73 65 74 53 65 63 74 69 6f 6e 28  .ini.setSection(
39a0: 20 22 63 6f 6e 66 22 20 29 3b 0d 0a 0d 0a 09 09   "conf" );......
39b0: 09 69 6e 69 2e 70 75 74 53 74 72 20 28 20 22 64  .ini.putStr ( "d
39c0: 6c 6c 22 2c 20 20 20 20 20 20 20 49 6e 73 74 61  ll",       Insta
39d0: 6c 6c 54 6f 20 29 3b 0d 0a 09 09 09 69 6e 69 2e  llTo );.....ini.
39e0: 70 75 74 49 6e 74 20 28 20 22 63 68 65 63 6b 73  putInt ( "checks
39f0: 65 72 76 22 2c 20 43 68 65 63 6b 53 65 72 76 65  erv", CheckServe
3a00: 72 20 29 3b 0d 0a 09 09 09 69 6e 69 2e 70 75 74  r );.....ini.put
3a10: 53 74 72 20 28 20 22 70 72 6f 78 79 22 2c 20 20  Str ( "proxy",  
3a20: 20 20 20 50 72 6f 78 79 53 65 72 76 65 72 20 29     ProxyServer )
3a30: 3b 0d 0a 09 09 09 69 6e 69 2e 70 75 74 49 6e 74  ;.....ini.putInt
3a40: 20 28 20 22 70 72 6f 78 79 70 6f 72 74 22 2c 20   ( "proxyport", 
3a50: 50 72 6f 78 79 50 6f 72 74 20 29 3b 0d 0a 09 09  ProxyPort );....
3a60: 09 69 6e 69 2e 70 75 74 42 6f 6f 6c 28 20 22 61  .ini.putBool( "a
3a70: 73 6b 68 61 6e 67 22 2c 20 20 21 47 65 6f 72 67  skhang",  !Georg
3a80: 65 20 29 3b 0d 0a 09 09 09 69 6e 69 2e 70 75 74  e );.....ini.put
3a90: 42 6f 6f 6c 28 20 22 63 75 73 74 64 69 72 22 2c  Bool( "custdir",
3aa0: 20 20 20 55 73 65 43 75 73 74 6f 6d 44 69 72 20     UseCustomDir 
3ab0: 29 3b 0d 0a 09 09 09 69 6e 69 2e 70 75 74 42 6f  );.....ini.putBo
3ac0: 6f 6c 28 20 22 72 65 61 64 6d 65 22 2c 20 20 20  ol( "readme",   
3ad0: 20 53 68 6f 77 52 65 61 64 4d 65 20 29 3b 0d 0a   ShowReadMe );..
3ae0: 09 09 09 69 6e 69 2e 70 75 74 49 6e 74 20 28 20  ...ini.putInt ( 
3af0: 22 6d 6f 64 65 22 2c 20 20 20 20 20 20 49 6e 73  "mode",      Ins
3b00: 74 4d 6f 64 65 20 29 3b 0d 0a 09 09 09 69 6e 69  tMode );.....ini
3b10: 2e 70 75 74 49 6e 74 20 28 20 22 65 78 70 69 72  .putInt ( "expir
3b20: 65 22 2c 20 20 20 20 45 78 70 69 72 65 20 29 3b  e",    Expire );
3b30: 0d 0a 09 09 09 69 6e 69 2e 70 75 74 49 6e 74 20  .....ini.putInt 
3b40: 28 20 22 76 65 72 22 2c 20 20 20 20 20 20 20 31  ( "ver",       1
3b50: 32 31 20 29 3b 0d 0a 2f 2f 20 91 7d 93 fc 63 61  21 );..// .}..ca
3b60: 6c 64 69 78 46 0d 0a 09 09 09 69 6e 69 2e 70 75  ldixF.....ini.pu
3b70: 74 53 74 72 20 28 20 22 46 69 6c 65 72 22 2c 20  tStr ( "Filer", 
3b80: 20 20 20 20 46 69 6c 65 72 20 29 3b 0d 0a 09 09      Filer );....
3b90: 09 69 6e 69 2e 70 75 74 53 74 72 20 28 20 22 46  .ini.putStr ( "F
3ba0: 5f 50 72 65 66 69 78 22 2c 20 20 46 5f 50 72 65  _Prefix",  F_Pre
3bb0: 66 69 78 20 29 3b 0d 0a 09 09 09 69 6e 69 2e 70  fix );.....ini.p
3bc0: 75 74 53 74 72 20 28 20 22 46 5f 53 75 66 66 69  utStr ( "F_Suffi
3bd0: 78 22 2c 20 20 46 5f 53 75 66 66 69 78 20 29 3b  x",  F_Suffix );
3be0: 0d 0a 2f 2f 20 91 7d 93 fc 82 b1 82 b1 82 dc 82  ..// .}.........
3bf0: c5 63 61 6c 64 69 78 46 0d 0a 0d 0a 09 09 09 6b  .caldixF.......k
3c00: 69 53 74 72 20 63 68 6b 3b 0d 0a 09 09 09 66 6f  iStr chk;.....fo
3c10: 72 28 20 69 6e 74 20 69 3d 30 3b 20 69 3c 44 4c  r( int i=0; i<DL
3c20: 4c 49 44 5f 4e 55 4d 3b 20 2b 2b 69 20 29 0d 0a  LID_NUM; ++i )..
3c30: 09 09 09 09 69 66 28 20 44 6f 43 68 65 63 6b 5b  ....if( DoCheck[
3c40: 69 5d 20 29 0d 0a 09 09 09 09 09 63 68 6b 20 2b  i] ).......chk +
3c50: 3d 20 22 4c 5a 7a 43 54 52 47 41 59 42 4a 61 49  = "LZzCTRGAYBJaI
3c60: 62 37 69 48 32 22 5b 69 5d 3b 0d 0a 09 09 09 69  b7iH2"[i];.....i
3c70: 6e 69 2e 70 75 74 53 74 72 28 20 22 44 4c 4c 4c  ni.putStr( "DLLL
3c80: 69 73 74 22 2c 20 63 68 6b 20 29 3b 0d 0a 09 09  ist", chk );....
3c90: 7d 0d 0a 0d 0a 09 09 66 6f 72 28 20 75 6e 73 69  }......for( unsi
3ca0: 67 6e 65 64 20 69 6e 74 20 69 3d 30 3b 20 69 3c  gned int i=0; i<
3cb0: 4c 69 73 74 2e 6c 65 6e 28 29 3b 20 2b 2b 69 20  List.len(); ++i 
3cc0: 29 0d 0a 09 09 09 64 65 6c 65 74 65 20 4c 69 73  ).....delete Lis
3cd0: 74 5b 69 5d 3b 0d 0a 09 7d 0d 0a 7d 3b 0d 0a 0d  t[i];...}..};...
3ce0: 0a 43 6c 64 78 43 6f 6e 66 69 67 2a 20 63 66 67  .CldxConfig* cfg
3cf0: 20 3d 20 4e 55 4c 4c 3b 0d 0a 0d 0a 0d 0a 0d 0a   = NULL;........
3d00: 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  //--------------
3d10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3d20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3d30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3d40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
3d50: 2f 2f 20 44 4c 4c 82 cc 83 6f 81 5b 83 57 83 87  // DLL...o.[.W..
3d60: 83 93 83 60 83 46 83 62 83 4e 0d 0a 2f 2f 2d 2d  ...`.F.b.N..//--
3d70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3d80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3d90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3da0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
3db0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 73 74  ----------....st
3dc0: 72 75 63 74 20 5f 7a 69 70 5f 76 65 72 73 69 6f  ruct _zip_versio
3dd0: 6e 5f 74 79 70 65 0d 0a 7b 0d 0a 09 75 6e 73 69  n_type..{...unsi
3de0: 67 6e 65 64 20 63 68 61 72 20 6d 61 6a 6f 72 3b  gned char major;
3df0: 0d 0a 09 75 6e 73 69 67 6e 65 64 20 63 68 61 72  ...unsigned char
3e00: 20 6d 69 6e 6f 72 3b 0d 0a 09 75 6e 73 69 67 6e   minor;...unsign
3e10: 65 64 20 63 68 61 72 20 70 61 74 63 68 6c 65 76  ed char patchlev
3e20: 65 6c 3b 0d 0a 09 75 6e 73 69 67 6e 65 64 20 63  el;...unsigned c
3e30: 68 61 72 20 6e 6f 74 5f 75 73 65 64 3b 0d 0a 7d  har not_used;..}
3e40: 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 5a 70 56 65  ;....struct ZpVe
3e50: 72 0d 0a 7b 0d 0a 09 75 6e 73 69 67 6e 65 64 20  r..{...unsigned 
3e60: 6c 6f 6e 67 20 73 74 72 75 63 74 6c 65 6e 3b 0d  long structlen;.
3e70: 0a 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20  ..unsigned long 
3e80: 66 6c 61 67 3b 0d 0a 09 63 68 61 72 20 62 65 74  flag;...char bet
3e90: 61 6c 65 76 65 6c 5b 31 30 5d 3b 0d 0a 09 63 68  alevel[10];...ch
3ea0: 61 72 20 64 61 74 65 5b 32 30 5d 3b 0d 0a 09 63  ar date[20];...c
3eb0: 68 61 72 20 7a 6c 69 62 5f 76 65 72 73 69 6f 6e  har zlib_version
3ec0: 5b 31 30 5d 3b 0d 0a 09 5f 7a 69 70 5f 76 65 72  [10];..._zip_ver
3ed0: 73 69 6f 6e 5f 74 79 70 65 20 7a 69 70 3b 0d 0a  sion_type zip;..
3ee0: 09 5f 7a 69 70 5f 76 65 72 73 69 6f 6e 5f 74 79  ._zip_version_ty
3ef0: 70 65 20 6f 73 32 64 6c 6c 3b 0d 0a 09 5f 7a 69  pe os2dll;..._zi
3f00: 70 5f 76 65 72 73 69 6f 6e 5f 74 79 70 65 20 77  p_version_type w
3f10: 69 6e 64 6c 6c 3b 0d 0a 7d 3b 0d 0a 0d 0a 73 74  indll;..};....st
3f20: 61 74 69 63 20 57 4f 52 44 20 5a 69 70 33 32 44  atic WORD Zip32D
3f30: 4c 4c 47 65 74 56 65 72 73 69 6f 6e 28 20 63 6f  LLGetVersion( co
3f40: 6e 73 74 20 63 68 61 72 2a 20 64 6c 6c 20 29 0d  nst char* dll ).
3f50: 0a 7b 0d 0a 09 57 4f 52 44 20 61 6e 73 3d 30 3b  .{...WORD ans=0;
3f60: 0d 0a 09 48 49 4e 53 54 41 4e 43 45 20 69 6e 73  ...HINSTANCE ins
3f70: 74 20 3d 20 6b 69 75 74 69 6c 3a 3a 73 61 66 65  t = kiutil::safe
3f80: 70 61 74 68 4c 6f 61 64 4c 69 62 72 61 72 79 28  pathLoadLibrary(
3f90: 20 64 6c 6c 20 29 3b 20 2f 2f 20 64 6c 6c 20 82   dll ); // dll .
3fa0: cd 83 74 83 8b 83 70 83 58 82 c8 82 cc 82 c5 97  ..t...p.X.......
3fb0: 76 82 e7 82 c8 82 a2 82 cd 82 b8 82 be 82 af 82  v...............
3fc0: c7 94 4f 82 cc 82 bd 82 df 0d 0a 09 69 66 28 20  ..O.........if( 
3fd0: 69 6e 73 74 20 29 0d 0a 09 7b 0d 0a 09 09 74 79  inst )...{....ty
3fe0: 70 65 64 65 66 20 69 6e 74 20 28 57 49 4e 41 50  pedef int (WINAP
3ff0: 49 20 2a 20 5a 50 56 52 29 28 5a 70 56 65 72 2a  I * ZPVR)(ZpVer*
4000: 29 3b 0d 0a 09 09 5a 50 56 52 20 76 20 3d 20 28  );....ZPVR v = (
4010: 5a 50 56 52 29 3a 3a 47 65 74 50 72 6f 63 41 64  ZPVR)::GetProcAd
4020: 64 72 65 73 73 28 20 69 6e 73 74 2c 20 22 5a 70  dress( inst, "Zp
4030: 56 65 72 73 69 6f 6e 22 20 29 3b 0d 0a 09 09 69  Version" );....i
4040: 66 28 20 76 20 29 0d 0a 09 09 7b 0d 0a 09 09 09  f( v )....{.....
4050: 5a 70 56 65 72 20 78 3b 0d 0a 09 09 09 76 28 20  ZpVer x;.....v( 
4060: 26 78 20 29 3b 0d 0a 09 09 09 61 6e 73 20 3d 20  &x );.....ans = 
4070: 78 2e 7a 69 70 2e 6d 61 6a 6f 72 2a 31 30 30 20  x.zip.major*100 
4080: 2b 20 78 2e 7a 69 70 2e 6d 69 6e 6f 72 2a 31 30  + x.zip.minor*10
4090: 20 2b 20 78 2e 7a 69 70 2e 70 61 74 63 68 6c 65   + x.zip.patchle
40a0: 76 65 6c 3b 0d 0a 09 09 7d 0d 0a 09 09 3a 3a 46  vel;....}....::F
40b0: 72 65 65 4c 69 62 72 61 72 79 28 20 69 6e 73 74  reeLibrary( inst
40c0: 20 29 3b 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 6e   );...}...return
40d0: 20 61 6e 73 3b 0d 0a 7d 0d 0a 0d 0a 62 6f 6f 6c   ans;..}....bool
40e0: 20 44 4c 4c 49 6e 66 6f 3a 3a 43 68 65 63 6b 44   DLLInfo::CheckD
40f0: 61 74 65 54 69 6d 65 28 20 63 6f 6e 73 74 20 63  ateTime( const c
4100: 68 61 72 2a 20 6c 6f 63 61 6c 44 4c 4c 20 29 0d  har* localDLL ).
4110: 0a 7b 0d 0a 09 2f 2f 20 83 8d 81 5b 83 4a 83 8b  .{...// ...[.J..
4120: 82 cc 44 4c 4c 82 cc 93 fa 95 74 82 f0 8e e6 93  ..DLL.....t.....
4130: be 0d 0a 09 46 49 4c 45 54 49 4d 45 20 66 74 3b  ....FILETIME ft;
4140: 0d 0a 09 53 59 53 54 45 4d 54 49 4d 45 20 53 74  ...SYSTEMTIME St
4150: 4c 6f 63 61 6c 3b 0d 0a 09 48 41 4e 44 4c 45 20  Local;...HANDLE 
4160: 68 20 3d 20 3a 3a 43 72 65 61 74 65 46 69 6c 65  h = ::CreateFile
4170: 28 0d 0a 09 09 6c 6f 63 61 6c 44 4c 4c 2c 20 47  (....localDLL, G
4180: 45 4e 45 52 49 43 5f 52 45 41 44 2c 20 46 49 4c  ENERIC_READ, FIL
4190: 45 5f 53 48 41 52 45 5f 52 45 41 44 2c 20 4e 55  E_SHARE_READ, NU
41a0: 4c 4c 2c 20 4f 50 45 4e 5f 45 58 49 53 54 49 4e  LL, OPEN_EXISTIN
41b0: 47 2c 0d 0a 09 09 46 49 4c 45 5f 41 54 54 52 49  G,....FILE_ATTRI
41c0: 42 55 54 45 5f 4e 4f 52 4d 41 4c 7c 46 49 4c 45  BUTE_NORMAL|FILE
41d0: 5f 46 4c 41 47 5f 53 45 51 55 45 4e 54 49 41 4c  _FLAG_SEQUENTIAL
41e0: 5f 53 43 41 4e 2c 20 4e 55 4c 4c 20 29 3b 0d 0a  _SCAN, NULL );..
41f0: 09 69 66 28 20 68 20 3d 3d 20 49 4e 56 41 4c 49  .if( h == INVALI
4200: 44 5f 48 41 4e 44 4c 45 5f 56 41 4c 55 45 20 29  D_HANDLE_VALUE )
4210: 0d 0a 09 09 72 65 74 75 72 6e 20 74 72 75 65 3b  ....return true;
4220: 0d 0a 09 3a 3a 47 65 74 46 69 6c 65 54 69 6d 65  ...::GetFileTime
4230: 28 20 68 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c  ( h, NULL, NULL,
4240: 20 26 66 74 20 29 3b 0d 0a 09 3a 3a 46 69 6c 65   &ft );...::File
4250: 54 69 6d 65 54 6f 53 79 73 74 65 6d 54 69 6d 65  TimeToSystemTime
4260: 28 20 26 66 74 2c 20 26 53 74 4c 6f 63 61 6c 20  ( &ft, &StLocal 
4270: 29 3b 0d 0a 09 3a 3a 43 6c 6f 73 65 48 61 6e 64  );...::CloseHand
4280: 6c 65 28 20 68 20 29 3b 0d 0a 0d 0a 09 2f 2f 20  le( h );.....// 
4290: 57 65 62 82 cc 95 fb 82 cc 82 cc 93 fa 95 74 82  Web...........t.
42a0: f0 8e e6 93 be 0d 0a 09 63 6f 6e 73 74 20 63 68  ........const ch
42b0: 61 72 2a 20 70 20 3d 20 64 74 74 6d 3b 0d 0a 09  ar* p = dttm;...
42c0: 53 59 53 54 45 4d 54 49 4d 45 20 53 74 57 65 62  SYSTEMTIME StWeb
42d0: 20 3d 20 53 74 4c 6f 63 61 6c 3b 0d 0a 09 66 6f   = StLocal;...fo
42e0: 72 28 20 53 74 57 65 62 2e 77 59 65 61 72 3d 30  r( StWeb.wYear=0
42f0: 3b 20 2a 70 20 26 26 20 2a 70 21 3d 27 2f 27 3b  ; *p && *p!='/';
4300: 20 2b 2b 70 20 29 0d 0a 09 09 53 74 57 65 62 2e   ++p )....StWeb.
4310: 77 59 65 61 72 20 3d 20 53 74 57 65 62 2e 77 59  wYear = StWeb.wY
4320: 65 61 72 2a 31 30 20 2b 20 28 2a 70 2d 27 30 27  ear*10 + (*p-'0'
4330: 29 3b 0d 0a 09 69 66 28 2a 70 29 2b 2b 70 3b 0d  );...if(*p)++p;.
4340: 0a 09 66 6f 72 28 20 53 74 57 65 62 2e 77 4d 6f  ..for( StWeb.wMo
4350: 6e 74 68 3d 30 3b 20 2a 70 20 26 26 20 2a 70 21  nth=0; *p && *p!
4360: 3d 27 2f 27 3b 20 2b 2b 70 20 29 0d 0a 09 09 53  ='/'; ++p )....S
4370: 74 57 65 62 2e 77 4d 6f 6e 74 68 20 3d 20 53 74  tWeb.wMonth = St
4380: 57 65 62 2e 77 4d 6f 6e 74 68 2a 31 30 20 2b 20  Web.wMonth*10 + 
4390: 28 2a 70 2d 27 30 27 29 3b 0d 0a 09 69 66 28 2a  (*p-'0');...if(*
43a0: 70 29 2b 2b 70 3b 0d 0a 09 66 6f 72 28 20 53 74  p)++p;...for( St
43b0: 57 65 62 2e 77 44 61 79 3d 30 3b 20 2a 70 20 26  Web.wDay=0; *p &
43c0: 26 20 2a 70 21 3d 27 20 27 3b 20 2b 2b 70 20 29  & *p!=' '; ++p )
43d0: 0d 0a 09 09 53 74 57 65 62 2e 77 44 61 79 20 3d  ....StWeb.wDay =
43e0: 20 53 74 57 65 62 2e 77 44 61 79 2a 31 30 20 2b   StWeb.wDay*10 +
43f0: 20 28 2a 70 2d 27 30 27 29 3b 0d 0a 0d 0a 09 2f   (*p-'0');...../
4400: 2f 20 57 65 62 82 cc 95 fb 82 aa 82 50 8f 54 8a  / Web.......P.T.
4410: d4 88 c8 8f e3 90 56 82 b5 82 af 82 ea 82 ce 8d  ......V.........
4420: 58 90 56 82 c6 82 a9 82 bb 82 f1 82 c8 8a b4 82  X.V.............
4430: b6 0d 0a 0d 0a 09 69 66 28 20 28 53 74 4c 6f 63  ......if( (StLoc
4440: 61 6c 2e 77 59 65 61 72 3e 20 53 74 57 65 62 2e  al.wYear> StWeb.
4450: 77 59 65 61 72 29 0d 0a 09 20 7c 7c 20 28 53 74  wYear)... || (St
4460: 4c 6f 63 61 6c 2e 77 59 65 61 72 3d 3d 53 74 57  Local.wYear==StW
4470: 65 62 2e 77 59 65 61 72 20 26 26 20 53 74 4c 6f  eb.wYear && StLo
4480: 63 61 6c 2e 77 4d 6f 6e 74 68 3e 53 74 57 65 62  cal.wMonth>StWeb
4490: 2e 77 4d 6f 6e 74 68 29 0d 0a 09 20 7c 7c 20 28  .wMonth)... || (
44a0: 53 74 4c 6f 63 61 6c 2e 77 59 65 61 72 3d 3d 53  StLocal.wYear==S
44b0: 74 57 65 62 2e 77 59 65 61 72 20 26 26 20 53 74  tWeb.wYear && St
44c0: 4c 6f 63 61 6c 2e 77 4d 6f 6e 74 68 3d 3d 53 74  Local.wMonth==St
44d0: 57 65 62 2e 77 4d 6f 6e 74 68 20 26 26 20 53 74  Web.wMonth && St
44e0: 4c 6f 63 61 6c 2e 77 44 61 79 3e 3d 53 74 57 65  Local.wDay>=StWe
44f0: 62 2e 77 44 61 79 29 20 29 0d 0a 09 09 72 65 74  b.wDay) )....ret
4500: 75 72 6e 20 66 61 6c 73 65 3b 20 2f 2f 20 83 8d  urn false; // ..
4510: 81 5b 83 4a 83 8b 82 cc 95 fb 82 aa 90 56 82 b5  .[.J.........V..
4520: 82 a2 82 cc 82 c5 8d 58 90 56 82 b5 82 c8 82 a2  .......X.V......
4530: 0d 0a 0d 0a 09 69 66 28 20 53 74 4c 6f 63 61 6c  .....if( StLocal
4540: 2e 77 59 65 61 72 2b 32 20 3c 20 53 74 57 65 62  .wYear+2 < StWeb
4550: 2e 77 59 65 61 72 20 29 0d 0a 09 09 72 65 74 75  .wYear )....retu
4560: 72 6e 20 74 72 75 65 3b 20 2f 2f 20 8a 6d 8e c0  rn true; // .m..
4570: 82 c9 82 50 94 4e 88 c8 8f e3 90 56 82 b5 82 a2  ...P.N.....V....
4580: 82 cc 82 c5 8d 58 90 56 0d 0a 09 69 66 28 20 53  .....X.V...if( S
4590: 74 4c 6f 63 61 6c 2e 77 59 65 61 72 2b 31 20 3d  tLocal.wYear+1 =
45a0: 3d 20 53 74 57 65 62 2e 77 59 65 61 72 20 29 0d  = StWeb.wYear ).
45b0: 0a 09 09 53 74 57 65 62 2e 77 4d 6f 6e 74 68 20  ...StWeb.wMonth 
45c0: 2b 3d 20 31 32 3b 0d 0a 0d 0a 09 2f 2f 20 63 66  += 12;.....// cf
45d0: 67 2d 3e 45 78 70 69 72 65 20 93 fa 88 c8 8f e3  g->Expire ......
45e0: 90 56 82 b5 82 af 82 ea 82 ce 8d 58 90 56 0d 0a  .V.........X.V..
45f0: 09 53 74 57 65 62 2e 77 44 61 79 20 2b 3d 20 33  .StWeb.wDay += 3
4600: 30 20 2a 20 28 53 74 57 65 62 2e 77 4d 6f 6e 74  0 * (StWeb.wMont
4610: 68 20 2d 20 53 74 4c 6f 63 61 6c 2e 77 4d 6f 6e  h - StLocal.wMon
4620: 74 68 29 3b 0d 0a 09 72 65 74 75 72 6e 20 28 20  th);...return ( 
4630: 53 74 4c 6f 63 61 6c 2e 77 44 61 79 2b 63 66 67  StLocal.wDay+cfg
4640: 2d 3e 45 78 70 69 72 65 20 3c 20 53 74 57 65 62  ->Expire < StWeb
4650: 2e 77 44 61 79 20 29 3b 0d 0a 7d 0d 0a 0d 0a 2f  .wDay );..}..../
4660: 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /---------------
4670: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4680: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4690: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
46a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
46b0: 0d 0a 2f 2f 20 83 6f 81 5b 83 57 83 87 83 93 83  ..// .o.[.W.....
46c0: 60 83 46 83 62 83 4e 20 66 6f 72 20 63 61 6c 64  `.F.b.N for cald
46d0: 69 78 2f 31 2e 31 35 20 6f 72 20 6f 6c 64 65 72  ix/1.15 or older
46e0: 20 2b 20 63 61 6c 64 69 78 46 20 66 69 78 0d 0a   + caldixF fix..
46f0: 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  //--------------
4700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4710: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4720: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4740: 2d 0d 0a 2f 2a 0d 0a 62 6f 6f 6c 20 44 4c 4c 49  -../*..bool DLLI
4750: 6e 66 6f 3a 3a 56 65 72 73 69 6f 6e 43 68 65 63  nfo::VersionChec
4760: 6b 4c 6f 67 69 63 28 0d 0a 09 63 6f 6e 73 74 20  kLogic(...const 
4770: 6b 69 53 74 72 26 20 64 6c 6c 4e 61 6d 65 2c 0d  kiStr& dllName,.
4780: 0a 09 63 6f 6e 73 74 20 6b 69 53 74 72 26 20 68  ..const kiStr& h
4790: 74 6d 6c 56 65 72 2c 0d 0a 09 69 6e 74 20 76 65  tmlVer,...int ve
47a0: 72 2c 20 69 6e 74 20 73 75 62 20 29 0d 0a 7b 0d  r, int sub )..{.
47b0: 0a 09 2f 2f 20 95 b6 8e 9a 97 f1 82 c9 95 cf 8a  ..// ...........
47c0: b7 0d 0a 09 63 68 61 72 20 76 65 72 73 74 72 5b  ....char verstr[
47d0: 31 30 30 5d 3b 0d 0a 09 69 66 28 20 64 6c 6c 4e  100];...if( dllN
47e0: 61 6d 65 3d 3d 22 55 6e 69 6d 70 33 32 2e 64 6c  ame=="Unimp32.dl
47f0: 6c 22 20 29 0d 0a 09 09 69 66 28 20 73 75 62 3d  l" )....if( sub=
4800: 3d 30 20 29 0d 0a 09 09 09 3a 3a 77 73 70 72 69  =0 ).....::wspri
4810: 6e 74 66 28 20 76 65 72 73 74 72 2c 20 22 25 64  ntf( verstr, "%d
4820: 2e 25 30 32 64 22 2c 20 76 65 72 2f 31 30 30 2c  .%02d", ver/100,
4830: 20 76 65 72 25 31 30 30 20 29 3b 0d 0a 09 09 65   ver%100 );....e
4840: 6c 73 65 20 69 66 28 20 73 75 62 20 3e 3d 20 31  lse if( sub >= 1
4850: 30 30 20 29 0d 0a 09 09 09 3a 3a 77 73 70 72 69  00 ).....::wspri
4860: 6e 74 66 28 20 76 65 72 73 74 72 2c 20 22 25 64  ntf( verstr, "%d
4870: 2e 25 30 32 64 25 63 22 2c 20 76 65 72 2f 31 30  .%02d%c", ver/10
4880: 30 2c 20 76 65 72 25 31 30 30 2c 20 73 75 62 2f  0, ver%100, sub/
4890: 31 30 30 2b 27 61 27 2d 31 20 29 3b 0d 0a 09 09  100+'a'-1 );....
48a0: 65 6c 73 65 0d 0a 09 09 09 3a 3a 77 73 70 72 69  else.....::wspri
48b0: 6e 74 66 28 20 76 65 72 73 74 72 2c 20 22 25 64  ntf( verstr, "%d
48c0: 2e 25 30 32 64 25 63 22 2c 20 76 65 72 2f 31 30  .%02d%c", ver/10
48d0: 30 2c 20 76 65 72 25 31 30 30 2c 20 73 75 62 2b  0, ver%100, sub+
48e0: 27 61 27 2d 31 20 29 3b 0d 0a 09 65 6c 73 65 20  'a'-1 );...else 
48f0: 69 66 28 20 64 6c 6c 4e 61 6d 65 3d 3d 22 37 2d  if( dllName=="7-
4900: 7a 69 70 33 32 2e 64 6c 6c 22 20 29 20 2f 2f 20  zip32.dll" ) // 
4910: 37 2d 7a 69 70 82 be 82 af 82 cd 96 b3 8f f0 8c  7-zip...........
4920: 8f 82 c5 53 75 62 56 65 72 73 69 6f 6e 82 e0 90  ...SubVersion...
4930: 94 92 6c 82 c5 93 fc 82 ea 82 e9 0d 0a 09 09 3a  ..l............:
4940: 3a 77 73 70 72 69 6e 74 66 28 20 76 65 72 73 74  :wsprintf( verst
4950: 72 2c 20 22 25 64 2e 25 30 32 64 2e 25 30 32 64  r, "%d.%02d.%02d
4960: 2e 25 30 32 64 22 2c 20 76 65 72 2f 31 30 30 2c  .%02d", ver/100,
4970: 20 76 65 72 25 31 30 30 2c 20 73 75 62 2f 31 30   ver%100, sub/10
4980: 30 2c 73 75 62 25 31 30 30 20 29 3b 0d 0a 09 65  0,sub%100 );...e
4990: 6c 73 65 20 69 66 28 20 73 75 62 20 3c 20 31 30  lse if( sub < 10
49a0: 30 20 29 0d 0a 09 09 3a 3a 77 73 70 72 69 6e 74  0 )....::wsprint
49b0: 66 28 20 76 65 72 73 74 72 2c 20 22 25 64 2e 25  f( verstr, "%d.%
49c0: 30 32 64 22 2c 20 76 65 72 2f 31 30 30 2c 20 76  02d", ver/100, v
49d0: 65 72 25 31 30 30 20 29 3b 0d 0a 09 65 6c 73 65  er%100 );...else
49e0: 0d 0a 09 09 3a 3a 77 73 70 72 69 6e 74 66 28 20  ....::wsprintf( 
49f0: 76 65 72 73 74 72 2c 20 22 25 64 2e 25 30 32 64  verstr, "%d.%02d
4a00: 25 63 22 2c 20 76 65 72 2f 31 30 30 2c 20 76 65  %c", ver/100, ve
4a10: 72 25 31 30 30 2c 20 73 75 62 2f 31 30 30 2b 27  r%100, sub/100+'
4a20: 61 27 2d 31 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 94  a'-1 );.....// .
4a30: e4 8a 72 81 69 68 74 6d 6c 56 65 72 82 cc 95 fb  ..r.ihtmlVer....
4a40: 82 aa 56 65 72 2e 73 75 62 56 65 72 82 e6 82 e8  ..Ver.subVer....
4a50: 90 56 82 b5 82 af 82 ea 82 ce 74 72 75 65 81 6a  .V........true.j
4a60: 0d 0a 09 72 65 74 75 72 6e 20 0d 0a 09 09 28 43  ...return ....(C
4a70: 53 54 52 5f 47 52 45 41 54 45 52 5f 54 48 41 4e  STR_GREATER_THAN
4a80: 20 3d 3d 20 3a 3a 43 6f 6d 70 61 72 65 53 74 72   == ::CompareStr
4a90: 69 6e 67 28 4c 4f 43 41 4c 45 5f 55 53 45 52 5f  ing(LOCALE_USER_
4aa0: 44 45 46 41 55 4c 54 2c 53 4f 52 54 5f 53 54 52  DEFAULT,SORT_STR
4ab0: 49 4e 47 53 4f 52 54 2c 76 65 72 73 2c 2d 31 2c  INGSORT,vers,-1,
4ac0: 76 65 72 73 74 72 2c 2d 31 29 29 3b 0d 0a 7d 0d  verstr,-1));..}.
4ad0: 0a 2a 2f 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d  .*/..//---------
4ae0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4af0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4b00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4b10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4b20: 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 83 6f 81 5b 83  ------..// .o.[.
4b30: 57 83 87 83 93 83 60 83 46 83 62 83 4e 20 66 6f  W.....`.F.b.N fo
4b40: 72 20 63 61 6c 64 69 78 2f 31 2e 31 37 20 6f 72  r caldix/1.17 or
4b50: 20 6e 65 77 65 72 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d   newer..//------
4b60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4b70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4b80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4b90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
4ba0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 63 6f 6e  ---------....con
4bb0: 73 74 20 63 68 61 72 2a 20 66 69 6e 64 5f 66 69  st char* find_fi
4bc0: 72 73 74 5f 6e 6f 6e 5f 64 69 67 69 74 28 20 63  rst_non_digit( c
4bd0: 6f 6e 73 74 20 63 68 61 72 2a 20 70 20 29 0d 0a  onst char* p )..
4be0: 7b 0d 0a 09 77 68 69 6c 65 28 20 27 30 27 3c 3d  {...while( '0'<=
4bf0: 2a 70 20 26 26 20 2a 70 3c 3d 27 39 27 20 29 20  *p && *p<='9' ) 
4c00: 2b 2b 70 3b 0d 0a 09 72 65 74 75 72 6e 20 70 3b  ++p;...return p;
4c10: 0d 0a 7d 0d 0a 0d 0a 62 6f 6f 6c 20 44 4c 4c 49  ..}....bool DLLI
4c20: 6e 66 6f 3a 3a 56 65 72 73 69 6f 6e 43 68 65 63  nfo::VersionChec
4c30: 6b 4c 6f 67 69 63 28 0d 0a 09 63 6f 6e 73 74 20  kLogic(...const 
4c40: 6b 69 53 74 72 26 20 64 6c 6c 4e 61 6d 65 2c 20  kiStr& dllName, 
4c50: 20 20 20 2f 2f 20 44 4c 4c 96 bc 0d 0a 09 63 6f     // DLL.....co
4c60: 6e 73 74 20 6b 69 53 74 72 26 20 68 74 6d 56 65  nst kiStr& htmVe
4c70: 72 53 74 72 2c 20 20 2f 2f 20 48 54 4d 4c 8f e3  rStr,  // HTML..
4c80: 82 cc 83 6f 81 5b 83 57 83 87 83 93 95 b6 8e 9a  ...o.[.W........
4c90: 97 f1 0d 0a 09 69 6e 74 20 6c 6f 63 56 65 72 2c  .....int locVer,
4ca0: 20 69 6e 74 20 6c 6f 63 53 75 62 20 29 20 2f 2f   int locSub ) //
4cb0: 20 83 8d 81 5b 83 4a 83 8b 44 4c 4c 82 cc 83 6f   ...[.J..DLL...o
4cc0: 81 5b 83 57 83 87 83 93 0d 0a 7b 0d 0a 09 63 6f  .[.W......{...co
4cd0: 6e 73 74 20 63 68 61 72 2a 20 76 73 20 3d 20 68  nst char* vs = h
4ce0: 74 6d 56 65 72 53 74 72 3b 0d 0a 09 69 66 28 20  tmVerStr;...if( 
4cf0: 64 6c 6c 4e 61 6d 65 20 3d 3d 20 22 55 6e 69 6d  dllName == "Unim
4d00: 70 33 32 2e 64 6c 6c 22 20 26 26 20 6c 6f 63 53  p32.dll" && locS
4d10: 75 62 3c 31 30 30 20 29 0d 0a 09 09 6c 6f 63 53  ub<100 )....locS
4d20: 75 62 20 2a 3d 20 31 30 30 3b 0d 0a 0d 0a 09 2f  ub *= 100;...../
4d30: 2f 20 83 6f 81 5b 83 57 83 87 83 93 95 b6 8e 9a  / .o.[.W........
4d40: 97 f1 82 f0 89 f0 90 cd 81 42 88 c8 89 ba 82 cc  .........B......
4d50: 82 53 82 c2 82 cc 8c 60 8e ae 82 f0 94 46 8e af  .S.....`.....F..
4d60: 82 b7 82 e9 0d 0a 09 2f 2f 28 22 25 64 2e 25 64  .......//("%d.%d
4d70: 2e 25 64 2e 25 64 22 2c 20 76 65 72 2f 31 30 30  .%d.%d", ver/100
4d80: 2c 20 76 65 72 25 31 30 30 2c 20 73 75 62 2f 31  , ver%100, sub/1
4d90: 30 30 2c 20 73 75 62 25 31 30 30 29 0d 0a 09 2f  00, sub%100).../
4da0: 2f 28 22 25 64 2e 25 64 22 2c 20 20 20 20 20 20  /("%d.%d",      
4db0: 20 76 65 72 2f 31 30 30 2c 20 76 65 72 25 31 30   ver/100, ver%10
4dc0: 30 29 20 26 26 20 73 75 62 3c 31 30 30 0d 0a 09  0) && sub<100...
4dd0: 2f 2f 28 22 25 64 2e 25 64 25 63 22 2c 20 20 20  //("%d.%d%c",   
4de0: 20 20 76 65 72 2f 31 30 30 2c 20 76 65 72 25 31    ver/100, ver%1
4df0: 30 30 2c 20 73 75 62 2f 31 30 30 2b 27 61 27 2d  00, sub/100+'a'-
4e00: 31 29 0d 0a 09 2f 2f 28 22 25 64 2e 25 64 2e 25  1)...//("%d.%d.%
4e10: 64 22 2c 20 20 20 20 76 65 72 2f 31 30 30 2c 20  d",    ver/100, 
4e20: 76 65 72 25 31 30 30 2c 20 73 75 62 29 0d 0a 0d  ver%100, sub)...
4e30: 0a 09 69 6e 74 20 68 74 6d 56 65 72 3d 30 2c 20  ..int htmVer=0, 
4e40: 68 74 6d 53 75 62 3d 30 3b 0d 0a 09 7b 0d 0a 09  htmSub=0;...{...
4e50: 09 2f 2f 20 5b 25 64 5d 5b 2e 5d 0d 0a 09 09 63  .// [%d][.]....c
4e60: 6f 6e 73 74 20 69 6e 74 20 64 31 20 3d 20 61 74  onst int d1 = at
4e70: 6f 69 28 76 73 29 3b 0d 0a 09 09 76 73 20 3d 20  oi(vs);....vs = 
4e80: 66 69 6e 64 5f 66 69 72 73 74 5f 6e 6f 6e 5f 64  find_first_non_d
4e90: 69 67 69 74 28 76 73 29 3b 0d 0a 09 09 69 66 28  igit(vs);....if(
4ea0: 20 2a 76 73 21 3d 27 2e 27 20 29 20 72 65 74 75   *vs!='.' ) retu
4eb0: 72 6e 20 66 61 6c 73 65 3b 20 2b 2b 76 73 3b 0d  rn false; ++vs;.
4ec0: 0a 09 09 2f 2f 20 5b 25 64 5d 0d 0a 09 09 63 6f  ...// [%d]....co
4ed0: 6e 73 74 20 69 6e 74 20 64 32 20 3d 20 61 74 6f  nst int d2 = ato
4ee0: 69 28 76 73 29 3b 0d 0a 09 09 63 6f 6e 73 74 20  i(vs);....const 
4ef0: 63 68 61 72 2a 20 76 73 32 20 3d 20 66 69 6e 64  char* vs2 = find
4f00: 5f 66 69 72 73 74 5f 6e 6f 6e 5f 64 69 67 69 74  _first_non_digit
4f10: 28 76 73 29 3b 0d 0a 09 09 69 66 28 20 76 73 32  (vs);....if( vs2
4f20: 2d 76 73 3d 3d 31 20 26 26 20 64 6c 6c 4e 61 6d  -vs==1 && dllNam
4f30: 65 3d 3d 22 5a 69 70 33 32 2e 64 6c 6c 22 20 29  e=="Zip32.dll" )
4f40: 20 2f 2f 20 61 64 68 6f 63 91 ce 8f 88 0d 0a 09   // adhoc.......
4f50: 09 09 68 74 6d 56 65 72 20 3d 20 64 31 2a 31 30  ..htmVer = d1*10
4f60: 30 20 2b 20 64 32 2a 31 30 3b 0d 0a 09 09 65 6c  0 + d2*10;....el
4f70: 73 65 0d 0a 09 09 09 68 74 6d 56 65 72 20 3d 20  se.....htmVer = 
4f80: 64 31 2a 31 30 30 20 2b 20 64 32 3b 0d 0a 09 09  d1*100 + d2;....
4f90: 76 73 20 3d 20 76 73 32 3b 0d 0a 09 09 69 66 28  vs = vs2;....if(
4fa0: 20 2a 76 73 3d 3d 27 2e 27 20 29 20 2f 2f 20 5b   *vs=='.' ) // [
4fb0: 2e 5d 0d 0a 09 09 7b 0d 0a 09 09 09 2b 2b 76 73  .]....{.....++vs
4fc0: 3b 0d 0a 09 09 09 2f 2f 20 5b 25 64 5d 0d 0a 09  ;.....// [%d]...
4fd0: 09 09 63 6f 6e 73 74 20 69 6e 74 20 64 33 20 3d  ..const int d3 =
4fe0: 20 61 74 6f 69 28 76 73 29 3b 0d 0a 09 09 09 76   atoi(vs);.....v
4ff0: 73 20 3d 20 66 69 6e 64 5f 66 69 72 73 74 5f 6e  s = find_first_n
5000: 6f 6e 5f 64 69 67 69 74 28 76 73 29 3b 0d 0a 09  on_digit(vs);...
5010: 09 09 69 66 28 20 2a 76 73 3d 3d 27 2e 27 20 29  ..if( *vs=='.' )
5020: 20 2f 2f 20 5b 2e 5d 0d 0a 09 09 09 7b 0d 0a 09   // [.].....{...
5030: 09 09 09 2b 2b 76 73 3b 0d 0a 09 09 09 09 2f 2f  ...++vs;......//
5040: 20 5b 25 64 5d 0d 0a 09 09 09 09 63 6f 6e 73 74   [%d]......const
5050: 20 69 6e 74 20 64 34 20 3d 20 61 74 6f 69 28 76   int d4 = atoi(v
5060: 73 29 3b 0d 0a 09 09 09 09 68 74 6d 53 75 62 20  s);......htmSub 
5070: 3d 20 64 33 2a 31 30 30 20 2b 20 64 34 3b 0d 0a  = d3*100 + d4;..
5080: 09 09 09 7d 0d 0a 09 09 09 65 6c 73 65 0d 0a 09  ...}.....else...
5090: 09 09 09 68 74 6d 53 75 62 20 3d 20 64 33 3b 0d  ...htmSub = d3;.
50a0: 0a 09 09 7d 0d 0a 09 09 65 6c 73 65 20 69 66 28  ...}....else if(
50b0: 20 27 61 27 3c 3d 2a 76 73 20 26 26 20 2a 76 73   'a'<=*vs && *vs
50c0: 3c 3d 27 7a 27 20 29 20 2f 2f 20 5b 61 2d 7a 5d  <='z' ) // [a-z]
50d0: 0d 0a 09 09 09 68 74 6d 53 75 62 20 3d 20 28 2a  .....htmSub = (*
50e0: 76 73 2d 27 61 27 2b 31 29 20 2a 20 31 30 30 3b  vs-'a'+1) * 100;
50f0: 0d 0a 09 09 65 6c 73 65 20 69 66 28 20 27 41 27  ....else if( 'A'
5100: 3c 3d 2a 76 73 20 26 26 20 2a 76 73 3c 3d 27 5a  <=*vs && *vs<='Z
5110: 27 20 29 20 2f 2f 20 5b 41 2d 5a 5d 0d 0a 09 09  ' ) // [A-Z]....
5120: 09 68 74 6d 53 75 62 20 3d 20 28 2a 76 73 2d 27  .htmSub = (*vs-'
5130: 41 27 2b 31 29 20 2a 20 31 30 30 3b 0d 0a 09 7d  A'+1) * 100;...}
5140: 0d 0a 09 72 65 74 75 72 6e 20 28 6c 6f 63 56 65  ...return (locVe
5150: 72 20 3c 20 68 74 6d 56 65 72 29 20 7c 7c 20 28  r < htmVer) || (
5160: 6c 6f 63 56 65 72 3d 3d 68 74 6d 56 65 72 20 26  locVer==htmVer &
5170: 26 20 6c 6f 63 53 75 62 3c 68 74 6d 53 75 62 29  & locSub<htmSub)
5180: 3b 0d 0a 7d 0d 0a 0d 0a 62 6f 6f 6c 20 44 4c 4c  ;..}....bool DLL
5190: 49 6e 66 6f 3a 3a 6e 65 65 64 54 6f 55 70 64 61  Info::needToUpda
51a0: 74 65 28 20 6b 69 50 61 74 68 26 20 64 6c 6c 64  te( kiPath& dlld
51b0: 69 72 20 29 0d 0a 7b 0d 0a 09 2f 2f 20 8f ee 95  ir )..{...// ...
51c0: f1 8e e6 93 be 82 c5 82 ab 82 c4 82 a2 82 c8 82  ................
51d0: a9 82 c1 82 bd 8f ea 8d 87 82 cd 8d 58 90 56 82  ............X.V.
51e0: b5 82 c8 82 a2 0d 0a 09 69 66 28 20 76 65 72 73  ........if( vers
51f0: 2e 6c 65 6e 28 29 20 3d 3d 20 30 20 29 0d 0a 09  .len() == 0 )...
5200: 09 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a  .return false;..
5210: 0d 0a 09 2f 2f 20 91 ce 8f db 44 4c 4c 82 cc 83  ...// ....DLL...
5220: 74 83 8b 83 70 83 58 0d 0a 09 6b 69 50 61 74 68  t...p.X...kiPath
5230: 20 64 6c 6c 50 61 74 68 28 20 64 6c 6c 64 69 72   dllPath( dlldir
5240: 20 29 3b 0d 0a 09 64 6c 6c 50 61 74 68 20 2b 3d   );...dllPath +=
5250: 20 6e 61 6d 65 3b 0d 0a 0d 0a 09 2f 2f 20 44 4c   name;.....// DL
5260: 4c 82 aa 91 b6 8d dd 82 b5 82 c8 82 a9 82 c1 82  L...............
5270: bd 8f ea 8d 87 82 cd 90 56 82 b5 82 ad 83 43 83  ........V.....C.
5280: 93 83 58 83 67 81 5b 83 8b 0d 0a 09 69 66 28 20  ..X.g.[.....if( 
5290: 21 6b 69 53 55 74 69 6c 3a 3a 65 78 69 73 74 28  !kiSUtil::exist(
52a0: 20 64 6c 6c 50 61 74 68 20 29 20 29 0d 0a 09 7b   dllPath ) )...{
52b0: 0d 0a 09 09 73 74 61 74 2e 6c 6f 61 64 52 73 72  ....stat.loadRsr
52c0: 63 28 20 49 44 53 5f 4e 45 57 49 4e 53 54 20 29  c( IDS_NEWINST )
52d0: 3b 0d 0a 09 09 72 65 74 75 72 6e 20 74 72 75 65  ;....return true
52e0: 3b 0d 0a 09 7d 0d 0a 0d 0a 09 2f 2f 20 91 b6 8d  ;...}.....// ...
52f0: dd 82 b5 82 bd 8f ea 8d 87 81 63 0d 0a 09 62 6f  ..........c...bo
5300: 6f 6c 20 75 70 64 61 74 61 62 6c 65 20 3d 20 66  ol updatable = f
5310: 61 6c 73 65 3b 0d 0a 0d 0a 09 69 66 28 20 6e 61  alse;.....if( na
5320: 6d 65 3d 3d 22 53 66 78 33 32 67 75 69 2e 64 61  me=="Sfx32gui.da
5330: 74 22 20 29 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 93  t" )...{....// .
5340: c1 95 ca 8f 88 97 9d 82 50 81 46 53 66 78 33 32  ........P.FSfx32
5350: 67 75 69 2e 64 61 74 82 cc 8f ea 8d 87 82 cd 93  gui.dat.........
5360: fa 95 74 83 60 83 46 83 62 83 4e 0d 0a 09 09 75  ..t.`.F.b.N....u
5370: 70 64 61 74 61 62 6c 65 20 3d 20 43 68 65 63 6b  pdatable = Check
5380: 44 61 74 65 54 69 6d 65 28 20 64 6c 6c 50 61 74  DateTime( dllPat
5390: 68 20 29 3b 0d 0a 09 7d 0d 0a 09 65 6c 73 65 0d  h );...}...else.
53a0: 0a 09 7b 0d 0a 09 09 2f 2f 20 82 bb 82 ea 88 c8  ..{....// ......
53b0: 8a 4f 82 cd 81 41 83 6f 81 5b 83 57 83 87 83 93  .O...A.o.[.W....
53c0: 94 d4 8d 86 82 c5 83 60 83 46 83 62 83 4e 0d 0a  .......`.F.b.N..
53d0: 09 09 57 4f 52 44 20 76 65 72 3d 31 2c 20 73 75  ..WORD ver=1, su
53e0: 62 3d 30 3b 0d 0a 09 09 69 66 28 20 6e 61 6d 65  b=0;....if( name
53f0: 20 3d 3d 20 22 5a 69 70 33 32 2e 64 6c 6c 22 20   == "Zip32.dll" 
5400: 29 0d 0a 09 09 7b 0d 0a 09 09 09 76 65 72 20 3d  )....{.....ver =
5410: 20 5a 69 70 33 32 44 4c 4c 47 65 74 56 65 72 73   Zip32DLLGetVers
5420: 69 6f 6e 28 20 64 6c 6c 50 61 74 68 20 29 3b 0d  ion( dllPath );.
5430: 0a 09 09 7d 0d 0a 09 09 65 6c 73 65 20 69 66 28  ...}....else if(
5440: 20 6e 61 6d 65 20 21 3d 20 22 53 66 78 33 32 67   name != "Sfx32g
5450: 75 69 2e 64 61 74 22 20 29 0d 0a 09 09 7b 0d 0a  ui.dat" )....{..
5460: 09 09 09 6b 69 41 72 63 44 4c 4c 52 61 77 20 64  ...kiArcDLLRaw d
5470: 6c 6c 28 20 64 6c 6c 50 61 74 68 20 29 3b 0d 0a  ll( dllPath );..
5480: 09 09 09 76 65 72 20 3d 20 64 6c 6c 2e 67 65 74  ...ver = dll.get
5490: 56 65 72 28 29 3b 0d 0a 09 09 09 73 75 62 20 3d  Ver();.....sub =
54a0: 20 64 6c 6c 2e 67 65 74 56 65 72 53 75 62 28 29   dll.getVerSub()
54b0: 3b 0d 0a 09 09 09 69 66 28 20 6e 61 6d 65 3d 3d  ;.....if( name==
54c0: 22 55 6e 69 6d 70 33 32 2e 64 6c 6c 22 20 26 26  "Unimp32.dll" &&
54d0: 20 21 64 6c 6c 2e 69 73 56 65 72 53 75 62 41 76   !dll.isVerSubAv
54e0: 61 69 6c 28 29 20 29 0d 0a 09 09 09 09 76 65 72  ail() )......ver
54f0: 3d 36 2c 20 73 75 62 3d 30 3b 20 2f 2f 20 93 c1  =6, sub=0; // ..
5500: 8e ea 8f 88 97 9d 82 51 81 46 8c c3 82 a2 75 6e  .......Q.F....un
5510: 69 6d 70 82 cd 30 2e 30 2e 36 2e 30 82 c6 82 b5  imp..0.0.6.0....
5520: 82 c4 88 b5 82 a4 0d 0a 09 09 7d 0d 0a 0d 0a 09  ..........}.....
5530: 09 2f 2f 20 83 6f 81 5b 83 57 83 87 83 93 83 60  .// .o.[.W.....`
5540: 83 46 83 62 83 4e 82 f0 82 b1 82 b1 82 c5 8e c0  .F.b.N..........
5550: 8d 73 0d 0a 09 09 75 70 64 61 74 61 62 6c 65 20  .s....updatable 
5560: 3d 20 56 65 72 73 69 6f 6e 43 68 65 63 6b 4c 6f  = VersionCheckLo
5570: 67 69 63 28 20 6e 61 6d 65 2c 20 76 65 72 73 2c  gic( name, vers,
5580: 20 76 65 72 2c 20 73 75 62 20 29 3b 0d 0a 0d 0a   ver, sub );....
5590: 09 09 2f 2f 20 93 c1 8e ea 8f 88 97 9d 82 52 81  ..// .........R.
55a0: 46 55 6e 72 61 72 33 32 2e 64 6c 6c 82 c5 81 41  FUnrar32.dll...A
55b0: 88 e1 82 a2 82 aa 53 75 62 56 65 72 73 69 6f 6e  ......SubVersion
55c0: 82 be 82 af 82 cc 82 c6 82 ab 82 cd 93 fa 95 74  ...............t
55d0: 83 60 83 46 83 62 83 4e 0d 0a 09 09 69 66 28 20  .`.F.b.N....if( 
55e0: 75 70 64 61 74 61 62 6c 65 20 26 26 20 6e 61 6d  updatable && nam
55f0: 65 3d 3d 22 55 6e 72 61 72 33 32 2e 64 6c 6c 22  e=="Unrar32.dll"
5600: 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 63 68 61 72   )....{.....char
5610: 20 76 65 72 73 74 72 5b 31 30 30 5d 3b 0d 0a 09   verstr[100];...
5620: 09 09 3a 3a 77 73 70 72 69 6e 74 66 28 20 76 65  ..::wsprintf( ve
5630: 72 73 74 72 2c 20 22 25 64 2e 25 30 32 64 7a 22  rstr, "%d.%02dz"
5640: 2c 20 76 65 72 2f 31 30 30 2c 20 76 65 72 25 31  , ver/100, ver%1
5650: 30 30 20 29 3b 0d 0a 09 09 09 69 66 28 20 43 53  00 );.....if( CS
5660: 54 52 5f 47 52 45 41 54 45 52 5f 54 48 41 4e 20  TR_GREATER_THAN 
5670: 3d 3d 20 3a 3a 43 6f 6d 70 61 72 65 53 74 72 69  == ::CompareStri
5680: 6e 67 28 4c 4f 43 41 4c 45 5f 55 53 45 52 5f 44  ng(LOCALE_USER_D
5690: 45 46 41 55 4c 54 2c 53 4f 52 54 5f 53 54 52 49  EFAULT,SORT_STRI
56a0: 4e 47 53 4f 52 54 2c 76 65 72 73 74 72 2c 2d 31  NGSORT,verstr,-1
56b0: 2c 76 65 72 73 2c 2d 31 29 20 29 0d 0a 09 09 09  ,vers,-1) ).....
56c0: 09 75 70 64 61 74 61 62 6c 65 20 3d 20 43 68 65  .updatable = Che
56d0: 63 6b 44 61 74 65 54 69 6d 65 28 20 6b 69 50 61  ckDateTime( kiPa
56e0: 74 68 28 64 6c 6c 64 69 72 29 2b 3d 22 55 6e 72  th(dlldir)+="Unr
56f0: 61 72 2e 64 6c 6c 22 20 29 3b 0d 0a 09 09 7d 0d  ar.dll" );....}.
5700: 0a 09 7d 0d 0a 0d 0a 09 2f 2f 20 8d 58 90 56 89  ..}.....// .X.V.
5710: c2 94 5c 0d 0a 09 69 66 28 20 75 70 64 61 74 61  ..\...if( updata
5720: 62 6c 65 20 29 0d 0a 09 7b 0d 0a 09 09 63 68 61  ble )...{....cha
5730: 72 20 73 74 72 5b 31 30 30 5d 3b 0d 0a 09 09 3a  r str[100];....:
5740: 3a 77 73 70 72 69 6e 74 66 28 20 73 74 72 2c 20  :wsprintf( str, 
5750: 73 74 61 74 2e 6c 6f 61 64 52 73 72 63 28 20 49  stat.loadRsrc( I
5760: 44 53 5f 55 50 44 49 4e 53 54 20 29 2c 20 28 63  DS_UPDINST ), (c
5770: 6f 6e 73 74 20 63 68 61 72 2a 29 76 65 72 73 20  onst char*)vers 
5780: 29 3b 0d 0a 09 09 73 74 61 74 20 3d 20 73 74 72  );....stat = str
5790: 3b 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 6e 20 75  ;...}...return u
57a0: 70 64 61 74 61 62 6c 65 3b 0d 0a 7d 0d 0a 0d 0a  pdatable;..}....
57b0: 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ....//----------
57c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
57d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
57e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
57f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5800: 2d 2d 0d 0a 2f 2f 20 73 74 61 72 74 44 6c 67 20  --..// startDlg 
5810: 3a 20 8e a9 93 ae 7c 83 4a 83 58 83 5e 83 80 82  : ....|.J.X.^...
5820: cc 91 49 91 f0 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d  ..I....//-------
5830: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5840: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5850: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5860: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5870: 2d 2d 2d 2d 2d 0d 0a 0d 0a 63 6c 61 73 73 20 73  -----....class s
5880: 74 61 72 74 44 6c 67 20 3a 20 70 75 62 6c 69 63  tartDlg : public
5890: 20 6b 69 44 69 61 6c 6f 67 0d 0a 7b 0d 0a 70 75   kiDialog..{..pu
58a0: 62 6c 69 63 3a 0d 0a 09 73 74 61 72 74 44 6c 67  blic:...startDlg
58b0: 28 29 20 3a 20 6b 69 44 69 61 6c 6f 67 28 20 49  () : kiDialog( I
58c0: 44 44 5f 53 54 41 52 54 20 29 20 7b 7d 0d 0a 0d  DD_START ) {}...
58d0: 0a 70 72 69 76 61 74 65 3a 0d 0a 09 76 69 72 74  .private:...virt
58e0: 75 61 6c 20 42 4f 4f 4c 20 6f 6e 49 6e 69 74 28  ual BOOL onInit(
58f0: 29 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 93 f1 8f 64  )...{....// ...d
5900: 8b 4e 93 ae 8b d6 8e 7e 0d 0a 09 09 63 68 61 72  .N.....~....char
5910: 20 63 6c 73 5b 32 35 36 5d 2c 20 77 6e 64 5b 32   cls[256], wnd[2
5920: 35 36 5d 3b 0d 0a 09 09 3a 3a 47 65 74 43 6c 61  56];....::GetCla
5930: 73 73 4e 61 6d 65 28 20 20 68 77 6e 64 28 29 2c  ssName(  hwnd(),
5940: 20 63 6c 73 2c 20 73 69 7a 65 6f 66 28 63 6c 73   cls, sizeof(cls
5950: 29 2d 31 20 29 3b 0d 0a 09 09 3a 3a 47 65 74 57  )-1 );....::GetW
5960: 69 6e 64 6f 77 54 65 78 74 28 20 68 77 6e 64 28  indowText( hwnd(
5970: 29 2c 20 77 6e 64 2c 20 73 69 7a 65 6f 66 28 77  ), wnd, sizeof(w
5980: 6e 64 29 2d 31 20 29 3b 0d 0a 09 09 69 66 28 20  nd)-1 );....if( 
5990: 48 57 4e 44 20 68 20 3d 20 3a 3a 46 69 6e 64 57  HWND h = ::FindW
59a0: 69 6e 64 6f 77 28 63 6c 73 2c 77 6e 64 29 20 29  indow(cls,wnd) )
59b0: 0d 0a 09 09 09 69 66 28 20 68 21 3d 68 77 6e 64  .....if( h!=hwnd
59c0: 28 29 20 7c 7c 20 28 68 3d 3a 3a 46 69 6e 64 57  () || (h=::FindW
59d0: 69 6e 64 6f 77 45 78 28 4e 55 4c 4c 2c 68 2c 63  indowEx(NULL,h,c
59e0: 6c 73 2c 77 6e 64 29 29 20 29 0d 0a 09 09 09 7b  ls,wnd)) ).....{
59f0: 0d 0a 09 09 09 09 65 6e 64 28 20 49 44 43 41 4e  ......end( IDCAN
5a00: 43 45 4c 20 29 3b 0d 0a 09 09 09 09 73 65 74 46  CEL );......setF
5a10: 72 6f 6e 74 28 20 68 20 29 3b 0d 0a 09 09 09 09  ront( h );......
5a20: 72 65 74 75 72 6e 20 46 41 4c 53 45 3b 0d 0a 09  return FALSE;...
5a30: 09 09 7d 0d 0a 0d 0a 09 09 61 70 70 28 29 2d 3e  ..}......app()->
5a40: 73 65 74 4d 61 69 6e 57 6e 64 28 20 74 68 69 73  setMainWnd( this
5a50: 20 29 3b 0d 0a 09 09 55 49 4e 54 20 6d 64 20 3d   );....UINT md =
5a60: 20 28 63 66 67 2d 3e 41 75 74 6f 4d 6f 64 65 20   (cfg->AutoMode 
5a70: 3f 20 49 44 43 5f 57 4f 52 4b 54 59 50 45 31 20  ? IDC_WORKTYPE1 
5a80: 3a 20 49 44 43 5f 57 4f 52 4b 54 59 50 45 32 29  : IDC_WORKTYPE2)
5a90: 3b 0d 0a 09 09 73 65 6e 64 4d 73 67 54 6f 49 74  ;....sendMsgToIt
5aa0: 65 6d 28 20 6d 64 2c 20 42 4d 5f 53 45 54 43 48  em( md, BM_SETCH
5ab0: 45 43 4b 2c 20 42 53 54 5f 43 48 45 43 4b 45 44  ECK, BST_CHECKED
5ac0: 20 29 3b 0d 0a 09 09 72 65 74 75 72 6e 20 46 41   );....return FA
5ad0: 4c 53 45 3b 0d 0a 09 7d 0d 0a 0d 0a 09 76 69 72  LSE;...}.....vir
5ae0: 74 75 61 6c 20 62 6f 6f 6c 20 6f 6e 4f 4b 28 29  tual bool onOK()
5af0: 0d 0a 09 7b 0d 0a 09 09 63 66 67 2d 3e 41 75 74  ...{....cfg->Aut
5b00: 6f 4d 6f 64 65 20 3d 0d 0a 09 09 09 28 42 53 54  oMode =.....(BST
5b10: 5f 43 48 45 43 4b 45 44 20 3d 3d 20 73 65 6e 64  _CHECKED == send
5b20: 4d 73 67 54 6f 49 74 65 6d 28 20 49 44 43 5f 57  MsgToItem( IDC_W
5b30: 4f 52 4b 54 59 50 45 31 2c 20 42 4d 5f 47 45 54  ORKTYPE1, BM_GET
5b40: 43 48 45 43 4b 20 29 29 3b 0d 0a 09 09 72 65 74  CHECK ));....ret
5b50: 75 72 6e 20 74 72 75 65 3b 0d 0a 09 7d 0d 0a 7d  urn true;...}..}
5b60: 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d  ;........//-----
5b70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5b80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5b90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5ba0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5bb0: 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 63 75 73 74  -------..// cust
5bc0: 6f 6d 44 6c 67 20 3a 20 90 da 91 b1 90 e6 2f 83  omDlg : ....../.
5bd0: 43 83 93 83 58 83 67 81 5b 83 8b 90 e6 82 cc 91  C...X.g.[.......
5be0: 49 91 f0 20 83 76 83 8d 83 4c 83 56 7c 8f da 8d  I.. .v...L.V|...
5bf0: d7 82 d6 82 cc 95 aa 8a f2 0d 0a 2f 2f 2d 2d 2d  ...........//---
5c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5c10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5c20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5c30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
5c40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 63 6c 61  ---------....cla
5c50: 73 73 20 63 75 73 74 6f 6d 44 6c 67 20 3a 20 70  ss customDlg : p
5c60: 75 62 6c 69 63 20 6b 69 44 69 61 6c 6f 67 0d 0a  ublic kiDialog..
5c70: 7b 0d 0a 70 75 62 6c 69 63 3a 0d 0a 09 63 75 73  {..public:...cus
5c80: 74 6f 6d 44 6c 67 28 29 20 3a 20 6b 69 44 69 61  tomDlg() : kiDia
5c90: 6c 6f 67 28 20 49 44 44 5f 43 55 53 54 4f 4d 31  log( IDD_CUSTOM1
5ca0: 20 29 20 7b 7d 0d 0a 0d 0a 70 72 69 76 61 74 65   ) {}....private
5cb0: 3a 0d 0a 09 76 69 72 74 75 61 6c 20 42 4f 4f 4c  :...virtual BOOL
5cc0: 20 6f 6e 49 6e 69 74 28 29 0d 0a 09 7b 0d 0a 09   onInit()...{...
5cd0: 09 61 70 70 28 29 2d 3e 73 65 74 4d 61 69 6e 57  .app()->setMainW
5ce0: 6e 64 28 20 74 68 69 73 20 29 3b 0d 0a 09 09 73  nd( this );....s
5cf0: 65 6e 64 4d 73 67 54 6f 49 74 65 6d 28 20 49 44  endMsgToItem( ID
5d00: 43 5f 44 4c 4c 44 49 52 2c 20 57 4d 5f 53 45 54  C_DLLDIR, WM_SET
5d10: 54 45 58 54 2c 20 30 2c 20 28 4c 50 41 52 41 4d  TEXT, 0, (LPARAM
5d20: 29 28 63 6f 6e 73 74 20 63 68 61 72 2a 29 28 63  )(const char*)(c
5d30: 66 67 2d 3e 49 6e 73 74 61 6c 6c 54 6f 29 20 29  fg->InstallTo) )
5d40: 3b 0d 0a 09 09 73 65 6e 64 4d 73 67 54 6f 49 74  ;....sendMsgToIt
5d50: 65 6d 28 20 49 44 43 5f 43 4f 4e 4e 45 43 54 54  em( IDC_CONNECTT
5d60: 4f 31 2b 63 66 67 2d 3e 43 68 65 63 6b 53 65 72  O1+cfg->CheckSer
5d70: 76 65 72 2c 20 42 4d 5f 53 45 54 43 48 45 43 4b  ver, BM_SETCHECK
5d80: 2c 20 42 53 54 5f 43 48 45 43 4b 45 44 20 29 3b  , BST_CHECKED );
5d90: 0d 0a 09 09 72 65 74 75 72 6e 20 46 41 4c 53 45  ....return FALSE
5da0: 3b 0d 0a 09 7d 0d 0a 0d 0a 09 76 69 72 74 75 61  ;...}.....virtua
5db0: 6c 20 42 4f 4f 4c 20 43 41 4c 4c 42 41 43 4b 20  l BOOL CALLBACK 
5dc0: 70 72 6f 63 28 20 55 49 4e 54 20 6d 73 67 2c 20  proc( UINT msg, 
5dd0: 57 50 41 52 41 4d 20 77 70 2c 20 4c 50 41 52 41  WPARAM wp, LPARA
5de0: 4d 20 6c 70 20 29 0d 0a 09 7b 0d 0a 09 09 69 66  M lp )...{....if
5df0: 28 20 6d 73 67 3d 3d 57 4d 5f 43 4f 4d 4d 41 4e  ( msg==WM_COMMAN
5e00: 44 20 29 0d 0a 09 09 09 69 66 28 20 4c 4f 57 4f  D ).....if( LOWO
5e10: 52 44 28 77 70 29 3d 3d 49 44 43 5f 52 45 46 20  RD(wp)==IDC_REF 
5e20: 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 6b 69 53  ).....{......kiS
5e30: 55 74 69 6c 3a 3a 67 65 74 46 6f 6c 64 65 72 44  Util::getFolderD
5e40: 6c 67 4f 66 45 64 69 74 42 6f 78 28 20 69 74 65  lgOfEditBox( ite
5e50: 6d 28 49 44 43 5f 44 4c 4c 44 49 52 29 2c 20 68  m(IDC_DLLDIR), h
5e60: 77 6e 64 28 29 2c 20 4e 55 4c 4c 20 29 3b 0d 0a  wnd(), NULL );..
5e70: 09 09 09 09 72 65 74 75 72 6e 20 54 52 55 45 3b  ....return TRUE;
5e80: 0d 0a 09 09 09 7d 0d 0a 09 09 09 65 6c 73 65 20  .....}.....else 
5e90: 69 66 28 20 20 4c 4f 57 4f 52 44 28 77 70 29 3d  if(  LOWORD(wp)=
5ea0: 3d 49 44 43 5f 50 52 4f 58 59 20 29 0d 0a 09 09  =IDC_PROXY )....
5eb0: 09 7b 0d 0a 09 09 09 09 73 68 6f 77 28 20 70 72  .{......show( pr
5ec0: 6f 78 79 44 6c 67 28 29 20 29 3b 0d 0a 09 09 09  oxyDlg() );.....
5ed0: 09 72 65 74 75 72 6e 20 54 52 55 45 3b 0d 0a 09  .return TRUE;...
5ee0: 09 09 7d 0d 0a 09 09 09 65 6c 73 65 20 69 66 28  ..}.....else if(
5ef0: 20 20 4c 4f 57 4f 52 44 28 77 70 29 3d 3d 49 44    LOWORD(wp)==ID
5f00: 43 5f 44 45 54 41 49 4c 20 29 0d 0a 09 09 09 7b  C_DETAIL ).....{
5f10: 0d 0a 09 09 09 09 73 68 6f 77 28 20 64 65 74 61  ......show( deta
5f20: 69 6c 44 6c 67 28 29 20 29 3b 0d 0a 09 09 09 09  ilDlg() );......
5f30: 72 65 74 75 72 6e 20 54 52 55 45 3b 0d 0a 09 09  return TRUE;....
5f40: 09 7d 0d 0a 09 09 72 65 74 75 72 6e 20 46 41 4c  .}....return FAL
5f50: 53 45 3b 0d 0a 09 7d 0d 0a 0d 0a 09 76 69 72 74  SE;...}.....virt
5f60: 75 61 6c 20 62 6f 6f 6c 20 6f 6e 4f 4b 28 29 0d  ual bool onOK().
5f70: 0a 09 7b 0d 0a 09 09 63 68 61 72 20 73 74 72 5b  ..{....char str[
5f80: 4d 41 58 5f 50 41 54 48 5d 3b 0d 0a 09 09 73 65  MAX_PATH];....se
5f90: 6e 64 4d 73 67 54 6f 49 74 65 6d 28 20 49 44 43  ndMsgToItem( IDC
5fa0: 5f 44 4c 4c 44 49 52 2c 20 57 4d 5f 47 45 54 54  _DLLDIR, WM_GETT
5fb0: 45 58 54 2c 20 73 69 7a 65 6f 66 28 73 74 72 29  EXT, sizeof(str)
5fc0: 2d 31 2c 20 28 4c 50 41 52 41 4d 29 73 74 72 20  -1, (LPARAM)str 
5fd0: 29 3b 0d 0a 09 09 63 66 67 2d 3e 49 6e 73 74 61  );....cfg->Insta
5fe0: 6c 6c 54 6f 3d 73 74 72 2c 20 63 66 67 2d 3e 49  llTo=str, cfg->I
5ff0: 6e 73 74 61 6c 6c 54 6f 2e 62 65 42 61 63 6b 53  nstallTo.beBackS
6000: 6c 61 73 68 28 20 74 72 75 65 20 29 3b 0d 0a 09  lash( true );...
6010: 09 66 6f 72 28 69 6e 74 20 69 3d 30 3b 20 69 3c  .for(int i=0; i<
6020: 3d 32 3b 20 2b 2b 69 29 0d 0a 09 09 09 69 66 28  =2; ++i).....if(
6030: 20 42 53 54 5f 43 48 45 43 4b 45 44 20 3d 3d 20   BST_CHECKED == 
6040: 73 65 6e 64 4d 73 67 54 6f 49 74 65 6d 28 20 49  sendMsgToItem( I
6050: 44 43 5f 43 4f 4e 4e 45 43 54 54 4f 31 2b 69 2c  DC_CONNECTTO1+i,
6060: 20 42 4d 5f 47 45 54 43 48 45 43 4b 20 29 20 29   BM_GETCHECK ) )
6070: 0d 0a 09 09 09 09 63 66 67 2d 3e 43 68 65 63 6b  ......cfg->Check
6080: 53 65 72 76 65 72 20 3d 20 69 3b 0d 0a 09 09 72  Server = i;....r
6090: 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 09 7d 0d  eturn true;...}.
60a0: 0a 0d 0a 09 76 69 72 74 75 61 6c 20 62 6f 6f 6c  ....virtual bool
60b0: 20 6f 6e 43 61 6e 63 65 6c 28 29 0d 0a 09 7b 0d   onCancel()...{.
60c0: 0a 09 09 72 65 74 75 72 6e 20 63 61 6e 63 65 6c  ...return cancel
60d0: 53 68 69 74 65 49 69 64 65 73 75 6b 61 28 29 3b  ShiteIidesuka();
60e0: 0d 0a 09 7d 0d 0a 0d 0a 70 72 69 76 61 74 65 3a  ...}....private:
60f0: 0d 0a 09 63 6c 61 73 73 20 64 65 74 61 69 6c 44  ...class detailD
6100: 6c 67 20 3a 20 70 75 62 6c 69 63 20 6b 69 44 69  lg : public kiDi
6110: 61 6c 6f 67 0d 0a 09 7b 0d 0a 09 70 75 62 6c 69  alog...{...publi
6120: 63 3a 0d 0a 09 09 64 65 74 61 69 6c 44 6c 67 28  c:....detailDlg(
6130: 29 20 3a 20 6b 69 44 69 61 6c 6f 67 28 20 49 44  ) : kiDialog( ID
6140: 44 5f 44 45 54 41 49 4c 20 29 20 7b 7d 0d 0a 09  D_DETAIL ) {}...
6150: 70 72 69 76 61 74 65 3a 0d 0a 09 09 76 69 72 74  private:....virt
6160: 75 61 6c 20 42 4f 4f 4c 20 6f 6e 49 6e 69 74 28  ual BOOL onInit(
6170: 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 66 28 20 63  )....{.....if( c
6180: 66 67 2d 3e 47 65 6f 72 67 65 20 29 0d 0a 09 09  fg->George )....
6190: 09 09 73 65 6e 64 4d 73 67 54 6f 49 74 65 6d 28  ..sendMsgToItem(
61a0: 20 49 44 43 5f 43 4f 4e 4e 45 43 54 5f 41 4c 57   IDC_CONNECT_ALW
61b0: 41 59 53 2c 20 42 4d 5f 53 45 54 43 48 45 43 4b  AYS, BM_SETCHECK
61c0: 2c 20 42 53 54 5f 43 48 45 43 4b 45 44 20 29 3b  , BST_CHECKED );
61d0: 0d 0a 09 09 09 69 66 28 20 63 66 67 2d 3e 53 68  .....if( cfg->Sh
61e0: 6f 77 52 65 61 64 4d 65 20 29 0d 0a 09 09 09 09  owReadMe )......
61f0: 73 65 6e 64 4d 73 67 54 6f 49 74 65 6d 28 20 49  sendMsgToItem( I
6200: 44 43 5f 53 48 4f 57 5f 52 45 41 44 4d 45 2c 20  DC_SHOW_README, 
6210: 42 4d 5f 53 45 54 43 48 45 43 4b 2c 20 42 53 54  BM_SETCHECK, BST
6220: 5f 43 48 45 43 4b 45 44 20 29 3b 0d 0a 09 09 09  _CHECKED );.....
6230: 69 66 28 20 63 66 67 2d 3e 55 73 65 43 75 73 74  if( cfg->UseCust
6240: 6f 6d 44 69 72 20 29 0d 0a 09 09 09 09 73 65 6e  omDir )......sen
6250: 64 4d 73 67 54 6f 49 74 65 6d 28 20 49 44 43 5f  dMsgToItem( IDC_
6260: 53 41 56 45 5f 44 45 53 54 44 49 52 2c 20 42 4d  SAVE_DESTDIR, BM
6270: 5f 53 45 54 43 48 45 43 4b 2c 20 42 53 54 5f 43  _SETCHECK, BST_C
6280: 48 45 43 4b 45 44 20 29 3b 0d 0a 09 09 09 66 6f  HECKED );.....fo
6290: 72 28 20 69 6e 74 20 69 3d 30 3b 20 69 3c 44 4c  r( int i=0; i<DL
62a0: 4c 49 44 5f 4e 55 4d 3b 20 2b 2b 69 20 29 0d 0a  LID_NUM; ++i )..
62b0: 09 09 09 09 69 66 28 20 63 66 67 2d 3e 44 6f 43  ....if( cfg->DoC
62c0: 68 65 63 6b 5b 69 5d 20 29 0d 0a 09 09 09 09 09  heck[i] ).......
62d0: 73 65 6e 64 4d 73 67 54 6f 49 74 65 6d 28 20 49  sendMsgToItem( I
62e0: 44 43 5f 44 4c 48 41 2b 69 2c 20 42 4d 5f 53 45  DC_DLHA+i, BM_SE
62f0: 54 43 48 45 43 4b 2c 20 42 53 54 5f 43 48 45 43  TCHECK, BST_CHEC
6300: 4b 45 44 20 29 3b 0d 0a 2f 2f 20 91 7d 93 fc 63  KED );..// .}..c
6310: 61 6c 64 69 78 46 0d 0a 09 09 09 73 65 6e 64 4d  aldixF.....sendM
6320: 73 67 54 6f 49 74 65 6d 28 20 49 44 43 5f 46 49  sgToItem( IDC_FI
6330: 4c 45 52 50 41 54 48 2c 20 57 4d 5f 53 45 54 54  LERPATH, WM_SETT
6340: 45 58 54 2c 20 30 2c 20 28 4c 50 41 52 41 4d 29  EXT, 0, (LPARAM)
6350: 28 63 6f 6e 73 74 20 63 68 61 72 2a 29 28 63 66  (const char*)(cf
6360: 67 2d 3e 46 69 6c 65 72 29 20 29 3b 0d 0a 09 09  g->Filer) );....
6370: 09 73 65 6e 64 4d 73 67 54 6f 49 74 65 6d 28 20  .sendMsgToItem( 
6380: 49 44 43 5f 46 49 4c 45 52 4f 50 54 2c 20 57 4d  IDC_FILEROPT, WM
6390: 5f 53 45 54 54 45 58 54 2c 20 30 2c 20 28 4c 50  _SETTEXT, 0, (LP
63a0: 41 52 41 4d 29 28 63 6f 6e 73 74 20 63 68 61 72  ARAM)(const char
63b0: 2a 29 28 63 66 67 2d 3e 46 5f 50 72 65 66 69 78  *)(cfg->F_Prefix
63c0: 29 20 29 3b 0d 0a 09 09 09 73 65 6e 64 4d 73 67  ) );.....sendMsg
63d0: 54 6f 49 74 65 6d 28 20 49 44 43 5f 46 49 4c 45  ToItem( IDC_FILE
63e0: 52 4f 50 54 32 2c 20 57 4d 5f 53 45 54 54 45 58  ROPT2, WM_SETTEX
63f0: 54 2c 20 30 2c 20 28 4c 50 41 52 41 4d 29 28 63  T, 0, (LPARAM)(c
6400: 6f 6e 73 74 20 63 68 61 72 2a 29 28 63 66 67 2d  onst char*)(cfg-
6410: 3e 46 5f 53 75 66 66 69 78 29 20 29 3b 0d 0a 09  >F_Suffix) );...
6420: 09 09 0d 0a 2f 2f 20 91 7d 93 fc 82 b1 82 b1 82  ....// .}.......
6430: dc 82 c5 63 61 6c 64 69 78 46 0d 0a 09 09 09 72  ...caldixF.....r
6440: 65 74 75 72 6e 20 46 41 4c 53 45 3b 0d 0a 09 09  eturn FALSE;....
6450: 7d 0d 0a 0d 0a 2f 2f 20 91 7d 93 fc 63 61 6c 64  }....// .}..cald
6460: 69 78 46 0d 0a 09 09 76 69 72 74 75 61 6c 20 42  ixF....virtual B
6470: 4f 4f 4c 20 43 41 4c 4c 42 41 43 4b 20 70 72 6f  OOL CALLBACK pro
6480: 63 28 20 55 49 4e 54 20 6d 73 67 2c 20 57 50 41  c( UINT msg, WPA
6490: 52 41 4d 20 77 70 2c 20 4c 50 41 52 41 4d 20 6c  RAM wp, LPARAM l
64a0: 70 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 2f 2f 20  p )....{.....// 
64b0: 8e 77 92 e8 83 7b 83 5e 83 93 0d 0a 09 09 09 69  .w...{.^.......i
64c0: 66 28 28 6d 73 67 3d 3d 57 4d 5f 43 4f 4d 4d 41  f((msg==WM_COMMA
64d0: 4e 44 29 20 26 26 20 28 4c 4f 57 4f 52 44 28 77  ND) && (LOWORD(w
64e0: 70 29 3d 3d 49 44 43 5f 52 45 46 20 29 29 7b 0d  p)==IDC_REF )){.
64f0: 0a 09 09 09 09 6b 69 53 55 74 69 6c 3a 3a 67 65  .....kiSUtil::ge
6500: 74 4f 70 65 6e 46 69 6c 65 4e 61 6d 65 44 6c 67  tOpenFileNameDlg
6510: 4f 66 45 64 69 74 42 6f 78 28 69 74 65 6d 28 49  OfEditBox(item(I
6520: 44 43 5f 46 49 4c 45 52 50 41 54 48 29 2c 68 77  DC_FILERPATH),hw
6530: 6e 64 28 29 29 3b 0d 0a 09 09 09 09 72 65 74 75  nd());......retu
6540: 72 6e 20 54 52 55 45 3b 0d 0a 09 09 09 7d 0d 0a  rn TRUE;.....}..
6550: 09 09 09 72 65 74 75 72 6e 20 46 41 4c 53 45 3b  ...return FALSE;
6560: 0d 0a 09 09 7d 0d 0a 2f 2f 20 91 7d 93 fc 82 b1  ....}..// .}....
6570: 82 b1 82 dc 82 c5 63 61 6c 64 69 78 46 0d 0a 09  ......caldixF...
6580: 09 0d 0a 09 09 76 69 72 74 75 61 6c 20 62 6f 6f  .....virtual boo
6590: 6c 20 6f 6e 4f 4b 28 29 0d 0a 09 09 7b 0d 0a 09  l onOK()....{...
65a0: 09 09 63 66 67 2d 3e 47 65 6f 72 67 65 20 3d 0d  ..cfg->George =.
65b0: 0a 09 09 09 09 28 42 53 54 5f 43 48 45 43 4b 45  .....(BST_CHECKE
65c0: 44 3d 3d 73 65 6e 64 4d 73 67 54 6f 49 74 65 6d  D==sendMsgToItem
65d0: 28 20 49 44 43 5f 43 4f 4e 4e 45 43 54 5f 41 4c  ( IDC_CONNECT_AL
65e0: 57 41 59 53 2c 20 42 4d 5f 47 45 54 43 48 45 43  WAYS, BM_GETCHEC
65f0: 4b 20 29 29 3b 0d 0a 09 09 09 63 66 67 2d 3e 53  K ));.....cfg->S
6600: 68 6f 77 52 65 61 64 4d 65 20 3d 0d 0a 09 09 09  howReadMe =.....
6610: 09 28 42 53 54 5f 43 48 45 43 4b 45 44 3d 3d 73  .(BST_CHECKED==s
6620: 65 6e 64 4d 73 67 54 6f 49 74 65 6d 28 20 49 44  endMsgToItem( ID
6630: 43 5f 53 48 4f 57 5f 52 45 41 44 4d 45 2c 20 42  C_SHOW_README, B
6640: 4d 5f 47 45 54 43 48 45 43 4b 20 29 29 3b 0d 0a  M_GETCHECK ));..
6650: 09 09 09 63 66 67 2d 3e 55 73 65 43 75 73 74 6f  ...cfg->UseCusto
6660: 6d 44 69 72 20 3d 0d 0a 09 09 09 09 28 42 53 54  mDir =......(BST
6670: 5f 43 48 45 43 4b 45 44 3d 3d 73 65 6e 64 4d 73  _CHECKED==sendMs
6680: 67 54 6f 49 74 65 6d 28 20 49 44 43 5f 53 41 56  gToItem( IDC_SAV
6690: 45 5f 44 45 53 54 44 49 52 2c 20 42 4d 5f 47 45  E_DESTDIR, BM_GE
66a0: 54 43 48 45 43 4b 20 29 29 3b 0d 0a 09 09 09 66  TCHECK ));.....f
66b0: 6f 72 28 20 69 6e 74 20 69 3d 30 3b 20 69 3c 44  or( int i=0; i<D
66c0: 4c 4c 49 44 5f 4e 55 4d 3b 20 2b 2b 69 20 29 0d  LLID_NUM; ++i ).
66d0: 0a 09 09 09 09 63 66 67 2d 3e 44 6f 43 68 65 63  .....cfg->DoChec
66e0: 6b 5b 69 5d 20 3d 0d 0a 09 09 09 09 09 28 42 53  k[i] =.......(BS
66f0: 54 5f 43 48 45 43 4b 45 44 3d 3d 73 65 6e 64 4d  T_CHECKED==sendM
6700: 73 67 54 6f 49 74 65 6d 28 20 49 44 43 5f 44 4c  sgToItem( IDC_DL
6710: 48 41 2b 69 2c 20 42 4d 5f 47 45 54 43 48 45 43  HA+i, BM_GETCHEC
6720: 4b 20 29 29 3b 0d 0a 2f 2f 20 91 7d 93 fc 63 61  K ));..// .}..ca
6730: 6c 64 69 78 46 0d 0a 09 09 09 63 68 61 72 20 73  ldixF.....char s
6740: 74 72 5b 35 30 30 5d 3b 0d 0a 0d 0a 09 09 09 73  tr[500];.......s
6750: 65 6e 64 4d 73 67 54 6f 49 74 65 6d 28 20 49 44  endMsgToItem( ID
6760: 43 5f 46 49 4c 45 52 50 41 54 48 2c 20 57 4d 5f  C_FILERPATH, WM_
6770: 47 45 54 54 45 58 54 2c 20 73 69 7a 65 6f 66 28  GETTEXT, sizeof(
6780: 73 74 72 29 2d 31 2c 20 28 4c 50 41 52 41 4d 29  str)-1, (LPARAM)
6790: 73 74 72 20 29 3b 0d 0a 09 09 09 63 66 67 2d 3e  str );.....cfg->
67a0: 46 69 6c 65 72 20 3d 20 73 74 72 3b 0d 0a 09 09  Filer = str;....
67b0: 09 73 65 6e 64 4d 73 67 54 6f 49 74 65 6d 28 20  .sendMsgToItem( 
67c0: 49 44 43 5f 46 49 4c 45 52 4f 50 54 2c 20 57 4d  IDC_FILEROPT, WM
67d0: 5f 47 45 54 54 45 58 54 2c 20 73 69 7a 65 6f 66  _GETTEXT, sizeof
67e0: 28 73 74 72 29 2d 31 2c 20 28 4c 50 41 52 41 4d  (str)-1, (LPARAM
67f0: 29 73 74 72 20 29 3b 0d 0a 09 09 09 63 66 67 2d  )str );.....cfg-
6800: 3e 46 5f 50 72 65 66 69 78 20 3d 20 73 74 72 3b  >F_Prefix = str;
6810: 0d 0a 09 09 09 73 65 6e 64 4d 73 67 54 6f 49 74  .....sendMsgToIt
6820: 65 6d 28 20 49 44 43 5f 46 49 4c 45 52 4f 50 54  em( IDC_FILEROPT
6830: 32 2c 20 57 4d 5f 47 45 54 54 45 58 54 2c 20 73  2, WM_GETTEXT, s
6840: 69 7a 65 6f 66 28 73 74 72 29 2d 31 2c 20 28 4c  izeof(str)-1, (L
6850: 50 41 52 41 4d 29 73 74 72 20 29 3b 0d 0a 09 09  PARAM)str );....
6860: 09 63 66 67 2d 3e 46 5f 53 75 66 66 69 78 20 3d  .cfg->F_Suffix =
6870: 20 73 74 72 3b 0d 0a 2f 2f 20 91 7d 93 fc 82 b1   str;..// .}....
6880: 82 b1 82 dc 82 c5 63 61 6c 64 69 78 46 0d 0a 09  ......caldixF...
6890: 09 09 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ..return true;..
68a0: 09 09 7d 0d 0a 09 7d 3b 0d 0a 0d 0a 09 63 6c 61  ..}...};.....cla
68b0: 73 73 20 70 72 6f 78 79 44 6c 67 20 3a 20 70 75  ss proxyDlg : pu
68c0: 62 6c 69 63 20 6b 69 44 69 61 6c 6f 67 0d 0a 09  blic kiDialog...
68d0: 7b 0d 0a 09 70 75 62 6c 69 63 3a 0d 0a 09 09 70  {...public:....p
68e0: 72 6f 78 79 44 6c 67 28 29 20 3a 20 6b 69 44 69  roxyDlg() : kiDi
68f0: 61 6c 6f 67 28 20 49 44 44 5f 50 52 4f 58 59 20  alog( IDD_PROXY 
6900: 29 20 7b 7d 0d 0a 09 70 72 69 76 61 74 65 3a 0d  ) {}...private:.
6910: 0a 09 09 76 69 72 74 75 61 6c 20 42 4f 4f 4c 20  ...virtual BOOL 
6920: 6f 6e 49 6e 69 74 28 29 0d 0a 09 09 7b 0d 0a 09  onInit()....{...
6930: 09 09 69 66 28 20 63 66 67 2d 3e 50 72 6f 78 79  ..if( cfg->Proxy
6940: 50 6f 72 74 3e 30 20 29 0d 0a 09 09 09 7b 0d 0a  Port>0 ).....{..
6950: 09 09 09 09 73 65 6e 64 4d 73 67 54 6f 49 74 65  ....sendMsgToIte
6960: 6d 28 20 49 44 43 5f 55 53 45 50 52 4f 58 59 2c  m( IDC_USEPROXY,
6970: 20 42 4d 5f 53 45 54 43 48 45 43 4b 2c 20 42 53   BM_SETCHECK, BS
6980: 54 5f 43 48 45 43 4b 45 44 20 29 3b 0d 0a 09 09  T_CHECKED );....
6990: 09 09 3a 3a 45 6e 61 62 6c 65 57 69 6e 64 6f 77  ..::EnableWindow
69a0: 28 20 69 74 65 6d 28 49 44 43 5f 48 4f 53 54 5f  ( item(IDC_HOST_
69b0: 4e 29 2c 20 54 52 55 45 20 29 3b 0d 0a 09 09 09  N), TRUE );.....
69c0: 09 3a 3a 45 6e 61 62 6c 65 57 69 6e 64 6f 77 28  .::EnableWindow(
69d0: 20 69 74 65 6d 28 49 44 43 5f 50 4f 52 54 5f 4e   item(IDC_PORT_N
69e0: 29 2c 20 54 52 55 45 20 29 3b 0d 0a 09 09 09 09  ), TRUE );......
69f0: 3a 3a 45 6e 61 62 6c 65 57 69 6e 64 6f 77 28 20  ::EnableWindow( 
6a00: 69 74 65 6d 28 49 44 43 5f 48 4f 53 54 29 2c 20  item(IDC_HOST), 
6a10: 20 20 54 52 55 45 20 29 3b 0d 0a 09 09 09 09 3a    TRUE );......:
6a20: 3a 45 6e 61 62 6c 65 57 69 6e 64 6f 77 28 20 69  :EnableWindow( i
6a30: 74 65 6d 28 49 44 43 5f 50 4f 52 54 29 2c 20 20  tem(IDC_PORT),  
6a40: 20 54 52 55 45 20 29 3b 0d 0a 09 09 09 09 3a 3a   TRUE );......::
6a50: 53 65 74 44 6c 67 49 74 65 6d 49 6e 74 28 20 68  SetDlgItemInt( h
6a60: 77 6e 64 28 29 2c 20 49 44 43 5f 50 4f 52 54 2c  wnd(), IDC_PORT,
6a70: 20 63 66 67 2d 3e 50 72 6f 78 79 50 6f 72 74 2c   cfg->ProxyPort,
6a80: 20 46 41 4c 53 45 20 29 3b 0d 0a 09 09 09 7d 0d   FALSE );.....}.
6a90: 0a 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 3a 3a  ....else......::
6aa0: 53 65 74 44 6c 67 49 74 65 6d 49 6e 74 28 20 68  SetDlgItemInt( h
6ab0: 77 6e 64 28 29 2c 20 49 44 43 5f 50 4f 52 54 2c  wnd(), IDC_PORT,
6ac0: 20 2d 63 66 67 2d 3e 50 72 6f 78 79 50 6f 72 74   -cfg->ProxyPort
6ad0: 2c 20 46 41 4c 53 45 20 29 3b 0d 0a 09 09 09 73  , FALSE );.....s
6ae0: 65 6e 64 4d 73 67 54 6f 49 74 65 6d 28 20 49 44  endMsgToItem( ID
6af0: 43 5f 48 4f 53 54 2c 20 57 4d 5f 53 45 54 54 45  C_HOST, WM_SETTE
6b00: 58 54 2c 20 30 2c 20 28 4c 50 41 52 41 4d 29 28  XT, 0, (LPARAM)(
6b10: 63 6f 6e 73 74 20 63 68 61 72 2a 29 63 66 67 2d  const char*)cfg-
6b20: 3e 50 72 6f 78 79 53 65 72 76 65 72 20 29 3b 0d  >ProxyServer );.
6b30: 0a 09 09 09 72 65 74 75 72 6e 20 46 41 4c 53 45  ....return FALSE
6b40: 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 76 69 72 74  ;....}......virt
6b50: 75 61 6c 20 42 4f 4f 4c 20 43 41 4c 4c 42 41 43  ual BOOL CALLBAC
6b60: 4b 20 70 72 6f 63 28 20 55 49 4e 54 20 6d 73 67  K proc( UINT msg
6b70: 2c 20 57 50 41 52 41 4d 20 77 70 2c 20 4c 50 41  , WPARAM wp, LPA
6b80: 52 41 4d 20 6c 70 20 29 0d 0a 09 09 7b 0d 0a 09  RAM lp )....{...
6b90: 09 09 69 66 28 28 6d 73 67 3d 3d 57 4d 5f 43 4f  ..if((msg==WM_CO
6ba0: 4d 4d 41 4e 44 29 20 26 26 20 28 4c 4f 57 4f 52  MMAND) && (LOWOR
6bb0: 44 28 77 70 29 3d 3d 49 44 43 5f 55 53 45 50 52  D(wp)==IDC_USEPR
6bc0: 4f 58 59 29 29 7b 0d 0a 09 09 09 09 09 42 4f 4f  OXY)){.......BOO
6bd0: 4c 20 78 20 3d 20 28 20 42 53 54 5f 43 48 45 43  L x = ( BST_CHEC
6be0: 4b 45 44 3d 3d 73 65 6e 64 4d 73 67 54 6f 49 74  KED==sendMsgToIt
6bf0: 65 6d 28 20 49 44 43 5f 55 53 45 50 52 4f 58 59  em( IDC_USEPROXY
6c00: 2c 20 42 4d 5f 47 45 54 43 48 45 43 4b 20 29 20  , BM_GETCHECK ) 
6c10: 29 3b 0d 0a 09 09 09 09 09 3a 3a 45 6e 61 62 6c  );.......::Enabl
6c20: 65 57 69 6e 64 6f 77 28 20 69 74 65 6d 28 49 44  eWindow( item(ID
6c30: 43 5f 48 4f 53 54 5f 4e 29 2c 20 78 20 29 3b 0d  C_HOST_N), x );.
6c40: 0a 09 09 09 09 09 3a 3a 45 6e 61 62 6c 65 57 69  ......::EnableWi
6c50: 6e 64 6f 77 28 20 69 74 65 6d 28 49 44 43 5f 50  ndow( item(IDC_P
6c60: 4f 52 54 5f 4e 29 2c 20 78 20 29 3b 0d 0a 09 09  ORT_N), x );....
6c70: 09 09 09 3a 3a 45 6e 61 62 6c 65 57 69 6e 64 6f  ...::EnableWindo
6c80: 77 28 20 69 74 65 6d 28 49 44 43 5f 48 4f 53 54  w( item(IDC_HOST
6c90: 29 2c 20 20 20 78 20 29 3b 0d 0a 09 09 09 09 09  ),   x );.......
6ca0: 3a 3a 45 6e 61 62 6c 65 57 69 6e 64 6f 77 28 20  ::EnableWindow( 
6cb0: 69 74 65 6d 28 49 44 43 5f 50 4f 52 54 29 2c 20  item(IDC_PORT), 
6cc0: 20 20 78 20 29 3b 0d 0a 09 09 09 09 09 72 65 74    x );.......ret
6cd0: 75 72 6e 20 54 52 55 45 3b 0d 0a 09 09 09 7d 0d  urn TRUE;.....}.
6ce0: 0a 09 09 09 72 65 74 75 72 6e 20 46 41 4c 53 45  ....return FALSE
6cf0: 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 76 69 72 74  ;....}......virt
6d00: 75 61 6c 20 62 6f 6f 6c 20 6f 6e 4f 4b 28 29 0d  ual bool onOK().
6d10: 0a 09 09 7b 0d 0a 09 09 09 63 68 61 72 20 73 74  ...{.....char st
6d20: 72 5b 35 30 30 5d 3b 0d 0a 09 09 09 73 65 6e 64  r[500];.....send
6d30: 4d 73 67 54 6f 49 74 65 6d 28 20 49 44 43 5f 48  MsgToItem( IDC_H
6d40: 4f 53 54 2c 20 57 4d 5f 47 45 54 54 45 58 54 2c  OST, WM_GETTEXT,
6d50: 20 73 69 7a 65 6f 66 28 73 74 72 29 2d 31 2c 20   sizeof(str)-1, 
6d60: 28 4c 50 41 52 41 4d 29 73 74 72 20 29 3b 0d 0a  (LPARAM)str );..
6d70: 09 09 09 63 66 67 2d 3e 50 72 6f 78 79 53 65 72  ...cfg->ProxySer
6d80: 76 65 72 20 3d 20 73 74 72 3b 0d 0a 09 09 09 63  ver = str;.....c
6d90: 66 67 2d 3e 50 72 6f 78 79 50 6f 72 74 20 3d 20  fg->ProxyPort = 
6da0: 3a 3a 47 65 74 44 6c 67 49 74 65 6d 49 6e 74 28  ::GetDlgItemInt(
6db0: 20 68 77 6e 64 28 29 2c 20 49 44 43 5f 50 4f 52   hwnd(), IDC_POR
6dc0: 54 2c 20 4e 55 4c 4c 2c 20 46 41 4c 53 45 20 29  T, NULL, FALSE )
6dd0: 3b 0d 0a 09 09 09 69 66 28 20 42 53 54 5f 43 48  ;.....if( BST_CH
6de0: 45 43 4b 45 44 21 3d 73 65 6e 64 4d 73 67 54 6f  ECKED!=sendMsgTo
6df0: 49 74 65 6d 28 20 49 44 43 5f 55 53 45 50 52 4f  Item( IDC_USEPRO
6e00: 58 59 2c 20 42 4d 5f 47 45 54 43 48 45 43 4b 20  XY, BM_GETCHECK 
6e10: 29 20 29 0d 0a 09 09 09 09 63 66 67 2d 3e 50 72  ) )......cfg->Pr
6e20: 6f 78 79 50 6f 72 74 20 2a 3d 20 2d 31 3b 0d 0a  oxyPort *= -1;..
6e30: 09 09 09 72 65 74 75 72 6e 20 74 72 75 65 3b 0d  ...return true;.
6e40: 0a 09 09 7d 0d 0a 09 7d 3b 0d 0a 7d 3b 0d 0a 0d  ...}...};..};...
6e50: 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .//-------------
6e60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6e70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6e80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6e90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d  ---------------.
6ea0: 0a 2f 2f 20 6d 69 72 72 6f 72 4d 61 6e 20 3a 20  .// mirrorMan : 
6eb0: 83 6f 81 5b 83 57 83 87 83 93 83 60 83 46 83 62  .o.[.W.....`.F.b
6ec0: 83 4e 90 e6 83 54 81 5b 83 6f 8f ee 95 f1 8a c7  .N...T.[.o......
6ed0: 97 9d 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ....//----------
6ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
6f20: 2d 2d 0d 0a 0d 0a 63 6c 61 73 73 20 6d 69 72 72  --....class mirr
6f30: 6f 72 49 6e 66 6f 0d 0a 7b 0d 0a 70 72 69 76 61  orInfo..{..priva
6f40: 74 65 3a 0d 0a 09 65 6e 75 6d 20 7b 20 4d 41 44  te:...enum { MAD
6f50: 2c 20 43 53 44 2c 20 57 41 4b 2c 20 53 45 52 56  , CSD, WAK, SERV
6f60: 45 52 5f 4e 55 4d 20 7d 3b 0d 0a 09 73 74 61 74  ER_NUM };...stat
6f70: 69 63 20 63 6f 6e 73 74 20 63 68 61 72 2a 20 63  ic const char* c
6f80: 5f 73 65 72 76 5b 53 45 52 56 45 52 5f 4e 55 4d  _serv[SERVER_NUM
6f90: 5d 3b 0d 0a 09 73 74 61 74 69 63 20 63 6f 6e 73  ];...static cons
6fa0: 74 20 63 68 61 72 2a 20 63 5f 70 61 74 68 5b 53  t char* c_path[S
6fb0: 45 52 56 45 52 5f 4e 55 4d 5d 3b 0d 0a 09 73 74  ERVER_NUM];...st
6fc0: 61 74 69 63 20 63 6f 6e 73 74 20 63 68 61 72 2a  atic const char*
6fd0: 20 63 5f 6e 69 63 6b 5b 53 45 52 56 45 52 5f 4e   c_nick[SERVER_N
6fe0: 55 4d 5d 3b 0d 0a 0d 0a 09 69 6e 74 20 6d 69 72  UM];.....int mir
6ff0: 72 6f 72 73 5b 53 45 52 56 45 52 5f 4e 55 4d 2b  rors[SERVER_NUM+
7000: 31 5d 3b 0d 0a 0d 0a 70 75 62 6c 69 63 3a 0d 0a  1];....public:..
7010: 09 6d 69 72 72 6f 72 49 6e 66 6f 28 29 0d 0a 09  .mirrorInfo()...
7020: 7b 0d 0a 09 09 66 6f 72 28 69 6e 74 20 69 3d 30  {....for(int i=0
7030: 3b 20 69 21 3d 53 45 52 56 45 52 5f 4e 55 4d 2b  ; i!=SERVER_NUM+
7040: 31 3b 20 2b 2b 69 29 0d 0a 09 09 09 6d 69 72 72  1; ++i).....mirr
7050: 6f 72 73 5b 69 5d 20 3d 20 2d 31 3b 0d 0a 09 7d  ors[i] = -1;...}
7060: 0d 0a 0d 0a 09 2f 2f 20 82 c7 82 cc 83 54 81 5b  .....// .....T.[
7070: 83 6f 82 f0 90 e6 82 c9 8c a9 82 c9 8d 73 82 ad  .o...........s..
7080: 82 a9 91 49 91 f0 81 42 0d 0a 09 76 6f 69 64 20  ...I...B...void 
7090: 73 65 74 50 72 65 66 65 72 65 64 53 65 72 76 65  setPreferedServe
70a0: 72 28 20 69 6e 74 20 70 20 29 0d 0a 09 7b 0d 0a  r( int p )...{..
70b0: 09 09 73 77 69 74 63 68 28 20 70 20 29 0d 0a 09  ..switch( p )...
70c0: 09 7b 0d 0a 09 09 64 65 66 61 75 6c 74 3a 0d 0a  .{....default:..
70d0: 09 09 63 61 73 65 20 4d 41 44 3a 0d 0a 09 09 09  ..case MAD:.....
70e0: 6d 69 72 72 6f 72 73 5b 30 5d 20 3d 20 4d 41 44  mirrors[0] = MAD
70f0: 3b 0d 0a 09 09 09 6d 69 72 72 6f 72 73 5b 31 5d  ;.....mirrors[1]
7100: 20 3d 20 43 53 44 3b 0d 0a 09 09 09 6d 69 72 72   = CSD;.....mirr
7110: 6f 72 73 5b 32 5d 20 3d 20 57 41 4b 3b 0d 0a 09  ors[2] = WAK;...
7120: 09 09 62 72 65 61 6b 3b 0d 0a 09 09 63 61 73 65  ..break;....case
7130: 20 43 53 44 3a 0d 0a 09 09 09 6d 69 72 72 6f 72   CSD:.....mirror
7140: 73 5b 30 5d 20 3d 20 43 53 44 3b 0d 0a 09 09 09  s[0] = CSD;.....
7150: 6d 69 72 72 6f 72 73 5b 31 5d 20 3d 20 4d 41 44  mirrors[1] = MAD
7160: 3b 0d 0a 09 09 09 6d 69 72 72 6f 72 73 5b 32 5d  ;.....mirrors[2]
7170: 20 3d 20 57 41 4b 3b 0d 0a 09 09 09 62 72 65 61   = WAK;.....brea
7180: 6b 3b 0d 0a 09 09 63 61 73 65 20 57 41 4b 3a 0d  k;....case WAK:.
7190: 0a 09 09 09 6d 69 72 72 6f 72 73 5b 30 5d 20 3d  ....mirrors[0] =
71a0: 20 57 41 4b 3b 0d 0a 09 09 09 6d 69 72 72 6f 72   WAK;.....mirror
71b0: 73 5b 31 5d 20 3d 20 4d 41 44 3b 0d 0a 09 09 09  s[1] = MAD;.....
71c0: 6d 69 72 72 6f 72 73 5b 32 5d 20 3d 20 43 53 44  mirrors[2] = CSD
71d0: 3b 0d 0a 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09  ;.....break;....
71e0: 7d 0d 0a 09 7d 0d 0a 0d 0a 09 2f 2f 20 6d 94 d4  }...}.....// m..
71f0: 96 da 82 cc 83 7e 83 89 81 5b 83 54 81 5b 83 6f  .....~...[.T.[.o
7200: 82 aa 44 6f 77 6e 82 b5 82 c4 82 e9 82 c1 82 db  ..Down..........
7210: 82 a2 8f ea 8d 87 81 41 8c f3 95 e2 82 a9 82 e7  .......A........
7220: 8f c1 8b 8e 0d 0a 09 76 6f 69 64 20 73 65 72 76  .......void serv
7230: 65 72 5f 69 73 5f 64 6f 77 6e 28 20 69 6e 74 20  er_is_down( int 
7240: 6d 20 29 0d 0a 09 7b 0d 0a 09 09 66 6f 72 28 69  m )...{....for(i
7250: 6e 74 20 69 3d 6d 3b 20 69 21 3d 53 45 52 56 45  nt i=m; i!=SERVE
7260: 52 5f 4e 55 4d 3b 20 2b 2b 69 29 0d 0a 09 09 09  R_NUM; ++i).....
7270: 6d 69 72 72 6f 72 73 5b 69 5d 20 3d 20 6d 69 72  mirrors[i] = mir
7280: 72 6f 72 73 5b 69 2b 31 5d 3b 0d 0a 09 7d 0d 0a  rors[i+1];...}..
7290: 0d 0a 09 2f 2f 20 74 94 d4 96 da 82 cc 83 7e 83  ...// t.......~.
72a0: 89 81 5b 83 54 81 5b 83 6f 82 cc 8f ee 95 f1 82  ..[.T.[.o.......
72b0: f0 8e e6 93 be 0d 0a 09 62 6f 6f 6c 20 69 73 4d  ........bool isM
72c0: 69 72 72 6f 72 4c 65 66 74 28 20 69 6e 74 20 6d  irrorLeft( int m
72d0: 20 29 20 63 6f 6e 73 74 20 7b 20 72 65 74 75 72   ) const { retur
72e0: 6e 20 6d 69 72 72 6f 72 73 5b 6d 5d 20 3e 3d 20  n mirrors[m] >= 
72f0: 30 3b 20 7d 0d 0a 09 6b 69 53 74 72 20 73 65 72  0; }...kiStr ser
7300: 76 65 72 4e 61 6d 65 20 28 20 69 6e 74 20 6d 20  verName ( int m 
7310: 29 20 63 6f 6e 73 74 20 7b 20 72 65 74 75 72 6e  ) const { return
7320: 20 63 5f 73 65 72 76 5b 6d 69 72 72 6f 72 73 5b   c_serv[mirrors[
7330: 6d 5d 5d 3b 20 7d 0d 0a 09 6b 69 53 74 72 20 62  m]]; }...kiStr b
7340: 61 73 65 50 61 74 68 20 20 20 28 20 69 6e 74 20  asePath   ( int 
7350: 6d 20 29 20 63 6f 6e 73 74 20 7b 20 72 65 74 75  m ) const { retu
7360: 72 6e 20 63 5f 70 61 74 68 5b 6d 69 72 72 6f 72  rn c_path[mirror
7370: 73 5b 6d 5d 5d 3b 20 7d 0d 0a 09 6b 69 53 74 72  s[m]]; }...kiStr
7380: 20 6e 69 63 6b 6e 61 6d 65 20 20 20 28 20 69 6e   nickname   ( in
7390: 74 20 6d 20 29 20 63 6f 6e 73 74 20 7b 20 72 65  t m ) const { re
73a0: 74 75 72 6e 20 63 5f 6e 69 63 6b 5b 6d 69 72 72  turn c_nick[mirr
73b0: 6f 72 73 5b 6d 5d 5d 3b 20 7d 0d 0a 09 6b 69 53  ors[m]]; }...kiS
73c0: 74 72 20 62 61 73 65 55 52 4c 20 20 20 20 28 20  tr baseURL    ( 
73d0: 69 6e 74 20 6d 20 29 20 63 6f 6e 73 74 20 7b 0d  int m ) const {.
73e0: 0a 09 09 72 65 74 75 72 6e 20 28 6b 69 53 74 72  ...return (kiStr
73f0: 28 22 68 74 74 70 3a 2f 2f 22 29 2b 3d 63 5f 73  ("http://")+=c_s
7400: 65 72 76 5b 6d 69 72 72 6f 72 73 5b 6d 5d 5d 29  erv[mirrors[m]])
7410: 2b 3d 63 5f 70 61 74 68 5b 6d 69 72 72 6f 72 73  +=c_path[mirrors
7420: 5b 6d 5d 5d 3b 0d 0a 09 7d 0d 0a 7d 3b 0d 0a 0d  [m]];...}..};...
7430: 0a 2f 2f 20 73 74 61 74 69 63 20 63 6f 6e 73 74  .// static const
7440: 61 6e 74 73 0d 0a 0d 0a 63 6f 6e 73 74 20 63 68  ants....const ch
7450: 61 72 2a 20 6d 69 72 72 6f 72 49 6e 66 6f 3a 3a  ar* mirrorInfo::
7460: 63 5f 73 65 72 76 5b 6d 69 72 72 6f 72 49 6e 66  c_serv[mirrorInf
7470: 6f 3a 3a 53 45 52 56 45 52 5f 4e 55 4d 5d 20 3d  o::SERVER_NUM] =
7480: 20 7b 0d 0a 09 22 77 77 77 2e 6d 61 64 6f 62 65   {..."www.madobe
7490: 2e 6e 65 74 22 2c 0d 0a 09 22 77 77 77 2e 63 73  .net",..."www.cs
74a0: 64 69 6e 63 2e 63 6f 2e 6a 70 22 2c 0d 0a 09 22  dinc.co.jp",..."
74b0: 61 72 63 68 69 76 65 72 2e 77 61 6b 75 73 65 69  archiver.wakusei
74c0: 2e 6e 65 2e 6a 70 22 2c 0d 0a 7d 3b 0d 0a 63 6f  .ne.jp",..};..co
74d0: 6e 73 74 20 63 68 61 72 2a 20 6d 69 72 72 6f 72  nst char* mirror
74e0: 49 6e 66 6f 3a 3a 63 5f 70 61 74 68 5b 6d 69 72  Info::c_path[mir
74f0: 72 6f 72 49 6e 66 6f 3a 3a 53 45 52 56 45 52 5f  rorInfo::SERVER_
7500: 4e 55 4d 5d 20 3d 20 7b 0d 0a 09 22 2f 61 72 63  NUM] = {..."/arc
7510: 68 69 76 65 72 2f 6c 69 62 2f 22 2c 0d 0a 09 22  hiver/lib/",..."
7520: 2f 61 72 63 68 69 76 65 72 2f 6c 69 62 2f 22 2c  /archiver/lib/",
7530: 0d 0a 09 22 2f 6c 69 62 2f 22 2c 0d 0a 7d 3b 0d  ..."/lib/",..};.
7540: 0a 63 6f 6e 73 74 20 63 68 61 72 2a 20 6d 69 72  .const char* mir
7550: 72 6f 72 49 6e 66 6f 3a 3a 63 5f 6e 69 63 6b 5b  rorInfo::c_nick[
7560: 6d 69 72 72 6f 72 49 6e 66 6f 3a 3a 53 45 52 56  mirrorInfo::SERV
7570: 45 52 5f 4e 55 4d 5d 20 3d 20 7b 0d 0a 09 22 4d  ER_NUM] = {..."M
7580: 61 64 6f 62 65 22 2c 0d 0a 09 22 43 53 44 22 2c  adobe",..."CSD",
7590: 0d 0a 09 22 57 61 6b 75 73 65 69 22 2c 0d 0a 7d  ..."Wakusei",..}
75a0: 3b 0d 0a 73 74 61 74 69 63 20 6d 69 72 72 6f 72  ;..static mirror
75b0: 49 6e 66 6f 20 6d 69 72 72 6f 72 4d 61 6e 3b 0d  Info mirrorMan;.
75c0: 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ...//-----------
75d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
75e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
75f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7600: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7610: 2d 0d 0a 2f 2f 20 76 65 72 44 6c 67 20 3a 20 90  -..// verDlg : .
7620: da 91 b1 82 b5 82 c4 8e c0 8d db 82 cc 83 6f 81  ..............o.
7630: 5b 83 57 83 87 83 93 83 60 83 46 83 62 83 4e 82  [.W.....`.F.b.N.
7640: f0 8d 73 82 a4 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d  ..s....//-------
7650: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7660: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7670: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7680: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
7690: 2d 2d 2d 2d 2d 0d 0a 0d 0a 63 6c 61 73 73 20 76  -----....class v
76a0: 65 72 44 6c 67 20 3a 20 70 75 62 6c 69 63 20 6b  erDlg : public k
76b0: 69 44 69 61 6c 6f 67 0d 0a 7b 0d 0a 70 75 62 6c  iDialog..{..publ
76c0: 69 63 3a 0d 0a 09 76 65 72 44 6c 67 28 20 48 49  ic:...verDlg( HI
76d0: 4e 54 45 52 4e 45 54 20 68 69 20 29 0d 0a 09 09  NTERNET hi )....
76e0: 3a 20 6b 69 44 69 61 6c 6f 67 28 20 49 44 44 5f  : kiDialog( IDD_
76f0: 56 45 52 43 48 45 43 4b 20 29 2c 20 68 28 68 69  VERCHECK ), h(hi
7700: 29 2c 20 73 73 28 4e 55 4c 4c 29 2c 20 68 74 74  ), ss(NULL), htt
7710: 70 28 4e 55 4c 4c 29 20 7b 7d 0d 0a 0d 0a 09 7e  p(NULL) {}.....~
7720: 76 65 72 44 6c 67 28 29 0d 0a 09 7b 0d 0a 09 09  verDlg()...{....
7730: 69 66 28 20 73 73 20 29 0d 0a 09 09 09 3a 3a 49  if( ss ).....::I
7740: 6e 74 65 72 6e 65 74 43 6c 6f 73 65 48 61 6e 64  nternetCloseHand
7750: 6c 65 28 20 73 73 20 29 3b 0d 0a 09 09 69 66 28  le( ss );....if(
7760: 20 68 74 74 70 20 29 0d 0a 09 09 09 3a 3a 49 6e   http ).....::In
7770: 74 65 72 6e 65 74 43 6c 6f 73 65 48 61 6e 64 6c  ternetCloseHandl
7780: 65 28 20 68 74 74 70 20 29 3b 0d 0a 09 7d 0d 0a  e( http );...}..
7790: 0d 0a 70 72 69 76 61 74 65 3a 0d 0a 0d 0a 09 48  ..private:.....H
77a0: 41 4e 44 4c 45 20 20 20 20 20 20 20 20 68 54 3b  ANDLE        hT;
77b0: 0d 0a 09 48 49 4e 54 45 52 4e 45 54 20 20 20 20  ...HINTERNET    
77c0: 20 68 2c 20 68 74 74 70 2c 20 73 73 3b 0d 0a 09   h, http, ss;...
77d0: 76 6f 6c 61 74 69 6c 65 20 62 6f 6f 6c 20 6d 5f  volatile bool m_
77e0: 65 6e 64 46 6c 61 67 3b 0d 0a 0d 0a 09 42 4f 4f  endFlag;.....BOO
77f0: 4c 20 6f 6e 49 6e 69 74 28 29 0d 0a 09 7b 0d 0a  L onInit()...{..
7800: 09 09 61 70 70 28 29 2d 3e 73 65 74 4d 61 69 6e  ..app()->setMain
7810: 57 6e 64 28 20 74 68 69 73 20 29 3b 0d 0a 09 09  Wnd( this );....
7820: 73 65 6e 64 4d 73 67 54 6f 49 74 65 6d 28 20 49  sendMsgToItem( I
7830: 44 43 5f 42 41 52 2c 20 50 42 4d 5f 53 45 54 53  DC_BAR, PBM_SETS
7840: 54 45 50 2c 20 31 20 29 3b 0d 0a 09 09 73 65 6e  TEP, 1 );....sen
7850: 64 4d 73 67 54 6f 49 74 65 6d 28 20 49 44 43 5f  dMsgToItem( IDC_
7860: 42 41 52 2c 20 50 42 4d 5f 53 45 54 52 41 4e 47  BAR, PBM_SETRANG
7870: 45 2c 20 30 2c 20 4d 41 4b 45 4c 50 41 52 41 4d  E, 0, MAKELPARAM
7880: 28 30 2c 63 66 67 2d 3e 4c 69 73 74 2e 6c 65 6e  (0,cfg->List.len
7890: 28 29 2a 33 29 20 29 3b 0d 0a 0d 0a 09 09 6d 5f  ()*3) );......m_
78a0: 65 6e 64 46 6c 61 67 20 3d 20 66 61 6c 73 65 3b  endFlag = false;
78b0: 0d 0a 09 09 44 57 4f 52 44 20 69 64 3b 0d 0a 09  ....DWORD id;...
78c0: 09 69 66 28 20 21 28 68 54 20 3d 20 3a 3a 43 72  .if( !(hT = ::Cr
78d0: 65 61 74 65 54 68 72 65 61 64 28 20 4e 55 4c 4c  eateThread( NULL
78e0: 2c 20 30 2c 20 74 68 72 65 61 64 45 6e 74 72 79  , 0, threadEntry
78f0: 2c 20 74 68 69 73 2c 20 30 2c 20 26 69 64 20 29  , this, 0, &id )
7900: 29 20 29 0d 0a 09 09 09 65 6e 64 28 20 49 44 43  ) ).....end( IDC
7910: 41 4e 43 45 4c 20 29 3b 0d 0a 09 09 72 65 74 75  ANCEL );....retu
7920: 72 6e 20 46 41 4c 53 45 3b 0d 0a 09 7d 0d 0a 0d  rn FALSE;...}...
7930: 0a 09 62 6f 6f 6c 20 6f 6e 43 61 6e 63 65 6c 28  ..bool onCancel(
7940: 29 0d 0a 09 7b 0d 0a 09 09 6d 5f 65 6e 64 46 6c  )...{....m_endFl
7950: 61 67 20 3d 20 74 72 75 65 3b 0d 0a 09 09 44 57  ag = true;....DW
7960: 4f 52 44 20 65 78 3b 0d 0a 09 09 77 68 69 6c 65  ORD ex;....while
7970: 28 20 3a 3a 47 65 74 45 78 69 74 43 6f 64 65 54  ( ::GetExitCodeT
7980: 68 72 65 61 64 28 20 68 54 2c 20 26 65 78 20 29  hread( hT, &ex )
7990: 20 26 26 20 65 78 3d 3d 53 54 49 4c 4c 5f 41 43   && ex==STILL_AC
79a0: 54 49 56 45 20 29 0d 0a 09 09 09 3a 3a 53 6c 65  TIVE ).....::Sle
79b0: 65 70 28 30 29 3b 0d 0a 09 09 3a 3a 43 6c 6f 73  ep(0);....::Clos
79c0: 65 48 61 6e 64 6c 65 28 20 68 54 20 29 3b 0d 0a  eHandle( hT );..
79d0: 09 09 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ..return true;..
79e0: 09 7d 0d 0a 0d 0a 09 73 74 61 74 69 63 20 44 57  .}.....static DW
79f0: 4f 52 44 20 57 49 4e 41 50 49 20 74 68 72 65 61  ORD WINAPI threa
7a00: 64 45 6e 74 72 79 28 20 76 6f 69 64 2a 20 70 72  dEntry( void* pr
7a10: 6d 20 29 0d 0a 09 7b 0d 0a 09 09 28 28 76 65 72  m )...{....((ver
7a20: 44 6c 67 2a 29 70 72 6d 29 2d 3e 74 68 72 65 61  Dlg*)prm)->threa
7a30: 64 57 6f 72 6b 65 72 28 29 3b 0d 0a 09 09 72 65  dWorker();....re
7a40: 74 75 72 6e 20 30 3b 0d 0a 09 7d 0d 0a 0d 0a 70  turn 0;...}....p
7a50: 72 69 76 61 74 65 3a 0d 0a 0d 0a 09 2f 2f 20 8d  rivate:.....// .
7a60: ec 8b c6 97 70 83 7d 83 4e 83 8d 0d 0a 09 23 64  ....p.}.N.....#d
7a70: 65 66 69 6e 65 20 43 48 45 43 4b 5f 43 41 4e 43  efine CHECK_CANC
7a80: 45 4c 28 29 20 20 20 20 20 20 69 66 28 6d 5f 65  EL()      if(m_e
7a90: 6e 64 46 6c 61 67 29 20 62 72 65 61 6b 0d 0a 09  ndFlag) break...
7aa0: 23 64 65 66 69 6e 65 20 53 54 45 50 5f 47 52 41  #define STEP_GRA
7ab0: 50 48 28 29 09 20 20 20 20 43 48 45 43 4b 5f 43  PH().    CHECK_C
7ac0: 41 4e 43 45 4c 28 29 3b 20 73 65 6e 64 4d 73 67  ANCEL(); sendMsg
7ad0: 54 6f 49 74 65 6d 28 20 49 44 43 5f 42 41 52 2c  ToItem( IDC_BAR,
7ae0: 20 50 42 4d 5f 53 54 45 50 49 54 20 29 0d 0a 09   PBM_STEPIT )...
7af0: 23 64 65 66 69 6e 65 20 52 45 54 52 59 5f 28 29  #define RETRY_()
7b00: 20 20 20 20 20 20 20 20 20 20 20 20 3a 3a 49 6e              ::In
7b10: 74 65 72 6e 65 74 43 6c 6f 73 65 48 61 6e 64 6c  ternetCloseHandl
7b20: 65 28 20 68 74 74 70 20 29 3b 20 68 74 74 70 3d  e( http ); http=
7b30: 4e 55 4c 4c 3b 20 67 6f 74 6f 20 72 65 74 72 79  NULL; goto retry
7b40: 3b 0d 0a 09 23 64 65 66 69 6e 65 20 52 45 54 52  ;...#define RETR
7b50: 59 5f 65 72 72 6f 72 28 29 20 20 20 20 20 20 20  Y_error()       
7b60: 64 6f 7b 20 2b 2b 4d 69 72 3b 20 52 45 54 52 59  do{ ++Mir; RETRY
7b70: 5f 28 29 20 7d 77 68 69 6c 65 28 30 29 0d 0a 09  _() }while(0)...
7b80: 23 64 65 66 69 6e 65 20 52 45 54 52 59 5f 73 65  #define RETRY_se
7b90: 72 76 65 72 64 6f 77 6e 28 29 20 20 64 6f 7b 20  rverdown()  do{ 
7ba0: 6d 69 72 72 6f 72 4d 61 6e 2e 73 65 72 76 65 72  mirrorMan.server
7bb0: 5f 69 73 5f 64 6f 77 6e 28 4d 69 72 29 3b 20 52  _is_down(Mir); R
7bc0: 45 54 52 59 5f 28 29 20 7d 77 68 69 6c 65 28 30  ETRY_() }while(0
7bd0: 29 0d 0a 09 23 64 65 66 69 6e 65 20 49 4e 45 54  )...#define INET
7be0: 5f 43 4f 4e 4e 45 43 54 28 20 5f 5f 73 20 29 20  _CONNECT( __s ) 
7bf0: 3a 3a 49 6e 74 65 72 6e 65 74 43 6f 6e 6e 65 63  ::InternetConnec
7c00: 74 28 20 68 2c 20 5f 5f 73 2c 20 49 4e 54 45 52  t( h, __s, INTER
7c10: 4e 45 54 5f 44 45 46 41 55 4c 54 5f 48 54 54 50  NET_DEFAULT_HTTP
7c20: 5f 50 4f 52 54 2c 20 4e 55 4c 4c 2c 20 4e 55 4c  _PORT, NULL, NUL
7c30: 4c 2c 20 49 4e 54 45 52 4e 45 54 5f 53 45 52 56  L, INTERNET_SERV
7c40: 49 43 45 5f 48 54 54 50 2c 20 30 2c 20 30 20 29  ICE_HTTP, 0, 0 )
7c50: 0d 0a 09 23 64 65 66 69 6e 65 20 48 54 54 50 5f  ...#define HTTP_
7c60: 52 45 51 28 20 5f 5f 6e 20 29 20 20 20 20 20 3a  REQ( __n )     :
7c70: 3a 48 74 74 70 4f 70 65 6e 52 65 71 75 65 73 74  :HttpOpenRequest
7c80: 28 20 68 74 74 70 2c 20 22 47 45 54 22 2c 20 5f  ( http, "GET", _
7c90: 5f 6e 2c 20 22 48 54 54 50 2f 31 2e 30 22 2c 20  _n, "HTTP/1.0", 
7ca0: 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 30 2c 20 30  NULL, NULL, 0, 0
7cb0: 20 29 0d 0a 09 23 64 65 66 69 6e 65 20 48 54 54   )...#define HTT
7cc0: 50 5f 53 45 4e 44 28 29 20 20 20 20 20 20 20 20  P_SEND()        
7cd0: 20 73 74 61 74 75 73 3d 30 2c 3a 3a 48 74 74 70   status=0,::Http
7ce0: 53 65 6e 64 52 65 71 75 65 73 74 28 20 73 73 2c  SendRequest( ss,
7cf0: 20 4e 55 4c 4c 2c 20 30 2c 20 4e 55 4c 4c 2c 20   NULL, 0, NULL, 
7d00: 30 20 29 2c 20 3a 3a 48 74 74 70 51 75 65 72 79  0 ), ::HttpQuery
7d10: 49 6e 66 6f 41 28 20 73 73 2c 20 48 54 54 50 5f  InfoA( ss, HTTP_
7d20: 51 55 45 52 59 5f 53 54 41 54 55 53 5f 43 4f 44  QUERY_STATUS_COD
7d30: 45 7c 48 54 54 50 5f 51 55 45 52 59 5f 46 4c 41  E|HTTP_QUERY_FLA
7d40: 47 5f 4e 55 4d 42 45 52 2c 26 73 74 61 74 75 73  G_NUMBER,&status
7d50: 2c 26 73 69 7a 65 2c 26 64 77 29 2c 73 74 61 74  ,&size,&dw),stat
7d60: 75 73 3b 0d 0a 0d 0a 09 76 6f 69 64 20 74 68 72  us;.....void thr
7d70: 65 61 64 57 6f 72 6b 65 72 28 29 0d 0a 09 7b 0d  eadWorker()...{.
7d80: 0a 09 09 2f 2f 20 8d ec 8b c6 95 cf 90 94 0d 0a  ...// ..........
7d90: 09 09 44 57 4f 52 44 20 64 77 20 3d 20 30 2c 20  ..DWORD dw = 0, 
7da0: 73 69 7a 65 20 3d 20 73 69 7a 65 6f 66 28 44 57  size = sizeof(DW
7db0: 4f 52 44 29 2c 20 73 74 61 74 75 73 3b 0d 0a 09  ORD), status;...
7dc0: 09 6b 69 53 74 72 20 6e 61 6d 65 3b 0d 0a 09 09  .kiStr name;....
7dd0: 63 68 61 72 20 62 75 66 5b 34 30 30 30 5d 3b 0d  char buf[4000];.
7de0: 0a 0d 0a 09 09 2f 2f 20 83 81 83 43 83 93 83 8b  .....// ...C....
7df0: 81 5b 83 76 0d 0a 09 09 66 6f 72 28 20 75 6e 73  .[.v....for( uns
7e00: 69 67 6e 65 64 20 69 6e 74 20 69 3d 30 3b 20 69  igned int i=0; i
7e10: 3c 63 66 67 2d 3e 4c 69 73 74 2e 6c 65 6e 28 29  <cfg->List.len()
7e20: 3b 20 2b 2b 69 20 29 0d 0a 09 09 7b 0d 0a 09 09  ; ++i )....{....
7e30: 09 69 66 28 20 21 6d 69 72 72 6f 72 4d 61 6e 2e  .if( !mirrorMan.
7e40: 69 73 4d 69 72 72 6f 72 4c 65 66 74 28 30 29 20  isMirrorLeft(0) 
7e50: 29 0d 0a 09 09 09 09 62 72 65 61 6b 3b 20 2f 2f  )......break; //
7e60: 20 82 c7 82 cc 83 54 81 5b 83 6f 82 c9 82 e0 8c   .....T.[.o.....
7e70: 71 82 b0 82 c8 82 a2 8f ea 8d 87 81 41 8f 49 97  q...........A.I.
7e80: b9 0d 0a 09 09 09 53 54 45 50 5f 47 52 41 50 48  ......STEP_GRAPH
7e90: 28 29 3b 0d 0a 0d 0a 09 09 09 2f 2f 0d 0a 09 09  ();.......//....
7ea0: 09 2f 2f 20 96 a2 90 da 91 b1 82 c8 82 e7 83 54  .// ...........T
7eb0: 81 5b 83 6f 82 d6 8c 71 82 ae 0d 0a 09 09 09 2f  .[.o...q......./
7ec0: 2f 0d 0a 09 09 09 69 6e 74 20 4d 69 72 20 3d 20  /.....int Mir = 
7ed0: 30 3b 0d 0a 09 09 72 65 74 72 79 3a 0d 0a 09 09  0;....retry:....
7ee0: 09 69 66 28 20 21 68 74 74 70 20 29 0d 0a 09 09  .if( !http )....
7ef0: 09 7b 0d 0a 09 09 09 09 69 66 28 20 21 6d 69 72  .{......if( !mir
7f00: 72 6f 72 4d 61 6e 2e 69 73 4d 69 72 72 6f 72 4c  rorMan.isMirrorL
7f10: 65 66 74 28 4d 69 72 29 20 29 0d 0a 09 09 09 09  eft(Mir) )......
7f20: 09 63 6f 6e 74 69 6e 75 65 3b 20 2f 2f 20 82 b1  .continue; // ..
7f30: 82 cc 44 4c 4c 82 cc 8f ee 95 f1 8e e6 93 be 82  ..DLL...........
7f40: cd 96 b3 97 9d 82 c5 82 b5 82 bd 0d 0a 09 09 09  ................
7f50: 09 68 74 74 70 20 3d 20 49 4e 45 54 5f 43 4f 4e  .http = INET_CON
7f60: 4e 45 43 54 28 20 6d 69 72 72 6f 72 4d 61 6e 2e  NECT( mirrorMan.
7f70: 73 65 72 76 65 72 4e 61 6d 65 28 4d 69 72 29 20  serverName(Mir) 
7f80: 29 3b 0d 0a 09 09 09 09 69 66 28 20 21 68 74 74  );......if( !htt
7f90: 70 20 29 0d 0a 09 09 09 09 09 52 45 54 52 59 5f  p ).......RETRY_
7fa0: 73 65 72 76 65 72 64 6f 77 6e 28 29 3b 20 2f 2f  serverdown(); //
7fb0: 20 8e 9f 82 cc 83 7e 83 89 81 5b 82 f0 8e 8e 82   .....~...[.....
7fc0: b7 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 09 09 2f 2f  ......}.......//
7fd0: 0d 0a 09 09 09 2f 2f 20 48 54 54 50 83 8a 83 4e  .....// HTTP...N
7fe0: 83 47 83 58 83 67 8d ec 90 ac 0d 0a 09 09 09 2f  .G.X.g........./
7ff0: 2f 0d 0a 09 09 09 6e 61 6d 65 20 3d 20 6d 69 72  /.....name = mir
8000: 72 6f 72 4d 61 6e 2e 62 61 73 65 50 61 74 68 28  rorMan.basePath(
8010: 4d 69 72 29 3b 0d 0a 09 09 09 6e 61 6d 65 2b 3d  Mir);.....name+=
8020: 20 63 66 67 2d 3e 4c 69 73 74 5b 69 5d 2d 3e 68   cfg->List[i]->h
8030: 74 6d 6c 4e 61 6d 65 28 29 3b 0d 0a 09 09 09 73  tmlName();.....s
8040: 73 20 20 20 3d 20 48 54 54 50 5f 52 45 51 28 20  s   = HTTP_REQ( 
8050: 6e 61 6d 65 20 29 3b 0d 0a 09 09 09 69 66 28 20  name );.....if( 
8060: 21 73 73 20 29 0d 0a 09 09 09 09 52 45 54 52 59  !ss )......RETRY
8070: 5f 73 65 72 76 65 72 64 6f 77 6e 28 29 3b 0d 0a  _serverdown();..
8080: 09 09 09 43 48 45 43 4b 5f 43 41 4e 43 45 4c 28  ...CHECK_CANCEL(
8090: 29 3b 0d 0a 0d 0a 09 09 09 2f 2f 0d 0a 09 09 09  );.......//.....
80a0: 2f 2f 20 48 54 54 50 83 8a 83 4e 83 47 83 58 83  // HTTP...N.G.X.
80b0: 67 91 97 90 4d 0d 0a 09 09 09 2f 2f 0d 0a 09 09  g...M.....//....
80c0: 09 62 6f 6f 6c 20 73 75 63 63 65 65 64 65 64 20  .bool succeeded 
80d0: 3d 20 66 61 6c 73 65 3b 0d 0a 09 09 09 69 6e 74  = false;.....int
80e0: 20 74 72 79 5f 61 75 74 68 20 3d 20 33 3b 0d 0a   try_auth = 3;..
80f0: 09 09 09 77 68 69 6c 65 28 20 21 73 75 63 63 65  ...while( !succe
8100: 65 64 65 64 20 26 26 20 28 74 72 79 5f 61 75 74  eded && (try_aut
8110: 68 2d 2d 3e 30 29 20 29 0d 0a 09 09 09 7b 0d 0a  h-->0) ).....{..
8120: 09 09 09 09 73 74 61 74 75 73 20 3d 20 48 54 54  ....status = HTT
8130: 50 5f 53 45 4e 44 28 29 3b 0d 0a 0d 0a 09 09 09  P_SEND();.......
8140: 09 69 66 28 20 73 74 61 74 75 73 2f 31 30 30 20  .if( status/100 
8150: 3d 3d 20 32 20 29 20 20 2f 2f 20 32 30 30 82 c8  == 2 )  // 200..
8160: 82 c7 81 42 90 ac 8c f7 0d 0a 09 09 09 09 7b 0d  ...B..........{.
8170: 0a 09 09 09 09 09 73 75 63 63 65 65 64 65 64 20  ......succeeded 
8180: 3d 20 74 72 75 65 3b 0d 0a 09 09 09 09 09 62 72  = true;.......br
8190: 65 61 6b 3b 0d 0a 09 09 09 09 7d 0d 0a 09 09 09  eak;......}.....
81a0: 09 65 6c 73 65 20 69 66 28 20 73 74 61 74 75 73  .else if( status
81b0: 20 3d 3d 20 30 20 29 20 2f 2f 20 83 5e 83 43 83   == 0 ) // .^.C.
81c0: 80 83 41 83 45 83 67 81 42 95 ca 83 54 81 5b 83  ..A.E.g.B...T.[.
81d0: 6f 82 f0 74 72 79 0d 0a 09 09 09 09 7b 0d 0a 09  o..try......{...
81e0: 09 09 09 09 3a 3a 49 6e 74 65 72 6e 65 74 43 6c  ....::InternetCl
81f0: 6f 73 65 48 61 6e 64 6c 65 28 20 73 73 20 29 3b  oseHandle( ss );
8200: 0d 0a 09 09 09 09 09 52 45 54 52 59 5f 73 65 72  .......RETRY_ser
8210: 76 65 72 64 6f 77 6e 28 29 3b 0d 0a 09 09 09 09  verdown();......
8220: 7d 0d 0a 09 09 09 09 65 6c 73 65 20 69 66 28 20  }......else if( 
8230: 73 74 61 74 75 73 20 3d 3d 20 34 30 37 20 29 20  status == 407 ) 
8240: 2f 2f 20 34 30 37 20 50 72 6f 78 79 20 41 75 74  // 407 Proxy Aut
8250: 68 65 6e 74 69 63 61 74 69 6f 6e 20 52 65 71 75  hentication Requ
8260: 69 72 65 64 0d 0a 09 09 09 09 7b 0d 0a 09 09 09  ired......{.....
8270: 09 09 2f 2f 20 83 70 83 58 83 8f 81 5b 83 68 82  ..// .p.X...[.h.
8280: f0 91 c5 82 bd 82 b9 82 c4 82 e0 82 a4 88 ea 93  ................
8290: 78 0d 0a 09 09 09 09 09 44 57 4f 52 44 20 64 77  x.......DWORD dw
82a0: 52 65 74 20 3d 20 3a 3a 49 6e 74 65 72 6e 65 74  Ret = ::Internet
82b0: 45 72 72 6f 72 44 6c 67 28 0d 0a 09 09 09 09 09  ErrorDlg(.......
82c0: 09 68 77 6e 64 28 29 2c 20 73 73 2c 20 47 65 74  .hwnd(), ss, Get
82d0: 4c 61 73 74 45 72 72 6f 72 28 29 2c 0d 0a 09 09  LastError(),....
82e0: 09 09 09 09 46 4c 41 47 53 5f 45 52 52 4f 52 5f  ....FLAGS_ERROR_
82f0: 55 49 5f 46 49 4c 54 45 52 5f 46 4f 52 5f 45 52  UI_FILTER_FOR_ER
8300: 52 4f 52 53 20 7c 0d 0a 09 09 09 09 09 09 46 4c  RORS |........FL
8310: 41 47 53 5f 45 52 52 4f 52 5f 55 49 5f 46 4c 41  AGS_ERROR_UI_FLA
8320: 47 53 5f 43 48 41 4e 47 45 5f 4f 50 54 49 4f 4e  GS_CHANGE_OPTION
8330: 53 20 7c 0d 0a 09 09 09 09 09 09 46 4c 41 47 53  S |........FLAGS
8340: 5f 45 52 52 4f 52 5f 55 49 5f 46 4c 41 47 53 5f  _ERROR_UI_FLAGS_
8350: 47 45 4e 45 52 41 54 45 5f 44 41 54 41 2c 0d 0a  GENERATE_DATA,..
8360: 09 09 09 09 09 09 4e 55 4c 4c 20 29 3b 0d 0a 09  ......NULL );...
8370: 09 09 09 09 2f 2f 20 94 46 8f d8 8e b8 94 73 82  ....// .F.....s.
8380: b5 82 bd 82 e7 8f 49 97 b9 0d 0a 09 09 09 09 09  ......I.........
8390: 69 66 28 20 64 77 52 65 74 20 21 3d 20 45 52 52  if( dwRet != ERR
83a0: 4f 52 5f 49 4e 54 45 52 4e 45 54 5f 46 4f 52 43  OR_INTERNET_FORC
83b0: 45 5f 52 45 54 52 59 20 29 0d 0a 09 09 09 09 09  E_RETRY ).......
83c0: 7b 0d 0a 09 09 09 09 09 09 3a 3a 49 6e 74 65 72  {........::Inter
83d0: 6e 65 74 43 6c 6f 73 65 48 61 6e 64 6c 65 28 20  netCloseHandle( 
83e0: 73 73 20 29 3b 0d 0a 09 09 09 09 09 09 65 6e 64  ss );........end
83f0: 28 20 49 44 4f 4b 20 29 3b 20 72 65 74 75 72 6e  ( IDOK ); return
8400: 3b 0d 0a 09 09 09 09 09 7d 0d 0a 09 09 09 09 09  ;.......}.......
8410: 63 6f 6e 74 69 6e 75 65 3b 0d 0a 09 09 09 09 7d  continue;......}
8420: 0d 0a 09 09 09 09 65 6c 73 65 20 2f 2f 20 82 bb  ......else // ..
8430: 82 cc 91 bc 82 cc 83 47 83 89 81 5b 81 42 82 a0  .......G...[.B..
8440: 82 ab 82 e7 82 df 82 c4 8e 9f 82 cc 44 4c 4c 82  ............DLL.
8450: c9 90 69 82 de 0d 0a 09 09 09 09 7b 0d 0a 09 09  ..i........{....
8460: 09 09 09 3a 3a 49 6e 74 65 72 6e 65 74 43 6c 6f  ...::InternetClo
8470: 73 65 48 61 6e 64 6c 65 28 20 73 73 20 29 3b 0d  seHandle( ss );.
8480: 0a 09 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09  ......break;....
8490: 09 09 7d 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 09 09  ..}.....}.......
84a0: 2f 2f 0d 0a 09 09 09 2f 2f 20 93 c7 8d 9e 0d 0a  //.....// ......
84b0: 09 09 09 2f 2f 0d 0a 09 09 09 53 54 45 50 5f 47  ...//.....STEP_G
84c0: 52 41 50 48 28 29 3b 0d 0a 09 09 09 69 66 28 20  RAPH();.....if( 
84d0: 73 75 63 63 65 65 64 65 64 20 29 0d 0a 09 09 09  succeeded ).....
84e0: 7b 0d 0a 09 09 09 09 44 57 4f 52 44 20 72 65 61  {......DWORD rea
84f0: 64 3b 0d 0a 09 09 09 09 3a 3a 49 6e 74 65 72 6e  d;......::Intern
8500: 65 74 52 65 61 64 46 69 6c 65 28 20 73 73 2c 20  etReadFile( ss, 
8510: 62 75 66 2c 20 73 69 7a 65 6f 66 28 62 75 66 29  buf, sizeof(buf)
8520: 2d 31 2c 20 26 72 65 61 64 20 29 3b 0d 0a 09 09  -1, &read );....
8530: 09 09 3a 3a 49 6e 74 65 72 6e 65 74 43 6c 6f 73  ..::InternetClos
8540: 65 48 61 6e 64 6c 65 28 20 73 73 20 29 3b 0d 0a  eHandle( ss );..
8550: 09 09 09 09 62 75 66 5b 20 72 65 61 64 20 5d 20  ....buf[ read ] 
8560: 3d 20 27 5c 30 27 3b 0d 0a 09 09 09 7d 0d 0a 0d  = '\0';.....}...
8570: 0a 09 09 09 2f 2f 0d 0a 09 09 09 2f 2f 20 89 f0  ....//.....// ..
8580: 90 cd 0d 0a 09 09 09 2f 2f 0d 0a 09 09 09 53 54  .......//.....ST
8590: 45 50 5f 47 52 41 50 48 28 29 3b 0d 0a 09 09 09  EP_GRAPH();.....
85a0: 69 66 28 20 73 75 63 63 65 65 64 65 64 20 29 0d  if( succeeded ).
85b0: 0a 09 09 09 09 63 66 67 2d 3e 4c 69 73 74 5b 69  .....cfg->List[i
85c0: 5d 2d 3e 50 61 72 73 65 48 54 4d 4c 28 20 62 75  ]->ParseHTML( bu
85d0: 66 20 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 69  f );....}......i
85e0: 66 28 20 21 6d 5f 65 6e 64 46 6c 61 67 20 29 0d  f( !m_endFlag ).
85f0: 0a 09 09 09 65 6e 64 28 20 49 44 4f 4b 20 29 3b  ....end( IDOK );
8600: 0d 0a 09 7d 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d 0a  ...}..};........
8610: 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  //--------------
8620: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8630: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8640: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8650: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
8660: 2f 2f 20 64 6c 6c 44 6c 67 3a 20 83 5f 83 45 83  // dllDlg: ._.E.
8670: 93 83 8d 81 5b 83 68 82 b7 82 e9 44 4c 4c 82 cc  ....[.h....DLL..
8680: 91 49 91 f0 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d  .I....//--------
8690: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
86a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
86b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
86c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
86d0: 2d 2d 2d 2d 0d 0a 0d 0a 63 6c 61 73 73 20 64 6c  ----....class dl
86e0: 6c 44 6c 67 20 3a 20 70 75 62 6c 69 63 20 6b 69  lDlg : public ki
86f0: 44 69 61 6c 6f 67 0d 0a 7b 0d 0a 70 75 62 6c 69  Dialog..{..publi
8700: 63 3a 0d 0a 09 64 6c 6c 44 6c 67 28 20 6b 69 41  c:...dllDlg( kiA
8710: 72 72 61 79 3c 44 4c 4c 49 6e 66 6f 2a 3e 26 20  rray<DLLInfo*>& 
8720: 75 70 64 20 29 20 3a 20 6b 69 44 69 61 6c 6f 67  upd ) : kiDialog
8730: 28 20 49 44 44 5f 43 55 53 54 4f 4d 32 20 29 2c  ( IDD_CUSTOM2 ),
8740: 20 6d 5f 75 70 64 28 75 70 64 29 20 7b 7d 0d 0a   m_upd(upd) {}..
8750: 0d 0a 70 72 69 76 61 74 65 3a 0d 0a 09 6b 69 41  ..private:...kiA
8760: 72 72 61 79 3c 44 4c 4c 49 6e 66 6f 2a 3e 26 20  rray<DLLInfo*>& 
8770: 6d 5f 75 70 64 3b 0d 0a 0d 0a 09 42 4f 4f 4c 20  m_upd;.....BOOL 
8780: 6f 6e 49 6e 69 74 28 29 0d 0a 09 7b 0d 0a 09 09  onInit()...{....
8790: 61 70 70 28 29 2d 3e 73 65 74 4d 61 69 6e 57 6e  app()->setMainWn
87a0: 64 28 20 74 68 69 73 20 29 3b 0d 0a 0d 0a 09 09  d( this );......
87b0: 53 48 46 49 4c 45 49 4e 46 4f 20 66 69 3b 0d 0a  SHFILEINFO fi;..
87c0: 09 09 48 49 4d 41 47 45 4c 49 53 54 20 68 49 20  ..HIMAGELIST hI 
87d0: 3d 20 28 48 49 4d 41 47 45 4c 49 53 54 29 3a 3a  = (HIMAGELIST)::
87e0: 53 48 47 65 74 46 69 6c 65 49 6e 66 6f 28 0d 0a  SHGetFileInfo(..
87f0: 09 09 09 6b 69 50 61 74 68 28 6b 69 50 61 74 68  ...kiPath(kiPath
8800: 3a 3a 53 79 73 29 2b 3d 22 4b 45 52 4e 45 4c 33  ::Sys)+="KERNEL3
8810: 32 2e 44 4c 4c 22 2c 20 30 2c 20 26 66 69 2c 20  2.DLL", 0, &fi, 
8820: 73 69 7a 65 6f 66 28 66 69 29 2c 0d 0a 09 09 09  sizeof(fi),.....
8830: 53 48 47 46 49 5f 53 59 53 49 43 4f 4e 49 4e 44  SHGFI_SYSICONIND
8840: 45 58 20 7c 20 53 48 47 46 49 5f 49 43 4f 4e 20  EX | SHGFI_ICON 
8850: 7c 20 53 48 47 46 49 5f 53 4d 41 4c 4c 49 43 4f  | SHGFI_SMALLICO
8860: 4e 20 29 3b 0d 0a 09 09 69 6e 74 20 69 44 4c 4c  N );....int iDLL
8870: 20 3d 20 66 69 2e 69 49 63 6f 6e 3b 0d 0a 09 09   = fi.iIcon;....
8880: 69 6e 74 20 69 45 58 45 20 3d 20 6b 69 53 55 74  int iEXE = kiSUt
8890: 69 6c 3a 3a 67 65 74 53 79 73 49 63 6f 6e 28 20  il::getSysIcon( 
88a0: 22 65 78 65 22 20 29 3b 0d 0a 0d 0a 09 09 6b 69  "exe" );......ki
88b0: 53 74 72 20 73 74 72 3b 0d 0a 09 09 6b 69 4c 69  Str str;....kiLi
88c0: 73 74 56 69 65 77 20 6c 69 73 74 28 20 74 68 69  stView list( thi
88d0: 73 2c 20 49 44 43 5f 55 50 44 41 54 45 4c 49 53  s, IDC_UPDATELIS
88e0: 54 20 29 3b 0d 0a 09 09 6c 69 73 74 2e 73 65 74  T );....list.set
88f0: 49 6d 61 67 65 4c 69 73 74 28 20 4e 55 4c 4c 2c  ImageList( NULL,
8900: 20 68 49 20 29 3b 0d 0a 09 09 6c 69 73 74 2e 69   hI );....list.i
8910: 6e 73 65 72 74 43 6f 6c 75 6d 6e 28 20 30 2c 20  nsertColumn( 0, 
8920: 73 74 72 2e 6c 6f 61 64 52 73 72 63 28 20 49 44  str.loadRsrc( ID
8930: 53 5f 4c 56 5f 44 4c 4c 4e 41 4d 45 20 29 2c 20  S_LV_DLLNAME ), 
8940: 31 32 30 20 29 3b 0d 0a 09 09 6c 69 73 74 2e 69  120 );....list.i
8950: 6e 73 65 72 74 43 6f 6c 75 6d 6e 28 20 31 2c 20  nsertColumn( 1, 
8960: 73 74 72 2e 6c 6f 61 64 52 73 72 63 28 20 49 44  str.loadRsrc( ID
8970: 53 5f 4c 56 5f 53 54 41 54 45 20 29 2c 20 31 31  S_LV_STATE ), 11
8980: 30 20 29 3b 0d 0a 09 09 66 6f 72 28 20 75 6e 73  0 );....for( uns
8990: 69 67 6e 65 64 20 69 6e 74 20 69 3d 30 3b 20 69  igned int i=0; i
89a0: 3c 6d 5f 75 70 64 2e 6c 65 6e 28 29 3b 20 69 2b  <m_upd.len(); i+
89b0: 2b 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 6c 69 73  + )....{.....lis
89c0: 74 2e 69 6e 73 65 72 74 49 74 65 6d 28 20 69 2c  t.insertItem( i,
89d0: 20 6d 5f 75 70 64 5b 69 5d 2d 3e 67 65 74 4e 61   m_upd[i]->getNa
89e0: 6d 65 28 29 2c 20 30 2c 20 73 74 72 63 6d 70 69  me(), 0, strcmpi
89f0: 28 20 22 64 6c 6c 22 2c 20 6b 69 50 61 74 68 3a  ( "dll", kiPath:
8a00: 3a 65 78 74 28 6d 5f 75 70 64 5b 69 5d 2d 3e 67  :ext(m_upd[i]->g
8a10: 65 74 4e 61 6d 65 28 29 29 20 29 20 3f 20 69 45  etName()) ) ? iE
8a20: 58 45 20 3a 20 69 44 4c 4c 20 29 3b 0d 0a 09 09  XE : iDLL );....
8a30: 09 6c 69 73 74 2e 73 65 74 53 75 62 49 74 65 6d  .list.setSubItem
8a40: 28 20 69 2c 20 31 2c 20 6d 5f 75 70 64 5b 69 5d  ( i, 1, m_upd[i]
8a50: 2d 3e 67 65 74 53 74 61 74 65 28 29 20 29 3b 0d  ->getState() );.
8a60: 0a 09 09 7d 0d 0a 09 09 73 65 6e 64 4d 73 67 54  ...}....sendMsgT
8a70: 6f 49 74 65 6d 28 20 49 44 43 5f 55 50 44 41 54  oItem( IDC_UPDAT
8a80: 45 4c 49 53 54 2c 4c 56 4d 5f 53 45 54 45 58 54  ELIST,LVM_SETEXT
8a90: 45 4e 44 45 44 4c 49 53 54 56 49 45 57 53 54 59  ENDEDLISTVIEWSTY
8aa0: 4c 45 2c 4c 56 53 5f 45 58 5f 43 48 45 43 4b 42  LE,LVS_EX_CHECKB
8ab0: 4f 58 45 53 2c 4c 56 53 5f 45 58 5f 43 48 45 43  OXES,LVS_EX_CHEC
8ac0: 4b 42 4f 58 45 53 20 29 3b 0d 0a 09 09 66 6f 72  KBOXES );....for
8ad0: 28 20 69 3d 30 3b 20 69 21 3d 6d 5f 75 70 64 2e  ( i=0; i!=m_upd.
8ae0: 6c 65 6e 28 29 3b 20 69 2b 2b 20 29 0d 0a 09 09  len(); i++ )....
8af0: 09 4c 69 73 74 56 69 65 77 5f 53 65 74 43 68 65  .ListView_SetChe
8b00: 63 6b 53 74 61 74 65 28 20 69 74 65 6d 28 49 44  ckState( item(ID
8b10: 43 5f 55 50 44 41 54 45 4c 49 53 54 29 2c 20 69  C_UPDATELIST), i
8b20: 2c 20 54 52 55 45 20 29 3b 0d 0a 09 09 66 6f 72  , TRUE );....for
8b30: 28 20 69 6e 74 20 6a 3d 30 3b 20 6a 21 3d 33 3b  ( int j=0; j!=3;
8b40: 20 6a 2b 2b 20 29 0d 0a 09 09 09 73 65 6e 64 4d   j++ ).....sendM
8b50: 73 67 54 6f 49 74 65 6d 28 20 49 44 43 5f 49 4e  sgToItem( IDC_IN
8b60: 53 54 4d 4f 44 45 31 2b 6a 2c 42 4d 5f 53 45 54  STMODE1+j,BM_SET
8b70: 43 48 45 43 4b 2c 6a 3d 3d 63 66 67 2d 3e 49 6e  CHECK,j==cfg->In
8b80: 73 74 4d 6f 64 65 20 3f 20 42 53 54 5f 43 48 45  stMode ? BST_CHE
8b90: 43 4b 45 44 20 3a 20 42 53 54 5f 55 4e 43 48 45  CKED : BST_UNCHE
8ba0: 43 4b 45 44 20 29 3b 0d 0a 09 09 72 65 74 75 72  CKED );....retur
8bb0: 6e 20 46 41 4c 53 45 3b 0d 0a 09 7d 0d 0a 09 62  n FALSE;...}...b
8bc0: 6f 6f 6c 20 6f 6e 43 61 6e 63 65 6c 28 29 0d 0a  ool onCancel()..
8bd0: 09 7b 0d 0a 09 09 69 66 28 20 21 63 61 6e 63 65  .{....if( !cance
8be0: 6c 53 68 69 74 65 49 69 64 65 73 75 6b 61 28 29  lShiteIidesuka()
8bf0: 20 29 0d 0a 09 09 09 72 65 74 75 72 6e 20 66 61   ).....return fa
8c00: 6c 73 65 3b 0d 0a 09 09 6b 69 4c 69 73 74 56 69  lse;....kiListVi
8c10: 65 77 28 20 74 68 69 73 2c 20 49 44 43 5f 55 50  ew( this, IDC_UP
8c20: 44 41 54 45 4c 49 53 54 20 29 2e 73 65 74 49 6d  DATELIST ).setIm
8c30: 61 67 65 4c 69 73 74 28 20 4e 55 4c 4c 2c 20 4e  ageList( NULL, N
8c40: 55 4c 4c 20 29 3b 0d 0a 09 09 72 65 74 75 72 6e  ULL );....return
8c50: 20 74 72 75 65 3b 0d 0a 09 7d 0d 0a 09 62 6f 6f   true;...}...boo
8c60: 6c 20 6f 6e 4f 4b 28 29 0d 0a 09 7b 0d 0a 09 09  l onOK()...{....
8c70: 66 6f 72 28 20 75 6e 73 69 67 6e 65 64 20 69 6e  for( unsigned in
8c80: 74 20 69 3d 30 3b 20 69 21 3d 33 3b 20 69 2b 2b  t i=0; i!=3; i++
8c90: 20 29 0d 0a 09 09 09 69 66 28 20 42 53 54 5f 43   ).....if( BST_C
8ca0: 48 45 43 4b 45 44 20 3d 3d 20 73 65 6e 64 4d 73  HECKED == sendMs
8cb0: 67 54 6f 49 74 65 6d 28 20 49 44 43 5f 49 4e 53  gToItem( IDC_INS
8cc0: 54 4d 4f 44 45 31 2b 69 2c 20 42 4d 5f 47 45 54  TMODE1+i, BM_GET
8cd0: 43 48 45 43 4b 20 29 20 29 0d 0a 09 09 09 7b 0d  CHECK ) ).....{.
8ce0: 0a 09 09 09 09 63 66 67 2d 3e 49 6e 73 74 4d 6f  .....cfg->InstMo
8cf0: 64 65 20 3d 20 69 3b 0d 0a 09 09 09 09 62 72 65  de = i;......bre
8d00: 61 6b 3b 0d 0a 09 09 09 7d 0d 0a 0d 0a 09 09 6b  ak;.....}......k
8d10: 69 41 72 72 61 79 3c 44 4c 4c 49 6e 66 6f 2a 3e  iArray<DLLInfo*>
8d20: 20 72 65 73 3b 0d 0a 09 09 72 65 73 20 3d 20 6d   res;....res = m
8d30: 5f 75 70 64 2c 20 6d 5f 75 70 64 2e 65 6d 70 74  _upd, m_upd.empt
8d40: 79 28 29 3b 0d 0a 09 09 66 6f 72 28 20 69 3d 30  y();....for( i=0
8d50: 3b 20 69 3c 72 65 73 2e 6c 65 6e 28 29 3b 20 69  ; i<res.len(); i
8d60: 2b 2b 20 29 0d 0a 09 09 09 69 66 28 20 4c 69 73  ++ ).....if( Lis
8d70: 74 56 69 65 77 5f 47 65 74 43 68 65 63 6b 53 74  tView_GetCheckSt
8d80: 61 74 65 28 20 69 74 65 6d 28 49 44 43 5f 55 50  ate( item(IDC_UP
8d90: 44 41 54 45 4c 49 53 54 29 2c 20 69 20 29 20 29  DATELIST), i ) )
8da0: 0d 0a 09 09 09 09 6d 5f 75 70 64 2e 61 64 64 28  ......m_upd.add(
8db0: 20 72 65 73 5b 69 5d 20 29 3b 0d 0a 0d 0a 09 09   res[i] );......
8dc0: 6b 69 4c 69 73 74 56 69 65 77 28 20 74 68 69 73  kiListView( this
8dd0: 2c 20 49 44 43 5f 55 50 44 41 54 45 4c 49 53 54  , IDC_UPDATELIST
8de0: 20 29 2e 73 65 74 49 6d 61 67 65 4c 69 73 74 28   ).setImageList(
8df0: 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 20 29 3b 0d 0a   NULL, NULL );..
8e00: 09 09 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a  ..return true;..
8e10: 09 7d 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f  .}..};........//
8e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8e60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f  ------------..//
8e70: 20 64 6f 77 6e 6c 6f 61 64 44 6c 67 20 3a 20 83   downloadDlg : .
8e80: 5f 83 45 83 93 83 8d 81 5b 83 68 0d 0a 2f 2f 2d  _.E.....[.h..//-
8e90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8ea0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8eb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
8ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 63  -----------....c
8ee0: 6c 61 73 73 20 64 6f 77 6e 6c 6f 61 64 44 6c 67  lass downloadDlg
8ef0: 20 3a 20 70 75 62 6c 69 63 20 6b 69 44 69 61 6c   : public kiDial
8f00: 6f 67 2c 20 49 42 69 6e 64 53 74 61 74 75 73 43  og, IBindStatusC
8f10: 61 6c 6c 62 61 63 6b 0d 0a 7b 0d 0a 70 75 62 6c  allback..{..publ
8f20: 69 63 3a 0d 0a 09 64 6f 77 6e 6c 6f 61 64 44 6c  ic:...downloadDl
8f30: 67 28 20 63 6f 6e 73 74 20 6b 69 41 72 72 61 79  g( const kiArray
8f40: 3c 44 4c 4c 49 6e 66 6f 2a 3e 26 20 6c 73 74 2c  <DLLInfo*>& lst,
8f50: 20 63 6f 6e 73 74 20 6b 69 50 61 74 68 26 20 70   const kiPath& p
8f60: 74 68 20 29 0d 0a 09 09 3a 20 6b 69 44 69 61 6c  th )....: kiDial
8f70: 6f 67 28 20 49 44 44 5f 56 45 52 43 48 45 43 4b  og( IDD_VERCHECK
8f80: 20 29 2c 20 6d 5f 6c 73 74 28 20 6c 73 74 20 29   ), m_lst( lst )
8f90: 2c 20 6d 5f 70 74 68 28 20 70 74 68 20 29 2c 20  , m_pth( pth ), 
8fa0: 6d 5f 63 52 65 66 28 20 31 20 29 7b 7d 0d 0a 0d  m_cRef( 1 ){}...
8fb0: 0a 70 72 69 76 61 74 65 3a 0d 0a 09 63 6f 6e 73  .private:...cons
8fc0: 74 20 6b 69 41 72 72 61 79 3c 44 4c 4c 49 6e 66  t kiArray<DLLInf
8fd0: 6f 2a 3e 26 20 6d 5f 6c 73 74 3b 0d 0a 09 63 6f  o*>& m_lst;...co
8fe0: 6e 73 74 20 6b 69 50 61 74 68 26 20 6d 5f 70 74  nst kiPath& m_pt
8ff0: 68 3b 0d 0a 09 75 6e 73 69 67 6e 65 64 20 6c 6f  h;...unsigned lo
9000: 6e 67 20 6d 5f 63 52 65 66 3b 0d 0a 09 75 6e 73  ng m_cRef;...uns
9010: 69 67 6e 65 64 20 6c 6f 6e 67 20 6d 5f 74 6f 74  igned long m_tot
9020: 61 6c 3b 0d 0a 09 75 6e 73 69 67 6e 65 64 20 6c  al;...unsigned l
9030: 6f 6e 67 20 6d 5f 73 74 65 70 3b 0d 0a 09 75 6e  ong m_step;...un
9040: 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6d 5f 73 74  signed long m_st
9050: 61 72 74 54 69 6d 65 2c 20 6d 5f 6c 61 73 74 54  artTime, m_lastT
9060: 69 6d 65 3b 0d 0a 09 62 6f 6f 6c 20 6d 5f 73 74  ime;...bool m_st
9070: 61 74 65 43 61 6e 63 65 6c 3b 0d 0a 0d 0a 09 42  ateCancel;.....B
9080: 4f 4f 4c 20 6f 6e 49 6e 69 74 28 29 0d 0a 09 7b  OOL onInit()...{
9090: 0d 0a 09 09 61 70 70 28 29 2d 3e 73 65 74 4d 61  ....app()->setMa
90a0: 69 6e 57 6e 64 28 20 74 68 69 73 20 29 3b 0d 0a  inWnd( this );..
90b0: 0d 0a 09 09 6d 5f 73 74 61 72 74 54 69 6d 65 20  ....m_startTime 
90c0: 3d 20 6d 5f 6c 61 73 74 54 69 6d 65 20 3d 20 3a  = m_lastTime = :
90d0: 3a 47 65 74 54 69 63 6b 43 6f 75 6e 74 28 29 3b  :GetTickCount();
90e0: 0d 0a 09 09 6d 5f 73 74 61 74 65 43 61 6e 63 65  ....m_stateCance
90f0: 6c 20 3d 20 66 61 6c 73 65 3b 0d 0a 09 09 6d 5f  l = false;....m_
9100: 73 74 65 70 20 3d 20 6d 5f 74 6f 74 61 6c 20 3d  step = m_total =
9110: 20 30 3b 0d 0a 09 09 66 6f 72 28 20 75 6e 73 69   0;....for( unsi
9120: 67 6e 65 64 20 69 6e 74 20 69 3d 30 3b 20 69 3c  gned int i=0; i<
9130: 6d 5f 6c 73 74 2e 6c 65 6e 28 29 3b 20 69 2b 2b  m_lst.len(); i++
9140: 20 29 0d 0a 09 09 09 6d 5f 74 6f 74 61 6c 20 2b   ).....m_total +
9150: 3d 20 6d 5f 6c 73 74 5b 69 5d 2d 3e 67 65 74 53  = m_lst[i]->getS
9160: 69 7a 65 28 29 3b 0d 0a 09 09 73 65 6e 64 4d 73  ize();....sendMs
9170: 67 54 6f 49 74 65 6d 28 20 49 44 43 5f 42 41 52  gToItem( IDC_BAR
9180: 2c 20 50 42 4d 5f 53 45 54 52 41 4e 47 45 2c 30  , PBM_SETRANGE,0
9190: 2c 20 4d 41 4b 45 4c 50 41 52 41 4d 28 30 2c 33  , MAKELPARAM(0,3
91a0: 32 37 36 38 29 20 29 3b 0d 0a 09 09 73 65 74 54  2768) );....setT
91b0: 69 6d 65 49 6e 66 6f 28 20 30 20 29 3b 0d 0a 09  imeInfo( 0 );...
91c0: 09 3a 3a 53 68 6f 77 57 69 6e 64 6f 77 28 20 68  .::ShowWindow( h
91d0: 77 6e 64 28 29 2c 20 53 57 5f 53 48 4f 57 20 29  wnd(), SW_SHOW )
91e0: 3b 0d 0a 09 09 3a 3a 55 70 64 61 74 65 57 69 6e  ;....::UpdateWin
91f0: 64 6f 77 28 20 68 77 6e 64 28 29 20 29 3b 0d 0a  dow( hwnd() );..
9200: 0d 0a 09 09 6b 69 50 61 74 68 20 75 72 6c 2c 20  ....kiPath url, 
9210: 66 69 6c 3b 0d 0a 0d 0a 09 09 2f 2f 20 83 81 83  fil;......// ...
9220: 43 83 93 83 8b 81 5b 83 76 0d 0a 09 09 66 6f 72  C.....[.v....for
9230: 28 20 69 3d 30 3b 20 69 3c 6d 5f 6c 73 74 2e 6c  ( i=0; i<m_lst.l
9240: 65 6e 28 29 3b 20 69 2b 2b 20 29 0d 0a 09 09 7b  en(); i++ )....{
9250: 0d 0a 09 09 09 69 6e 74 20 4d 69 72 20 3d 20 30  .....int Mir = 0
9260: 3b 0d 0a 09 09 72 65 74 72 79 3a 0d 0a 09 09 09  ;....retry:.....
9270: 69 66 28 20 21 6d 69 72 72 6f 72 4d 61 6e 2e 69  if( !mirrorMan.i
9280: 73 4d 69 72 72 6f 72 4c 65 66 74 28 4d 69 72 29  sMirrorLeft(Mir)
9290: 20 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 61 70   ).....{......ap
92a0: 70 28 29 2d 3e 6d 73 67 42 6f 78 28 20 6b 69 53  p()->msgBox( kiS
92b0: 74 72 28 31 30 30 30 29 2e 6c 6f 61 64 52 73 72  tr(1000).loadRsr
92c0: 63 28 20 49 44 53 5f 44 4c 45 52 52 4f 52 20 29  c( IDS_DLERROR )
92d0: 2c 20 22 63 61 6c 64 69 78 22 2c 20 4d 42 5f 49  , "caldix", MB_I
92e0: 43 4f 4e 49 4e 46 4f 52 4d 41 54 49 4f 4e 7c 4d  CONINFORMATION|M
92f0: 42 5f 53 59 53 54 45 4d 4d 4f 44 41 4c 20 29 3b  B_SYSTEMMODAL );
9300: 0d 0a 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09  ......break;....
9310: 09 7d 0d 0a 0d 0a 09 09 09 2f 2f 20 22 81 9b 81  .}.......// "...
9320: 9b 82 f0 83 5f 83 45 83 93 83 8d 81 5b 83 68 92  ...._.E.....[.h.
9330: 86 2e 2e 2e 22 20 82 cc 83 65 83 4c 83 58 83 67  ...." ...e.L.X.g
9340: 82 f0 8d 58 90 56 0d 0a 09 09 09 63 68 61 72 20  ...X.V.....char 
9350: 6d 73 67 5b 33 30 30 5d 3b 0d 0a 09 09 09 3a 3a  msg[300];.....::
9360: 77 73 70 72 69 6e 74 66 28 20 6d 73 67 2c 20 6b  wsprintf( msg, k
9370: 69 53 74 72 28 29 2e 6c 6f 61 64 52 73 72 63 28  iStr().loadRsrc(
9380: 49 44 53 5f 44 4f 57 4e 4c 4f 41 44 49 4e 47 29  IDS_DOWNLOADING)
9390: 2c 0d 0a 09 09 09 09 09 09 28 63 6f 6e 73 74 20  ,........(const 
93a0: 63 68 61 72 2a 29 6d 5f 6c 73 74 5b 69 5d 2d 3e  char*)m_lst[i]->
93b0: 67 65 74 4e 61 6d 65 28 29 2c 20 28 63 6f 6e 73  getName(), (cons
93c0: 74 20 63 68 61 72 2a 29 6d 69 72 72 6f 72 4d 61  t char*)mirrorMa
93d0: 6e 2e 6e 69 63 6b 6e 61 6d 65 28 4d 69 72 29 20  n.nickname(Mir) 
93e0: 29 3b 0d 0a 09 09 09 73 65 6e 64 4d 73 67 54 6f  );.....sendMsgTo
93f0: 49 74 65 6d 28 20 49 44 43 5f 4d 53 47 2c 20 57  Item( IDC_MSG, W
9400: 4d 5f 53 45 54 54 45 58 54 2c 20 30 2c 20 28 4c  M_SETTEXT, 0, (L
9410: 50 41 52 41 4d 29 6d 73 67 20 29 3b 0d 0a 09 09  PARAM)msg );....
9420: 09 3a 3a 45 6e 61 62 6c 65 57 69 6e 64 6f 77 28  .::EnableWindow(
9430: 20 69 74 65 6d 28 49 44 43 5f 4d 53 47 29 2c 20   item(IDC_MSG), 
9440: 46 41 4c 53 45 20 29 3b 0d 0a 09 09 09 3a 3a 45  FALSE );.....::E
9450: 6e 61 62 6c 65 57 69 6e 64 6f 77 28 20 69 74 65  nableWindow( ite
9460: 6d 28 49 44 43 5f 4d 53 47 29 2c 20 54 52 55 45  m(IDC_MSG), TRUE
9470: 20 29 3b 0d 0a 0d 0a 09 09 09 2f 2f 20 83 5f 83   );.......// ._.
9480: 45 83 93 83 8d 81 5b 83 68 8c b3 82 c6 83 5f 83  E.....[.h....._.
9490: 45 83 93 83 8d 81 5b 83 68 90 e6 0d 0a 09 09 09  E.....[.h.......
94a0: 75 72 6c 20 3d 20 6d 69 72 72 6f 72 4d 61 6e 2e  url = mirrorMan.
94b0: 62 61 73 65 55 52 4c 28 4d 69 72 29 2c 20 75 72  baseURL(Mir), ur
94c0: 6c 20 2b 3d 20 6d 5f 6c 73 74 5b 69 5d 2d 3e 67  l += m_lst[i]->g
94d0: 65 74 41 72 63 68 69 76 65 4e 61 6d 65 28 29 3b  etArchiveName();
94e0: 0d 0a 09 09 09 66 69 6c 20 3d 20 6d 5f 70 74 68  .....fil = m_pth
94f0: 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,               
9500: 20 20 20 66 69 6c 20 2b 3d 20 6d 5f 6c 73 74 5b     fil += m_lst[
9510: 69 5d 2d 3e 67 65 74 41 72 63 68 69 76 65 4e 61  i]->getArchiveNa
9520: 6d 65 28 29 3b 0d 0a 09 09 09 69 66 28 20 53 5f  me();.....if( S_
9530: 4f 4b 20 21 3d 20 3a 3a 55 52 4c 44 6f 77 6e 6c  OK != ::URLDownl
9540: 6f 61 64 54 6f 46 69 6c 65 28 20 4e 55 4c 4c 2c  oadToFile( NULL,
9550: 20 75 72 6c 2c 20 66 69 6c 2c 20 30 2c 20 74 68   url, fil, 0, th
9560: 69 73 20 29 20 29 0d 0a 09 09 09 7b 0d 0a 09 09  is ) ).....{....
9570: 09 09 2b 2b 4d 69 72 3b 0d 0a 09 09 09 09 67 6f  ..++Mir;......go
9580: 74 6f 20 72 65 74 72 79 3b 0d 0a 09 09 09 7d 0d  to retry;.....}.
9590: 0a 09 09 09 6d 5f 73 74 65 70 20 2b 3d 20 6d 5f  ....m_step += m_
95a0: 6c 73 74 5b 69 5d 2d 3e 67 65 74 53 69 7a 65 28  lst[i]->getSize(
95b0: 29 3b 0d 0a 09 09 7d 0d 0a 09 09 65 6e 64 28 20  );....}....end( 
95c0: 69 3d 3d 6d 5f 6c 73 74 2e 6c 65 6e 28 29 20 3f  i==m_lst.len() ?
95d0: 20 49 44 4f 4b 20 3a 20 49 44 43 41 4e 43 45 4c   IDOK : IDCANCEL
95e0: 20 29 3b 0d 0a 09 09 72 65 74 75 72 6e 20 46 41   );....return FA
95f0: 4c 53 45 3b 0d 0a 09 7d 0d 0a 09 62 6f 6f 6c 20  LSE;...}...bool 
9600: 6f 6e 43 61 6e 63 65 6c 28 29 0d 0a 09 7b 0d 0a  onCancel()...{..
9610: 09 09 69 66 28 20 63 61 6e 63 65 6c 53 68 69 74  ..if( cancelShit
9620: 65 49 69 64 65 73 75 6b 61 28 29 20 29 0d 0a 09  eIidesuka() )...
9630: 09 09 6d 5f 73 74 61 74 65 43 61 6e 63 65 6c 20  ..m_stateCancel 
9640: 3d 20 74 72 75 65 3b 0d 0a 09 09 72 65 74 75 72  = true;....retur
9650: 6e 20 66 61 6c 73 65 3b 0d 0a 09 7d 0d 0a 0d 0a  n false;...}....
9660: 70 75 62 6c 69 63 3a 0d 0a 09 76 6f 69 64 20 73  public:...void s
9670: 65 74 54 69 6d 65 49 6e 66 6f 28 20 75 6e 73 69  etTimeInfo( unsi
9680: 67 6e 65 64 20 6c 6f 6e 67 20 62 79 74 65 73 72  gned long bytesr
9690: 65 61 64 20 29 0d 0a 09 7b 0d 0a 09 09 69 6e 74  ead )...{....int
96a0: 20 73 65 63 20 3d 20 28 62 79 74 65 73 72 65 61   sec = (bytesrea
96b0: 64 3d 3d 30 20 7c 7c 20 6d 5f 6c 61 73 74 54 69  d==0 || m_lastTi
96c0: 6d 65 3d 3d 6d 5f 73 74 61 72 74 54 69 6d 65 29  me==m_startTime)
96d0: 0d 0a 09 09 20 20 3f 20 28 69 6e 74 29 28 28 64  ....  ? (int)((d
96e0: 6f 75 62 6c 65 29 28 6d 5f 74 6f 74 61 6c 29 20  ouble)(m_total) 
96f0: 2f 20 37 30 30 30 29 0d 0a 09 09 20 20 3a 20 28  / 7000)....  : (
9700: 69 6e 74 29 28 28 64 6f 75 62 6c 65 29 28 28 6d  int)((double)((m
9710: 5f 74 6f 74 61 6c 2d 62 79 74 65 73 72 65 61 64  _total-bytesread
9720: 29 29 20 2a 20 28 6d 5f 6c 61 73 74 54 69 6d 65  )) * (m_lastTime
9730: 20 2d 20 6d 5f 73 74 61 72 74 54 69 6d 65 29 20   - m_startTime) 
9740: 2f 20 31 30 30 30 20 2f 20 62 79 74 65 73 72 65  / 1000 / bytesre
9750: 61 64 29 3b 0d 0a 0d 0a 09 09 73 74 61 74 69 63  ad);......static
9760: 20 63 68 61 72 20 73 74 72 5b 33 30 30 5d 3b 0d   char str[300];.
9770: 0a 09 09 3a 3a 77 73 70 72 69 6e 74 66 28 20 73  ...::wsprintf( s
9780: 74 72 2c 20 28 63 6f 6e 73 74 20 63 68 61 72 2a  tr, (const char*
9790: 29 28 6b 69 53 74 72 28 29 2e 6c 6f 61 64 52 73  )(kiStr().loadRs
97a0: 72 63 28 49 44 53 5f 52 45 53 54 29 29 2c 0d 0a  rc(IDS_REST)),..
97b0: 09 09 09 28 6d 5f 74 6f 74 61 6c 2d 62 79 74 65  ...(m_total-byte
97c0: 73 72 65 61 64 29 2f 31 30 30 30 2c 20 73 65 63  sread)/1000, sec
97d0: 2f 36 30 2c 20 73 65 63 25 36 30 20 29 3b 0d 0a  /60, sec%60 );..
97e0: 0d 0a 09 09 73 65 6e 64 4d 73 67 54 6f 49 74 65  ....sendMsgToIte
97f0: 6d 28 20 49 44 43 5f 52 45 53 54 54 49 4d 45 2c  m( IDC_RESTTIME,
9800: 20 57 4d 5f 53 45 54 54 45 58 54 2c 20 30 2c 20   WM_SETTEXT, 0, 
9810: 28 4c 50 41 52 41 4d 29 73 74 72 20 29 3b 0d 0a  (LPARAM)str );..
9820: 09 7d 0d 0a 0d 0a 09 53 54 44 4d 45 54 48 4f 44  .}.....STDMETHOD
9830: 49 4d 50 5f 28 55 4c 4f 4e 47 29 20 41 64 64 52  IMP_(ULONG) AddR
9840: 65 66 28 29 09 7b 20 72 65 74 75 72 6e 20 28 2b  ef().{ return (+
9850: 2b 6d 5f 63 52 65 66 29 3b 20 7d 0d 0a 09 53 54  +m_cRef); }...ST
9860: 44 4d 45 54 48 4f 44 49 4d 50 5f 28 55 4c 4f 4e  DMETHODIMP_(ULON
9870: 47 29 20 52 65 6c 65 61 73 65 28 29 09 7b 20 72  G) Release().{ r
9880: 65 74 75 72 6e 20 28 6d 5f 63 52 65 66 20 3f 20  eturn (m_cRef ? 
9890: 2d 2d 6d 5f 63 52 65 66 20 3a 20 30 4c 29 3b 20  --m_cRef : 0L); 
98a0: 7d 0d 0a 09 53 54 44 4d 45 54 48 4f 44 49 4d 50  }...STDMETHODIMP
98b0: 20 47 65 74 42 69 6e 64 49 6e 66 6f 28 20 44 57   GetBindInfo( DW
98c0: 4f 52 44 2a 2c 20 42 49 4e 44 49 4e 46 4f 2a 20  ORD*, BINDINFO* 
98d0: 29 20 7b 20 72 65 74 75 72 6e 20 45 5f 4e 4f 54  ) { return E_NOT
98e0: 49 4d 50 4c 3b 20 7d 0d 0a 09 53 54 44 4d 45 54  IMPL; }...STDMET
98f0: 48 4f 44 49 4d 50 20 47 65 74 50 72 69 6f 72 69  HODIMP GetPriori
9900: 74 79 28 20 4c 4f 4e 47 2a 20 29 20 7b 20 72 65  ty( LONG* ) { re
9910: 74 75 72 6e 20 45 5f 4e 4f 54 49 4d 50 4c 3b 20  turn E_NOTIMPL; 
9920: 7d 0d 0a 09 53 54 44 4d 45 54 48 4f 44 49 4d 50  }...STDMETHODIMP
9930: 20 4f 6e 4c 6f 77 52 65 73 6f 75 72 63 65 28 20   OnLowResource( 
9940: 44 57 4f 52 44 20 29 20 7b 20 72 65 74 75 72 6e  DWORD ) { return
9950: 20 45 5f 4e 4f 54 49 4d 50 4c 3b 20 7d 0d 0a 09   E_NOTIMPL; }...
9960: 53 54 44 4d 45 54 48 4f 44 49 4d 50 20 4f 6e 44  STDMETHODIMP OnD
9970: 61 74 61 41 76 61 69 6c 61 62 6c 65 28 20 44 57  ataAvailable( DW
9980: 4f 52 44 2c 20 44 57 4f 52 44 2c 20 46 4f 52 4d  ORD, DWORD, FORM
9990: 41 54 45 54 43 2a 2c 20 53 54 47 4d 45 44 49 55  ATETC*, STGMEDIU
99a0: 4d 2a 20 29 20 7b 20 72 65 74 75 72 6e 20 45 5f  M* ) { return E_
99b0: 4e 4f 54 49 4d 50 4c 3b 20 7d 0d 0a 09 53 54 44  NOTIMPL; }...STD
99c0: 4d 45 54 48 4f 44 49 4d 50 20 4f 6e 4f 62 6a 65  METHODIMP OnObje
99d0: 63 74 41 76 61 69 6c 61 62 6c 65 28 20 52 45 46  ctAvailable( REF
99e0: 49 49 44 2c 20 49 55 6e 6b 6e 6f 77 6e 2a 20 29  IID, IUnknown* )
99f0: 20 7b 20 72 65 74 75 72 6e 20 45 5f 4e 4f 54 49   { return E_NOTI
9a00: 4d 50 4c 3b 20 7d 0d 0a 09 53 54 44 4d 45 54 48  MPL; }...STDMETH
9a10: 4f 44 49 4d 50 20 4f 6e 53 74 61 72 74 42 69 6e  ODIMP OnStartBin
9a20: 64 69 6e 67 28 20 44 57 4f 52 44 2c 20 49 42 69  ding( DWORD, IBi
9a30: 6e 64 69 6e 67 2a 20 29 20 7b 20 72 65 74 75 72  nding* ) { retur
9a40: 6e 20 45 5f 4e 4f 54 49 4d 50 4c 3b 20 7d 0d 0a  n E_NOTIMPL; }..
9a50: 09 53 54 44 4d 45 54 48 4f 44 49 4d 50 20 4f 6e  .STDMETHODIMP On
9a60: 53 74 6f 70 42 69 6e 64 69 6e 67 28 20 48 52 45  StopBinding( HRE
9a70: 53 55 4c 54 2c 20 4c 50 43 57 53 54 52 20 29 20  SULT, LPCWSTR ) 
9a80: 7b 20 72 65 74 75 72 6e 20 45 5f 4e 4f 54 49 4d  { return E_NOTIM
9a90: 50 4c 3b 20 7d 0d 0a 09 53 54 44 4d 45 54 48 4f  PL; }...STDMETHO
9aa0: 44 49 4d 50 20 51 75 65 72 79 49 6e 74 65 72 66  DIMP QueryInterf
9ab0: 61 63 65 28 20 52 45 46 49 49 44 20 72 69 69 64  ace( REFIID riid
9ac0: 2c 20 76 6f 69 64 2a 2a 20 70 70 76 20 29 0d 0a  , void** ppv )..
9ad0: 09 7b 0d 0a 09 09 2a 70 70 76 20 3d 20 4e 55 4c  .{....*ppv = NUL
9ae0: 4c 3b 0d 0a 09 09 41 64 64 52 65 66 28 29 3b 0d  L;....AddRef();.
9af0: 0a 09 09 69 66 28 20 49 73 45 71 75 61 6c 49 49  ...if( IsEqualII
9b00: 44 28 20 72 69 69 64 2c 20 49 49 44 5f 49 55 6e  D( riid, IID_IUn
9b10: 6b 6e 6f 77 6e 20 29 20 7c 7c 20 49 73 45 71 75  known ) || IsEqu
9b20: 61 6c 49 49 44 28 20 72 69 69 64 2c 20 49 49 44  alIID( riid, IID
9b30: 5f 49 42 69 6e 64 53 74 61 74 75 73 43 61 6c 6c  _IBindStatusCall
9b40: 62 61 63 6b 20 29 20 29 0d 0a 09 09 09 2a 70 70  back ) ).....*pp
9b50: 76 20 3d 20 28 49 42 69 6e 64 53 74 61 74 75 73  v = (IBindStatus
9b60: 43 61 6c 6c 62 61 63 6b 2a 29 74 68 69 73 3b 0d  Callback*)this;.
9b70: 0a 09 09 65 6c 73 65 0d 0a 09 09 7b 0d 0a 09 09  ...else....{....
9b80: 09 52 65 6c 65 61 73 65 28 29 3b 0d 0a 09 09 09  .Release();.....
9b90: 72 65 74 75 72 6e 20 45 5f 4e 4f 49 4e 54 45 52  return E_NOINTER
9ba0: 46 41 43 45 3b 0d 0a 09 09 7d 0d 0a 09 09 72 65  FACE;....}....re
9bb0: 74 75 72 6e 20 4e 4f 45 52 52 4f 52 3b 0d 0a 09  turn NOERROR;...
9bc0: 7d 0d 0a 09 53 54 44 4d 45 54 48 4f 44 49 4d 50  }...STDMETHODIMP
9bd0: 20 4f 6e 50 72 6f 67 72 65 73 73 28 20 55 4c 4f   OnProgress( ULO
9be0: 4e 47 20 63 75 72 2c 20 55 4c 4f 4e 47 20 6d 61  NG cur, ULONG ma
9bf0: 78 2c 20 55 4c 4f 4e 47 20 73 74 61 74 75 73 2c  x, ULONG status,
9c00: 20 4c 50 43 57 53 54 52 20 74 78 74 20 29 0d 0a   LPCWSTR txt )..
9c10: 09 7b 0d 0a 09 09 6d 73 67 4c 6f 6f 70 28 20 50  .{....msgLoop( P
9c20: 45 45 4b 20 29 3b 0d 0a 0d 0a 09 09 69 66 28 20  EEK );......if( 
9c30: 6d 5f 73 74 61 74 65 43 61 6e 63 65 6c 20 29 0d  m_stateCancel ).
9c40: 0a 09 09 7b 0d 0a 09 09 09 65 6e 64 28 20 49 44  ...{.....end( ID
9c50: 43 41 4e 43 45 4c 20 29 3b 0d 0a 09 09 09 72 65  CANCEL );.....re
9c60: 74 75 72 6e 20 45 5f 41 42 4f 52 54 3b 0d 0a 09  turn E_ABORT;...
9c70: 09 7d 0d 0a 0d 0a 09 09 44 57 4f 52 44 20 74 69  .}......DWORD ti
9c80: 6d 65 20 3d 20 3a 3a 47 65 74 54 69 63 6b 43 6f  me = ::GetTickCo
9c90: 75 6e 74 28 29 3b 0d 0a 09 09 69 66 28 20 74 69  unt();....if( ti
9ca0: 6d 65 2d 6d 5f 6c 61 73 74 54 69 6d 65 20 3e 3d  me-m_lastTime >=
9cb0: 20 35 30 30 30 20 29 0d 0a 09 09 7b 0d 0a 09 09   5000 )....{....
9cc0: 09 6d 5f 6c 61 73 74 54 69 6d 65 20 3d 20 74 69  .m_lastTime = ti
9cd0: 6d 65 3b 0d 0a 09 09 09 73 65 74 54 69 6d 65 49  me;.....setTimeI
9ce0: 6e 66 6f 28 20 6d 5f 73 74 65 70 2b 63 75 72 20  nfo( m_step+cur 
9cf0: 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 73 65 6e  );....}......sen
9d00: 64 4d 73 67 54 6f 49 74 65 6d 28 20 49 44 43 5f  dMsgToItem( IDC_
9d10: 42 41 52 2c 20 50 42 4d 5f 53 45 54 50 4f 53 2c  BAR, PBM_SETPOS,
9d20: 20 28 69 6e 74 29 28 28 28 64 6f 75 62 6c 65 29   (int)(((double)
9d30: 28 6d 5f 73 74 65 70 2b 63 75 72 29 29 2f 6d 5f  (m_step+cur))/m_
9d40: 74 6f 74 61 6c 2a 33 32 37 36 38 29 20 29 3b 0d  total*32768) );.
9d50: 0a 09 09 72 65 74 75 72 6e 20 53 5f 4f 4b 3b 0d  ...return S_OK;.
9d60: 0a 09 7d 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f  ..}..};......../
9d70: 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /---------------
9d80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9d90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9da0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9db0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f  -------------../
9dc0: 2f 20 69 6e 73 74 44 6c 67 20 3a 20 73 79 73 74  / instDlg : syst
9dd0: 65 6d 93 99 82 d6 83 43 83 93 83 58 83 67 81 5b  em.....C...X.g.[
9de0: 83 8b 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ....//----------
9df0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9e00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
9e30: 2d 2d 0d 0a 0d 0a 63 6c 61 73 73 20 69 6e 73 74  --....class inst
9e40: 44 6c 67 20 3a 20 70 75 62 6c 69 63 20 6b 69 44  Dlg : public kiD
9e50: 69 61 6c 6f 67 0d 0a 7b 0d 0a 70 75 62 6c 69 63  ialog..{..public
9e60: 3a 0d 0a 09 69 6e 73 74 44 6c 67 28 20 6b 69 41  :...instDlg( kiA
9e70: 72 72 61 79 3c 44 4c 4c 49 6e 66 6f 2a 3e 26 20  rray<DLLInfo*>& 
9e80: 75 70 64 2c 20 63 6f 6e 73 74 20 6b 69 50 61 74  upd, const kiPat
9e90: 68 26 20 61 72 63 64 69 72 2c 20 63 6f 6e 73 74  h& arcdir, const
9ea0: 20 6b 69 50 61 74 68 26 20 77 6f 72 6b 2c 20 63   kiPath& work, c
9eb0: 6f 6e 73 74 20 6b 69 50 61 74 68 26 20 74 6f 20  onst kiPath& to 
9ec0: 29 0d 0a 09 09 3a 20 6b 69 44 69 61 6c 6f 67 28  )....: kiDialog(
9ed0: 20 49 44 44 5f 49 4e 53 54 41 4c 4c 20 29 2c 20   IDD_INSTALL ), 
9ee0: 6d 5f 75 70 64 28 20 75 70 64 20 29 2c 20 6d 5f  m_upd( upd ), m_
9ef0: 61 72 63 64 69 72 28 20 61 72 63 64 69 72 20 29  arcdir( arcdir )
9f00: 2c 20 6d 5f 77 6f 72 6b 64 69 72 28 20 77 6f 72  , m_workdir( wor
9f10: 6b 20 29 2c 20 6d 5f 64 6c 6c 64 69 72 28 20 74  k ), m_dlldir( t
9f20: 6f 20 29 20 7b 7d 0d 0a 0d 0a 70 72 69 76 61 74  o ) {}....privat
9f30: 65 3a 0d 0a 09 6b 69 41 72 72 61 79 3c 44 4c 4c  e:...kiArray<DLL
9f40: 49 6e 66 6f 2a 3e 26 20 6d 5f 75 70 64 3b 0d 0a  Info*>& m_upd;..
9f50: 09 63 6f 6e 73 74 20 6b 69 50 61 74 68 26 20 6d  .const kiPath& m
9f60: 5f 61 72 63 64 69 72 3b 0d 0a 09 63 6f 6e 73 74  _arcdir;...const
9f70: 20 6b 69 50 61 74 68 26 20 6d 5f 77 6f 72 6b 64   kiPath& m_workd
9f80: 69 72 3b 0d 0a 09 63 6f 6e 73 74 20 6b 69 50 61  ir;...const kiPa
9f90: 74 68 26 20 6d 5f 64 6c 6c 64 69 72 3b 0d 0a 09  th& m_dlldir;...
9fa0: 62 6f 6f 6c 20 6f 6e 43 61 6e 63 65 6c 28 29 09  bool onCancel().
9fb0: 7b 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20  { return false; 
9fc0: 7d 0d 0a 09 62 6f 6f 6c 20 6f 6e 4f 4b 28 29 09  }...bool onOK().
9fd0: 09 7b 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b  .{ return false;
9fe0: 20 7d 0d 0a 0d 0a 09 42 4f 4f 4c 20 6f 6e 49 6e   }.....BOOL onIn
9ff0: 69 74 28 29 0d 0a 09 7b 0d 0a 09 09 62 6f 6f 6c  it()...{....bool
a000: 20 6e 65 65 64 72 65 62 6f 6f 74 3d 66 61 6c 73   needreboot=fals
a010: 65 3b 0d 0a 09 09 61 70 70 28 29 2d 3e 73 65 74  e;....app()->set
a020: 4d 61 69 6e 57 6e 64 28 20 74 68 69 73 20 29 3b  MainWnd( this );
a030: 0d 0a 09 09 3a 3a 53 68 6f 77 57 69 6e 64 6f 77  ....::ShowWindow
a040: 28 20 68 77 6e 64 28 29 2c 20 53 57 5f 53 48 4f  ( hwnd(), SW_SHO
a050: 57 20 29 3b 0d 0a 09 09 3a 3a 55 70 64 61 74 65  W );....::Update
a060: 57 69 6e 64 6f 77 28 20 68 77 6e 64 28 29 20 29  Window( hwnd() )
a070: 3b 0d 0a 09 09 2f 2f 2d 2d 20 89 f0 93 80 81 95  ;....//-- ......
a080: 83 43 83 93 83 58 83 67 81 5b 83 8b 8a 4a 8e 6e  .C...X.g.[...J.n
a090: 81 60 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .` -------------
a0a0: 2d 2d 0d 0a 0d 0a 09 09 63 68 61 72 20 74 6d 70  --......char tmp
a0b0: 5b 4d 41 58 5f 50 41 54 48 5d 3b 0d 0a 09 09 6b  [MAX_PATH];....k
a0c0: 69 50 61 74 68 20 61 72 63 2c 20 64 6c 6c 2c 20  iPath arc, dll, 
a0d0: 70 61 74 68 3b 0d 0a 09 09 66 6f 72 28 20 75 6e  path;....for( un
a0e0: 73 69 67 6e 65 64 20 69 6e 74 20 69 3d 30 3b 20  signed int i=0; 
a0f0: 69 3c 6d 5f 75 70 64 2e 6c 65 6e 28 29 3b 20 69  i<m_upd.len(); i
a100: 2b 2b 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 2f 2f  ++ )....{.....//
a110: 20 8f 91 8c c9 96 bc 3a 83 74 83 8b 83 70 83 58   ......:.t...p.X
a120: 0d 0a 09 09 09 61 72 63 20 3d 20 6d 5f 61 72 63  .....arc = m_arc
a130: 64 69 72 2c 20 61 72 63 20 2b 3d 20 6d 5f 75 70  dir, arc += m_up
a140: 64 5b 69 5d 2d 3e 67 65 74 41 72 63 68 69 76 65  d[i]->getArchive
a150: 4e 61 6d 65 28 29 3b 0d 0a 09 09 09 2f 2f 20 83  Name();.....// .
a160: 68 83 4c 83 85 83 81 83 93 83 67 95 db 91 b6 90  h.L.......g.....
a170: e6 3a 83 74 83 8b 83 70 83 58 0d 0a 09 09 09 64  .:.t...p.X.....d
a180: 6c 6c 20 3d 20 6d 5f 77 6f 72 6b 64 69 72 2c 20  ll = m_workdir, 
a190: 3a 3a 6c 73 74 72 63 70 79 6e 28 74 6d 70 2c 6d  ::lstrcpyn(tmp,m
a1a0: 5f 75 70 64 5b 69 5d 2d 3e 67 65 74 4e 61 6d 65  _upd[i]->getName
a1b0: 28 29 2c 6d 5f 75 70 64 5b 69 5d 2d 3e 67 65 74  (),m_upd[i]->get
a1c0: 4e 61 6d 65 28 29 2e 6c 65 6e 28 29 2d 33 29 2c  Name().len()-3),
a1d0: 20 64 6c 6c 20 2b 3d 20 74 6d 70 2c 20 64 6c 6c   dll += tmp, dll
a1e0: 2e 72 65 6d 6f 76 65 28 29 3b 0d 0a 09 09 09 64  .remove();.....d
a1f0: 6c 6c 20 2b 3d 20 22 5c 5c 22 2c 20 64 6c 6c 2e  ll += "\\", dll.
a200: 6d 6b 64 69 72 28 29 2c 20 3a 3a 53 65 74 43 75  mkdir(), ::SetCu
a210: 72 72 65 6e 74 44 69 72 65 63 74 6f 72 79 28 20  rrentDirectory( 
a220: 64 6c 6c 20 29 3b 0d 0a 09 09 09 2f 2f 20 89 f0  dll );.....// ..
a230: 93 80 81 69 20 70 61 74 68 3d 8f 91 8c c9 93 e0  ...i path=......
a240: 82 cc 44 4c 4c 82 cc 91 8a 91 ce 83 70 83 58 20  ..DLL.......p.X 
a250: 81 6a 0d 0a 09 09 09 6d 65 6c 74 5f 69 74 28 20  .j.....melt_it( 
a260: 61 72 63 2c 20 6d 5f 75 70 64 5b 69 5d 2d 3e 67  arc, m_upd[i]->g
a270: 65 74 4e 61 6d 65 28 29 2c 20 70 61 74 68 20 29  etName(), path )
a280: 3b 0d 0a 09 09 09 2f 2f 20 83 43 83 93 83 58 83  ;.....// .C...X.
a290: 67 81 5b 83 8b 0d 0a 09 09 09 69 66 28 20 21 69  g.[.......if( !i
a2a0: 6e 73 74 61 6c 6c 5f 69 74 28 20 64 6c 6c 2c 20  nstall_it( dll, 
a2b0: 70 61 74 68 20 29 20 29 0d 0a 09 09 09 7b 0d 0a  path ) ).....{..
a2c0: 09 09 09 09 6e 65 65 64 72 65 62 6f 6f 74 20 3d  ....needreboot =
a2d0: 20 74 72 75 65 3b 0d 0a 09 09 09 7d 0d 0a 09 09   true;.....}....
a2e0: 09 69 66 28 20 70 61 74 68 2e 69 73 53 61 6d 65  .if( path.isSame
a2f0: 28 20 22 61 69 73 68 33 32 2e 64 6c 6c 22 20 29  ( "aish32.dll" )
a300: 20 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 69 66   ).....{......if
a310: 28 20 21 69 6e 73 74 61 6c 6c 5f 69 74 28 20 64  ( !install_it( d
a320: 6c 6c 2c 20 22 41 69 73 68 6d 76 33 32 2e 64 6c  ll, "Aishmv32.dl
a330: 6c 22 20 29 20 29 0d 0a 09 09 09 09 09 6e 65 65  l" ) ).......nee
a340: 64 72 65 62 6f 6f 74 20 3d 20 74 72 75 65 3b 0d  dreboot = true;.
a350: 0a 09 09 09 7d 0d 0a 09 09 09 65 6c 73 65 20 69  ....}.....else i
a360: 66 28 20 70 61 74 68 2e 69 73 53 61 6d 65 28 20  f( path.isSame( 
a370: 22 75 6e 72 61 72 33 32 2e 64 6c 6c 22 20 29 20  "unrar32.dll" ) 
a380: 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 69 66 28  ).....{......if(
a390: 20 21 69 6e 73 74 61 6c 6c 5f 69 74 28 20 64 6c   !install_it( dl
a3a0: 6c 2c 20 22 75 6e 72 61 72 2e 64 6c 6c 22 20 29  l, "unrar.dll" )
a3b0: 20 29 0d 0a 09 09 09 09 09 6e 65 65 64 72 65 62   ).......needreb
a3c0: 6f 6f 74 20 3d 20 74 72 75 65 3b 0d 0a 09 09 09  oot = true;.....
a3d0: 7d 0d 0a 09 09 09 65 6c 73 65 20 69 66 28 20 70  }.....else if( p
a3e0: 61 74 68 2e 69 73 53 61 6d 65 28 20 22 79 7a 31  ath.isSame( "yz1
a3f0: 2e 64 6c 6c 22 20 29 20 29 0d 0a 09 09 09 7b 0d  .dll" ) ).....{.
a400: 0a 09 09 09 09 69 66 28 20 21 69 6e 73 74 61 6c  .....if( !instal
a410: 6c 5f 69 74 28 20 64 6c 6c 2c 20 22 79 7a 64 65  l_it( dll, "yzde
a420: 63 2e 65 78 65 22 20 29 20 29 0d 0a 09 09 09 09  c.exe" ) )......
a430: 09 6e 65 65 64 72 65 62 6f 6f 74 20 3d 20 74 72  .needreboot = tr
a440: 75 65 3b 0d 0a 09 09 09 09 6b 69 50 61 74 68 20  ue;......kiPath 
a450: 75 79 7a 28 20 6d 5f 64 6c 6c 64 69 72 20 29 3b  uyz( m_dlldir );
a460: 0d 0a 09 09 09 09 69 66 28 20 21 6b 69 53 55 74  ......if( !kiSUt
a470: 69 6c 3a 3a 65 78 69 73 74 28 20 75 79 7a 2b 3d  il::exist( uyz+=
a480: 22 55 6e 59 7a 31 2e 64 6c 6c 22 20 29 20 29 0d  "UnYz1.dll" ) ).
a490: 0a 09 09 09 09 09 69 66 28 20 21 69 6e 73 74 61  ......if( !insta
a4a0: 6c 6c 5f 69 74 28 20 64 6c 6c 2c 20 22 55 6e 59  ll_it( dll, "UnY
a4b0: 7a 31 2e 64 6c 6c 22 20 29 20 29 0d 0a 09 09 09  z1.dll" ) ).....
a4c0: 09 09 09 6e 65 65 64 72 65 62 6f 6f 74 20 3d 20  ...needreboot = 
a4d0: 74 72 75 65 3b 0d 0a 09 09 09 7d 0d 0a 09 09 09  true;.....}.....
a4e0: 65 6c 73 65 20 69 66 28 20 70 61 74 68 2e 69 73  else if( path.is
a4f0: 53 61 6d 65 28 20 22 62 68 33 32 2e 64 6c 6c 22  Same( "bh32.dll"
a500: 20 29 20 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09   ) ).....{......
a510: 69 66 28 20 21 69 6e 73 74 61 6c 6c 5f 69 74 28  if( !install_it(
a520: 20 64 6c 6c 2c 20 22 62 68 73 66 78 2e 65 78 65   dll, "bhsfx.exe
a530: 22 20 29 20 29 0d 0a 09 09 09 09 09 6e 65 65 64  " ) ).......need
a540: 72 65 62 6f 6f 74 20 3d 20 74 72 75 65 3b 0d 0a  reboot = true;..
a550: 09 09 09 7d 0d 0a 09 09 09 2f 2f 20 83 81 83 62  ...}.....// ...b
a560: 83 5a 81 5b 83 57 8f 88 97 9d 0d 0a 09 09 09 6d  .Z.[.W.........m
a570: 73 67 28 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09  sg();....}......
a580: 2f 2f 2d 2d 20 89 f0 93 80 81 95 83 43 83 93 83  //-- .......C...
a590: 58 83 67 81 5b 83 8b 8f 49 97 b9 81 60 20 2d 2d  X.g.[...I...` --
a5a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 09  -------------...
a5b0: 09 65 6e 64 28 20 6e 65 65 64 72 65 62 6f 6f 74  .end( needreboot
a5c0: 20 3f 20 49 44 43 41 4e 43 45 4c 20 3a 20 49 44   ? IDCANCEL : ID
a5d0: 4f 4b 20 29 3b 0d 0a 09 09 72 65 74 75 72 6e 20  OK );....return 
a5e0: 46 41 4c 53 45 3b 0d 0a 09 7d 0d 0a 0d 0a 70 72  FALSE;...}....pr
a5f0: 69 76 61 74 65 3a 0d 0a 09 62 6f 6f 6c 20 69 6e  ivate:...bool in
a600: 73 74 61 6c 6c 5f 69 74 28 20 63 6f 6e 73 74 20  stall_it( const 
a610: 63 68 61 72 2a 20 70 6f 73 69 74 69 6f 6e 2c 20  char* position, 
a620: 63 6f 6e 73 74 20 63 68 61 72 2a 20 72 65 6c 70  const char* relp
a630: 61 74 68 20 29 0d 0a 09 7b 0d 0a 09 09 6b 69 50  ath )...{....kiP
a640: 61 74 68 20 66 72 6f 6d 28 20 70 6f 73 69 74 69  ath from( positi
a650: 6f 6e 20 29 3b 20 66 72 6f 6d 20 2b 3d 20 72 65  on ); from += re
a660: 6c 70 61 74 68 3b 0d 0a 09 09 69 66 28 20 3a 3a  lpath;....if( ::
a670: 47 65 74 46 69 6c 65 41 74 74 72 69 62 75 74 65  GetFileAttribute
a680: 73 28 66 72 6f 6d 29 20 21 3d 20 30 78 66 66 66  s(from) != 0xfff
a690: 66 66 66 66 66 20 29 0d 0a 09 09 7b 0d 0a 09 09  fffff )....{....
a6a0: 09 6b 69 50 61 74 68 20 74 6f 28 20 6d 5f 64 6c  .kiPath to( m_dl
a6b0: 6c 64 69 72 20 29 3b 20 74 6f 20 2b 3d 20 6b 69  ldir ); to += ki
a6c0: 50 61 74 68 3a 3a 6e 61 6d 65 28 72 65 6c 70 61  Path::name(relpa
a6d0: 74 68 29 3b 0d 0a 09 09 09 69 66 28 20 3a 3a 43  th);.....if( ::C
a6e0: 6f 70 79 46 69 6c 65 28 20 66 72 6f 6d 2c 20 74  opyFile( from, t
a6f0: 6f 2c 20 46 41 4c 53 45 20 29 20 29 0d 0a 09 09  o, FALSE ) )....
a700: 09 09 3a 3a 44 65 6c 65 74 65 46 69 6c 65 28 20  ..::DeleteFile( 
a710: 66 72 6f 6d 20 29 3b 0d 0a 09 09 09 65 6c 73 65  from );.....else
a720: 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 2f 2f 20 8d  .....{......// .
a730: c4 8b 4e 93 ae 8c e3 83 52 83 73 81 5b 8f 80 94  ..N.....R.s.[...
a740: f5 0d 0a 09 09 09 09 6d 6f 76 65 5f 6c 61 74 65  .......move_late
a750: 72 28 20 66 72 6f 6d 2c 20 74 6f 20 29 3b 0d 0a  r( from, to );..
a760: 09 09 09 09 72 65 74 75 72 6e 20 66 61 6c 73 65  ....return false
a770: 3b 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 09 09  ;.....}....}....
a780: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 09 7d  return true;...}
a790: 0d 0a 7d 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d  ..};........//--
a7a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a7b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a7c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a7d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a7e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 63  ----------..// c
a7f0: 61 6c 64 69 78 20 3a 20 83 81 83 43 83 93 83 8b  aldix : ...C....
a800: 81 5b 83 60 83 93 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d  .[.`....//------
a810: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a820: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a830: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a840: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
a850: 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 23 69 6e 63 6c 75  ------....#inclu
a860: 64 65 20 3c 72 61 73 2e 68 3e 0d 0a 23 69 6e 63  de <ras.h>..#inc
a870: 6c 75 64 65 20 3c 72 61 73 65 72 72 6f 72 2e 68  lude <raserror.h
a880: 3e 0d 0a 0d 0a 63 6c 61 73 73 20 63 61 6c 64 69  >....class caldi
a890: 78 20 3a 20 70 75 62 6c 69 63 20 6b 69 41 70 70  x : public kiApp
a8a0: 0d 0a 7b 0d 0a 09 63 61 6c 64 69 78 28 29 0d 0a  ..{...caldix()..
a8b0: 09 7b 0d 0a 09 09 73 68 65 6c 6c 49 6e 69 74 28  .{....shellInit(
a8c0: 29 3b 0d 0a 09 09 6b 69 75 74 69 6c 3a 3a 70 61  );....kiutil::pa
a8d0: 74 68 49 6e 69 74 28 29 3b 0d 0a 0d 0a 09 09 63  thInit();......c
a8e0: 66 67 20 3d 20 6e 65 77 20 43 6c 64 78 43 6f 6e  fg = new CldxCon
a8f0: 66 69 67 3b 0d 0a 09 7d 0d 0a 0d 0a 09 76 6f 69  fig;...}.....voi
a900: 64 20 72 75 6e 28 20 6b 69 43 6d 64 50 61 72 73  d run( kiCmdPars
a910: 65 72 26 20 63 6d 64 20 29 0d 0a 09 7b 0d 0a 09  er& cmd )...{...
a920: 09 2f 2f 20 83 5f 83 43 83 41 83 8d 83 4f 20 5b  .// ._.C.A...O [
a930: 91 53 8e a9 93 ae 2f 83 4a 83 58 83 5e 83 80 5d  .S..../.J.X.^..]
a940: 0d 0a 09 09 69 66 28 20 21 63 66 67 2d 3e 53 75  ....if( !cfg->Su
a950: 70 65 72 41 75 74 6f 4d 6f 64 65 20 26 26 20 21  perAutoMode && !
a960: 73 68 6f 77 28 20 73 74 61 72 74 44 6c 67 28 29  show( startDlg()
a970: 20 29 20 29 0d 0a 09 09 09 72 65 74 75 72 6e 3b   ) ).....return;
a980: 0d 0a 0d 0a 09 09 69 66 28 20 63 66 67 2d 3e 41  ......if( cfg->A
a990: 75 74 6f 4d 6f 64 65 20 29 0d 0a 09 09 7b 0d 0a  utoMode )....{..
a9a0: 09 09 09 2f 2f 20 91 53 8e a9 93 ae 82 c8 82 e7  ...// .S........
a9b0: 81 41 83 43 83 93 83 58 83 67 81 5b 83 8b 90 e6  .A.C...X.g.[....
a9c0: 82 f0 83 56 83 58 83 65 83 80 82 c9 82 b7 82 e9  ...V.X.e........
a9d0: 82 a9 82 e0 82 b5 82 ea 82 c8 82 a2 0d 0a 09 09  ................
a9e0: 09 69 66 28 20 21 63 66 67 2d 3e 55 73 65 43 75  .if( !cfg->UseCu
a9f0: 73 74 6f 6d 44 69 72 20 29 0d 0a 09 09 09 09 63  stomDir )......c
aa00: 66 67 2d 3e 49 6e 73 74 61 6c 6c 54 6f 2e 62 65  fg->InstallTo.be
aa10: 53 70 65 63 69 61 6c 50 61 74 68 28 20 6b 69 50  SpecialPath( kiP
aa20: 61 74 68 3a 3a 53 79 73 20 29 3b 0d 0a 09 09 7d  ath::Sys );....}
aa30: 0d 0a 09 09 65 6c 73 65 0d 0a 09 09 7b 0d 0a 09  ....else....{...
aa40: 09 09 2f 2f 20 83 5f 83 43 83 41 83 8d 83 4f 20  ..// ._.C.A...O 
aa50: 5b 83 43 83 93 83 58 83 67 81 5b 83 8b 90 e6 82  [.C...X.g.[.....
aa60: c6 82 a9 5d 0d 0a 09 09 09 69 66 28 20 21 73 68  ...].....if( !sh
aa70: 6f 77 28 20 63 75 73 74 6f 6d 44 6c 67 28 29 20  ow( customDlg() 
aa80: 29 20 29 0d 0a 09 09 09 09 72 65 74 75 72 6e 3b  ) )......return;
aa90: 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20 90 dd  ....}......// ..
aaa0: 92 e8 82 cc 92 b2 90 ae 0d 0a 09 09 63 66 67 2d  ............cfg-
aab0: 3e 49 6e 73 74 61 6c 6c 54 6f 2e 62 65 42 61 63  >InstallTo.beBac
aac0: 6b 53 6c 61 73 68 28 20 74 72 75 65 20 29 3b 0d  kSlash( true );.
aad0: 0a 09 09 63 66 67 2d 3e 47 65 6e 65 72 61 74 65  ...cfg->Generate
aae0: 44 4c 4c 4c 69 73 74 28 29 3b 0d 0a 0d 0a 09 09  DLLList();......
aaf0: 2f 2f 20 8f ed 8e 9e 90 da 91 b1 83 82 81 5b 83  // ...........[.
ab00: 68 82 c5 82 c8 82 a2 8f ea 8d 87 81 41 90 da 91  h...........A...
ab10: b1 82 f0 8a 6d 97 a7 0d 0a 09 09 69 66 28 20 21  ....m......if( !
ab20: 63 66 67 2d 3e 47 65 6f 72 67 65 20 29 0d 0a 09  cfg->George )...
ab30: 09 09 69 66 28 20 45 52 52 4f 52 5f 53 55 43 43  ..if( ERROR_SUCC
ab40: 45 53 53 20 21 3d 20 3a 3a 49 6e 74 65 72 6e 65  ESS != ::Interne
ab50: 74 41 74 74 65 6d 70 74 43 6f 6e 6e 65 63 74 28  tAttemptConnect(
ab60: 30 29 20 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09  0) ).....{......
ab70: 6d 73 67 42 6f 78 28 20 6b 69 53 74 72 28 29 2e  msgBox( kiStr().
ab80: 6c 6f 61 64 52 73 72 63 28 20 49 44 53 5f 4e 4f  loadRsrc( IDS_NO
ab90: 49 4e 54 45 52 4e 45 54 20 29 20 29 3b 0d 0a 09  INTERNET ) );...
aba0: 09 09 09 72 65 74 75 72 6e 3b 0d 0a 09 09 09 7d  ...return;.....}
abb0: 0d 0a 0d 0a 09 09 2f 2f 20 57 69 6e 49 6e 65 74  ......// WinInet
abc0: 8a 4a 8e 6e 81 63 0d 0a 09 09 48 49 4e 54 45 52  .J.n.c....HINTER
abd0: 4e 45 54 20 68 20 3d 20 3a 3a 49 6e 74 65 72 6e  NET h = ::Intern
abe0: 65 74 4f 70 65 6e 28 20 63 66 67 2d 3e 55 41 2c  etOpen( cfg->UA,
abf0: 20 49 4e 54 45 52 4e 45 54 5f 4f 50 45 4e 5f 54   INTERNET_OPEN_T
ac00: 59 50 45 5f 50 52 45 43 4f 4e 46 49 47 2c 20 4e  YPE_PRECONFIG, N
ac10: 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 30 20 29 3b 0d  ULL, NULL, 0 );.
ac20: 0a 09 09 69 66 28 20 21 68 20 29 0d 0a 09 09 7b  ...if( !h )....{
ac30: 0d 0a 09 09 09 6d 73 67 42 6f 78 28 20 6b 69 53  .....msgBox( kiS
ac40: 74 72 28 29 2e 6c 6f 61 64 52 73 72 63 28 20 49  tr().loadRsrc( I
ac50: 44 53 5f 4e 4f 49 4e 54 45 52 4e 45 54 20 29 20  DS_NOINTERNET ) 
ac60: 29 3b 0d 0a 09 09 09 72 65 74 75 72 6e 3b 0d 0a  );.....return;..
ac70: 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20 83 76 83 8d  ..}......// .v..
ac80: 83 4e 83 56 82 cc 90 dd 92 e8 0d 0a 09 09 69 66  .N.V..........if
ac90: 28 20 63 66 67 2d 3e 50 72 6f 78 79 53 65 72 76  ( cfg->ProxyServ
aca0: 65 72 2e 6c 65 6e 28 29 20 26 26 20 63 66 67 2d  er.len() && cfg-
acb0: 3e 50 72 6f 78 79 50 6f 72 74 3e 30 20 29 0d 0a  >ProxyPort>0 )..
acc0: 09 09 7b 0d 0a 09 09 09 6b 69 53 74 72 20 70 72  ..{.....kiStr pr
acd0: 28 20 22 68 74 74 70 3d 68 74 74 70 3a 2f 2f 22  ( "http=http://"
ace0: 20 29 3b 0d 0a 09 09 09 70 72 20 2b 3d 20 63 66   );.....pr += cf
acf0: 67 2d 3e 50 72 6f 78 79 53 65 72 76 65 72 3b 0d  g->ProxyServer;.
ad00: 0a 09 09 09 70 72 20 2b 3d 20 27 3a 27 3b 0d 0a  ....pr += ':';..
ad10: 09 09 09 70 72 20 2b 3d 20 6b 69 53 74 72 28 29  ...pr += kiStr()
ad20: 2e 73 65 74 49 6e 74 28 63 66 67 2d 3e 50 72 6f  .setInt(cfg->Pro
ad30: 78 79 50 6f 72 74 29 3b 0d 0a 09 09 09 49 4e 54  xyPort);.....INT
ad40: 45 52 4e 45 54 5f 50 52 4f 58 59 5f 49 4e 46 4f  ERNET_PROXY_INFO
ad50: 20 70 69 20 3d 20 7b 49 4e 54 45 52 4e 45 54 5f   pi = {INTERNET_
ad60: 4f 50 45 4e 5f 54 59 50 45 5f 50 52 4f 58 59 2c  OPEN_TYPE_PROXY,
ad70: 28 63 6f 6e 73 74 20 63 68 61 72 2a 29 70 72 2c  (const char*)pr,
ad80: 22 3c 6c 6f 63 61 6c 3e 22 7d 3b 0d 0a 09 09 09  "<local>"};.....
ad90: 3a 3a 49 6e 74 65 72 6e 65 74 53 65 74 4f 70 74  ::InternetSetOpt
ada0: 69 6f 6e 28 20 20 68 2c 20 49 4e 54 45 52 4e 45  ion(  h, INTERNE
adb0: 54 5f 4f 50 54 49 4f 4e 5f 50 52 4f 58 59 2c 20  T_OPTION_PROXY, 
adc0: 28 76 6f 69 64 2a 29 26 70 69 2c 20 73 69 7a 65  (void*)&pi, size
add0: 6f 66 28 70 69 29 20 29 3b 0d 0a 09 09 09 3a 3a  of(pi) );.....::
ade0: 55 72 6c 4d 6b 53 65 74 53 65 73 73 69 6f 6e 4f  UrlMkSetSessionO
adf0: 70 74 69 6f 6e 28 20 49 4e 54 45 52 4e 45 54 5f  ption( INTERNET_
ae00: 4f 50 54 49 4f 4e 5f 50 52 4f 58 59 2c 20 28 76  OPTION_PROXY, (v
ae10: 6f 69 64 2a 29 26 70 69 2c 20 73 69 7a 65 6f 66  oid*)&pi, sizeof
ae20: 28 70 69 29 2c 20 30 20 29 3b 0d 0a 09 09 7d 0d  (pi), 0 );....}.
ae30: 0a 0d 0a 09 09 2f 2f 20 83 5e 83 43 83 80 83 41  .....// .^.C...A
ae40: 83 45 83 67 82 cd 35 95 62 0d 0a 09 09 44 57 4f  .E.g..5.b....DWO
ae50: 52 44 20 54 69 6d 65 4f 75 74 20 3d 20 35 2a 31  RD TimeOut = 5*1
ae60: 30 30 30 3b 0d 0a 09 09 3a 3a 49 6e 74 65 72 6e  000;....::Intern
ae70: 65 74 53 65 74 4f 70 74 69 6f 6e 28 20 68 2c 20  etSetOption( h, 
ae80: 49 4e 54 45 52 4e 45 54 5f 4f 50 54 49 4f 4e 5f  INTERNET_OPTION_
ae90: 52 45 43 45 49 56 45 5f 54 49 4d 45 4f 55 54 2c  RECEIVE_TIMEOUT,
aea0: 20 26 54 69 6d 65 4f 75 74 2c 20 73 69 7a 65 6f   &TimeOut, sizeo
aeb0: 66 28 54 69 6d 65 4f 75 74 29 20 29 3b 0d 0a 0d  f(TimeOut) );...
aec0: 0a 09 09 2f 2f 20 90 da 91 b1 90 e6 83 54 81 5b  ...// .......T.[
aed0: 83 6f 8f ee 95 f1 82 f0 90 dd 92 e8 82 a9 82 e7  .o..............
aee0: 8e e6 93 be 0d 0a 09 09 6d 69 72 72 6f 72 4d 61  ........mirrorMa
aef0: 6e 2e 73 65 74 50 72 65 66 65 72 65 64 53 65 72  n.setPreferedSer
af00: 76 65 72 28 20 63 66 67 2d 3e 43 68 65 63 6b 53  ver( cfg->CheckS
af10: 65 72 76 65 72 20 29 3b 0d 0a 0d 0a 09 09 2f 2f  erver );......//
af20: 20 83 5f 83 43 83 41 83 8d 83 4f 20 5b 57 57 57   ._.C.A...O [WWW
af30: 43 20 4d 45 54 41 20 43 48 45 43 4b 5d 0d 0a 09  C META CHECK]...
af40: 09 69 66 28 20 21 73 68 6f 77 28 20 76 65 72 44  .if( !show( verD
af50: 6c 67 28 68 29 20 29 20 29 0d 0a 09 09 7b 0d 0a  lg(h) ) )....{..
af60: 09 09 09 3a 3a 49 6e 74 65 72 6e 65 74 43 6c 6f  ...::InternetClo
af70: 73 65 48 61 6e 64 6c 65 28 20 68 20 29 3b 0d 0a  seHandle( h );..
af80: 09 09 09 61 73 6b 52 61 73 48 61 6e 67 55 70 28  ...askRasHangUp(
af90: 29 3b 0d 0a 09 09 09 72 65 74 75 72 6e 3b 0d 0a  );.....return;..
afa0: 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20 83 6f 81 5b  ..}......// .o.[
afb0: 83 57 83 87 83 93 94 e4 8a 72 0d 0a 09 09 6b 69  .W.......r....ki
afc0: 53 74 72 20 74 6d 70 3b 0d 0a 09 09 6b 69 41 72  Str tmp;....kiAr
afd0: 72 61 79 3c 44 4c 4c 49 6e 66 6f 2a 3e 20 75 70  ray<DLLInfo*> up
afe0: 64 3b 0d 0a 09 09 66 6f 72 28 20 75 6e 73 69 67  d;....for( unsig
aff0: 6e 65 64 20 69 6e 74 20 69 3d 30 3b 20 69 3c 63  ned int i=0; i<c
b000: 66 67 2d 3e 4c 69 73 74 2e 6c 65 6e 28 29 3b 20  fg->List.len(); 
b010: 2b 2b 69 20 29 0d 0a 09 09 09 69 66 28 20 63 66  ++i ).....if( cf
b020: 67 2d 3e 4c 69 73 74 5b 69 5d 2d 3e 6e 65 65 64  g->List[i]->need
b030: 54 6f 55 70 64 61 74 65 28 20 63 66 67 2d 3e 49  ToUpdate( cfg->I
b040: 6e 73 74 61 6c 6c 54 6f 20 29 20 29 0d 0a 09 09  nstallTo ) )....
b050: 09 09 75 70 64 2e 61 64 64 28 20 63 66 67 2d 3e  ..upd.add( cfg->
b060: 4c 69 73 74 5b 69 5d 20 29 3b 0d 0a 0d 0a 09 09  List[i] );......
b070: 69 66 28 20 75 70 64 2e 6c 65 6e 28 29 3d 3d 30  if( upd.len()==0
b080: 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 3a 3a 49 6e   )....{.....::In
b090: 74 65 72 6e 65 74 43 6c 6f 73 65 48 61 6e 64 6c  ternetCloseHandl
b0a0: 65 28 20 68 20 29 3b 0d 0a 09 09 09 6d 73 67 42  e( h );.....msgB
b0b0: 6f 78 28 20 6b 69 53 74 72 28 29 2e 6c 6f 61 64  ox( kiStr().load
b0c0: 52 73 72 63 28 20 49 44 53 5f 4e 4f 4e 45 45 44  Rsrc( IDS_NONEED
b0d0: 20 29 2c 20 22 63 61 6c 64 69 78 22 2c 20 4d 42   ), "caldix", MB
b0e0: 5f 49 43 4f 4e 49 4e 46 4f 52 4d 41 54 49 4f 4e  _ICONINFORMATION
b0f0: 20 29 3b 0d 0a 09 09 09 61 73 6b 52 61 73 48 61   );.....askRasHa
b100: 6e 67 55 70 28 29 3b 0d 0a 09 09 09 72 65 74 75  ngUp();.....retu
b110: 72 6e 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 69 66  rn;....}......if
b120: 28 20 21 20 63 66 67 2d 3e 41 75 74 6f 4d 6f 64  ( ! cfg->AutoMod
b130: 65 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 2f 2f 20  e )....{.....// 
b140: 83 5f 83 43 83 41 83 8d 83 4f 20 5b 83 43 83 93  ._.C.A...O [.C..
b150: 83 58 83 67 81 5b 83 8b 82 b7 82 e9 44 4c 4c 82  .X.g.[......DLL.
b160: c6 82 a9 5d 0d 0a 09 09 09 69 66 28 20 21 73 68  ...].....if( !sh
b170: 6f 77 28 64 6c 6c 44 6c 67 28 75 70 64 29 29 20  ow(dllDlg(upd)) 
b180: 7c 7c 20 75 70 64 2e 6c 65 6e 28 29 3d 3d 30 20  || upd.len()==0 
b190: 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 3a 3a 49  ).....{......::I
b1a0: 6e 74 65 72 6e 65 74 43 6c 6f 73 65 48 61 6e 64  nternetCloseHand
b1b0: 6c 65 28 20 68 20 29 3b 0d 0a 09 09 09 09 61 73  le( h );......as
b1c0: 6b 52 61 73 48 61 6e 67 55 70 28 29 3b 0d 0a 09  kRasHangUp();...
b1d0: 09 09 09 72 65 74 75 72 6e 3b 0d 0a 09 09 09 7d  ...return;.....}
b1e0: 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20 83 5f  ....}......// ._
b1f0: 83 45 83 93 83 8d 81 5b 83 68 0d 0a 09 09 63 68  .E.....[.h....ch
b200: 61 72 20 62 75 66 5b 4d 41 58 5f 50 41 54 48 5d  ar buf[MAX_PATH]
b210: 3b 0d 0a 09 09 3a 3a 47 65 74 54 65 6d 70 46 69  ;....::GetTempFi
b220: 6c 65 4e 61 6d 65 28 20 6b 69 50 61 74 68 28 20  leName( kiPath( 
b230: 6b 69 50 61 74 68 3a 3a 54 6d 70 20 29 2c 20 22  kiPath::Tmp ), "
b240: 63 6c 64 22 2c 20 30 2c 20 62 75 66 20 29 3b 0d  cld", 0, buf );.
b250: 0a 09 09 3a 3a 44 65 6c 65 74 65 46 69 6c 65 28  ...::DeleteFile(
b260: 20 62 75 66 20 29 3b 0d 0a 09 09 6b 69 50 61 74   buf );....kiPat
b270: 68 20 64 6c 74 6f 28 20 62 75 66 20 29 3b 0d 0a  h dlto( buf );..
b280: 09 09 64 6c 74 6f 2e 62 65 42 61 63 6b 53 6c 61  ..dlto.beBackSla
b290: 73 68 28 20 74 72 75 65 20 29 3b 0d 0a 09 09 64  sh( true );....d
b2a0: 6c 74 6f 2e 6d 6b 64 69 72 28 29 3b 0d 0a 0d 0a  lto.mkdir();....
b2b0: 09 09 69 66 28 20 21 73 68 6f 77 28 20 64 6f 77  ..if( !show( dow
b2c0: 6e 6c 6f 61 64 44 6c 67 28 75 70 64 2c 20 64 6c  nloadDlg(upd, dl
b2d0: 74 6f 29 20 29 20 29 0d 0a 09 09 7b 0d 0a 09 09  to) ) )....{....
b2e0: 09 64 6c 74 6f 2e 72 65 6d 6f 76 65 28 29 3b 0d  .dlto.remove();.
b2f0: 0a 09 09 09 3a 3a 49 6e 74 65 72 6e 65 74 43 6c  ....::InternetCl
b300: 6f 73 65 48 61 6e 64 6c 65 28 20 68 20 29 3b 0d  oseHandle( h );.
b310: 0a 09 09 09 61 73 6b 52 61 73 48 61 6e 67 55 70  ....askRasHangUp
b320: 28 29 3b 0d 0a 09 09 09 72 65 74 75 72 6e 3b 0d  ();.....return;.
b330: 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20 83 43 83  ...}......// .C.
b340: 93 83 58 83 67 81 5b 83 8b 8f 80 94 f5 0d 0a 09  ..X.g.[.........
b350: 09 62 6f 6f 6c 20 6e 65 65 64 72 65 62 6f 6f 74  .bool needreboot
b360: 20 3d 20 66 61 6c 73 65 3b 0d 0a 09 09 63 66 67   = false;....cfg
b370: 2d 3e 49 6e 73 74 61 6c 6c 54 6f 2e 6d 6b 64 69  ->InstallTo.mkdi
b380: 72 28 29 3b 0d 0a 09 09 6b 69 50 61 74 68 20 77  r();....kiPath w
b390: 6f 72 6b 44 69 72 28 20 6b 69 50 61 74 68 3a 3a  orkDir( kiPath::
b3a0: 45 78 65 20 29 3b 20 77 6f 72 6b 44 69 72 2e 6c  Exe ); workDir.l
b3b0: 6f 77 65 72 28 29 3b 0d 0a 09 09 55 49 4e 54 20  ower();....UINT 
b3c0: 64 72 76 20 3d 20 77 6f 72 6b 44 69 72 2e 67 65  drv = workDir.ge
b3d0: 74 44 72 69 76 65 54 79 70 65 28 29 3b 0d 0a 09  tDriveType();...
b3e0: 09 69 66 28 20 73 74 72 73 74 72 28 77 6f 72 6b  .if( strstr(work
b3f0: 44 69 72 2c 22 74 65 6d 70 6f 72 61 72 79 20 69  Dir,"temporary i
b400: 6e 74 65 72 6e 65 74 20 66 69 6c 65 73 22 29 21  nternet files")!
b410: 3d 4e 55 4c 4c 0d 0a 09 09 20 7c 7c 20 28 64 72  =NULL.... || (dr
b420: 76 21 3d 44 52 49 56 45 5f 46 49 58 45 44 20 26  v!=DRIVE_FIXED &
b430: 26 20 64 72 76 21 3d 44 52 49 56 45 5f 52 45 4d  & drv!=DRIVE_REM
b440: 4f 54 45 20 26 26 20 64 72 76 21 3d 44 52 49 56  OTE && drv!=DRIV
b450: 45 5f 55 4e 4b 4e 4f 57 4e 29 20 29 0d 0a 09 09  E_UNKNOWN) )....
b460: 09 77 6f 72 6b 44 69 72 2e 62 65 53 70 65 63 69  .workDir.beSpeci
b470: 61 6c 50 61 74 68 28 20 6b 69 50 61 74 68 3a 3a  alPath( kiPath::
b480: 44 73 6b 20 29 2c 20 77 6f 72 6b 44 69 72 2e 62  Dsk ), workDir.b
b490: 65 42 61 63 6b 53 6c 61 73 68 28 20 74 72 75 65  eBackSlash( true
b4a0: 20 29 3b 0d 0a 09 09 77 6f 72 6b 44 69 72 20 2b   );....workDir +
b4b0: 3d 20 22 63 6c 64 78 5c 5c 22 3b 0d 0a 09 09 77  = "cldx\\";....w
b4c0: 6f 72 6b 44 69 72 2e 6d 6b 64 69 72 28 29 3b 0d  orkDir.mkdir();.
b4d0: 0a 0d 0a 09 09 69 66 28 20 63 66 67 2d 3e 49 6e  .....if( cfg->In
b4e0: 73 74 4d 6f 64 65 20 21 3d 20 31 20 29 0d 0a 09  stMode != 1 )...
b4f0: 09 7b 0d 0a 09 09 09 2f 2f 20 8f 91 8c c9 83 52  .{.....// .....R
b500: 83 73 81 5b 0d 0a 09 09 09 6b 69 50 61 74 68 20  .s.[.....kiPath 
b510: 66 72 6f 6d 2c 20 74 6f 3b 0d 0a 09 09 09 66 6f  from, to;.....fo
b520: 72 28 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20  r( unsigned int 
b530: 69 3d 30 3b 20 69 3c 75 70 64 2e 6c 65 6e 28 29  i=0; i<upd.len()
b540: 3b 20 69 2b 2b 20 29 0d 0a 09 09 09 7b 0d 0a 09  ; i++ ).....{...
b550: 09 09 09 66 72 6f 6d 20 3d 20 64 6c 74 6f 2c 20  ...from = dlto, 
b560: 66 72 6f 6d 20 2b 3d 20 75 70 64 5b 69 5d 2d 3e  from += upd[i]->
b570: 67 65 74 41 72 63 68 69 76 65 4e 61 6d 65 28 29  getArchiveName()
b580: 3b 0d 0a 09 09 09 09 74 6f 20 3d 20 77 6f 72 6b  ;......to = work
b590: 44 69 72 2c 20 20 74 6f 20 2b 3d 20 75 70 64 5b  Dir,  to += upd[
b5a0: 69 5d 2d 3e 67 65 74 41 72 63 68 69 76 65 4e 61  i]->getArchiveNa
b5b0: 6d 65 28 29 3b 0d 0a 09 09 09 09 3a 3a 43 6f 70  me();......::Cop
b5c0: 79 46 69 6c 65 28 20 66 72 6f 6d 2c 20 74 6f 2c  yFile( from, to,
b5d0: 20 46 41 4c 53 45 20 29 3b 0d 0a 09 09 09 7d 0d   FALSE );.....}.
b5e0: 0a 09 09 7d 0d 0a 09 09 69 66 28 20 63 66 67 2d  ...}....if( cfg-
b5f0: 3e 49 6e 73 74 4d 6f 64 65 20 21 3d 20 30 20 29  >InstMode != 0 )
b600: 0d 0a 09 09 7b 0d 0a 09 09 09 2f 2f 20 83 43 83  ....{.....// .C.
b610: 93 83 58 83 67 81 5b 83 8b 0d 0a 09 09 09 69 66  ..X.g.[.......if
b620: 28 20 21 73 68 6f 77 28 20 69 6e 73 74 44 6c 67  ( !show( instDlg
b630: 28 20 75 70 64 2c 20 64 6c 74 6f 2c 20 77 6f 72  ( upd, dlto, wor
b640: 6b 44 69 72 2c 20 63 66 67 2d 3e 49 6e 73 74 61  kDir, cfg->Insta
b650: 6c 6c 54 6f 20 29 20 29 20 29 0d 0a 09 09 09 09  llTo ) ) )......
b660: 6e 65 65 64 72 65 62 6f 6f 74 20 3d 20 74 72 75  needreboot = tru
b670: 65 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 2f 2f 20  e;....}......// 
b680: 95 c2 82 b6 8f 88 97 9d 0d 0a 09 09 64 6c 74 6f  ............dlto
b690: 2e 72 65 6d 6f 76 65 28 29 3b 0d 0a 09 09 3a 3a  .remove();....::
b6a0: 49 6e 74 65 72 6e 65 74 43 6c 6f 73 65 48 61 6e  InternetCloseHan
b6b0: 64 6c 65 28 20 68 20 29 3b 0d 0a 0d 0a 09 09 69  dle( h );......i
b6c0: 66 28 20 21 6e 65 65 64 72 65 62 6f 6f 74 20 29  f( !needreboot )
b6d0: 0d 0a 09 09 7b 0d 0a 09 09 09 69 66 28 20 21 20  ....{.....if( ! 
b6e0: 63 66 67 2d 3e 53 75 70 65 72 41 75 74 6f 4d 6f  cfg->SuperAutoMo
b6f0: 64 65 20 29 0d 0a 09 09 09 09 6d 73 67 42 6f 78  de )......msgBox
b700: 28 20 6b 69 53 74 72 28 35 30 30 29 2e 6c 6f 61  ( kiStr(500).loa
b710: 64 52 73 72 63 28 20 49 44 53 5f 46 49 4e 49 53  dRsrc( IDS_FINIS
b720: 48 45 44 20 29 2c 20 22 63 61 6c 64 69 78 22 2c  HED ), "caldix",
b730: 20 4d 42 5f 49 43 4f 4e 49 4e 46 4f 52 4d 41 54   MB_ICONINFORMAT
b740: 49 4f 4e 7c 4d 42 5f 53 59 53 54 45 4d 4d 4f 44  ION|MB_SYSTEMMOD
b750: 41 4c 20 29 3b 0d 0a 09 09 09 61 73 6b 52 61 73  AL );.....askRas
b760: 48 61 6e 67 55 70 28 29 3b 0d 0a 09 09 7d 0d 0a  HangUp();....}..
b770: 09 09 65 6c 73 65 0d 0a 09 09 09 69 66 28 20 49  ..else.....if( I
b780: 44 59 45 53 21 3d 6d 73 67 42 6f 78 28 20 6b 69  DYES!=msgBox( ki
b790: 53 74 72 28 31 30 30 30 29 2e 6c 6f 61 64 52 73  Str(1000).loadRs
b7a0: 72 63 28 20 49 44 53 5f 52 45 42 4f 4f 54 20 29  rc( IDS_REBOOT )
b7b0: 2c 20 22 63 61 6c 64 69 78 22 2c 20 4d 42 5f 49  , "caldix", MB_I
b7c0: 43 4f 4e 49 4e 46 4f 52 4d 41 54 49 4f 4e 7c 4d  CONINFORMATION|M
b7d0: 42 5f 59 45 53 4e 4f 7c 4d 42 5f 53 59 53 54 45  B_YESNO|MB_SYSTE
b7e0: 4d 4d 4f 44 41 4c 20 29 20 29 0d 0a 09 09 09 09  MMODAL ) )......
b7f0: 6e 65 65 64 72 65 62 6f 6f 74 20 3d 20 66 61 6c  needreboot = fal
b800: 73 65 3b 0d 0a 0d 0a 09 09 2f 2f 20 8a c8 88 d5  se;......// ....
b810: 90 e0 96 be 8f 91 8f 6f 97 cd 0d 0a 09 09 69 66  .......o......if
b820: 28 20 3a 3a 47 65 74 41 43 50 28 29 20 3d 3d 20  ( ::GetACP() == 
b830: 39 33 32 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 6b  932 )....{.....k
b840: 69 46 69 6c 65 20 66 70 3b 0d 0a 09 09 09 69 66  iFile fp;.....if
b850: 28 20 66 70 2e 6f 70 65 6e 28 20 6b 69 50 61 74  ( fp.open( kiPat
b860: 68 28 77 6f 72 6b 44 69 72 29 2b 3d 22 93 c7 82  h(workDir)+="...
b870: f1 82 c5 82 cb 2e 74 78 74 22 2c 20 66 61 6c 73  ......txt", fals
b880: 65 20 29 20 29 0d 0a 09 09 09 7b 0d 0a 09 09 09  e ) ).....{.....
b890: 09 73 74 61 74 69 63 20 63 6f 6e 73 74 20 63 68  .static const ch
b8a0: 61 72 20 2a 20 74 65 78 74 20 3d 0d 0a 22 82 b1  ar * text =.."..
b8b0: 82 cc 83 74 83 48 83 8b 83 5f 82 c9 82 cd 81 41  ...t.H..._.....A
b8c0: 63 61 6c 64 69 78 82 c5 83 5f 83 45 83 93 83 8d  caldix..._.E....
b8d0: 81 5b 83 68 82 b3 82 ea 82 bd 5c 72 5c 6e 22 0d  .[.h......\r\n".
b8e0: 0a 22 44 4c 4c 82 cc 90 e0 96 be 8f 91 82 f0 8a  ."DLL...........
b8f0: 69 94 5b 82 b5 82 c4 82 a0 82 e8 82 dc 82 b7 81  i.[.............
b900: 42 82 e6 82 ad 82 a8 93 c7 82 dd 89 ba 82 b3 82  B...............
b910: a2 81 42 5c 72 5c 6e 22 0d 0a 22 5c 72 5c 6e 22  ..B\r\n".."\r\n"
b920: 0d 0a 22 81 9a 20 55 4e 5a 49 50 33 32 2e 44 4c  ..".. UNZIP32.DL
b930: 4c 20 82 f0 8a e9 8b c6 93 e0 93 99 82 c5 97 98  L ..............
b940: 97 70 82 b7 82 e9 8f ea 8d 87 82 c9 82 cd 81 41  .p.............A
b950: 95 4b 82 b8 5c 72 5c 6e 22 0d 0a 22 81 9a 20 83  .K..\r\n"..".. .
b960: 89 83 43 83 5a 83 93 83 58 8c 5f 96 f1 82 aa 95  ..C.Z...X._.....
b970: 4b 97 76 82 c5 82 b7 81 42 8f da 8d d7 82 cd 89  K.v.....B.......
b980: ba 8b 4c 83 79 81 5b 83 57 82 c9 82 c4 81 42 5c  ..L.y.[.W.....B\
b990: 72 5c 6e 22 0d 0a 22 81 9a 20 68 74 74 70 3a 2f  r\n"..".. http:/
b9a0: 2f 77 77 77 2e 63 73 64 69 6e 63 2e 63 6f 2e 6a  /www.csdinc.co.j
b9b0: 70 2f 61 72 63 68 69 76 65 72 2f 6c 69 62 2f 75  p/archiver/lib/u
b9c0: 6e 7a 69 70 33 32 2e 68 74 6d 6c 5c 72 5c 6e 22  nzip32.html\r\n"
b9d0: 0d 0a 22 5c 72 5c 6e 22 0d 0a 22 82 bb 82 ea 82  .."\r\n"..".....
b9e0: bc 82 ea 82 cc 44 4c 4c 82 cc 8d ec 8e d2 97 6c  .....DLL.......l
b9f0: 82 cc 83 54 83 43 83 67 82 cd 81 41 5c 72 5c 6e  ...T.C.g...A\r\n
ba00: 22 0d 0a 22 20 81 77 93 9d 8d 87 83 41 81 5b 83  ".." .w.....A.[.
ba10: 4a 83 43 83 6f 83 76 83 8d 83 57 83 46 83 4e 83  J.C.o.v...W.F.N.
ba20: 67 81 78 5c 72 5c 6e 22 0d 0a 22 20 81 40 81 40  g.x\r\n".." .@.@
ba30: 68 74 74 70 3a 2f 2f 77 77 77 2e 63 73 64 69 6e  http://www.csdin
ba40: 63 2e 63 6f 2e 6a 70 2f 61 72 63 68 69 76 65 72  c.co.jp/archiver
ba50: 2f 20 5c 72 5c 6e 22 0d 0a 22 82 a9 82 e7 83 8a  / \r\n".."......
ba60: 83 93 83 4e 82 f0 82 bd 82 c7 82 c1 82 c4 96 4b  ...N...........K
ba70: 82 ea 82 e9 82 b1 82 c6 82 aa 8f 6f 97 88 82 dc  ...........o....
ba80: 82 b7 81 42 5c 72 5c 6e 22 0d 0a 22 90 a5 94 f1  ...B\r\n".."....
ba90: 88 ea 93 78 82 cd 8d 73 82 c1 82 c4 82 dd 82 e9  ...x...s........
baa0: 82 b1 82 c6 82 f0 82 a8 8a a9 82 df 82 b5 82 dc  ................
bab0: 82 b7 81 42 5c 72 5c 6e 22 0d 0a 22 5c 72 5c 6e  ...B\r\n".."\r\n
bac0: 22 0d 0a 22 44 4c 4c 82 cc 83 41 83 93 83 43 83  ".."DLL...A...C.
bad0: 93 83 58 83 67 81 5b 83 8b 82 cd 20 75 6e 63 61  ..X.g.[.... unca
bae0: 6c 64 69 78 20 82 aa 95 d6 97 98 81 42 5c 72 5c  ldix .......B\r\
baf0: 6e 22 0d 0a 22 20 20 20 20 20 68 74 74 70 3a 2f  n".."     http:/
bb00: 2f 77 77 77 36 2e 70 6c 61 6c 61 2e 6f 72 2e 6a  /www6.plala.or.j
bb10: 70 2f 61 6d 61 73 6f 66 74 2f 73 6f 66 74 2f 75  p/amasoft/soft/u
bb20: 6e 63 61 6c 64 69 78 2e 68 74 6d 6c 5c 72 5c 6e  ncaldix.html\r\n
bb30: 22 0d 0a 22 5c 72 5c 6e 22 0d 0a 22 63 61 6c 64  ".."\r\n".."cald
bb40: 69 78 82 c9 8a d6 82 b7 82 e9 82 b2 8e bf 96 e2  ix..............
bb50: 93 99 82 cd 28 20 68 74 74 70 3a 2f 2f 77 77 77  ....( http://www
bb60: 2e 6b 6d 6f 6e 6f 73 2e 6e 65 74 2f 20 29 82 d6  .kmonos.net/ )..
bb70: 5c 72 5c 6e 22 0d 0a 09 09 09 09 3b 20 66 70 2e  \r\n"......; fp.
bb80: 77 72 69 74 65 28 20 74 65 78 74 2c 20 6b 69 5f  write( text, ki_
bb90: 73 74 72 6c 65 6e 28 74 65 78 74 29 20 29 3b 0d  strlen(text) );.
bba0: 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a 09 09  ....}....}......
bbb0: 2f 2f 20 8f 6f 97 cd 90 e6 8a 4a 82 ad 0d 0a 09  // .o.....J.....
bbc0: 09 69 66 28 20 63 66 67 2d 3e 53 68 6f 77 52 65  .if( cfg->ShowRe
bbd0: 61 64 4d 65 20 29 0d 0a 09 09 7b 0d 0a 09 09 09  adMe )....{.....
bbe0: 63 68 61 72 20 63 6d 64 6c 69 6e 65 5b 31 30 30  char cmdline[100
bbf0: 30 5d 3b 0d 0a 2f 2f 20 83 52 83 81 83 93 83 67  0];..// .R.....g
bc00: 83 41 83 45 83 67 63 61 6c 64 69 78 46 0d 0a 2f  .A.E.gcaldixF../
bc10: 2a 0d 0a 09 09 09 3a 3a 77 73 70 72 69 6e 74 66  *.....::wsprintf
bc20: 28 20 63 6d 64 6c 69 6e 65 2c 20 22 65 78 70 6c  ( cmdline, "expl
bc30: 6f 72 65 72 20 5c 22 25 73 5c 22 22 2c 20 28 63  orer \"%s\"", (c
bc40: 6f 6e 73 74 20 63 68 61 72 2a 29 77 6f 72 6b 44  onst char*)workD
bc50: 69 72 20 29 3b 0d 0a 09 09 09 3a 3a 57 69 6e 45  ir );.....::WinE
bc60: 78 65 63 28 20 63 6d 64 6c 69 6e 65 2c 20 53 57  xec( cmdline, SW
bc70: 5f 53 48 4f 57 44 45 46 41 55 4c 54 20 29 3b 0d  _SHOWDEFAULT );.
bc80: 0a 2a 2f 0d 0a 2f 2f 20 83 52 83 81 83 93 83 67  .*/..// .R.....g
bc90: 83 41 83 45 83 67 82 b1 82 b1 82 dc 82 c5 63 61  .A.E.g........ca
bca0: 6c 64 69 78 46 0d 0a 0d 0a 2f 2f 20 91 7d 93 fc  ldixF....// .}..
bcb0: 63 61 6c 64 69 78 46 0d 0a 09 09 09 63 68 61 72  caldixF.....char
bcc0: 20 77 64 69 72 5b 4d 41 58 5f 50 41 54 48 2a 33   wdir[MAX_PATH*3
bcd0: 5d 3b 0d 0a 0d 0a 09 09 09 2f 2f 20 63 61 6c 64  ];.......// cald
bce0: 69 78 82 cc 83 70 83 58 82 f0 8e e6 93 be 0d 0a  ix...p.X........
bcf0: 09 09 09 47 65 74 4d 6f 64 75 6c 65 46 69 6c 65  ...GetModuleFile
bd00: 4e 61 6d 65 28 4e 55 4c 4c 2c 77 64 69 72 2c 4d  Name(NULL,wdir,M
bd10: 41 58 5f 50 41 54 48 29 3b 0d 0a 09 09 09 2f 2f  AX_PATH);.....//
bd20: 20 63 61 6c 64 69 78 2e 65 78 65 81 a8 63 6c 64   caldix.exe..cld
bd30: 78 82 c9 82 b7 82 e9 0d 0a 09 09 09 6c 73 74 72  x...........lstr
bd40: 63 70 79 28 47 65 74 46 69 6c 65 4e 61 6d 65 28  cpy(GetFileName(
bd50: 77 64 69 72 29 2c 22 63 6c 64 78 22 29 3b 0d 0a  wdir),"cldx");..
bd60: 0d 0a 09 09 09 2f 2f 20 70 72 65 66 69 78 82 c6  .....// prefix..
bd70: 70 6f 73 74 66 69 78 82 f0 82 c2 82 af 82 e9 28  postfix........(
bd80: 20 6d 6f 64 69 66 69 65 64 20 62 79 20 6b 2e 69   modified by k.i
bd90: 6e 61 62 61 20 29 0d 0a 09 09 09 62 6f 6f 6c 20  naba ).....bool 
bda0: 62 4e 65 65 64 51 75 6f 74 65 20 3d 20 66 61 6c  bNeedQuote = fal
bdb0: 73 65 3b 0d 0a 09 09 09 66 6f 72 28 69 6e 74 20  se;.....for(int 
bdc0: 69 3d 30 3b 20 69 21 3d 63 66 67 2d 3e 46 69 6c  i=0; i!=cfg->Fil
bdd0: 65 72 2e 6c 65 6e 28 29 3b 20 2b 2b 69 29 0d 0a  er.len(); ++i)..
bde0: 09 09 09 09 69 66 28 63 66 67 2d 3e 46 69 6c 65  ....if(cfg->File
bdf0: 72 5b 69 5d 3d 3d 27 20 27 29 20 7b 20 62 4e 65  r[i]==' ') { bNe
be00: 65 64 51 75 6f 74 65 3d 74 72 75 65 3b 20 62 72  edQuote=true; br
be10: 65 61 6b 3b 20 7d 0d 0a 09 09 09 3a 3a 77 73 70  eak; }.....::wsp
be20: 72 69 6e 74 66 28 20 63 6d 64 6c 69 6e 65 2c 0d  rintf( cmdline,.
be30: 0a 09 09 09 09 62 4e 65 65 64 51 75 6f 74 65 20  .....bNeedQuote 
be40: 3f 20 22 5c 22 25 73 5c 22 20 25 73 5c 22 25 73  ? "\"%s\" %s\"%s
be50: 5c 22 25 73 22 20 3a 20 22 25 73 20 25 73 5c 22  \"%s" : "%s %s\"
be60: 25 73 5c 22 25 73 22 2c 0d 0a 09 09 09 09 28 63  %s\"%s",......(c
be70: 6f 6e 73 74 20 63 68 61 72 2a 29 63 66 67 2d 3e  onst char*)cfg->
be80: 46 69 6c 65 72 2c 0d 0a 09 09 09 09 28 63 6f 6e  Filer,......(con
be90: 73 74 20 63 68 61 72 2a 29 63 66 67 2d 3e 46 5f  st char*)cfg->F_
bea0: 50 72 65 66 69 78 2c 20 77 64 69 72 2c 20 28 63  Prefix, wdir, (c
beb0: 6f 6e 73 74 20 63 68 61 72 2a 29 63 66 67 2d 3e  onst char*)cfg->
bec0: 46 5f 53 75 66 66 69 78 29 3b 0d 0a 0d 0a 09 09  F_Suffix);......
bed0: 09 2f 2f 20 83 74 83 40 83 43 83 89 8b 4e 93 ae  .// .t.@.C...N..
bee0: 28 20 6d 6f 64 69 66 69 65 64 20 62 79 20 6b 2e  ( modified by k.
bef0: 69 6e 61 62 61 20 29 0d 0a 09 09 09 53 54 41 52  inaba ).....STAR
bf00: 54 55 50 49 4e 46 4f 20 73 69 20 3d 20 7b 73 69  TUPINFO si = {si
bf10: 7a 65 6f 66 28 73 69 29 7d 3b 0d 0a 09 09 09 50  zeof(si)};.....P
bf20: 52 4f 43 45 53 53 5f 49 4e 46 4f 52 4d 41 54 49  ROCESS_INFORMATI
bf30: 4f 4e 20 70 69 3b 0d 0a 09 09 09 7b 0d 0a 09 09  ON pi;.....{....
bf40: 09 09 6b 69 50 61 74 68 20 6f 72 69 67 69 6e 61  ..kiPath origina
bf50: 6c 5f 63 75 72 28 6b 69 50 61 74 68 3a 3a 43 75  l_cur(kiPath::Cu
bf60: 72 29 2c 20 73 79 73 28 6b 69 50 61 74 68 3a 3a  r), sys(kiPath::
bf70: 53 79 73 29 3b 20 2f 2f 20 91 e5 8f e4 95 76 82  Sys); // .....v.
bf80: c8 82 cd 82 b8 82 be 82 af 82 c7 94 4f 82 cc 82  ............O...
bf90: bd 82 df 82 cc 83 4a 83 8c 83 93 83 67 88 da 93  ......J.....g...
bfa0: ae 0d 0a 09 09 09 09 3a 3a 53 65 74 43 75 72 72  .......::SetCurr
bfb0: 65 6e 74 44 69 72 65 63 74 6f 72 79 28 73 79 73  entDirectory(sys
bfc0: 29 3b 0d 0a 09 09 09 09 3a 3a 43 72 65 61 74 65  );......::Create
bfd0: 50 72 6f 63 65 73 73 28 20 4e 55 4c 4c 2c 20 63  Process( NULL, c
bfe0: 6d 64 6c 69 6e 65 2c 20 4e 55 4c 4c 2c 20 4e 55  mdline, NULL, NU
bff0: 4c 4c 2c 20 46 41 4c 53 45 2c 20 30 2c 20 4e 55  LL, FALSE, 0, NU
c000: 4c 4c 2c 20 77 64 69 72 2c 20 26 73 69 2c 20 26  LL, wdir, &si, &
c010: 70 69 20 29 3b 0d 0a 09 09 09 09 3a 3a 53 65 74  pi );......::Set
c020: 43 75 72 72 65 6e 74 44 69 72 65 63 74 6f 72 79  CurrentDirectory
c030: 28 6f 72 69 67 69 6e 61 6c 5f 63 75 72 29 3b 20  (original_cur); 
c040: 0d 0a 09 09 09 7d 0d 0a 09 09 09 3a 3a 43 6c 6f  .....}.....::Clo
c050: 73 65 48 61 6e 64 6c 65 28 70 69 2e 68 50 72 6f  seHandle(pi.hPro
c060: 63 65 73 73 29 3b 0d 0a 09 09 09 3a 3a 43 6c 6f  cess);.....::Clo
c070: 73 65 48 61 6e 64 6c 65 28 70 69 2e 68 54 68 72  seHandle(pi.hThr
c080: 65 61 64 29 3b 0d 0a 2f 2f 20 91 7d 93 fc 82 b1  ead);..// .}....
c090: 82 b1 82 dc 82 c5 63 61 6c 64 69 78 46 0d 0a 09  ......caldixF...
c0a0: 09 7d 0d 0a 0d 0a 09 09 69 66 28 20 6e 65 65 64  .}......if( need
c0b0: 72 65 62 6f 6f 74 20 29 0d 0a 09 09 09 72 65 62  reboot ).....reb
c0c0: 6f 6f 74 57 69 6e 64 6f 77 73 28 29 3b 20 2f 2f  ootWindows(); //
c0d0: 20 8d c4 8b 4e 93 ae 82 c5 81 5b 82 b7 0d 0a 09   ...N.....[.....
c0e0: 7d 0d 0a 0d 0a 09 76 6f 69 64 20 61 73 6b 52 61  }.....void askRa
c0f0: 73 48 61 6e 67 55 70 28 29 0d 0a 09 7b 0d 0a 09  sHangUp()...{...
c100: 09 2f 2f 20 90 75 82 a9 82 c8 82 a2 83 82 81 5b  .// .u.........[
c110: 83 68 0d 0a 09 09 69 66 28 20 63 66 67 2d 3e 47  .h....if( cfg->G
c120: 65 6f 72 67 65 20 29 0d 0a 09 09 09 72 65 74 75  eorge ).....retu
c130: 72 6e 3b 0d 0a 0d 0a 09 09 2f 2f 20 44 4c 4c 2c  rn;......// DLL,
c140: 8b 79 82 d1 95 4b 97 76 82 c8 8a d6 90 94 82 f0  .y...K.v........
c150: 83 8d 81 5b 83 68 0d 0a 09 09 48 49 4e 53 54 41  ...[.h....HINSTA
c160: 4e 43 45 20 72 61 73 64 6c 6c 20 3d 20 6b 69 75  NCE rasdll = kiu
c170: 74 69 6c 3a 3a 73 61 66 65 70 61 74 68 4c 6f 61  til::safepathLoa
c180: 64 4c 69 62 72 61 72 79 28 20 22 52 41 53 41 50  dLibrary( "RASAP
c190: 49 33 32 2e 44 4c 4c 22 20 29 3b 0d 0a 09 09 69  I32.DLL" );....i
c1a0: 66 28 20 72 61 73 64 6c 6c 20 3d 3d 20 4e 55 4c  f( rasdll == NUL
c1b0: 4c 20 29 0d 0a 09 09 09 72 65 74 75 72 6e 3b 0d  L ).....return;.
c1c0: 0a 09 09 74 79 70 65 64 65 66 20 44 57 4f 52 44  ...typedef DWORD
c1d0: 20 28 57 49 4e 41 50 49 20 2a 20 72 45 29 28 20   (WINAPI * rE)( 
c1e0: 4c 50 52 41 53 43 4f 4e 4e 2c 4c 50 44 57 4f 52  LPRASCONN,LPDWOR
c1f0: 44 2c 4c 50 44 57 4f 52 44 20 29 3b 0d 0a 09 09  D,LPDWORD );....
c200: 74 79 70 65 64 65 66 20 44 57 4f 52 44 20 28 57  typedef DWORD (W
c210: 49 4e 41 50 49 20 2a 20 72 48 29 28 20 48 52 41  INAPI * rH)( HRA
c220: 53 43 4f 4e 4e 20 29 3b 0d 0a 09 09 74 79 70 65  SCONN );....type
c230: 64 65 66 20 42 4f 4f 4c 20 20 28 57 49 4e 41 50  def BOOL  (WINAP
c240: 49 20 2a 20 72 53 29 28 20 48 52 41 53 43 4f 4e  I * rS)( HRASCON
c250: 4e 2c 4c 50 52 41 53 43 4f 4e 4e 53 54 41 54 55  N,LPRASCONNSTATU
c260: 53 20 29 3b 0d 0a 09 09 72 45 20 52 61 73 45 6e  S );....rE RasEn
c270: 75 6d 43 6f 6e 6e 65 63 74 69 6f 6e 73 20 3d 20  umConnections = 
c280: 28 72 45 29 3a 3a 47 65 74 50 72 6f 63 41 64 64  (rE)::GetProcAdd
c290: 72 65 73 73 28 20 72 61 73 64 6c 6c 2c 20 22 52  ress( rasdll, "R
c2a0: 61 73 45 6e 75 6d 43 6f 6e 6e 65 63 74 69 6f 6e  asEnumConnection
c2b0: 73 41 22 20 29 3b 0d 0a 09 09 72 48 20 52 61 73  sA" );....rH Ras
c2c0: 48 61 6e 67 55 70 20 20 20 20 20 20 20 20 20 20  HangUp          
c2d0: 3d 20 28 72 48 29 3a 3a 47 65 74 50 72 6f 63 41  = (rH)::GetProcA
c2e0: 64 64 72 65 73 73 28 20 72 61 73 64 6c 6c 2c 20  ddress( rasdll, 
c2f0: 22 52 61 73 48 61 6e 67 55 70 41 22 20 29 3b 0d  "RasHangUpA" );.
c300: 0a 09 09 72 53 20 52 61 73 47 65 74 43 6f 6e 6e  ...rS RasGetConn
c310: 65 63 74 53 74 61 74 75 73 3d 20 28 72 53 29 3a  ectStatus= (rS):
c320: 3a 47 65 74 50 72 6f 63 41 64 64 72 65 73 73 28  :GetProcAddress(
c330: 20 72 61 73 64 6c 6c 2c 20 22 52 61 73 47 65 74   rasdll, "RasGet
c340: 43 6f 6e 6e 65 63 74 53 74 61 74 75 73 41 22 20  ConnectStatusA" 
c350: 29 3b 0d 0a 09 09 69 66 28 20 52 61 73 45 6e 75  );....if( RasEnu
c360: 6d 43 6f 6e 6e 65 63 74 69 6f 6e 73 21 3d 4e 55  mConnections!=NU
c370: 4c 4c 20 26 26 20 52 61 73 48 61 6e 67 55 70 21  LL && RasHangUp!
c380: 3d 4e 55 4c 4c 20 26 26 20 52 61 73 47 65 74 43  =NULL && RasGetC
c390: 6f 6e 6e 65 63 74 53 74 61 74 75 73 21 3d 4e 55  onnectStatus!=NU
c3a0: 4c 4c 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 52 41  LL )....{.....RA
c3b0: 53 43 4f 4e 4e 2a 20 52 61 73 43 6f 6e 6e 20 3d  SCONN* RasConn =
c3c0: 20 6e 65 77 20 52 41 53 43 4f 4e 4e 5b 31 5d 3b   new RASCONN[1];
c3d0: 0d 0a 09 09 09 44 57 4f 52 44 20 4e 75 6d 2c 20  .....DWORD Num, 
c3e0: 53 69 7a 65 20 3d 20 73 69 7a 65 6f 66 28 52 41  Size = sizeof(RA
c3f0: 53 43 4f 4e 4e 29 3b 0d 0a 09 09 09 52 61 73 43  SCONN);.....RasC
c400: 6f 6e 6e 2d 3e 64 77 53 69 7a 65 20 3d 20 73 69  onn->dwSize = si
c410: 7a 65 6f 66 28 52 41 53 43 4f 4e 4e 29 3b 0d 0a  zeof(RASCONN);..
c420: 09 09 09 69 6e 74 20 53 74 73 20 3d 20 52 61 73  ...int Sts = Ras
c430: 45 6e 75 6d 43 6f 6e 6e 65 63 74 69 6f 6e 73 28  EnumConnections(
c440: 20 52 61 73 43 6f 6e 6e 2c 20 26 53 69 7a 65 2c   RasConn, &Size,
c450: 20 26 4e 75 6d 20 29 3b 0d 0a 09 09 09 69 66 28   &Num );.....if(
c460: 20 28 53 74 73 3d 3d 45 52 52 4f 52 5f 42 55 46   (Sts==ERROR_BUF
c470: 46 45 52 5f 54 4f 4f 5f 53 4d 41 4c 4c 29 20 7c  FER_TOO_SMALL) |
c480: 7c 20 28 53 74 73 3d 3d 45 52 52 4f 52 5f 4e 4f  | (Sts==ERROR_NO
c490: 54 5f 45 4e 4f 55 47 48 5f 4d 45 4d 4f 52 59 29  T_ENOUGH_MEMORY)
c4a0: 20 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 64 65   ).....{......de
c4b0: 6c 65 74 65 20 5b 5d 20 52 61 73 43 6f 6e 6e 3b  lete [] RasConn;
c4c0: 0d 0a 09 09 09 09 52 61 73 43 6f 6e 6e 20 3d 20  ......RasConn = 
c4d0: 6e 65 77 20 52 41 53 43 4f 4e 4e 5b 53 69 7a 65  new RASCONN[Size
c4e0: 2f 73 69 7a 65 6f 66 28 52 41 53 43 4f 4e 4e 29  /sizeof(RASCONN)
c4f0: 5d 3b 0d 0a 09 09 09 09 53 74 73 20 3d 20 52 61  ];......Sts = Ra
c500: 73 45 6e 75 6d 43 6f 6e 6e 65 63 74 69 6f 6e 73  sEnumConnections
c510: 28 20 52 61 73 43 6f 6e 6e 2c 20 26 53 69 7a 65  ( RasConn, &Size
c520: 2c 20 26 4e 75 6d 20 29 3b 0d 0a 09 09 09 7d 0d  , &Num );.....}.
c530: 0a 09 09 09 69 66 28 20 53 74 73 3d 3d 30 20 26  ....if( Sts==0 &
c540: 26 20 4e 75 6d 3e 3d 31 20 29 0d 0a 09 09 09 7b  & Num>=1 ).....{
c550: 0d 0a 09 09 09 09 2f 2f 20 90 75 82 ad 81 42 0d  ......// .u...B.
c560: 0a 09 09 09 09 69 66 28 20 49 44 59 45 53 3d 3d  .....if( IDYES==
c570: 6d 73 67 42 6f 78 28 20 6b 69 53 74 72 28 31 30  msgBox( kiStr(10
c580: 30 30 29 2e 6c 6f 61 64 52 73 72 63 28 20 49 44  00).loadRsrc( ID
c590: 53 5f 52 41 53 48 41 4e 47 55 50 20 29 2c 20 22  S_RASHANGUP ), "
c5a0: 63 61 6c 64 69 78 22 2c 20 4d 42 5f 49 43 4f 4e  caldix", MB_ICON
c5b0: 49 4e 46 4f 52 4d 41 54 49 4f 4e 7c 4d 42 5f 59  INFORMATION|MB_Y
c5c0: 45 53 4e 4f 7c 4d 42 5f 53 59 53 54 45 4d 4d 4f  ESNO|MB_SYSTEMMO
c5d0: 44 41 4c 20 29 20 29 0d 0a 09 09 09 09 7b 0d 0a  DAL ) )......{..
c5e0: 09 09 09 09 09 2f 2f 20 90 d8 82 e9 0d 0a 09 09  .....// ........
c5f0: 09 09 09 52 41 53 43 4f 4e 4e 53 54 41 54 55 53  ...RASCONNSTATUS
c600: 20 52 61 73 53 74 73 3b 0d 0a 09 09 09 09 09 52   RasSts;.......R
c610: 61 73 53 74 73 2e 64 77 53 69 7a 65 20 3d 20 73  asSts.dwSize = s
c620: 69 7a 65 6f 66 28 52 41 53 43 4f 4e 4e 53 54 41  izeof(RASCONNSTA
c630: 54 55 53 29 3b 0d 0a 09 09 09 09 09 66 6f 72 28  TUS);.......for(
c640: 20 44 57 4f 52 44 20 69 3d 30 3b 20 69 3c 4e 75   DWORD i=0; i<Nu
c650: 6d 3b 20 69 2b 2b 20 29 0d 0a 09 09 09 09 09 7b  m; i++ ).......{
c660: 0d 0a 09 09 09 09 09 09 52 61 73 48 61 6e 67 55  ........RasHangU
c670: 70 28 20 52 61 73 43 6f 6e 6e 2d 3e 68 72 61 73  p( RasConn->hras
c680: 63 6f 6e 6e 20 29 3b 0d 0a 09 09 09 09 09 09 77  conn );........w
c690: 68 69 6c 65 28 20 52 61 73 47 65 74 43 6f 6e 6e  hile( RasGetConn
c6a0: 65 63 74 53 74 61 74 75 73 28 20 52 61 73 43 6f  ectStatus( RasCo
c6b0: 6e 6e 2d 3e 68 72 61 73 63 6f 6e 6e 2c 20 26 52  nn->hrasconn, &R
c6c0: 61 73 53 74 73 20 29 20 21 3d 20 45 52 52 4f 52  asSts ) != ERROR
c6d0: 5f 49 4e 56 41 4c 49 44 5f 48 41 4e 44 4c 45 20  _INVALID_HANDLE 
c6e0: 29 0d 0a 09 09 09 09 09 09 09 3a 3a 53 6c 65 65  ).........::Slee
c6f0: 70 28 20 31 30 20 29 3b 0d 0a 09 09 09 09 09 7d  p( 10 );.......}
c700: 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 7d 0d 0a 09  ......}.....}...
c710: 09 09 64 65 6c 65 74 65 20 5b 5d 20 52 61 73 43  ..delete [] RasC
c720: 6f 6e 6e 3b 0d 0a 09 09 7d 0d 0a 09 09 3a 3a 46  onn;....}....::F
c730: 72 65 65 4c 69 62 72 61 72 79 28 20 72 61 73 64  reeLibrary( rasd
c740: 6c 6c 20 29 3b 0d 0a 09 7d 0d 0a 0d 0a 09 7e 63  ll );...}.....~c
c750: 61 6c 64 69 78 28 29 0d 0a 09 7b 0d 0a 09 09 64  aldix()...{....d
c760: 65 6c 65 74 65 20 63 66 67 3b 0d 0a 09 7d 0d 0a  elete cfg;...}..
c770: 0d 0a 09 66 72 69 65 6e 64 20 76 6f 69 64 20 6b  ...friend void k
c780: 69 6c 69 62 5f 63 72 65 61 74 65 5f 6e 65 77 5f  ilib_create_new_
c790: 61 70 70 28 29 3b 0d 0a 7d 3b 0d 0a 0d 0a 76 6f  app();..};....vo
c7a0: 69 64 20 6b 69 6c 69 62 5f 63 72 65 61 74 65 5f  id kilib_create_
c7b0: 6e 65 77 5f 61 70 70 28 29 0d 0a 7b 0d 0a 09 6e  new_app()..{...n
c7c0: 65 77 20 63 61 6c 64 69 78 3b 0d 0a 7d 0d 0a     ew caldix;..}..