ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/oup/current/Global/RawList.pas
(Generate patch)

Comparing oup/current/Global/RawList.pas (file contents):
Revision 146 by alloc, Sun Apr 1 15:40:16 2007 UTC vs.
Revision 147 by alloc, Sun Apr 1 16:15:47 2007 UTC

# Line 141 | Line 141 | var
141    baselink, lastlink: Integer;
142    links: Integer;
143    Data:  TStream;
144 +  read:  Integer;
145 +  char:  Byte;
146 +  foundzeros: Byte;
147   begin
148 +  SetLength(Result, 0);
149 +
150    ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $18, 4, @baselink);
151    ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $1C, 4, @links);
152    if links > 0 then
153    begin
154      ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $20 + (links - 1) * 4, 4, @lastlink);
150 //    SetLength(Data, lastlink + 1024);
155      Data := nil;
156      TAccess_OniArchive(ConManager.Connection[ConnectionID]).LoadRawOffset(
157            False, baselink, lastlink + 1024, Data);
158 < //    TOniDataDat(connection).LoadRawOffset(False, baselink, lastlink + 1024, Data);
159 <    //      connection.LoadRawFile(fileid,$1C,baselink,lastlink+1024,False,@data[0]);
160 <    raise ENotImplemented.Create('RawList.SUBT');
161 <  end;
162 < {
159 <    k := 0;
160 <    for j := 0 to 1024 do
161 <    begin
162 <      if (Data[lastlink + j] = $00) or (j = 1024) then
158 >
159 >    foundzeros := 0;
160 >    repeat
161 >      read := Data.Read(char, 1);
162 >      if (read > 0) and (char = 0) then
163        begin
164 <        if j < 1024 then
165 <        begin
166 <          if k = 0 then
167 <          begin
168 <            k := 1;
169 <          end
170 <          else
171 <          begin
172 <            SetLength(Result, 1);
173 <            Result[0].src_offset := $18;
174 <            Result[0].raw_addr   := baselink;
175 <            Result[0].raw_size   := lastlink + j;
176 <            Break;
177 <          end;
178 <        end;
164 >        Inc(foundzeros);
165        end;
166 +    until (read = 0) or (foundzeros = 2);
167 +
168 +    if foundzeros = 2 then
169 +    begin
170 +      SetLength(Result, 1);
171 +      Result[0].SrcID     := FileID;
172 +      Result[0].SrcOffset := $18;
173 +      Result[0].RawAddr   := baselink;
174 +      Result[0].RawSize   := Data.Position;
175 +      Result[0].LocSep    := False;
176      end;
177    end;
182 }
178   end;
179  
180  

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)