Artifact eeea8ebd808979ec2caa7dce299adb97aae75e4f:
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 41 72 63 41 63 65 2e 68 22 0d 0a 23 69 6e 63 "ArcAce.h"..#inc
0030: 6c 75 64 65 20 22 4e 6f 61 68 41 70 70 2e 68 22 lude "NoahApp.h"
0040: 0d 0a 0d 0a 0d 0a 69 6e 74 20 43 41 72 63 41 63 ......int CArcAc
0050: 65 3a 3a 76 5f 6c 6f 61 64 28 29 0d 0a 7b 0d 0a e::v_load()..{..
0060: 09 69 66 28 20 68 44 4c 4c 20 3d 20 6b 69 53 55 .if( hDLL = kiSU
0070: 74 69 6c 3a 3a 6c 6f 61 64 4c 69 62 72 61 72 79 til::loadLibrary
0080: 28 22 55 6e 41 63 65 56 32 22 29 20 29 0d 0a 09 ("UnAceV2") )...
0090: 7b 0d 0a 09 09 69 66 28 20 28 61 63 65 49 6e 69 {....if( (aceIni
00a0: 74 20 3d 20 28 46 49 29 3a 3a 47 65 74 50 72 6f t = (FI)::GetPro
00b0: 63 41 64 64 72 65 73 73 28 20 68 44 4c 4c 2c 22 cAddress( hDLL,"
00c0: 41 43 45 49 6e 69 74 44 6c 6c 22 20 29 29 0d 0a ACEInitDll" ))..
00d0: 09 09 20 26 26 20 28 61 63 65 48 65 61 64 20 3d .. && (aceHead =
00e0: 20 28 46 52 29 3a 3a 47 65 74 50 72 6f 63 41 64 (FR)::GetProcAd
00f0: 64 72 65 73 73 28 20 68 44 4c 4c 2c 22 41 43 45 dress( hDLL,"ACE
0100: 52 65 61 64 41 72 63 68 69 76 65 44 61 74 61 22 ReadArchiveData"
0110: 20 29 29 0d 0a 09 09 20 26 26 20 28 61 63 65 4c )).... && (aceL
0120: 69 73 74 20 3d 20 28 46 4c 29 3a 3a 47 65 74 50 ist = (FL)::GetP
0130: 72 6f 63 41 64 64 72 65 73 73 28 20 68 44 4c 4c rocAddress( hDLL
0140: 2c 22 41 43 45 4c 69 73 74 22 20 29 29 0d 0a 09 ,"ACEList" ))...
0150: 09 20 26 26 20 28 61 63 65 54 65 73 74 20 3d 20 . && (aceTest =
0160: 28 46 54 29 3a 3a 47 65 74 50 72 6f 63 41 64 64 (FT)::GetProcAdd
0170: 72 65 73 73 28 20 68 44 4c 4c 2c 22 41 43 45 54 ress( hDLL,"ACET
0180: 65 73 74 22 20 29 29 0d 0a 09 09 20 26 26 20 28 est" )).... && (
0190: 61 63 65 45 78 74 72 20 3d 20 28 46 45 29 3a 3a aceExtr = (FE)::
01a0: 47 65 74 50 72 6f 63 41 64 64 72 65 73 73 28 20 GetProcAddress(
01b0: 68 44 4c 4c 2c 22 41 43 45 45 78 74 72 61 63 74 hDLL,"ACEExtract
01c0: 22 20 29 29 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 " )) )....{.....
01d0: 74 41 43 45 49 6e 69 74 44 6c 6c 53 74 72 75 63 tACEInitDllStruc
01e0: 20 69 6e 69 3b 0d 0a 09 09 09 6b 69 5f 6d 65 6d ini;.....ki_mem
01f0: 7a 65 72 6f 28 20 26 69 6e 69 2c 20 73 69 7a 65 zero( &ini, size
0200: 6f 66 28 69 6e 69 29 20 29 3b 0d 0a 0d 0a 09 09 of(ini) );......
0210: 09 69 6e 69 2e 47 6c 6f 62 61 6c 44 61 74 61 2e .ini.GlobalData.
0220: 4f 62 6a 20 20 20 20 20 20 20 20 20 20 20 20 20 Obj
0230: 20 20 20 20 3d 20 74 68 69 73 3b 0d 0a 09 09 09 = this;.....
0240: 69 6e 69 2e 47 6c 6f 62 61 6c 44 61 74 61 2e 4d ini.GlobalData.M
0250: 61 78 41 72 63 68 69 76 65 54 65 73 74 42 79 74 axArchiveTestByt
0260: 65 73 20 3d 20 30 78 32 66 66 46 46 3b 0d 0a 09 es = 0x2ffFF;...
0270: 09 09 69 6e 69 2e 47 6c 6f 62 61 6c 44 61 74 61 ..ini.GlobalData
0280: 2e 4d 61 78 46 69 6c 65 42 75 66 53 69 7a 65 20 .MaxFileBufSize
0290: 20 20 20 20 20 3d 20 30 78 32 66 66 46 46 3b 0d = 0x2ffFF;.
02a0: 0a 09 09 09 69 6e 69 2e 47 6c 6f 62 61 6c 44 61 ....ini.GlobalDa
02b0: 74 61 2e 49 6e 66 6f 43 61 6c 6c 62 61 63 6b 50 ta.InfoCallbackP
02c0: 72 6f 63 20 20 20 20 3d 20 63 61 6c 6c 62 61 63 roc = callbac
02d0: 6b 5f 69 6e 66 6f 3b 0d 0a 09 09 09 69 6e 69 2e k_info;.....ini.
02e0: 47 6c 6f 62 61 6c 44 61 74 61 2e 45 72 72 6f 72 GlobalData.Error
02f0: 43 61 6c 6c 62 61 63 6b 50 72 6f 63 20 20 20 3d CallbackProc =
0300: 20 63 61 6c 6c 62 61 63 6b 5f 65 72 72 6f 72 3b callback_error;
0310: 0d 0a 09 09 09 69 6e 69 2e 47 6c 6f 62 61 6c 44 .....ini.GlobalD
0320: 61 74 61 2e 52 65 71 75 65 73 74 43 61 6c 6c 62 ata.RequestCallb
0330: 61 63 6b 50 72 6f 63 20 3d 20 63 61 6c 6c 62 61 ackProc = callba
0340: 63 6b 5f 72 65 71 75 65 73 74 3b 0d 0a 09 09 09 ck_request;.....
0350: 69 6e 69 2e 47 6c 6f 62 61 6c 44 61 74 61 2e 53 ini.GlobalData.S
0360: 74 61 74 65 43 61 6c 6c 62 61 63 6b 50 72 6f 63 tateCallbackProc
0370: 20 20 20 3d 20 63 61 6c 6c 62 61 63 6b 5f 73 74 = callback_st
0380: 61 74 65 3b 0d 0a 09 09 09 69 6e 69 2e 47 6c 6f ate;.....ini.Glo
0390: 62 61 6c 44 61 74 61 2e 44 65 63 72 79 70 74 50 balData.DecryptP
03a0: 61 73 73 77 6f 72 64 20 20 20 20 20 3d 20 70 77 assword = pw
03b0: 64 42 75 66 3b 0d 0a 0d 0a 09 09 09 69 66 28 20 dBuf;.......if(
03c0: 30 20 3d 3d 20 61 63 65 49 6e 69 74 28 20 26 69 0 == aceInit( &i
03d0: 6e 69 20 29 20 29 0d 0a 09 09 09 09 72 65 74 75 ni ) )......retu
03e0: 72 6e 20 61 43 68 65 63 6b 7c 61 4d 65 6c 74 7c rn aCheck|aMelt|
03f0: 61 4c 69 73 74 7c 61 4d 65 6c 74 45 61 63 68 3b aList|aMeltEach;
0400: 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 3a 3a 46 72 65 ....}......::Fre
0410: 65 4c 69 62 72 61 72 79 28 20 68 44 4c 4c 20 29 eLibrary( hDLL )
0420: 3b 0d 0a 09 09 68 44 4c 4c 20 3d 20 4e 55 4c 4c ;....hDLL = NULL
0430: 3b 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 6e 20 30 ;...}...return 0
0440: 3b 0d 0a 7d 0d 0a 0d 0a 62 6f 6f 6c 20 43 41 72 ;..}....bool CAr
0450: 63 41 63 65 3a 3a 76 5f 76 65 72 28 20 6b 69 53 cAce::v_ver( kiS
0460: 74 72 26 20 73 74 72 20 29 0d 0a 7b 0d 0a 09 73 tr& str )..{...s
0470: 74 72 20 3d 20 22 55 6e 41 63 65 56 32 2e 64 6c tr = "UnAceV2.dl
0480: 6c 20 20 22 3b 0d 0a 0d 0a 09 2f 2f 2d 2d 20 91 l ";.....//-- .
0490: b6 8d dd 8a 6d 94 46 0d 0a 09 63 68 61 72 20 62 ....m.F...char b
04a0: 75 66 5b 34 30 5d 3b 0d 0a 09 69 66 28 20 68 44 uf[40];...if( hD
04b0: 4c 4c 20 29 0d 0a 09 09 69 66 28 20 47 65 74 56 LL )....if( GetV
04c0: 65 72 73 69 6f 6e 49 6e 66 6f 53 74 72 28 20 22 ersionInfoStr( "
04d0: 55 6e 41 63 65 56 32 22 2c 20 62 75 66 2c 20 73 UnAceV2", buf, s
04e0: 69 7a 65 6f 66 28 62 75 66 29 20 29 20 29 0d 0a izeof(buf) ) )..
04f0: 09 09 09 73 74 72 20 2b 3d 20 62 75 66 3b 0d 0a ...str += buf;..
0500: 09 09 65 6c 73 65 0d 0a 09 09 09 73 74 72 20 2b ..else.....str +
0510: 3d 20 22 4f 4b 21 22 3b 0d 0a 09 65 6c 73 65 0d = "OK!";...else.
0520: 0a 09 09 73 74 72 20 2b 3d 20 22 2d 2d 2d 2d 22 ...str += "----"
0530: 3b 0d 0a 0d 0a 09 72 65 74 75 72 6e 20 74 72 75 ;.....return tru
0540: 65 3b 0d 0a 7d 0d 0a 0d 0a 62 6f 6f 6c 20 43 41 e;..}....bool CA
0550: 72 63 41 63 65 3a 3a 76 5f 63 68 65 63 6b 28 20 rcAce::v_check(
0560: 63 6f 6e 73 74 20 6b 69 50 61 74 68 26 20 61 6e const kiPath& an
0570: 61 6d 65 20 29 0d 0a 7b 0d 0a 09 2f 2f 2d 2d 20 ame )..{...//--
0580: 8f 91 8c c9 8f ee 95 f1 82 f0 93 c7 82 dd 8d 9e ................
0590: 82 f1 82 c5 82 dd 82 e9 0d 0a 09 74 41 43 45 52 ...........tACER
05a0: 65 61 64 41 72 63 68 69 76 65 44 61 74 61 53 74 eadArchiveDataSt
05b0: 72 75 63 20 64 74 3b 0d 0a 09 6b 69 5f 6d 65 6d ruc dt;...ki_mem
05c0: 7a 65 72 6f 28 20 26 64 74 2c 20 73 69 7a 65 6f zero( &dt, sizeo
05d0: 66 28 64 74 29 20 29 3b 0d 0a 09 72 65 74 75 72 f(dt) );...retur
05e0: 6e 20 28 20 20 30 3d 3d 61 63 65 48 65 61 64 28 n ( 0==aceHead(
05f0: 20 63 6f 6e 73 74 5f 63 61 73 74 3c 63 68 61 72 const_cast<char
0600: 2a 3e 28 28 63 6f 6e 73 74 20 63 68 61 72 2a 29 *>((const char*)
0610: 61 6e 61 6d 65 29 2c 20 26 64 74 20 29 0d 0a 09 aname), &dt )...
0620: 09 26 26 20 4e 55 4c 4c 21 3d 64 74 2e 41 72 63 .&& NULL!=dt.Arc
0630: 68 69 76 65 44 61 74 61 20 29 3b 0d 0a 7d 0d 0a hiveData );..}..
0640: 0d 0a 62 6f 6f 6c 20 43 41 72 63 41 63 65 3a 3a ..bool CArcAce::
0650: 76 5f 6c 69 73 74 28 20 63 6f 6e 73 74 20 61 72 v_list( const ar
0660: 63 6e 61 6d 65 26 20 61 6e 61 6d 65 2c 20 61 66 cname& aname, af
0670: 6c 41 72 72 61 79 26 20 66 69 6c 65 73 20 29 0d lArray& files ).
0680: 0a 7b 0d 0a 09 6c 69 73 74 20 3d 20 26 66 69 6c .{...list = &fil
0690: 65 73 3b 0d 0a 0d 0a 09 2f 2f 2d 2d 20 83 8a 83 es;.....//-- ...
06a0: 58 83 65 83 42 83 93 83 4f 8a 4a 8e 6e 81 49 0d X.e.B...O.J.n.I.
06b0: 0a 09 74 41 43 45 4c 69 73 74 53 74 72 75 63 20 ..tACEListStruc
06c0: 6c 73 74 3b 0d 0a 09 6b 69 5f 6d 65 6d 7a 65 72 lst;...ki_memzer
06d0: 6f 28 20 26 6c 73 74 2c 20 73 69 7a 65 6f 66 28 o( &lst, sizeof(
06e0: 6c 73 74 29 20 29 3b 0d 0a 09 6c 73 74 2e 46 69 lst) );...lst.Fi
06f0: 6c 65 73 2e 53 6f 75 72 63 65 44 69 72 20 20 20 les.SourceDir
0700: 3d 20 22 22 3b 0d 0a 09 6c 73 74 2e 46 69 6c 65 = "";...lst.File
0710: 73 2e 46 69 6c 65 4c 69 73 74 20 20 20 20 3d 20 s.FileList =
0720: 22 2a 22 3b 0d 0a 09 6c 73 74 2e 46 69 6c 65 73 "*";...lst.Files
0730: 2e 45 78 63 6c 75 64 65 4c 69 73 74 20 3d 20 22 .ExcludeList = "
0740: 22 3b 0d 0a 09 6c 73 74 2e 46 69 6c 65 73 2e 46 ";...lst.Files.F
0750: 75 6c 6c 4d 61 74 63 68 20 20 20 3d 20 46 41 4c ullMatch = FAL
0760: 53 45 3b 0d 0a 0d 0a 09 63 68 61 72 20 61 6e 6d SE;.....char anm
0770: 5b 4d 41 58 5f 50 41 54 48 5d 3b 0d 0a 09 6b 69 [MAX_PATH];...ki
0780: 5f 73 74 72 63 70 79 28 20 61 6e 6d 2c 20 61 6e _strcpy( anm, an
0790: 61 6d 65 2e 62 61 73 65 64 69 72 20 29 3b 0d 0a ame.basedir );..
07a0: 09 6b 69 5f 73 74 72 63 61 74 28 20 61 6e 6d 2c .ki_strcat( anm,
07b0: 20 61 6e 61 6d 65 2e 6c 6e 61 6d 65 20 29 3b 0d aname.lname );.
07c0: 0a 0d 0a 09 72 65 74 75 72 6e 20 28 20 30 3d 3d ....return ( 0==
07d0: 61 63 65 4c 69 73 74 28 20 61 6e 6d 2c 20 26 6c aceList( anm, &l
07e0: 73 74 20 29 20 29 3b 0d 0a 7d 0d 0a 0d 0a 69 6e st ) );..}....in
07f0: 74 20 43 41 72 63 41 63 65 3a 3a 76 5f 63 6f 6e t CArcAce::v_con
0800: 74 65 6e 74 73 28 20 63 6f 6e 73 74 20 6b 69 50 tents( const kiP
0810: 61 74 68 26 20 61 6e 61 6d 65 2c 20 6b 69 50 61 ath& aname, kiPa
0820: 74 68 26 20 64 6e 61 6d 65 20 29 0d 0a 7b 0d 0a th& dname )..{..
0830: 09 6c 69 73 74 20 3d 20 4e 55 4c 4c 3b 0d 0a 09 .list = NULL;...
0840: 61 43 6e 74 20 3d 20 61 55 6e 6b 6e 6f 77 6e 3b aCnt = aUnknown;
0850: 0d 0a 09 64 4e 61 6d 65 20 3d 20 26 64 6e 61 6d ...dName = &dnam
0860: 65 3b 0d 0a 0d 0a 09 2f 2f 2d 2d 20 83 8a 83 58 e;.....//-- ...X
0870: 83 65 83 42 83 93 83 4f 8a 4a 8e 6e 81 49 0d 0a .e.B...O.J.n.I..
0880: 09 74 41 43 45 4c 69 73 74 53 74 72 75 63 20 6c .tACEListStruc l
0890: 73 74 3b 0d 0a 09 6b 69 5f 6d 65 6d 7a 65 72 6f st;...ki_memzero
08a0: 28 20 26 6c 73 74 2c 20 73 69 7a 65 6f 66 28 6c ( &lst, sizeof(l
08b0: 73 74 29 20 29 3b 0d 0a 09 6c 73 74 2e 46 69 6c st) );...lst.Fil
08c0: 65 73 2e 53 6f 75 72 63 65 44 69 72 20 20 20 3d es.SourceDir =
08d0: 20 22 22 3b 0d 0a 09 6c 73 74 2e 46 69 6c 65 73 "";...lst.Files
08e0: 2e 46 69 6c 65 4c 69 73 74 20 20 20 20 3d 20 22 .FileList = "
08f0: 2a 22 3b 0d 0a 09 6c 73 74 2e 46 69 6c 65 73 2e *";...lst.Files.
0900: 45 78 63 6c 75 64 65 4c 69 73 74 20 3d 20 22 22 ExcludeList = ""
0910: 3b 0d 0a 09 6c 73 74 2e 46 69 6c 65 73 2e 46 75 ;...lst.Files.Fu
0920: 6c 6c 4d 61 74 63 68 20 20 20 3d 20 54 52 55 45 llMatch = TRUE
0930: 3b 0d 0a 09 69 66 28 20 30 21 3d 61 63 65 4c 69 ;...if( 0!=aceLi
0940: 73 74 28 20 63 6f 6e 73 74 5f 63 61 73 74 3c 63 st( const_cast<c
0950: 68 61 72 2a 3e 28 28 63 6f 6e 73 74 20 63 68 61 har*>((const cha
0960: 72 2a 29 61 6e 61 6d 65 29 2c 20 26 6c 73 74 20 r*)aname), &lst
0970: 29 20 29 0d 0a 09 09 72 65 74 75 72 6e 20 61 4d ) )....return aM
0980: 75 6c 74 69 3b 0d 0a 09 72 65 74 75 72 6e 20 61 ulti;...return a
0990: 43 6e 74 3b 0d 0a 7d 0d 0a 0d 0a 69 6e 74 20 43 Cnt;..}....int C
09a0: 41 72 63 41 63 65 3a 3a 76 5f 6d 65 6c 74 28 20 ArcAce::v_melt(
09b0: 63 6f 6e 73 74 20 61 72 63 6e 61 6d 65 26 20 61 const arcname& a
09c0: 6e 61 6d 65 2c 20 63 6f 6e 73 74 20 6b 69 50 61 name, const kiPa
09d0: 74 68 26 20 64 64 69 72 2c 20 63 6f 6e 73 74 20 th& ddir, const
09e0: 61 66 6c 41 72 72 61 79 2a 20 66 69 6c 65 73 20 aflArray* files
09f0: 29 0d 0a 7b 0d 0a 09 70 61 74 68 43 68 65 63 6b )..{...pathCheck
0a00: 20 3d 20 6e 65 77 20 43 41 72 63 50 61 74 68 43 = new CArcPathC
0a10: 68 65 63 6b 44 6c 67 3b 0d 0a 0d 0a 09 2f 2f 2d heckDlg;.....//-
0a20: 2d 20 93 6e 82 b7 83 74 83 40 83 43 83 8b 83 8a - .n...t.@.C....
0a30: 83 58 83 67 8d ec 90 ac 0d 0a 09 6b 69 53 74 72 .X.g.......kiStr
0a40: 20 6c 73 74 3b 0d 0a 09 69 66 28 20 66 69 6c 65 lst;...if( file
0a50: 73 20 29 0d 0a 09 7b 0d 0a 09 09 64 6c 67 20 3d s )...{....dlg =
0a60: 20 4e 55 4c 4c 3b 0d 0a 09 09 66 6f 72 28 20 75 NULL;....for( u
0a70: 6e 73 69 67 6e 65 64 20 69 6e 74 20 69 3d 30 3b nsigned int i=0;
0a80: 20 69 21 3d 6c 69 73 74 2d 3e 6c 65 6e 28 29 3b i!=list->len();
0a90: 20 69 2b 2b 20 29 0d 0a 09 09 09 69 66 28 20 28 i++ ).....if( (
0aa0: 2a 66 69 6c 65 73 29 5b 69 5d 2e 73 65 6c 65 63 *files)[i].selec
0ab0: 74 65 64 20 29 0d 0a 09 09 09 09 6c 73 74 20 2b ted )......lst +
0ac0: 3d 20 28 2a 66 69 6c 65 73 29 5b 69 5d 2e 69 6e = (*files)[i].in
0ad0: 66 2e 73 7a 46 69 6c 65 4e 61 6d 65 2c 20 6c 73 f.szFileName, ls
0ae0: 74 20 2b 3d 20 27 5c 78 64 27 3b 0d 0a 09 7d 0d t += '\xd';...}.
0af0: 0a 09 65 6c 73 65 0d 0a 09 09 6c 73 74 20 3d 20 ..else....lst =
0b00: 22 2a 22 2c 20 64 6c 67 20 3d 20 6e 65 77 20 43 "*", dlg = new C
0b10: 41 72 63 50 72 6f 67 72 65 73 73 44 6c 67 28 20 ArcProgressDlg(
0b20: 33 32 37 36 38 20 29 3b 0d 0a 0d 0a 09 2f 2f 2d 32768 );.....//-
0b30: 2d 20 93 57 8a 4a 8a 4a 8e 6e 81 49 0d 0a 09 3a - .W.J.J.n.I...:
0b40: 3a 53 65 74 43 75 72 72 65 6e 74 44 69 72 65 63 :SetCurrentDirec
0b50: 74 6f 72 79 28 20 64 64 69 72 20 29 3b 0d 0a 0d tory( ddir );...
0b60: 0a 09 6d 5f 61 6e 61 6d 65 20 3d 20 61 6e 61 6d ..m_aname = anam
0b70: 65 2e 6c 6e 61 6d 65 3b 0d 0a 09 70 77 64 42 75 e.lname;...pwdBu
0b80: 66 5b 30 5d 20 3d 20 2d 31 3b 0d 0a 0d 0a 09 74 f[0] = -1;.....t
0b90: 41 43 45 45 78 74 72 61 63 74 53 74 72 75 63 20 ACEExtractStruc
0ba0: 65 78 3b 0d 0a 09 6b 69 5f 6d 65 6d 7a 65 72 6f ex;...ki_memzero
0bb0: 28 20 26 65 78 2c 20 73 69 7a 65 6f 66 28 65 78 ( &ex, sizeof(ex
0bc0: 29 20 29 3b 0d 0a 09 65 78 2e 46 69 6c 65 73 2e ) );...ex.Files.
0bd0: 53 6f 75 72 63 65 44 69 72 20 20 20 3d 20 22 22 SourceDir = ""
0be0: 3b 0d 0a 09 65 78 2e 46 69 6c 65 73 2e 46 69 6c ;...ex.Files.Fil
0bf0: 65 4c 69 73 74 20 20 20 20 3d 20 63 6f 6e 73 74 eList = const
0c00: 5f 63 61 73 74 3c 63 68 61 72 2a 3e 28 28 63 6f _cast<char*>((co
0c10: 6e 73 74 20 63 68 61 72 2a 29 6c 73 74 29 3b 0d nst char*)lst);.
0c20: 0a 09 65 78 2e 46 69 6c 65 73 2e 45 78 63 6c 75 ..ex.Files.Exclu
0c30: 64 65 4c 69 73 74 20 3d 20 22 22 3b 0d 0a 09 65 deList = "";...e
0c40: 78 2e 46 69 6c 65 73 2e 46 75 6c 6c 4d 61 74 63 x.Files.FullMatc
0c50: 68 20 20 20 3d 20 66 69 6c 65 73 3d 3d 4e 55 4c h = files==NUL
0c60: 4c 3b 0d 0a 09 65 78 2e 44 65 73 74 69 6e 61 74 L;...ex.Destinat
0c70: 69 6f 6e 44 69 72 20 20 20 20 3d 20 63 6f 6e 73 ionDir = cons
0c80: 74 5f 63 61 73 74 3c 63 68 61 72 2a 3e 28 28 63 t_cast<char*>((c
0c90: 6f 6e 73 74 20 63 68 61 72 2a 29 64 64 69 72 29 onst char*)ddir)
0ca0: 3b 0d 0a 09 65 78 2e 45 78 63 6c 75 64 65 50 61 ;...ex.ExcludePa
0cb0: 74 68 20 20 20 20 20 20 20 3d 20 46 41 4c 53 45 th = FALSE
0cc0: 3b 0d 0a 09 65 78 2e 44 65 63 72 79 70 74 50 61 ;...ex.DecryptPa
0cd0: 73 73 77 6f 72 64 20 20 20 3d 20 22 22 3b 0d 0a ssword = "";..
0ce0: 0d 0a 09 63 68 61 72 20 61 6e 6d 5b 4d 41 58 5f ...char anm[MAX_
0cf0: 50 41 54 48 5d 3b 0d 0a 09 6b 69 5f 73 74 72 63 PATH];...ki_strc
0d00: 70 79 28 20 61 6e 6d 2c 20 61 6e 61 6d 65 2e 62 py( anm, aname.b
0d10: 61 73 65 64 69 72 20 29 3b 0d 0a 09 6b 69 5f 73 asedir );...ki_s
0d20: 74 72 63 61 74 28 20 61 6e 6d 2c 20 61 6e 61 6d trcat( anm, anam
0d30: 65 2e 6c 6e 61 6d 65 20 29 3b 0d 0a 0d 0a 09 6d e.lname );.....m
0d40: 5f 62 43 61 6e 63 65 6c 65 64 20 3d 20 66 61 6c _bCanceled = fal
0d50: 73 65 3b 0d 0a 09 62 6f 6f 6c 20 61 6e 73 20 3d se;...bool ans =
0d60: 20 28 20 30 3d 3d 61 63 65 45 78 74 72 28 20 61 ( 0==aceExtr( a
0d70: 6e 6d 2c 20 26 65 78 20 29 20 29 3b 0d 0a 09 69 nm, &ex ) );...i
0d80: 66 28 20 64 6c 67 20 26 26 20 61 6e 73 20 29 0d f( dlg && ans ).
0d90: 0a 09 7b 0d 0a 09 09 64 6c 67 2d 3e 63 68 61 6e ..{....dlg->chan
0da0: 67 65 28 4e 55 4c 4c 2c 33 32 37 36 38 29 3b 0d ge(NULL,32768);.
0db0: 0a 09 09 3a 3a 53 6c 65 65 70 28 31 30 30 29 3b ...::Sleep(100);
0dc0: 0d 0a 09 7d 0d 0a 09 64 65 6c 65 74 65 20 64 6c ...}...delete dl
0dd0: 67 3b 0d 0a 09 64 65 6c 65 74 65 20 70 61 74 68 g;...delete path
0de0: 43 68 65 63 6b 3b 0d 0a 09 72 65 74 75 72 6e 20 Check;...return
0df0: 61 6e 73 20 3f 20 30 20 3a 20 28 6d 5f 62 43 61 ans ? 0 : (m_bCa
0e00: 6e 63 65 6c 65 64 3f 30 78 38 30 32 30 3a 30 78 nceled?0x8020:0x
0e10: 66 66 66 66 29 3b 0d 0a 7d 0d 0a 0d 0a 69 6e 74 ffff);..}....int
0e20: 20 5f 5f 73 74 64 63 61 6c 6c 20 43 41 72 63 41 __stdcall CArcA
0e30: 63 65 3a 3a 63 61 6c 6c 62 61 63 6b 5f 65 72 72 ce::callback_err
0e40: 6f 72 28 20 70 41 43 45 45 72 72 6f 72 43 61 6c or( pACEErrorCal
0e50: 6c 62 61 63 6b 50 72 6f 63 53 74 72 75 63 20 45 lbackProcStruc E
0e60: 72 72 6f 72 20 29 0d 0a 7b 0d 0a 09 72 65 74 75 rror )..{...retu
0e70: 72 6e 20 41 43 45 5f 43 41 4c 4c 42 41 43 4b 5f rn ACE_CALLBACK_
0e80: 52 45 54 55 52 4e 5f 4f 4b 3b 0d 0a 7d 0d 0a 0d RETURN_OK;..}...
0e90: 0a 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 43 .int __stdcall C
0ea0: 41 72 63 41 63 65 3a 3a 63 61 6c 6c 62 61 63 6b ArcAce::callback
0eb0: 5f 69 6e 66 6f 28 20 70 41 43 45 49 6e 66 6f 43 _info( pACEInfoC
0ec0: 61 6c 6c 62 61 63 6b 50 72 6f 63 53 74 72 75 63 allbackProcStruc
0ed0: 20 49 6e 66 6f 20 29 0d 0a 7b 0d 0a 09 72 65 74 Info )..{...ret
0ee0: 75 72 6e 20 41 43 45 5f 43 41 4c 4c 42 41 43 4b urn ACE_CALLBACK
0ef0: 5f 52 45 54 55 52 4e 5f 4f 4b 3b 0d 0a 7d 0d 0a _RETURN_OK;..}..
0f00: 0d 0a 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 ..int __stdcall
0f10: 43 41 72 63 41 63 65 3a 3a 63 61 6c 6c 62 61 63 CArcAce::callbac
0f20: 6b 5f 72 65 71 75 65 73 74 28 20 70 41 43 45 52 k_request( pACER
0f30: 65 71 75 65 73 74 43 61 6c 6c 62 61 63 6b 50 72 equestCallbackPr
0f40: 6f 63 53 74 72 75 63 20 52 65 71 75 65 73 74 20 ocStruc Request
0f50: 29 0d 0a 7b 0d 0a 09 2f 2f 20 83 70 83 58 83 8f )..{...// .p.X..
0f60: 81 5b 83 68 97 76 8b 81 81 97 89 f0 93 80 20 2e .[.h.v........ .
0f70: 2e 2e 20 41 72 63 68 69 76 65 64 46 69 6c 65 0d .. ArchivedFile.
0f80: 0a 09 69 66 28 20 52 65 71 75 65 73 74 2d 3e 47 ..if( Request->G
0f90: 6c 6f 62 61 6c 2e 43 6f 64 65 20 3d 3d 20 41 43 lobal.Code == AC
0fa0: 45 5f 43 41 4c 4c 42 41 43 4b 5f 52 45 51 55 45 E_CALLBACK_REQUE
0fb0: 53 54 5f 50 41 53 53 57 4f 52 44 0d 0a 09 20 26 ST_PASSWORD... &
0fc0: 26 20 52 65 71 75 65 73 74 2d 3e 47 6c 6f 62 61 & Request->Globa
0fd0: 6c 2e 4f 70 65 72 61 74 69 6f 6e 20 3d 3d 20 41 l.Operation == A
0fe0: 43 45 5f 43 41 4c 4c 42 41 43 4b 5f 4f 50 45 52 CE_CALLBACK_OPER
0ff0: 41 54 49 4f 4e 5f 45 58 54 52 41 43 54 20 29 0d ATION_EXTRACT ).
1000: 0a 09 7b 0d 0a 09 09 43 41 72 63 41 63 65 2a 20 ..{....CArcAce*
1010: 61 63 65 20 3d 20 28 43 41 72 63 41 63 65 2a 29 ace = (CArcAce*)
1020: 28 52 65 71 75 65 73 74 2d 3e 47 6c 6f 62 61 6c (Request->Global
1030: 2e 47 6c 6f 62 61 6c 44 61 74 61 2d 3e 4f 62 6a .GlobalData->Obj
1040: 29 3b 0d 0a 09 09 69 66 28 20 61 63 65 2d 3e 70 );....if( ace->p
1050: 77 64 42 75 66 5b 30 5d 20 3d 3d 20 2d 31 20 29 wdBuf[0] == -1 )
1060: 0d 0a 09 09 7b 0d 0a 09 09 09 61 63 65 2d 3e 70 ....{.....ace->p
1070: 77 64 42 75 66 5b 30 5d 3d 30 3b 0d 0a 0d 0a 09 wdBuf[0]=0;.....
1080: 09 09 43 41 72 63 50 77 64 44 6c 67 20 70 77 64 ..CArcPwdDlg pwd
1090: 28 20 61 63 65 2d 3e 64 6c 67 20 3f 20 61 63 65 ( ace->dlg ? ace
10a0: 2d 3e 64 6c 67 2d 3e 68 77 6e 64 28 29 20 3a 20 ->dlg->hwnd() :
10b0: 4e 55 4c 4c 2c 20 61 63 65 2d 3e 70 77 64 42 75 NULL, ace->pwdBu
10c0: 66 2c 20 36 30 2c 20 61 63 65 2d 3e 6d 5f 61 6e f, 60, ace->m_an
10d0: 61 6d 65 20 29 3b 0d 0a 09 09 09 69 66 28 20 49 ame );.....if( I
10e0: 44 43 41 4e 43 45 4c 20 3d 3d 20 70 77 64 2e 67 DCANCEL == pwd.g
10f0: 65 74 45 6e 64 43 6f 64 65 28 29 20 29 0d 0a 09 etEndCode() )...
1100: 09 09 7b 0d 0a 09 09 09 09 61 63 65 2d 3e 6d 5f ..{......ace->m_
1110: 62 43 61 6e 63 65 6c 65 64 20 3d 20 74 72 75 65 bCanceled = true
1120: 3b 0d 0a 09 09 09 09 72 65 74 75 72 6e 20 41 43 ;......return AC
1130: 45 5f 43 41 4c 4c 42 41 43 4b 5f 52 45 54 55 52 E_CALLBACK_RETUR
1140: 4e 5f 43 41 4e 43 45 4c 3b 0d 0a 09 09 09 7d 0d N_CANCEL;.....}.
1150: 0a 0d 0a 09 09 09 52 65 71 75 65 73 74 2d 3e 47 ......Request->G
1160: 6c 6f 62 61 6c 2e 47 6c 6f 62 61 6c 44 61 74 61 lobal.GlobalData
1170: 2d 3e 44 65 63 72 79 70 74 50 61 73 73 77 6f 72 ->DecryptPasswor
1180: 64 20 3d 20 61 63 65 2d 3e 70 77 64 42 75 66 3b d = ace->pwdBuf;
1190: 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 0d 0a 09 69 66 ....}...}.....if
11a0: 28 20 52 65 71 75 65 73 74 2d 3e 47 6c 6f 62 61 ( Request->Globa
11b0: 6c 2e 43 6f 64 65 20 3d 3d 20 41 43 45 5f 43 41 l.Code == ACE_CA
11c0: 4c 4c 42 41 43 4b 5f 52 45 51 55 45 53 54 5f 43 LLBACK_REQUEST_C
11d0: 48 41 4e 47 45 56 4f 4c 55 4d 45 20 29 0d 0a 09 HANGEVOLUME )...
11e0: 09 69 66 28 20 21 6b 69 53 55 74 69 6c 3a 3a 65 .if( !kiSUtil::e
11f0: 78 69 73 74 28 52 65 71 75 65 73 74 2d 3e 41 72 xist(Request->Ar
1200: 63 68 69 76 65 2e 41 72 63 68 69 76 65 44 61 74 chive.ArchiveDat
1210: 61 2d 3e 41 72 63 68 69 76 65 4e 61 6d 65 29 20 a->ArchiveName)
1220: 29 0d 0a 09 09 09 72 65 74 75 72 6e 20 41 43 45 ).....return ACE
1230: 5f 43 41 4c 4c 42 41 43 4b 5f 52 45 54 55 52 4e _CALLBACK_RETURN
1240: 5f 43 41 4e 43 45 4c 3b 0d 0a 0d 0a 09 72 65 74 _CANCEL;.....ret
1250: 75 72 6e 20 41 43 45 5f 43 41 4c 4c 42 41 43 4b urn ACE_CALLBACK
1260: 5f 52 45 54 55 52 4e 5f 4f 4b 3b 0d 0a 7d 0d 0a _RETURN_OK;..}..
1270: 0d 0a 69 6e 74 20 5f 5f 73 74 64 63 61 6c 6c 20 ..int __stdcall
1280: 43 41 72 63 41 63 65 3a 3a 63 61 6c 6c 62 61 63 CArcAce::callbac
1290: 6b 5f 73 74 61 74 65 28 20 70 41 43 45 53 74 61 k_state( pACESta
12a0: 74 65 43 61 6c 6c 62 61 63 6b 50 72 6f 63 53 74 teCallbackProcSt
12b0: 72 75 63 20 53 74 61 74 65 20 29 0d 0a 7b 0d 0a ruc State )..{..
12c0: 09 2f 2f 20 83 74 83 40 83 43 83 8b 8f 88 97 9d .// .t.@.C......
12d0: 8a 4a 8e 6e 81 97 89 f0 93 80 6f 72 83 8a 83 58 .J.n......or...X
12e0: 83 67 0d 0a 09 69 66 28 20 53 74 61 74 65 2d 3e .g...if( State->
12f0: 50 72 6f 67 72 65 73 73 2e 43 6f 64 65 20 3d 3d Progress.Code ==
1300: 20 41 43 45 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 ACE_CALLBACK_ST
1310: 41 54 45 5f 53 54 41 52 54 46 49 4c 45 20 29 0d ATE_STARTFILE ).
1320: 0a 09 7b 0d 0a 09 09 43 41 72 63 41 63 65 2a 20 ..{....CArcAce*
1330: 70 74 72 20 3d 20 28 43 41 72 63 41 63 65 2a 29 ptr = (CArcAce*)
1340: 28 53 74 61 74 65 2d 3e 41 72 63 68 69 76 65 64 (State->Archived
1350: 46 69 6c 65 2e 47 6c 6f 62 61 6c 44 61 74 61 2d File.GlobalData-
1360: 3e 4f 62 6a 29 3b 0d 0a 0d 0a 09 09 69 66 28 20 >Obj);......if(
1370: 53 74 61 74 65 2d 3e 50 72 6f 67 72 65 73 73 2e State->Progress.
1380: 4f 70 65 72 61 74 69 6f 6e 20 3d 3d 20 41 43 45 Operation == ACE
1390: 5f 43 41 4c 4c 42 41 43 4b 5f 4f 50 45 52 41 54 _CALLBACK_OPERAT
13a0: 49 4f 4e 5f 4c 49 53 54 20 29 0d 0a 09 09 7b 0d ION_LIST )....{.
13b0: 0a 09 09 09 69 66 28 20 21 70 74 72 2d 3e 6c 69 ....if( !ptr->li
13c0: 73 74 75 70 28 20 2a 28 53 74 61 74 65 2d 3e 41 stup( *(State->A
13d0: 72 63 68 69 76 65 64 46 69 6c 65 2e 46 69 6c 65 rchivedFile.File
13e0: 44 61 74 61 29 20 29 20 29 0d 0a 09 09 09 09 72 Data) ) )......r
13f0: 65 74 75 72 6e 20 41 43 45 5f 43 41 4c 4c 42 41 eturn ACE_CALLBA
1400: 43 4b 5f 52 45 54 55 52 4e 5f 43 41 4e 43 45 4c CK_RETURN_CANCEL
1410: 3b 0d 0a 09 09 7d 0d 0a 09 09 65 6c 73 65 20 69 ;....}....else i
1420: 66 28 20 53 74 61 74 65 2d 3e 50 72 6f 67 72 65 f( State->Progre
1430: 73 73 2e 4f 70 65 72 61 74 69 6f 6e 20 3d 3d 20 ss.Operation ==
1440: 41 43 45 5f 43 41 4c 4c 42 41 43 4b 5f 4f 50 45 ACE_CALLBACK_OPE
1450: 52 41 54 49 4f 4e 5f 45 58 54 52 41 43 54 20 29 RATION_EXTRACT )
1460: 0d 0a 09 09 7b 0d 0a 09 09 09 69 66 28 20 70 74 ....{.....if( pt
1470: 72 2d 3e 64 6c 67 20 29 0d 0a 09 09 09 09 70 74 r->dlg )......pt
1480: 72 2d 3e 64 6c 67 2d 3e 63 68 61 6e 67 65 28 20 r->dlg->change(
1490: 53 74 61 74 65 2d 3e 41 72 63 68 69 76 65 64 46 State->ArchivedF
14a0: 69 6c 65 2e 46 69 6c 65 44 61 74 61 2d 3e 53 6f ile.FileData->So
14b0: 75 72 63 65 46 69 6c 65 4e 61 6d 65 20 29 3b 0d urceFileName );.
14c0: 0a 09 09 09 69 66 28 20 70 74 72 2d 3e 70 61 74 ....if( ptr->pat
14d0: 68 43 68 65 63 6b 20 29 0d 0a 09 09 09 09 69 66 hCheck )......if
14e0: 28 20 63 6f 6e 74 61 69 6e 73 44 61 6e 67 65 72 ( containsDanger
14f0: 50 61 74 68 28 20 53 74 61 74 65 2d 3e 41 72 63 Path( State->Arc
1500: 68 69 76 65 64 46 69 6c 65 2e 46 69 6c 65 44 61 hivedFile.FileDa
1510: 74 61 2d 3e 53 6f 75 72 63 65 46 69 6c 65 4e 61 ta->SourceFileNa
1520: 6d 65 20 29 20 29 0d 0a 09 09 09 09 09 69 66 28 me ) ).......if(
1530: 20 21 20 70 74 72 2d 3e 70 61 74 68 43 68 65 63 ! ptr->pathChec
1540: 6b 2d 3e 69 73 5f 6f 6b 5f 74 6f 5f 65 78 74 72 k->is_ok_to_extr
1550: 61 63 74 28 20 53 74 61 74 65 2d 3e 41 72 63 68 act( State->Arch
1560: 69 76 65 64 46 69 6c 65 2e 46 69 6c 65 44 61 74 ivedFile.FileDat
1570: 61 2d 3e 53 6f 75 72 63 65 46 69 6c 65 4e 61 6d a->SourceFileNam
1580: 65 2c 20 70 74 72 2d 3e 64 6c 67 20 29 20 29 0d e, ptr->dlg ) ).
1590: 0a 09 09 09 09 09 09 72 65 74 75 72 6e 20 41 43 .......return AC
15a0: 45 5f 43 41 4c 4c 42 41 43 4b 5f 52 45 54 55 52 E_CALLBACK_RETUR
15b0: 4e 5f 43 41 4e 43 45 4c 3b 0d 0a 09 09 7d 0d 0a N_CANCEL;....}..
15c0: 09 7d 0d 0a 09 2f 2f 20 90 69 93 57 8f f3 8b b5 .}...// .i.W....
15d0: 83 4f 83 89 83 74 81 97 89 f0 93 80 0d 0a 09 65 .O...t.........e
15e0: 6c 73 65 20 69 66 28 20 53 74 61 74 65 2d 3e 50 lse if( State->P
15f0: 72 6f 67 72 65 73 73 2e 43 6f 64 65 20 3d 3d 20 rogress.Code ==
1600: 41 43 45 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 ACE_CALLBACK_STA
1610: 54 45 5f 50 52 4f 47 52 45 53 53 20 29 0d 0a 09 TE_PROGRESS )...
1620: 7b 0d 0a 09 09 43 41 72 63 41 63 65 2a 20 70 74 {....CArcAce* pt
1630: 72 20 3d 20 28 43 41 72 63 41 63 65 2a 29 28 53 r = (CArcAce*)(S
1640: 74 61 74 65 2d 3e 41 72 63 68 69 76 65 64 46 69 tate->ArchivedFi
1650: 6c 65 2e 47 6c 6f 62 61 6c 44 61 74 61 2d 3e 4f le.GlobalData->O
1660: 62 6a 29 3b 0d 0a 0d 0a 09 09 69 66 28 20 53 74 bj);......if( St
1670: 61 74 65 2d 3e 50 72 6f 67 72 65 73 73 2e 4f 70 ate->Progress.Op
1680: 65 72 61 74 69 6f 6e 20 3d 3d 20 41 43 45 5f 43 eration == ACE_C
1690: 41 4c 4c 42 41 43 4b 5f 4f 50 45 52 41 54 49 4f ALLBACK_OPERATIO
16a0: 4e 5f 45 58 54 52 41 43 54 20 26 26 20 70 74 72 N_EXTRACT && ptr
16b0: 2d 3e 64 6c 67 20 29 0d 0a 09 09 7b 0d 0a 09 09 ->dlg )....{....
16c0: 09 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 70 .unsigned long p
16d0: 72 73 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 6c rs = (unsigned l
16e0: 6f 6e 67 29 53 74 61 74 65 2d 3e 50 72 6f 67 72 ong)State->Progr
16f0: 65 73 73 2e 50 72 6f 67 72 65 73 73 44 61 74 61 ess.ProgressData
1700: 2d 3e 54 6f 74 61 6c 50 72 6f 63 65 73 73 65 64 ->TotalProcessed
1710: 53 69 7a 65 3b 0d 0a 09 09 09 75 6e 73 69 67 6e Size;.....unsign
1720: 65 64 20 6c 6f 6e 67 20 74 74 6c 20 3d 20 28 75 ed long ttl = (u
1730: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 53 74 61 nsigned long)Sta
1740: 74 65 2d 3e 50 72 6f 67 72 65 73 73 2e 50 72 6f te->Progress.Pro
1750: 67 72 65 73 73 44 61 74 61 2d 3e 54 6f 74 61 6c gressData->Total
1760: 53 69 7a 65 3b 0d 0a 09 09 09 70 74 72 2d 3e 64 Size;.....ptr->d
1770: 6c 67 2d 3e 63 68 61 6e 67 65 28 20 4e 55 4c 4c lg->change( NULL
1780: 2c 20 74 74 6c 20 3f 20 28 69 6e 74 29 28 28 28 , ttl ? (int)(((
1790: 28 5f 5f 69 6e 74 36 34 29 70 72 73 29 3c 3c 31 (__int64)prs)<<1
17a0: 35 29 2f 74 74 6c 29 20 3a 20 31 30 30 30 30 20 5)/ttl) : 10000
17b0: 29 3b 0d 0a 09 09 09 69 66 28 20 21 70 74 72 2d );.....if( !ptr-
17c0: 3e 64 6c 67 2d 3e 6d 73 67 6c 6f 6f 70 28 29 20 >dlg->msgloop()
17d0: 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 70 74 72 ).....{......ptr
17e0: 2d 3e 6d 5f 62 43 61 6e 63 65 6c 65 64 20 3d 20 ->m_bCanceled =
17f0: 74 72 75 65 3b 0d 0a 09 09 09 09 72 65 74 75 72 true;......retur
1800: 6e 20 41 43 45 5f 43 41 4c 4c 42 41 43 4b 5f 52 n ACE_CALLBACK_R
1810: 45 54 55 52 4e 5f 43 41 4e 43 45 4c 3b 0d 0a 09 ETURN_CANCEL;...
1820: 09 09 7d 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 09 2f ..}....}...}.../
1830: 2f 20 43 52 43 83 60 83 46 83 62 83 4e 81 97 89 / CRC.`.F.b.N...
1840: f0 93 80 0d 0a 09 65 6c 73 65 20 69 66 28 20 53 ......else if( S
1850: 74 61 74 65 2d 3e 50 72 6f 67 72 65 73 73 2e 43 tate->Progress.C
1860: 6f 64 65 20 3d 3d 20 41 43 45 5f 43 41 4c 4c 42 ode == ACE_CALLB
1870: 41 43 4b 5f 53 54 41 54 45 5f 45 4e 44 43 52 43 ACK_STATE_ENDCRC
1880: 43 48 45 43 4b 20 29 0d 0a 09 7b 0d 0a 09 09 69 CHECK )...{....i
1890: 66 28 20 21 53 74 61 74 65 2d 3e 43 52 43 43 68 f( !State->CRCCh
18a0: 65 63 6b 2e 43 52 43 4f 6b 20 29 0d 0a 09 09 09 eck.CRCOk ).....
18b0: 3a 3a 44 65 6c 65 74 65 46 69 6c 65 28 20 53 74 ::DeleteFile( St
18c0: 61 74 65 2d 3e 43 52 43 43 68 65 63 6b 2e 46 69 ate->CRCCheck.Fi
18d0: 6c 65 44 61 74 61 2d 3e 53 6f 75 72 63 65 46 69 leData->SourceFi
18e0: 6c 65 4e 61 6d 65 20 29 3b 0d 0a 09 7d 0d 0a 0d leName );...}...
18f0: 0a 09 72 65 74 75 72 6e 20 41 43 45 5f 43 41 4c ..return ACE_CAL
1900: 4c 42 41 43 4b 5f 52 45 54 55 52 4e 5f 4f 4b 3b LBACK_RETURN_OK;
1910: 0d 0a 7d 0d 0a 0d 0a 62 6f 6f 6c 20 43 41 72 63 ..}....bool CArc
1920: 41 63 65 3a 3a 6c 69 73 74 75 70 28 20 74 41 43 Ace::listup( tAC
1930: 45 46 69 6c 65 44 61 74 61 53 74 72 75 63 26 20 EFileDataStruc&
1940: 66 20 29 0d 0a 7b 0d 0a 09 69 66 28 20 6c 69 73 f )..{...if( lis
1950: 74 20 29 20 2f 2f 20 91 53 83 74 83 40 83 43 83 t ) // .S.t.@.C.
1960: 8b 83 8a 83 58 83 65 83 42 83 93 83 4f 83 82 81 ....X.e.B...O...
1970: 5b 83 68 0d 0a 09 7b 0d 0a 09 09 61 72 63 66 69 [.h...{....arcfi
1980: 6c 65 20 78 3b 0d 0a 0d 0a 09 09 6b 69 5f 73 74 le x;......ki_st
1990: 72 63 70 79 28 20 78 2e 69 6e 66 2e 73 7a 46 69 rcpy( x.inf.szFi
19a0: 6c 65 4e 61 6d 65 2c 20 66 2e 53 6f 75 72 63 65 leName, f.Source
19b0: 46 69 6c 65 4e 61 6d 65 20 29 3b 0d 0a 09 09 78 FileName );....x
19c0: 2e 69 73 66 69 6c 65 20 3d 20 28 20 30 3d 3d 20 .isfile = ( 0==
19d0: 28 66 2e 41 74 74 72 69 62 75 74 65 73 20 26 20 (f.Attributes &
19e0: 30 78 31 30 29 20 29 3b 20 2f 2f 5f 41 5f 53 55 0x10) ); //_A_SU
19f0: 42 44 49 52 0d 0a 09 09 78 2e 69 6e 66 2e 64 77 BDIR....x.inf.dw
1a00: 43 6f 6d 70 72 65 73 73 65 64 53 69 7a 65 20 3d CompressedSize =
1a10: 20 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 (unsigned long)
1a20: 66 2e 43 6f 6d 70 72 65 73 73 65 64 53 69 7a 65 f.CompressedSize
1a30: 3b 0d 0a 09 09 78 2e 69 6e 66 2e 64 77 4f 72 69 ;....x.inf.dwOri
1a40: 67 69 6e 61 6c 53 69 7a 65 20 20 20 3d 20 28 75 ginalSize = (u
1a50: 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 29 66 2e 53 nsigned long)f.S
1a60: 69 7a 65 3b 0d 0a 09 09 78 2e 69 6e 66 2e 77 44 ize;....x.inf.wD
1a70: 61 74 65 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 ate = (unsigned
1a80: 73 68 6f 72 74 29 28 66 2e 54 69 6d 65 3e 3e 31 short)(f.Time>>1
1a90: 36 29 3b 0d 0a 09 09 78 2e 69 6e 66 2e 77 54 69 6);....x.inf.wTi
1aa0: 6d 65 20 3d 20 28 75 6e 73 69 67 6e 65 64 20 73 me = (unsigned s
1ab0: 68 6f 72 74 29 28 66 2e 54 69 6d 65 29 3b 0d 0a hort)(f.Time);..
1ac0: 0d 0a 09 09 69 66 28 20 66 2e 4d 65 74 68 6f 64 ....if( f.Method
1ad0: 3d 3d 30 20 29 09 09 6b 69 5f 73 74 72 63 70 79 ==0 )..ki_strcpy
1ae0: 28 20 78 2e 69 6e 66 2e 73 7a 4d 6f 64 65 2c 20 ( x.inf.szMode,
1af0: 22 73 74 6f 72 65 22 20 29 3b 0d 0a 09 09 65 6c "store" );....el
1b00: 73 65 20 69 66 28 20 66 2e 4d 65 74 68 6f 64 26 se if( f.Method&
1b10: 32 20 29 09 6b 69 5f 73 74 72 63 70 79 28 20 78 2 ).ki_strcpy( x
1b20: 2e 69 6e 66 2e 73 7a 4d 6f 64 65 2c 20 22 61 63 .inf.szMode, "ac
1b30: 65 32 22 20 29 3b 0d 0a 09 09 65 6c 73 65 20 69 e2" );....else i
1b40: 66 28 20 66 2e 4d 65 74 68 6f 64 26 31 20 29 09 f( f.Method&1 ).
1b50: 6b 69 5f 73 74 72 63 70 79 28 20 78 2e 69 6e 66 ki_strcpy( x.inf
1b60: 2e 73 7a 4d 6f 64 65 2c 20 22 61 63 65 31 22 20 .szMode, "ace1"
1b70: 29 3b 0d 0a 09 09 65 6c 73 65 09 09 09 09 09 6b );....else.....k
1b80: 69 5f 73 74 72 63 70 79 28 20 78 2e 69 6e 66 2e i_strcpy( x.inf.
1b90: 73 7a 4d 6f 64 65 2c 20 22 2d 61 63 65 2d 22 20 szMode, "-ace-"
1ba0: 29 3b 0d 0a 0d 0a 09 09 6c 69 73 74 2d 3e 61 64 );......list->ad
1bb0: 64 28 20 78 20 29 3b 0d 0a 09 09 72 65 74 75 72 d( x );....retur
1bc0: 6e 20 74 72 75 65 3b 0d 0a 09 7d 0d 0a 0d 0a 09 n true;...}.....
1bd0: 2f 2f 20 8f 91 8c c9 93 e0 83 74 83 40 83 43 83 // .......t.@.C.
1be0: 8b 8d 5c 90 ac 8c 9f 8d f5 83 82 81 5b 83 68 0d ..\.........[.h.
1bf0: 0a 09 66 6f 72 28 20 63 6f 6e 73 74 20 63 68 61 ..for( const cha
1c00: 72 2a 20 70 3d 66 2e 53 6f 75 72 63 65 46 69 6c r* p=f.SourceFil
1c10: 65 4e 61 6d 65 3b 20 2a 70 3b 20 70 3d 6b 69 53 eName; *p; p=kiS
1c20: 74 72 3a 3a 6e 65 78 74 28 70 29 20 29 0d 0a 09 tr::next(p) )...
1c30: 09 69 66 28 20 2a 70 3d 3d 27 5c 5c 27 20 7c 7c .if( *p=='\\' ||
1c40: 20 2a 70 3d 3d 27 2f 27 20 29 0d 0a 09 09 09 72 *p=='/' ).....r
1c50: 65 74 75 72 6e 20 74 72 75 65 3b 20 2f 2f 20 83 eturn true; // .
1c60: 8b 81 5b 83 67 82 cc 83 74 83 40 83 43 83 8b 82 ..[.g...t.@.C...
1c70: cc 82 dd 8f 88 97 9d 91 ce 8f db 81 63 0d 0a 0d ............c...
1c80: 0a 09 69 66 28 20 61 43 6e 74 20 21 3d 20 61 55 ..if( aCnt != aU
1c90: 6e 6b 6e 6f 77 6e 20 29 0d 0a 09 09 72 65 74 75 nknown )....retu
1ca0: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 09 61 43 rn false;.....aC
1cb0: 6e 74 20 3d 20 28 66 2e 41 74 74 72 69 62 75 74 nt = (f.Attribut
1cc0: 65 73 20 26 20 30 78 31 30 29 20 3f 20 61 53 69 es & 0x10) ? aSi
1cd0: 6e 67 6c 65 44 69 72 20 3a 20 61 53 69 6e 67 6c ngleDir : aSingl
1ce0: 65 46 69 6c 65 3b 0d 0a 09 69 66 28 20 61 43 6e eFile;...if( aCn
1cf0: 74 20 3d 3d 20 61 53 69 6e 67 6c 65 44 69 72 20 t == aSingleDir
1d00: 29 0d 0a 09 09 2a 64 4e 61 6d 65 20 3d 20 66 2e )....*dName = f.
1d10: 53 6f 75 72 63 65 46 69 6c 65 4e 61 6d 65 3b 0d SourceFileName;.
1d20: 0a 0d 0a 09 72 65 74 75 72 6e 20 74 72 75 65 3b ....return true;
1d30: 0d 0a 7d 0d 0a ..}..