/// <summary> /// raw open /// </summary> /// <returns></returns> public bool ropen() { int i; V8Table t; table_blob_file[] addr; uint maxpartno; string tn; if (rstream != null) { rstream.Seek(0, SeekOrigin.Begin); return(true); } t = file.T; addr = file.addr; maxpartno = file.maxpartno; if (packed == table_file_packed.unknown) { packed = isPacked() ? table_file_packed.yes : table_file_packed.no; } if (packed == table_file_packed.no && stream != null) { rstream = stream; rstream.Seek(0, SeekOrigin.Begin); return(true); } if (maxpartno > 0) { tn = Path.GetTempFileName(); rstream = new FileStream(tn, FileMode.CreateNew); rfname = tn; } else { rstream = new MemoryStream(); } for (i = 0; i <= maxpartno; ++i) { t.ReadBlob(rstream, addr[i].Blob_start, addr[i].Blob_length, false); } rstream.Seek(0, SeekOrigin.Begin); return(true); }
public bool open() { const int MAX_PATH = 260; Stream ts; string tn = ""; char[] tempfile = new char[MAX_PATH]; int i; V8Table t; //table_blob_file addr; // TODO: возможно это должен быть МАССИВ !!!!!!!!!!!!!!!!!!!!!!!! table_blob_file[] addr; // TODO: возможно это должен быть МАССИВ !!!!!!!!!!!!!!!!!!!!!!!! uint maxpartno; if (stream != null) { stream.Seek(0, SeekOrigin.Begin); return(true); } t = file.T; addr = file.addr; maxpartno = file.maxpartno; if (maxpartno > 0) { tn = Path.GetTempFileName(); stream = new FileStream(tn, FileMode.CreateNew); fname = tn; } else { stream = new MemoryStream(); } if (packed == table_file_packed.unknown) { packed = isPacked() ? table_file_packed.yes : table_file_packed.no; } if (rstream != null) { if (packed == table_file_packed.yes) { ts = rstream; } else { stream = rstream; stream.Seek(0, SeekOrigin.Begin); return(true); } } else { if (packed == table_file_packed.yes) { if (maxpartno > 0) { //GetTempFileName(temppath, L"awa", 0, tempfile); //tn = tempfile; //ts = new TFileStream(tn, fmCreate); tn = Path.GetTempFileName(); ts = new FileStream(tn, FileMode.CreateNew); fname = tn; } else { ts = new MemoryStream(); } } else { ts = stream; } for (i = 0; i <= maxpartno; ++i) { t.ReadBlob(ts, addr[i].Blob_start, addr[i].Blob_length, false); } } if (packed == table_file_packed.yes) { ts.Seek(0, SeekOrigin.Begin); MemoryTributary out_stream = new MemoryTributary(); Inflate((MemoryTributary)ts, out out_stream); out_stream.CopyTo(stream); if (rstream is null) { ts.Dispose(); System.IO.File.Delete(tn); } } stream.Seek(0, SeekOrigin.Begin); return(true); }