Changeset 2858 for trunk/kLdr/kLdrRdrFile.c
- Timestamp:
- Nov 6, 2006, 1:23:14 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kLdr/kLdrRdrFile.c
r2857 r2858 232 232 233 233 SetLastError(0); 234 offLow = SetFilePointer(pRdrFile->File, 0, &offHigh, FILE_ BEGIN);234 offLow = SetFilePointer(pRdrFile->File, 0, &offHigh, FILE_CURRENT); 235 235 rc = GetLastError(); 236 236 if (rc) … … 325 325 #ifdef __OS2__ 326 326 ULONG ulNew; 327 APIRET rc = DosSetFilePtr(pRdrFile->File, off, FILE_BEGIN, &ulNew); 327 APIRET rc; 328 329 rc = DosSetFilePtr(pRdrFile->File, off, FILE_BEGIN, &ulNew); 328 330 if (rc) 329 331 { … … 333 335 334 336 #elif defined(__WIN__) 335 LONG offHigh = (LONG)(off >> 32); 336 LONG offLow = SetFilePointer(pRdrFile->File, (LONG)off, &offHigh, FILE_BEGIN); 337 LONG offHigh; 338 LONG offLow; 339 340 offHigh = sizeof(off_t) == 4 ? 0 : (off >> 32); 341 offLow = SetFilePointer(pRdrFile->File, (LONG)off, &offHigh, FILE_BEGIN); 337 342 if ( offLow != (LONG)off 338 && offHigh != (LONG)(off >> 32))343 || offHigh != (LONG)(sizeof(off_t) == 4 ? 0 : (off >> 32))) 339 344 { 340 345 int rc = GetLastError(); … … 405 410 406 411 #elif defined(__WIN__) 412 rc = 0; 407 413 if (!CloseHandle(pRdrFile->File)) 408 414 rc = GetLastError(); … … 433 439 */ 434 440 #ifdef __OS2__ 435 ULONG ulAction = 0; 436 FILESTATUS3 Info; 437 APIRET rc; 438 HFILE File = 0; 439 off_t cb; 441 ULONG ulAction = 0; 442 FILESTATUS3 Info; 443 APIRET rc; 444 HFILE File = 0; 445 off_t cb; 446 char szFilename[CCHMAXPATH]; 440 447 441 448 if ((uintptr_t)pszFilename >= 0x20000000) … … 451 458 if (rc) 452 459 return rc; 460 461 rc = DosQueryPathInfo(pszFilename, FIL_QUERYFULLNAME, szFilename, sizeof(szFilename)); 462 if (rc) 463 { 464 DosClose(File); 465 return rc; 466 } 453 467 454 468 rc = DosQueryFileInfo(File, FIL_STANDARD, &Info, sizeof(Info)); … … 467 481 HANDLE File; 468 482 off_t cb; 483 char szFilename[MAX_PATH]; 469 484 470 485 SecAttr.bInheritHandle = FALSE; … … 475 490 return GetLastError(); 476 491 492 if (!GetFullPathName(pszFilename, sizeof(szFilename), szFilename, NULL)) 493 { 494 rc = GetLastError(); 495 CloseHandle(File); 496 return rc; 497 } 498 477 499 SetLastError(0); 478 500 Low = GetFileSize(File, &High); … … 483 505 return rc; 484 506 } 485 cb = ((off_t)High << 32) | Low; 507 if (sizeof(off_t) == 4) 508 cb = High ? 0x7fffffff : Low; 509 else 510 cb = ((off_t)High << 32) | Low; 486 511 487 512 #else … … 493 518 * Allocate the reader instance. 494 519 */ 495 cchFilename = kLdrHlpStrLen( pszFilename);520 cchFilename = kLdrHlpStrLen(szFilename); 496 521 pRdrFile = (PKLDRRDRFILE)kldrHlpAlloc(sizeof(*pRdrFile) + cchFilename); 497 522 if (!pRdrFile) … … 513 538 * Initialize it and return successfully. 514 539 */ 540 pRdrFile->Core.u32Magic = KLDRRDR_MAGIC; 515 541 pRdrFile->Core.pOps = &g_kLdrRdrFileOps; 516 542 pRdrFile->File = File; 543 pRdrFile->cb = cb; 517 544 pRdrFile->off = 0; 518 kLdrHlpMemCopy(&pRdrFile->szFilename[0], pszFilename, cchFilename + 1);545 kLdrHlpMemCopy(&pRdrFile->szFilename[0], szFilename, cchFilename + 1); 519 546 520 547 *ppRdr = &pRdrFile->Core;
Note:
See TracChangeset
for help on using the changeset viewer.