Artifact 7b5e9e59cf9067eee89eb035620f26342eb958e1:
0000: 2f 2f 2d 2d 2d 20 4b 2e 49 2e 4c 49 42 20 2d 2d //--- K.I.LIB --
0010: 2d 0d 0a 2f 2f 20 6b 6c 5f 66 69 6c 65 2e 63 70 -..// kl_file.cp
0020: 70 20 3a 20 66 69 6c 65 20 6f 70 65 72 61 74 69 p : file operati
0030: 6f 6e 73 0d 0a 0d 0a 23 69 6e 63 6c 75 64 65 20 ons....#include
0040: 22 73 74 64 61 66 78 2e 68 22 0d 0a 23 69 6e 63 "stdafx.h"..#inc
0050: 6c 75 64 65 20 22 6b 69 6c 69 62 2e 68 22 0d 0a lude "kilib.h"..
0060: 0d 0a 2f 2f 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 20 ---------------
0080: 73 74 61 74 69 63 20 2d 2d 2d 2d 2d 2d 2d 2d 2d static ---------
0090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00a0: 2d 2f 2f 0d 0a 0d 0a 75 6e 73 69 67 6e 65 64 20 -//....unsigned
00b0: 6c 6f 6e 67 20 6b 69 46 69 6c 65 3a 3a 67 65 74 long kiFile::get
00c0: 53 69 7a 65 28 20 63 6f 6e 73 74 20 63 68 61 72 Size( const char
00d0: 2a 20 66 6e 61 6d 65 2c 20 75 6e 73 69 67 6e 65 * fname, unsigne
00e0: 64 20 6c 6f 6e 67 20 65 72 72 20 29 0d 0a 7b 0d d long err )..{.
00f0: 0a 09 48 41 4e 44 4c 45 20 68 20 3d 20 3a 3a 43 ..HANDLE h = ::C
0100: 72 65 61 74 65 46 69 6c 65 28 20 66 6e 61 6d 65 reateFile( fname
0110: 2c 0d 0a 09 09 09 09 47 45 4e 45 52 49 43 5f 52 ,......GENERIC_R
0120: 45 41 44 2c 20 46 49 4c 45 5f 53 48 41 52 45 5f EAD, FILE_SHARE_
0130: 57 52 49 54 45 7c 46 49 4c 45 5f 53 48 41 52 45 WRITE|FILE_SHARE
0140: 5f 52 45 41 44 2c 0d 0a 09 09 09 09 4e 55 4c 4c _READ,......NULL
0150: 2c 20 4f 50 45 4e 5f 45 58 49 53 54 49 4e 47 2c , OPEN_EXISTING,
0160: 20 46 49 4c 45 5f 41 54 54 52 49 42 55 54 45 5f FILE_ATTRIBUTE_
0170: 4e 4f 52 4d 41 4c 7c 46 49 4c 45 5f 46 4c 41 47 NORMAL|FILE_FLAG
0180: 5f 53 45 51 55 45 4e 54 49 41 4c 5f 53 43 41 4e _SEQUENTIAL_SCAN
0190: 2c 20 4e 55 4c 4c 20 29 3b 0d 0a 09 69 66 28 20 , NULL );...if(
01a0: 68 3d 3d 49 4e 56 41 4c 49 44 5f 48 41 4e 44 4c h==INVALID_HANDL
01b0: 45 5f 56 41 4c 55 45 20 29 0d 0a 09 09 72 65 74 E_VALUE )....ret
01c0: 75 72 6e 20 65 72 72 3b 0d 0a 0d 0a 09 75 6e 73 urn err;.....uns
01d0: 69 67 6e 65 64 20 6c 6f 6e 67 20 61 6e 73 20 3d igned long ans =
01e0: 20 3a 3a 47 65 74 46 69 6c 65 53 69 7a 65 28 20 ::GetFileSize(
01f0: 68 2c 20 4e 55 4c 4c 20 29 3b 0d 0a 09 3a 3a 43 h, NULL );...::C
0200: 6c 6f 73 65 48 61 6e 64 6c 65 28 20 68 20 29 3b loseHandle( h );
0210: 0d 0a 0d 0a 09 72 65 74 75 72 6e 20 61 6e 73 3d .....return ans=
0220: 3d 30 78 66 66 66 66 66 66 66 66 20 3f 20 65 72 =0xffffffff ? er
0230: 72 20 3a 20 61 6e 73 3b 0d 0a 7d 0d 0a 0d 0a 2f r : ans;..}..../
0240: 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d /---------------
0250: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 8c 8b 82 ------------ ...
0260: f1 82 c5 8a 4a 82 a2 82 c4 20 2d 2d 2d 2d 2d 2d ....J.... ------
0270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0280: 2d 2d 2d 2d 2f 2f 0d 0a 0d 0a 0d 0a 62 6f 6f 6c ----//......bool
0290: 20 6b 69 46 69 6c 65 3a 3a 6f 70 65 6e 28 20 63 kiFile::open( c
02a0: 6f 6e 73 74 20 63 68 61 72 2a 20 66 69 6c 65 6e onst char* filen
02b0: 61 6d 65 2c 20 62 6f 6f 6c 20 72 65 61 64 2c 20 ame, bool read,
02c0: 62 6f 6f 6c 20 63 72 65 61 74 65 20 29 0d 0a 7b bool create )..{
02d0: 0d 0a 09 63 6c 6f 73 65 28 29 3b 0d 0a 0d 0a 09 ...close();.....
02e0: 69 66 28 20 6d 5f 62 52 65 61 64 4d 6f 64 65 20 if( m_bReadMode
02f0: 3d 20 72 65 61 64 20 29 0d 0a 09 09 6d 5f 68 46 = read )....m_hF
0300: 69 6c 65 20 3d 20 3a 3a 43 72 65 61 74 65 46 69 ile = ::CreateFi
0310: 6c 65 28 20 66 69 6c 65 6e 61 6d 65 2c 0d 0a 09 le( filename,...
0320: 09 09 09 47 45 4e 45 52 49 43 5f 52 45 41 44 2c ...GENERIC_READ,
0330: 20 46 49 4c 45 5f 53 48 41 52 45 5f 52 45 41 44 FILE_SHARE_READ
0340: 2c 20 4e 55 4c 4c 2c 20 4f 50 45 4e 5f 45 58 49 , NULL, OPEN_EXI
0350: 53 54 49 4e 47 2c 0d 0a 09 09 09 09 46 49 4c 45 STING,......FILE
0360: 5f 41 54 54 52 49 42 55 54 45 5f 4e 4f 52 4d 41 _ATTRIBUTE_NORMA
0370: 4c 20 7c 20 46 49 4c 45 5f 46 4c 41 47 5f 53 45 L | FILE_FLAG_SE
0380: 51 55 45 4e 54 49 41 4c 5f 53 43 41 4e 2c 20 4e QUENTIAL_SCAN, N
0390: 55 4c 4c 20 29 3b 0d 0a 09 65 6c 73 65 0d 0a 09 ULL );...else...
03a0: 09 6d 5f 68 46 69 6c 65 20 3d 20 3a 3a 43 72 65 .m_hFile = ::Cre
03b0: 61 74 65 46 69 6c 65 28 20 66 69 6c 65 6e 61 6d ateFile( filenam
03c0: 65 2c 0d 0a 09 09 09 09 47 45 4e 45 52 49 43 5f e,......GENERIC_
03d0: 57 52 49 54 45 2c 20 46 49 4c 45 5f 53 48 41 52 WRITE, FILE_SHAR
03e0: 45 5f 52 45 41 44 2c 20 4e 55 4c 4c 2c 0d 0a 09 E_READ, NULL,...
03f0: 09 09 09 63 72 65 61 74 65 20 3f 20 43 52 45 41 ...create ? CREA
0400: 54 45 5f 41 4c 57 41 59 53 20 3a 20 4f 50 45 4e TE_ALWAYS : OPEN
0410: 5f 45 58 49 53 54 49 4e 47 2c 0d 0a 09 09 09 09 _EXISTING,......
0420: 46 49 4c 45 5f 41 54 54 52 49 42 55 54 45 5f 4e FILE_ATTRIBUTE_N
0430: 4f 52 4d 41 4c 20 7c 20 46 49 4c 45 5f 46 4c 41 ORMAL | FILE_FLA
0440: 47 5f 53 45 51 55 45 4e 54 49 41 4c 5f 53 43 41 G_SEQUENTIAL_SCA
0450: 4e 2c 20 4e 55 4c 4c 20 29 3b 0d 0a 09 69 66 28 N, NULL );...if(
0460: 20 6d 5f 68 46 69 6c 65 20 3d 3d 20 49 4e 56 41 m_hFile == INVA
0470: 4c 49 44 5f 48 41 4e 44 4c 45 5f 56 41 4c 55 45 LID_HANDLE_VALUE
0480: 20 29 0d 0a 09 09 72 65 74 75 72 6e 20 66 61 6c )....return fal
0490: 73 65 3b 0d 0a 0d 0a 09 6d 5f 6e 42 75 66 50 6f se;.....m_nBufPo
04a0: 73 20 3d 20 30 3b 0d 0a 09 69 66 28 20 6d 5f 62 s = 0;...if( m_b
04b0: 52 65 61 64 4d 6f 64 65 20 29 0d 0a 09 09 66 6c ReadMode )....fl
04c0: 75 73 68 28 29 3b 0d 0a 0d 0a 09 72 65 74 75 72 ush();.....retur
04d0: 6e 20 74 72 75 65 3b 0d 0a 7d 0d 0a 0d 0a 76 6f n true;..}....vo
04e0: 69 64 20 6b 69 46 69 6c 65 3a 3a 63 6c 6f 73 65 id kiFile::close
04f0: 28 29 0d 0a 7b 0d 0a 09 69 66 28 20 6d 5f 68 46 ()..{...if( m_hF
0500: 69 6c 65 20 21 3d 20 49 4e 56 41 4c 49 44 5f 48 ile != INVALID_H
0510: 41 4e 44 4c 45 5f 56 41 4c 55 45 20 29 0d 0a 09 ANDLE_VALUE )...
0520: 7b 0d 0a 09 09 69 66 28 20 21 6d 5f 62 52 65 61 {....if( !m_bRea
0530: 64 4d 6f 64 65 20 29 0d 0a 09 09 09 66 6c 75 73 dMode ).....flus
0540: 68 28 29 3b 0d 0a 0d 0a 09 09 3a 3a 43 6c 6f 73 h();......::Clos
0550: 65 48 61 6e 64 6c 65 28 20 6d 5f 68 46 69 6c 65 eHandle( m_hFile
0560: 20 29 3b 0d 0a 09 09 6d 5f 68 46 69 6c 65 20 3d );....m_hFile =
0570: 20 49 4e 56 41 4c 49 44 5f 48 41 4e 44 4c 45 5f INVALID_HANDLE_
0580: 56 41 4c 55 45 3b 0d 0a 09 7d 0d 0a 7d 0d 0a 0d VALUE;...}..}...
0590: 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...//-----------
05a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 ---------------
05b0: 93 c7 82 dd 8f 91 82 ab 20 2d 2d 2d 2d 2d 2d 2d ........ -------
05c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05d0: 2d 2d 2d 2d 2d 2f 2f 0d 0a 0d 0a 0d 0a 75 6e 73 -----//......uns
05e0: 69 67 6e 65 64 20 6c 6f 6e 67 20 6b 69 46 69 6c igned long kiFil
05f0: 65 3a 3a 72 65 61 64 28 20 75 6e 73 69 67 6e 65 e::read( unsigne
0600: 64 20 63 68 61 72 2a 20 62 75 66 2c 20 75 6e 73 d char* buf, uns
0610: 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 65 6e 20 29 igned long len )
0620: 0d 0a 7b 0d 0a 09 75 6e 73 69 67 6e 65 64 20 6c ..{...unsigned l
0630: 6f 6e 67 20 61 6e 73 20 3d 20 30 3b 0d 0a 09 69 ong ans = 0;...i
0640: 66 28 20 6d 5f 6e 42 75 66 53 69 7a 65 21 3d 30 f( m_nBufSize!=0
0650: 20 26 26 20 6d 5f 68 46 69 6c 65 21 3d 49 4e 56 && m_hFile!=INV
0660: 41 4c 49 44 5f 48 41 4e 44 4c 45 5f 56 41 4c 55 ALID_HANDLE_VALU
0670: 45 20 26 26 20 6d 5f 62 52 65 61 64 4d 6f 64 65 E && m_bReadMode
0680: 20 29 0d 0a 09 7b 0d 0a 09 09 77 68 69 6c 65 28 )...{....while(
0690: 20 28 6d 5f 6e 42 75 66 53 69 7a 65 2d 6d 5f 6e (m_nBufSize-m_n
06a0: 42 75 66 50 6f 73 29 20 3c 3d 20 6c 65 6e 20 29 BufPos) <= len )
06b0: 0d 0a 09 09 7b 0d 0a 09 09 09 61 6e 73 20 2b 3d ....{.....ans +=
06c0: 20 28 6d 5f 6e 42 75 66 53 69 7a 65 2d 6d 5f 6e (m_nBufSize-m_n
06d0: 42 75 66 50 6f 73 29 3b 0d 0a 09 09 09 6b 69 5f BufPos);.....ki_
06e0: 6d 65 6d 63 70 79 28 20 62 75 66 2c 20 6d 5f 70 memcpy( buf, m_p
06f0: 42 75 66 2b 6d 5f 6e 42 75 66 50 6f 73 2c 20 6d Buf+m_nBufPos, m
0700: 5f 6e 42 75 66 53 69 7a 65 2d 6d 5f 6e 42 75 66 _nBufSize-m_nBuf
0710: 50 6f 73 20 29 3b 0d 0a 09 09 09 6c 65 6e 20 2d Pos );.....len -
0720: 3d 20 28 6d 5f 6e 42 75 66 53 69 7a 65 2d 6d 5f = (m_nBufSize-m_
0730: 6e 42 75 66 50 6f 73 29 3b 0d 0a 09 09 09 62 75 nBufPos);.....bu
0740: 66 20 2b 3d 20 28 6d 5f 6e 42 75 66 53 69 7a 65 f += (m_nBufSize
0750: 2d 6d 5f 6e 42 75 66 50 6f 73 29 3b 0d 0a 0d 0a -m_nBufPos);....
0760: 09 09 09 66 6c 75 73 68 28 29 3b 0d 0a 09 09 09 ...flush();.....
0770: 69 66 28 20 6d 5f 6e 42 75 66 53 69 7a 65 20 3d if( m_nBufSize =
0780: 3d 20 30 20 29 0d 0a 09 09 09 09 72 65 74 75 72 = 0 )......retur
0790: 6e 20 61 6e 73 3b 0d 0a 09 09 7d 0d 0a 09 09 61 n ans;....}....a
07a0: 6e 73 20 2b 3d 20 6c 65 6e 3b 0d 0a 09 09 6b 69 ns += len;....ki
07b0: 5f 6d 65 6d 63 70 79 28 20 62 75 66 2c 20 6d 5f _memcpy( buf, m_
07c0: 70 42 75 66 2b 6d 5f 6e 42 75 66 50 6f 73 2c 20 pBuf+m_nBufPos,
07d0: 6c 65 6e 20 29 3b 0d 0a 09 09 6d 5f 6e 42 75 66 len );....m_nBuf
07e0: 50 6f 73 20 2b 3d 20 6c 65 6e 3b 0d 0a 09 7d 0d Pos += len;...}.
07f0: 0a 09 72 65 74 75 72 6e 20 61 6e 73 3b 0d 0a 7d ..return ans;..}
0800: 0d 0a 0d 0a 76 6f 69 64 20 6b 69 46 69 6c 65 3a ....void kiFile:
0810: 3a 77 72 69 74 65 28 20 63 6f 6e 73 74 20 76 6f :write( const vo
0820: 69 64 2a 20 62 75 66 2c 20 75 6e 73 69 67 6e 65 id* buf, unsigne
0830: 64 20 6c 6f 6e 67 20 6c 65 6e 20 29 0d 0a 7b 0d d long len )..{.
0840: 0a 09 69 66 28 20 6d 5f 68 46 69 6c 65 3d 3d 49 ..if( m_hFile==I
0850: 4e 56 41 4c 49 44 5f 48 41 4e 44 4c 45 5f 56 41 NVALID_HANDLE_VA
0860: 4c 55 45 20 7c 7c 20 6d 5f 62 52 65 61 64 4d 6f LUE || m_bReadMo
0870: 64 65 20 29 0d 0a 09 09 72 65 74 75 72 6e 3b 0d de )....return;.
0880: 0a 09 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 ..const unsigned
0890: 20 63 68 61 72 2a 20 75 62 75 66 20 3d 20 28 63 char* ubuf = (c
08a0: 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 63 68 onst unsigned ch
08b0: 61 72 2a 29 62 75 66 3b 0d 0a 0d 0a 09 77 68 69 ar*)buf;.....whi
08c0: 6c 65 28 20 28 6b 69 66 69 6c 65 5f 62 75 66 73 le( (kifile_bufs
08d0: 69 7a 65 2d 6d 5f 6e 42 75 66 50 6f 73 29 20 3c ize-m_nBufPos) <
08e0: 3d 20 6c 65 6e 20 29 0d 0a 09 7b 0d 0a 09 09 6b = len )...{....k
08f0: 69 5f 6d 65 6d 63 70 79 28 20 6d 5f 70 42 75 66 i_memcpy( m_pBuf
0900: 2b 6d 5f 6e 42 75 66 50 6f 73 2c 20 62 75 66 2c +m_nBufPos, buf,
0910: 20 28 6b 69 66 69 6c 65 5f 62 75 66 73 69 7a 65 (kifile_bufsize
0920: 2d 6d 5f 6e 42 75 66 50 6f 73 29 20 29 3b 0d 0a -m_nBufPos) );..
0930: 09 09 6c 65 6e 20 2d 3d 20 28 6b 69 66 69 6c 65 ..len -= (kifile
0940: 5f 62 75 66 73 69 7a 65 2d 6d 5f 6e 42 75 66 50 _bufsize-m_nBufP
0950: 6f 73 29 3b 0d 0a 09 09 75 62 75 66 20 2b 3d 20 os);....ubuf +=
0960: 28 6b 69 66 69 6c 65 5f 62 75 66 73 69 7a 65 2d (kifile_bufsize-
0970: 6d 5f 6e 42 75 66 50 6f 73 29 3b 0d 0a 09 09 6d m_nBufPos);....m
0980: 5f 6e 42 75 66 50 6f 73 20 3d 20 6b 69 66 69 6c _nBufPos = kifil
0990: 65 5f 62 75 66 73 69 7a 65 3b 0d 0a 09 09 66 6c e_bufsize;....fl
09a0: 75 73 68 28 29 3b 0d 0a 09 7d 0d 0a 09 6b 69 5f ush();...}...ki_
09b0: 6d 65 6d 63 70 79 28 20 6d 5f 70 42 75 66 2b 6d memcpy( m_pBuf+m
09c0: 5f 6e 42 75 66 50 6f 73 2c 20 75 62 75 66 2c 20 _nBufPos, ubuf,
09d0: 6c 65 6e 20 29 3b 0d 0a 09 6d 5f 6e 42 75 66 50 len );...m_nBufP
09e0: 6f 73 20 2b 3d 20 6c 65 6e 3b 0d 0a 7d 0d 0a 0d os += len;..}...
09f0: 0a 23 75 6e 64 65 66 20 70 75 74 63 0d 0a 76 6f .#undef putc..vo
0a00: 69 64 20 6b 69 46 69 6c 65 3a 3a 70 75 74 63 28 id kiFile::putc(
0a10: 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 63 unsigned char c
0a20: 20 29 0d 0a 7b 0d 0a 09 69 66 28 20 6d 5f 68 46 )..{...if( m_hF
0a30: 69 6c 65 3d 3d 49 4e 56 41 4c 49 44 5f 48 41 4e ile==INVALID_HAN
0a40: 44 4c 45 5f 56 41 4c 55 45 20 7c 7c 20 6d 5f 62 DLE_VALUE || m_b
0a50: 52 65 61 64 4d 6f 64 65 20 29 0d 0a 09 09 72 65 ReadMode )....re
0a60: 74 75 72 6e 3b 0d 0a 09 69 66 28 20 28 6b 69 66 turn;...if( (kif
0a70: 69 6c 65 5f 62 75 66 73 69 7a 65 2d 6d 5f 6e 42 ile_bufsize-m_nB
0a80: 75 66 50 6f 73 29 20 3c 3d 20 31 20 29 0d 0a 09 ufPos) <= 1 )...
0a90: 09 66 6c 75 73 68 28 29 3b 0d 0a 09 6d 5f 70 42 .flush();...m_pB
0aa0: 75 66 5b 20 6d 5f 6e 42 75 66 50 6f 73 2b 2b 20 uf[ m_nBufPos++
0ab0: 5d 20 3d 20 63 3b 0d 0a 7d 0d 0a 0d 0a 23 75 6e ] = c;..}....#un
0ac0: 64 65 66 20 67 65 74 63 0d 0a 69 6e 74 20 6b 69 def getc..int ki
0ad0: 46 69 6c 65 3a 3a 67 65 74 63 28 29 0d 0a 7b 0d File::getc()..{.
0ae0: 0a 09 69 66 28 20 6d 5f 6e 42 75 66 53 69 7a 65 ..if( m_nBufSize
0af0: 3d 3d 30 20 7c 7c 20 6d 5f 68 46 69 6c 65 3d 3d ==0 || m_hFile==
0b00: 49 4e 56 41 4c 49 44 5f 48 41 4e 44 4c 45 5f 56 INVALID_HANDLE_V
0b10: 41 4c 55 45 20 7c 7c 20 21 6d 5f 62 52 65 61 64 ALUE || !m_bRead
0b20: 4d 6f 64 65 20 29 0d 0a 09 09 72 65 74 75 72 6e Mode )....return
0b30: 20 2d 31 3b 0d 0a 0d 0a 09 69 66 28 20 30 3d 3d -1;.....if( 0==
0b40: 28 6d 5f 6e 42 75 66 53 69 7a 65 2d 6d 5f 6e 42 (m_nBufSize-m_nB
0b50: 75 66 50 6f 73 29 20 29 0d 0a 09 7b 0d 0a 09 09 ufPos) )...{....
0b60: 66 6c 75 73 68 28 29 3b 0d 0a 09 09 69 66 28 20 flush();....if(
0b70: 6d 5f 6e 42 75 66 53 69 7a 65 3d 3d 30 20 29 0d m_nBufSize==0 ).
0b80: 0a 09 09 09 72 65 74 75 72 6e 20 2d 31 3b 0d 0a ....return -1;..
0b90: 09 7d 0d 0a 09 69 66 28 20 31 3d 3d 28 6d 5f 6e .}...if( 1==(m_n
0ba0: 42 75 66 53 69 7a 65 2d 6d 5f 6e 42 75 66 50 6f BufSize-m_nBufPo
0bb0: 73 29 20 29 0d 0a 09 7b 0d 0a 09 09 69 6e 74 20 s) )...{....int
0bc0: 61 6e 73 20 3d 20 6d 5f 70 42 75 66 5b 20 6d 5f ans = m_pBuf[ m_
0bd0: 6e 42 75 66 50 6f 73 2b 2b 20 5d 3b 0d 0a 09 09 nBufPos++ ];....
0be0: 66 6c 75 73 68 28 29 3b 0d 0a 09 09 72 65 74 75 flush();....retu
0bf0: 72 6e 20 61 6e 73 3b 0d 0a 09 7d 0d 0a 0d 0a 09 rn ans;...}.....
0c00: 72 65 74 75 72 6e 20 6d 5f 70 42 75 66 5b 20 6d return m_pBuf[ m
0c10: 5f 6e 42 75 66 50 6f 73 2b 2b 20 5d 3b 0d 0a 7d _nBufPos++ ];..}
0c20: 0d 0a 0d 0a 76 6f 69 64 20 6b 69 46 69 6c 65 3a ....void kiFile:
0c30: 3a 66 6c 75 73 68 28 29 0d 0a 7b 0d 0a 09 69 66 :flush()..{...if
0c40: 28 20 6d 5f 62 52 65 61 64 4d 6f 64 65 20 29 0d ( m_bReadMode ).
0c50: 0a 09 7b 0d 0a 09 09 3a 3a 52 65 61 64 46 69 6c ..{....::ReadFil
0c60: 65 28 20 6d 5f 68 46 69 6c 65 2c 20 6d 5f 70 42 e( m_hFile, m_pB
0c70: 75 66 2c 20 6b 69 66 69 6c 65 5f 62 75 66 73 69 uf, kifile_bufsi
0c80: 7a 65 2c 20 26 6d 5f 6e 42 75 66 53 69 7a 65 2c ze, &m_nBufSize,
0c90: 20 4e 55 4c 4c 20 29 3b 0d 0a 09 09 6d 5f 6e 42 NULL );....m_nB
0ca0: 75 66 50 6f 73 20 3d 20 30 3b 0d 0a 09 7d 0d 0a ufPos = 0;...}..
0cb0: 09 65 6c 73 65 0d 0a 09 7b 0d 0a 09 09 3a 3a 57 .else...{....::W
0cc0: 72 69 74 65 46 69 6c 65 28 20 6d 5f 68 46 69 6c riteFile( m_hFil
0cd0: 65 2c 20 6d 5f 70 42 75 66 2c 20 6d 5f 6e 42 75 e, m_pBuf, m_nBu
0ce0: 66 50 6f 73 2c 20 26 6d 5f 6e 42 75 66 53 69 7a fPos, &m_nBufSiz
0cf0: 65 2c 20 4e 55 4c 4c 20 29 3b 0d 0a 09 09 6d 5f e, NULL );....m_
0d00: 6e 42 75 66 53 69 7a 65 20 3d 20 6d 5f 6e 42 75 nBufSize = m_nBu
0d10: 66 50 6f 73 20 3d 20 30 3b 0d 0a 09 7d 0d 0a 7d fPos = 0;...}..}
0d20: 0d 0a ..