| 511 | |
| 512 | |
| 513 | int64 File::Tell() |
| 514 | { |
| 515 | if (hFile==FILE_BAD_HANDLE) |
| 516 | if (AllowExceptions) |
| 517 | ErrHandler.SeekError(FileName); |
| 518 | else |
| 519 | return -1; |
| 520 | #ifdef _WIN_ALL |
| 521 | LONG HighDist=0; |
| 522 | uint LowDist=SetFilePointer(hFile,0,&HighDist,FILE_CURRENT); |
| 523 | if (LowDist==0xffffffff && GetLastError()!=NO_ERROR) |
| 524 | if (AllowExceptions) |
| 525 | ErrHandler.SeekError(FileName); |
| 526 | else |
| 527 | return -1; |
| 528 | return INT32TO64(HighDist,LowDist); |
| 529 | #else |
| 530 | #ifdef FILE_USE_OPEN |
| 531 | return lseek(hFile,0,SEEK_CUR); |
| 532 | #elif defined(_LARGEFILE_SOURCE) && !defined(_OSF_SOURCE) |
| 533 | return ftello(hFile); |
| 534 | #else |
| 535 | return ftell(hFile); |
| 536 | #endif |
| 537 | #endif |
| 538 | } |
| 539 | |
| 540 | |
| 541 | void File::Prealloc(int64 Size) |