Artifact affffc4f40848d74814e75796cac231394b13992:
0000: ef bb bf 69 6d 70 6f 72 74 20 77 69 6e 33 32 2e ...import win32.
0010: 77 69 6e 64 6f 77 73 3b 0a 69 6d 70 6f 72 74 20 windows;.import
0020: 73 74 64 2e 73 74 72 69 6e 67 3b 0a 69 6d 70 6f std.string;.impo
0030: 72 74 20 73 74 64 2e 66 69 6c 65 3b 0a 0a 63 68 rt std.file;..ch
0040: 61 72 20 6c 61 73 74 43 68 61 72 28 20 73 74 72 ar lastChar( str
0050: 69 6e 67 20 73 20 29 0a 20 20 7b 20 72 65 74 75 ing s ). { retu
0060: 72 6e 20 2a 43 68 61 72 50 72 65 76 41 28 63 61 rn *CharPrevA(ca
0070: 73 74 28 63 68 61 72 2a 29 73 2e 70 74 72 2c 20 st(char*)s.ptr,
0080: 63 61 73 74 28 63 68 61 72 2a 29 73 2e 70 74 72 cast(char*)s.ptr
0090: 2b 73 2e 6c 65 6e 67 74 68 29 3b 20 7d 0a 0a 2f +s.length); }../
00a0: 2f 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 0a 2f 2f 20 69 6e 74 20 64 6f 5f 6f 70 41 70 -.// int do_opAp
00f0: 70 6c 79 21 28 45 2c 20 43 29 28 20 63 6f 6c 6c ply!(E, C)( coll
0100: 65 63 74 69 6f 6e 2c 20 64 65 6c 65 67 61 74 65 ection, delegate
0110: 20 29 3b 0a 2f 2f 20 69 6e 74 20 64 6f 5f 6f 70 );.// int do_op
0120: 41 70 70 6c 79 21 28 45 29 20 20 20 28 20 20 20 Apply!(E) (
0130: 20 20 20 61 72 72 61 79 2c 20 64 65 6c 65 67 61 array, delega
0140: 74 65 20 29 3b 0a 2f 2f 20 20 20 66 6f 72 77 61 te );.// forwa
0150: 72 64 69 6e 67 20 74 68 65 20 6f 70 41 70 70 6c rding the opAppl
0160: 79 20 63 61 6c 6c 20 74 6f 20 61 6e 6f 74 68 65 y call to anothe
0170: 72 20 63 6f 6c 6c 65 63 74 69 6f 6e 0a 2f 2f 2d r collection.//-
0180: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0190: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
01b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
01c0: 0a 74 65 6d 70 6c 61 74 65 20 64 6f 5f 6f 70 41 .template do_opA
01d0: 70 70 6c 79 28 20 45 6c 65 6d 2c 20 43 6f 6c 6c pply( Elem, Coll
01e0: 65 63 74 69 6f 6e 20 29 0a 7b 0a 09 69 6e 74 20 ection ).{..int
01f0: 64 6f 5f 6f 70 41 70 70 6c 79 28 20 43 6f 6c 6c do_opApply( Coll
0200: 65 63 74 69 6f 6e 20 63 2c 20 69 6e 74 20 64 65 ection c, int de
0210: 6c 65 67 61 74 65 28 69 6e 6f 75 74 20 45 6c 65 legate(inout Ele
0220: 6d 29 20 64 67 20 29 0a 09 7b 0a 09 09 69 6e 74 m) dg )..{...int
0230: 20 72 65 73 75 6c 74 20 3d 20 30 3b 0a 09 09 66 result = 0;...f
0240: 6f 72 65 61 63 68 28 20 45 6c 65 6d 20 78 20 3b oreach( Elem x ;
0250: 20 63 20 29 0a 09 09 09 69 66 28 20 30 20 21 3d c )....if( 0 !=
0260: 20 28 72 65 73 75 6c 74 3d 64 67 28 78 29 29 20 (result=dg(x))
0270: 29 0a 09 09 09 09 62 72 65 61 6b 3b 0a 09 09 72 ).....break;...r
0280: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 09 7d eturn result;..}
0290: 0a 7d 0a 0a 74 65 6d 70 6c 61 74 65 20 64 6f 5f .}..template do_
02a0: 6f 70 41 70 70 6c 79 28 20 45 20 29 0a 7b 0a 09 opApply( E ).{..
02b0: 69 6e 74 20 64 6f 5f 6f 70 41 70 70 6c 79 28 20 int do_opApply(
02c0: 45 5b 5d 20 63 2c 20 69 6e 74 20 64 65 6c 65 67 E[] c, int deleg
02d0: 61 74 65 28 69 6e 6f 75 74 20 45 29 20 64 67 20 ate(inout E) dg
02e0: 29 0a 09 7b 0a 09 09 72 65 74 75 72 6e 20 2e 64 )..{...return .d
02f0: 6f 5f 6f 70 41 70 70 6c 79 21 28 45 2c 45 5b 5d o_opApply!(E,E[]
0300: 29 28 20 63 2c 20 64 67 20 29 3b 0a 09 7d 0a 7d )( c, dg );..}.}
0310: 0a 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ..//------------
0320: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0350: 2d 2d 2d 2d 0a 2f 2f 20 63 6c 61 73 73 20 73 65 ----.// class se
0360: 74 21 28 54 29 0a 2f 2f 20 20 20 61 64 64 20 20 t!(T).// add
0370: 20 20 3a 20 20 54 20 2d 3e 20 76 6f 69 64 0a 2f : T -> void./
0380: 2f 20 20 20 72 65 6d 6f 76 65 20 3a 20 20 54 20 / remove : T
0390: 2d 3e 20 76 6f 69 64 0a 2f 2f 20 20 20 68 61 73 -> void.// has
03a0: 20 20 20 20 3a 20 20 54 20 2d 3e 20 62 6f 6f 6c : T -> bool
03b0: 0a 2f 2f 20 20 20 65 6c 65 6d 73 20 20 3a 20 28 .// elems : (
03c0: 29 20 2d 3e 20 54 5b 5d 0a 2f 2f 20 20 20 6c 65 ) -> T[].// le
03d0: 6e 67 74 68 20 3a 20 28 29 20 2d 3e 20 69 6e 74 ngth : () -> int
03e0: 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .//-------------
03f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0420: 2d 2d 2d 0a 0a 63 6c 61 73 73 20 73 65 74 28 54 ---..class set(T
0430: 29 0a 7b 0a 09 76 6f 69 64 20 61 64 64 20 20 20 ).{..void add
0440: 28 20 54 20 78 20 29 20 7b 20 64 61 74 61 5b 78 ( T x ) { data[x
0450: 5d 3b 20 7d 0a 09 76 6f 69 64 20 72 65 6d 6f 76 ]; }..void remov
0460: 65 28 20 54 20 78 20 29 20 7b 20 64 65 6c 65 74 e( T x ) { delet
0470: 65 20 64 61 74 61 5b 78 5d 3b 20 7d 0a 09 62 6f e data[x]; }..bo
0480: 6f 6c 20 68 61 73 20 20 20 28 20 54 20 78 20 29 ol has ( T x )
0490: 20 7b 20 72 65 74 75 72 6e 20 78 20 69 6e 20 64 { return x in d
04a0: 61 74 61 3b 20 7d 0a 09 54 5b 5d 20 20 65 6c 65 ata; }..T[] ele
04b0: 6d 73 20 28 29 20 20 20 20 20 20 7b 20 72 65 74 ms () { ret
04c0: 75 72 6e 20 64 61 74 61 2e 6b 65 79 73 3b 20 7d urn data.keys; }
04d0: 0a 09 69 6e 74 20 20 6f 70 41 70 70 6c 79 28 20 ..int opApply(
04e0: 69 6e 74 20 64 65 6c 65 67 61 74 65 28 69 6e 6f int delegate(ino
04f0: 75 74 20 54 29 20 64 67 20 29 0a 09 20 20 20 20 ut T) dg )..
0500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b {
0510: 20 72 65 74 75 72 6e 20 64 6f 5f 6f 70 41 70 70 return do_opApp
0520: 6c 79 21 28 54 29 28 20 65 6c 65 6d 73 2c 20 64 ly!(T)( elems, d
0530: 67 20 29 3b 20 7d 0a 09 69 6e 74 20 20 6c 65 6e g ); }..int len
0540: 67 74 68 28 29 20 20 20 20 20 20 7b 20 72 65 74 gth() { ret
0550: 75 72 6e 20 64 61 74 61 2e 6c 65 6e 67 74 68 3b urn data.length;
0560: 20 7d 0a 09 70 72 69 76 61 74 65 20 76 6f 69 64 }..private void
0570: 5b 54 5d 20 64 61 74 61 3b 0a 7d 0a 0a 75 6e 69 [T] data;.}..uni
0580: 74 74 65 73 74 0a 7b 0a 09 73 65 74 21 28 69 6e ttest.{..set!(in
0590: 74 29 20 78 20 3d 20 6e 65 77 20 73 65 74 21 28 t) x = new set!(
05a0: 69 6e 74 29 3b 0a 09 78 2e 61 64 64 28 31 29 3b int);..x.add(1);
05b0: 0a 09 78 2e 61 64 64 28 32 29 3b 0a 09 78 2e 61 ..x.add(2);..x.a
05c0: 64 64 28 33 29 3b 0a 09 61 73 73 65 72 74 28 20 dd(3);..assert(
05d0: 78 2e 65 6c 65 6d 73 5b 30 5d 20 2b 20 78 2e 65 x.elems[0] + x.e
05e0: 6c 65 6d 73 5b 31 5d 20 2b 20 78 2e 65 6c 65 6d lems[1] + x.elem
05f0: 73 5b 32 5d 20 3d 3d 20 36 20 29 3b 0a 09 61 73 s[2] == 6 );..as
0600: 73 65 72 74 28 20 78 2e 6c 65 6e 67 74 68 20 3d sert( x.length =
0610: 3d 20 33 20 29 3b 0a 09 78 2e 72 65 6d 6f 76 65 = 3 );..x.remove
0620: 28 34 29 3b 0a 09 78 2e 72 65 6d 6f 76 65 28 33 (4);..x.remove(3
0630: 29 3b 0a 09 78 2e 72 65 6d 6f 76 65 28 31 29 3b );..x.remove(1);
0640: 0a 09 61 73 73 65 72 74 28 20 78 2e 6c 65 6e 67 ..assert( x.leng
0650: 74 68 20 3d 3d 20 31 20 29 3b 0a 09 66 6f 72 65 th == 1 );..fore
0660: 61 63 68 28 20 69 6e 74 20 74 20 3b 20 78 20 29 ach( int t ; x )
0670: 20 61 73 73 65 72 74 28 20 74 3d 3d 32 20 29 3b assert( t==2 );
0680: 0a 7d 0a 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .}..//----------
0690: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
06a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
06b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
06c0: 2d 2d 2d 2d 2d 2d 0a 2f 2f 20 e3 82 b3 e3 83 9e ------.// ......
06d0: e3 83 b3 e3 83 89 e3 83 a9 e3 82 a4 e3 83 b3 e8 ................
06e0: a7 a3 e6 9e 90 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d ......//--------
06f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0710: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0720: 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 73 74 72 69 6e 67 --------..string
0730: 5b 5d 20 63 6d 64 5f 70 61 72 73 65 28 20 73 74 [] cmd_parse( st
0740: 72 69 6e 67 20 73 74 72 2c 20 62 6f 6f 6c 20 69 ring str, bool i
0750: 6e 5f 72 65 73 70 3d 66 61 6c 73 65 20 29 0a 7b n_resp=false ).{
0760: 0a 09 73 74 72 69 6e 67 5b 5d 20 61 6e 73 3b 0a ..string[] ans;.
0770: 09 63 68 61 72 20 72 65 73 70 5f 63 68 61 72 20 .char resp_char
0780: 3d 20 27 40 27 3b 0a 0a 09 66 6f 72 28 69 6e 74 = '@';...for(int
0790: 20 69 3d 30 3b 20 69 21 3d 73 74 72 2e 6c 65 6e i=0; i!=str.len
07a0: 67 74 68 3b 20 29 0a 09 7b 0a 09 09 2f 2f 20 e7 gth; )..{...// .
07b0: a9 ba e7 99 bd e3 82 b9 e3 82 ad e3 83 83 e3 83 ................
07c0: 97 0a 09 09 77 68 69 6c 65 28 20 69 21 3d 73 74 ....while( i!=st
07d0: 72 2e 6c 65 6e 67 74 68 20 26 26 20 30 3c 3d 73 r.length && 0<=s
07e0: 74 72 5b 69 5d 20 26 26 20 73 74 72 5b 69 5d 3c tr[i] && str[i]<
07f0: 3d 27 20 27 20 29 0a 09 09 09 2b 2b 69 3b 0a 09 =' ' )....++i;..
0800: 09 69 66 28 20 69 20 3d 3d 20 73 74 72 2e 6c 65 .if( i == str.le
0810: 6e 67 74 68 20 29 0a 09 09 09 62 72 65 61 6b 3b ngth )....break;
0820: 0a 0a 09 09 2f 2f 20 22 22 e3 82 92 e8 80 83 e6 ....// "".......
0830: 85 ae e3 81 97 e3 81 a6 e4 b8 80 e5 80 8b e3 83 ................
0840: 91 e3 83 a9 e3 83 a1 e3 82 bf e5 88 87 e3 82 8a ................
0850: e5 87 ba e3 81 97 0a 09 09 73 74 72 69 6e 67 20 .........string
0860: 70 61 72 61 6d 3b 0a 09 09 69 66 28 20 73 74 72 param;...if( str
0870: 5b 69 5d 20 3d 3d 20 27 22 27 20 29 0a 09 09 7b [i] == '"' )...{
0880: 0a 09 09 09 69 6e 74 20 6a 20 3d 20 2b 2b 69 3b ....int j = ++i;
0890: 0a 09 09 09 77 68 69 6c 65 28 20 6a 21 3d 73 74 ....while( j!=st
08a0: 72 2e 6c 65 6e 67 74 68 20 29 0a 09 09 09 7b 0a r.length )....{.
08b0: 09 09 09 09 69 66 28 20 73 74 72 5b 6a 5d 3d 3d ....if( str[j]==
08c0: 27 22 27 20 26 26 0a 09 09 09 09 20 20 20 20 20 '"' &&.....
08d0: 28 6a 2b 31 3d 3d 73 74 72 2e 6c 65 6e 67 74 68 (j+1==str.length
08e0: 20 7c 7c 20 30 3c 3d 73 74 72 5b 6a 2b 31 5d 20 || 0<=str[j+1]
08f0: 26 26 20 73 74 72 5b 6a 2b 31 5d 3c 3d 27 20 27 && str[j+1]<=' '
0900: 29 20 29 0a 09 09 09 09 09 62 72 65 61 6b 3b 0a ) )......break;.
0910: 09 09 09 09 2b 2b 6a 3b 0a 09 09 09 7d 0a 09 09 ....++j;....}...
0920: 09 70 61 72 61 6d 20 3d 20 73 74 72 5b 69 20 2e .param = str[i .
0930: 2e 20 6a 5d 3b 0a 09 09 09 69 20 3d 20 28 6a 3d . j];....i = (j=
0940: 3d 73 74 72 2e 6c 65 6e 67 74 68 20 3f 20 6a 20 =str.length ? j
0950: 3a 20 6a 2b 31 29 3b 0a 09 09 7d 0a 09 09 65 6c : j+1);...}...el
0960: 73 65 0a 09 09 7b 0a 09 09 09 69 6e 74 20 6a 3d se...{....int j=
0970: 69 3b 0a 09 09 09 77 68 69 6c 65 28 20 6a 21 3d i;....while( j!=
0980: 73 74 72 2e 6c 65 6e 67 74 68 20 26 26 20 28 73 str.length && (s
0990: 74 72 5b 6a 5d 3c 30 20 7c 7c 20 27 20 27 3c 73 tr[j]<0 || ' '<s
09a0: 74 72 5b 6a 5d 29 20 29 0a 09 09 09 09 2b 2b 6a tr[j]) ).....++j
09b0: 3b 0a 09 09 09 70 61 72 61 6d 20 3d 20 73 74 72 ;....param = str
09c0: 5b 69 20 2e 2e 20 6a 5d 3b 0a 09 09 09 69 20 3d [i .. j];....i =
09d0: 20 6a 3b 0a 09 09 7d 0a 0a 09 09 2f 2f 20 e3 83 j;...}....// ..
09e0: ac e3 82 b9 e3 83 9d e3 83 b3 e3 82 b9 e3 83 95 ................
09f0: e3 82 a1 e3 82 a4 e3 83 ab e9 96 a2 e9 80 a3 e3 ................
0a00: 81 ae e5 87 a6 e7 90 86 0a 09 09 69 66 28 20 21 ...........if( !
0a10: 69 6e 5f 72 65 73 70 20 26 26 20 70 61 72 61 6d in_resp && param
0a20: 5b 30 5d 3d 3d 72 65 73 70 5f 63 68 61 72 20 29 [0]==resp_char )
0a30: 0a 09 09 7b 0a 09 09 09 74 72 79 20 7b 0a 09 09 ...{....try {...
0a40: 09 09 73 74 72 69 6e 67 20 72 73 70 20 3d 20 63 ..string rsp = c
0a50: 61 73 74 28 73 74 72 69 6e 67 29 20 73 74 64 2e ast(string) std.
0a60: 66 69 6c 65 2e 72 65 61 64 28 20 70 61 72 61 6d file.read( param
0a70: 5b 31 20 2e 2e 20 70 61 72 61 6d 2e 6c 65 6e 67 [1 .. param.leng
0a80: 74 68 5d 20 29 3b 0a 09 09 09 09 61 6e 73 20 7e th] );.....ans ~
0a90: 3d 20 63 6d 64 5f 70 61 72 73 65 28 72 73 70 2c = cmd_parse(rsp,
0aa0: 74 72 75 65 29 3b 0a 09 09 09 7d 20 63 61 74 63 true);....} catc
0ab0: 68 28 20 46 69 6c 65 45 78 63 65 70 74 69 6f 6e h( FileException
0ac0: 20 65 20 29 20 7b 7d 0a 09 09 7d 0a 09 09 65 6c e ) {}...}...el
0ad0: 73 65 20 69 66 28 20 70 61 72 61 6d 2e 6c 65 6e se if( param.len
0ae0: 67 74 68 3e 3d 32 20 26 26 20 70 61 72 61 6d 5b gth>=2 && param[
0af0: 30 2e 2e 32 5d 3d 3d 22 2d 2d 22 20 29 0a 09 09 0..2]=="--" )...
0b00: 7b 0a 09 09 09 72 65 73 70 5f 63 68 61 72 20 3d {....resp_char =
0b10: 20 28 70 61 72 61 6d 2e 6c 65 6e 67 74 68 3d 3d (param.length==
0b20: 32 20 3f 20 27 5c 30 27 20 3a 20 70 61 72 61 6d 2 ? '\0' : param
0b30: 5b 32 5d 29 3b 0a 09 09 7d 0a 09 09 65 6c 73 65 [2]);...}...else
0b40: 0a 09 09 7b 0a 09 09 09 61 6e 73 20 7e 3d 20 70 ...{....ans ~= p
0b50: 61 72 61 6d 3b 20 2f 2f 20 e6 99 ae e9 80 9a e3 aram; // .......
0b60: 81 ab e3 83 91 e3 83 a9 e3 83 a1 e3 82 bf e8 bf ................
0b70: bd e5 8a a0 0a 09 09 7d 0a 09 7d 0a 09 72 65 74 .......}..}..ret
0b80: 75 72 6e 20 61 6e 73 3b 0a 7d 0a 0a 2f 2f 2d 2d urn ans;.}..//--
0b90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0ba0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0bb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0bc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2f --------------./
0bd0: 2f 20 44 4f 53 e5 bd a2 e5 bc 8f e3 81 a7 e3 83 / DOS...........
0be0: 95 e3 82 a1 e3 82 a4 e3 83 ab e9 9f b3 e6 9b b4 ................
0bf0: e6 96 b0 e6 99 82 e5 88 bb e3 82 92 e6 9b b8 e3 ................
0c00: 81 8d e6 8f 9b e3 81 88 0a 2f 2f 2d 2d 2d 2d 2d .........//-----
0c10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0c20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0c30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0c40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 76 6f 69 -----------..voi
0c50: 64 20 64 6f 73 53 65 74 46 54 69 6d 65 28 20 73 d dosSetFTime( s
0c60: 74 72 69 6e 67 20 66 6e 61 6d 65 2c 20 75 73 68 tring fname, ush
0c70: 6f 72 74 20 64 61 74 65 2c 20 75 73 68 6f 72 74 ort date, ushort
0c80: 20 74 69 6d 65 20 29 0a 7b 0a 09 46 49 4c 45 54 time ).{..FILET
0c90: 49 4d 45 20 66 74 2c 6c 63 3b 0a 09 69 66 28 20 IME ft,lc;..if(
0ca0: 44 6f 73 44 61 74 65 54 69 6d 65 54 6f 46 69 6c DosDateTimeToFil
0cb0: 65 54 69 6d 65 28 20 64 61 74 65 2c 20 74 69 6d eTime( date, tim
0cc0: 65 2c 20 26 6c 63 20 29 20 29 0a 09 09 69 66 28 e, &lc ) )...if(
0cd0: 20 4c 6f 63 61 6c 46 69 6c 65 54 69 6d 65 54 6f LocalFileTimeTo
0ce0: 46 69 6c 65 54 69 6d 65 28 20 26 6c 63 2c 20 26 FileTime( &lc, &
0cf0: 66 74 20 29 20 29 0a 09 09 7b 0a 09 09 09 48 41 ft ) )...{....HA
0d00: 4e 44 4c 45 20 68 61 6e 20 3d 20 43 72 65 61 74 NDLE han = Creat
0d10: 65 46 69 6c 65 41 28 20 74 6f 53 74 72 69 6e 67 eFileA( toString
0d20: 7a 28 66 6e 61 6d 65 29 2c 0a 09 09 09 09 09 09 z(fname),.......
0d30: 09 09 09 20 20 47 45 4e 45 52 49 43 5f 52 45 41 ... GENERIC_REA
0d40: 44 20 7c 20 47 45 4e 45 52 49 43 5f 57 52 49 54 D | GENERIC_WRIT
0d50: 45 2c 0a 09 09 09 09 09 09 09 09 09 20 20 46 49 E,.......... FI
0d60: 4c 45 5f 53 48 41 52 45 5f 52 45 41 44 2c 6e 75 LE_SHARE_READ,nu
0d70: 6c 6c 2c 0a 09 09 09 09 09 09 09 09 09 20 20 4f ll,.......... O
0d80: 50 45 4e 5f 45 58 49 53 54 49 4e 47 2c 0a 09 09 PEN_EXISTING,...
0d90: 09 09 09 09 09 09 09 20 20 46 49 4c 45 5f 41 54 ....... FILE_AT
0da0: 54 52 49 42 55 54 45 5f 4e 4f 52 4d 41 4c 2c 0a TRIBUTE_NORMAL,.
0db0: 09 09 09 09 09 09 09 09 09 20 20 6e 75 6c 6c 20 ......... null
0dc0: 29 3b 0a 09 09 09 69 66 28 20 68 61 6e 3d 3d 49 );....if( han==I
0dd0: 4e 56 41 4c 49 44 5f 48 41 4e 44 4c 45 5f 56 41 NVALID_HANDLE_VA
0de0: 4c 55 45 20 29 0a 09 09 09 09 72 65 74 75 72 6e LUE ).....return
0df0: 3b 0a 0a 09 09 09 53 65 74 46 69 6c 65 54 69 6d ;.....SetFileTim
0e00: 65 28 20 68 61 6e 2c 26 66 74 2c 6e 75 6c 6c 2c e( han,&ft,null,
0e10: 26 66 74 20 29 3b 0a 09 09 09 43 6c 6f 73 65 48 &ft );....CloseH
0e20: 61 6e 64 6c 65 28 20 68 61 6e 20 29 3b 0a 09 09 andle( han );...
0e30: 7d 0a 7d 0a 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d }.}..//---------
0e40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0e50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0e60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0e70: 2d 2d 2d 2d 2d 2d 2d 0a 2f 2f 20 e6 8c 87 e5 ae -------.// .....
0e80: 9a e6 99 82 e5 88 bb 28 44 4f 53 e5 bd a2 e5 bc .......(DOS.....
0e90: 8f 29 e3 82 88 e3 82 8a e6 96 b0 e3 81 97 e3 81 .)..............
0ea0: 84 e3 83 95 e3 82 a1 e3 82 a4 e3 83 ab e3 81 8b ................
0eb0: ef bc 9f 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ....//----------
0ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0ef0: 2d 2d 2d 2d 2d 2d 0a 0a 62 6f 6f 6c 20 6e 65 77 ------..bool new
0f00: 65 72 5f 74 68 61 6e 28 20 75 73 68 6f 72 74 20 er_than( ushort
0f10: 64 31 2c 20 75 73 68 6f 72 74 20 74 31 2c 20 73 d1, ushort t1, s
0f20: 74 72 69 6e 67 20 66 6e 61 6d 65 20 29 0a 7b 0a tring fname ).{.
0f30: 09 48 41 4e 44 4c 45 20 68 61 6e 20 3d 20 43 72 .HANDLE han = Cr
0f40: 65 61 74 65 46 69 6c 65 41 28 20 74 6f 53 74 72 eateFileA( toStr
0f50: 69 6e 67 7a 28 66 6e 61 6d 65 29 2c 0a 09 09 09 ingz(fname),....
0f60: 09 09 09 09 20 20 47 45 4e 45 52 49 43 5f 52 45 .... GENERIC_RE
0f70: 41 44 20 7c 20 47 45 4e 45 52 49 43 5f 57 52 49 AD | GENERIC_WRI
0f80: 54 45 2c 0a 09 09 09 09 09 09 09 20 20 46 49 4c TE,........ FIL
0f90: 45 5f 53 48 41 52 45 5f 52 45 41 44 2c 6e 75 6c E_SHARE_READ,nul
0fa0: 6c 2c 0a 09 09 09 09 09 09 09 20 20 4f 50 45 4e l,........ OPEN
0fb0: 5f 45 58 49 53 54 49 4e 47 2c 0a 09 09 09 09 09 _EXISTING,......
0fc0: 09 09 20 20 46 49 4c 45 5f 41 54 54 52 49 42 55 .. FILE_ATTRIBU
0fd0: 54 45 5f 4e 4f 52 4d 41 4c 2c 0a 09 09 09 09 09 TE_NORMAL,......
0fe0: 09 09 20 20 6e 75 6c 6c 20 29 3b 0a 09 69 66 28 .. null );..if(
0ff0: 20 68 61 6e 3d 3d 49 4e 56 41 4c 49 44 5f 48 41 han==INVALID_HA
1000: 4e 44 4c 45 5f 56 41 4c 55 45 20 29 0a 09 09 72 NDLE_VALUE )...r
1010: 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 09 46 49 eturn false;..FI
1020: 4c 45 54 49 4d 45 20 66 74 3b 0a 09 47 65 74 46 LETIME ft;..GetF
1030: 69 6c 65 54 69 6d 65 28 20 68 61 6e 2c 20 6e 75 ileTime( han, nu
1040: 6c 6c 2c 20 6e 75 6c 6c 2c 20 26 66 74 20 29 3b ll, null, &ft );
1050: 0a 09 43 6c 6f 73 65 48 61 6e 64 6c 65 28 20 68 ..CloseHandle( h
1060: 61 6e 20 29 3b 0a 0a 09 46 49 4c 45 54 49 4d 45 an );...FILETIME
1070: 20 6c 63 3b 0a 09 46 69 6c 65 54 69 6d 65 54 6f lc;..FileTimeTo
1080: 4c 6f 63 61 6c 46 69 6c 65 54 69 6d 65 28 20 26 LocalFileTime( &
1090: 66 74 2c 20 26 6c 63 20 29 3b 0a 09 75 73 68 6f ft, &lc );..usho
10a0: 72 74 20 64 32 2c 20 74 32 3b 0a 09 46 69 6c 65 rt d2, t2;..File
10b0: 54 69 6d 65 54 6f 44 6f 73 44 61 74 65 54 69 6d TimeToDosDateTim
10c0: 65 28 20 26 6c 63 2c 20 26 64 32 2c 20 26 74 32 e( &lc, &d2, &t2
10d0: 20 29 3b 0a 0a 09 69 66 28 20 64 31 20 3c 20 64 );...if( d1 < d
10e0: 32 20 29 0a 09 09 72 65 74 75 72 6e 20 74 72 75 2 )...return tru
10f0: 65 3b 0a 09 69 66 28 20 64 31 20 3d 3d 20 64 32 e;..if( d1 == d2
1100: 20 29 0a 09 09 72 65 74 75 72 6e 20 28 74 31 20 )...return (t1
1110: 3c 20 74 32 29 3b 0a 09 72 65 74 75 72 6e 20 66 < t2);..return f
1120: 61 6c 73 65 3b 0a 7d 0a 0a alse;.}..