Changeset 1710 for trunk/src/kernel32/oslibdos.cpp
- Timestamp:
- Nov 12, 1999, 12:38:45 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/oslibdos.cpp
r1687 r1710 1 /* $Id: oslibdos.cpp,v 1. 7 1999-11-10 14:16:01sandervl Exp $ */1 /* $Id: oslibdos.cpp,v 1.8 1999-11-12 11:38:40 sandervl Exp $ */ 2 2 3 3 /* … … 180 180 //****************************************************************************** 181 181 //****************************************************************************** 182 DWORD OSLibDosGetFileSize(DWORD hFile)183 {184 ULONG ulLocal, filesize = 0;185 186 DosSetFilePtr(hFile, 0L, FILE_BEGIN, &ulLocal);187 DosSetFilePtr(hFile, 0L, FILE_END, &filesize);188 DosSetFilePtr(hFile, 0L, FILE_BEGIN, &ulLocal);189 return filesize;190 }191 //******************************************************************************192 //******************************************************************************193 182 DWORD OSLibDosRead(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesRead) 194 183 { … … 290 279 //****************************************************************************** 291 280 //****************************************************************************** 292 293 #define OSLIB_SEARCHDIR 1294 #define OSLIB_SEARCHCURDIR 2295 #define OSLIB_SEARCHFILE 3296 #define OSLIB_SEARCHENV 4297 298 281 DWORD OSLibDosSearchPath(DWORD cmd, char *path, char *name, char *full_name, 299 282 DWORD length_fullname) … … 346 329 //****************************************************************************** 347 330 //****************************************************************************** 331 DWORD OSLibDosCreate(CHAR *lpFileName, 332 DWORD dwAccess, 333 DWORD dwShare, 334 LPSECURITY_ATTRIBUTES lpSecurityAttributes, 335 DWORD dwCreation, 336 DWORD dwFlags, 337 HANDLE hTemplate, 338 DWORD *dwFile) 339 { 340 APIRET rc; 341 HFILE hFile; 342 ULONG ulAction=0; 343 DWORD os2Attrib=0; 344 DWORD os2Flags = 0; //OPEN_FLAGS_NOINHERIT; 345 DWORD os2Open=0; 346 347 #define GENERIC_READ 0x80000000 348 #define GENERIC_WRITE 0x40000000 349 if(dwAccess == (GENERIC_READ | GENERIC_WRITE)) 350 os2Flags |= OPEN_ACCESS_READWRITE; 351 else if(dwAccess & GENERIC_WRITE) 352 os2Flags |= OPEN_ACCESS_WRITEONLY; 353 else if(dwAccess & GENERIC_READ) 354 os2Flags |= OPEN_ACCESS_READONLY; 355 356 #define FILE_SHARE_READ 0x00000001L 357 #define FILE_SHARE_WRITE 0x00000002L 358 if(dwShare == 0) 359 os2Flags |= OPEN_SHARE_DENYREADWRITE; 360 else if(dwShare == (FILE_SHARE_READ | FILE_SHARE_WRITE)) 361 os2Flags |= OPEN_SHARE_DENYNONE; 362 else if(dwShare & FILE_SHARE_READ) 363 os2Flags |= OPEN_SHARE_DENYWRITE; 364 else if(dwShare & FILE_SHARE_WRITE) 365 os2Flags |= OPEN_SHARE_DENYREAD; 366 367 #define CREATE_NEW 1 368 #define CREATE_ALWAYS 2 369 #define OPEN_EXISTING 3 370 #define OPEN_ALWAYS 4 371 #define TRUNCATE_EXISTING 5 372 if(dwCreation == CREATE_NEW) 373 os2Open = OPEN_ACTION_FAIL_IF_EXISTS | OPEN_ACTION_CREATE_IF_NEW; 374 else if(dwCreation == CREATE_ALWAYS) 375 os2Open = OPEN_ACTION_REPLACE_IF_EXISTS | OPEN_ACTION_CREATE_IF_NEW; 376 else if(dwCreation == OPEN_EXISTING) 377 os2Open = OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_FAIL_IF_NEW; 378 else if(dwCreation == OPEN_ALWAYS) 379 os2Open = OPEN_ACTION_OPEN_IF_EXISTS | OPEN_ACTION_CREATE_IF_NEW; 380 else if(dwCreation == TRUNCATE_EXISTING) 381 os2Open = OPEN_ACTION_REPLACE_IF_EXISTS;// |OPEN_ACTION_FAIL_IF_NEW; 382 383 #define FILE_ATTRIBUTE_READONLY 0x00000001L 384 #define FILE_ATTRIBUTE_HIDDEN 0x00000002L 385 #define FILE_ATTRIBUTE_SYSTEM 0x00000004L 386 #define FILE_ATTRIBUTE_DIRECTORY 0x00000010L 387 #define FILE_ATTRIBUTE_ARCHIVE 0x00000020L 388 #define FILE_ATTRIBUTE_NORMAL 0x00000080L 389 #define FILE_ATTRIBUTE_TEMPORARY 0x00000100L 390 if(dwFlags & FILE_ATTRIBUTE_READONLY) 391 os2Attrib |= FILE_READONLY; 392 if(dwFlags & FILE_ATTRIBUTE_HIDDEN) 393 os2Attrib |= FILE_HIDDEN; 394 if(dwFlags & FILE_ATTRIBUTE_SYSTEM) 395 os2Attrib |= FILE_SYSTEM; 396 if(dwFlags & FILE_ATTRIBUTE_DIRECTORY) 397 os2Attrib |= FILE_DIRECTORY; 398 if(dwFlags & FILE_ATTRIBUTE_ARCHIVE) 399 os2Attrib |= FILE_ARCHIVED; 400 if(dwFlags & FILE_ATTRIBUTE_NORMAL) 401 os2Attrib |= FILE_NORMAL; 402 403 #define FILE_FLAG_WRITE_THROUGH 0x80000000UL 404 #define FILE_FLAG_OVERLAPPED 0x40000000L 405 #define FILE_FLAG_NO_BUFFERING 0x20000000L 406 #define FILE_FLAG_RANDOM_ACCESS 0x10000000L 407 #define FILE_FLAG_SEQUENTIAL_SCAN 0x08000000L 408 #define FILE_FLAG_DELETE_ON_CLOSE 0x04000000L 409 #define FILE_FLAG_BACKUP_SEMANTICS 0x02000000L 410 #define FILE_FLAG_POSIX_SEMANTICS 0x01000000L 411 if(dwFlags & FILE_FLAG_WRITE_THROUGH) 412 os2Flags |= OPEN_FLAGS_WRITE_THROUGH; 413 if(dwFlags & FILE_FLAG_NO_BUFFERING) 414 os2Flags |= OPEN_FLAGS_NO_CACHE; 415 if(dwFlags & FILE_FLAG_RANDOM_ACCESS) 416 os2Flags |= OPEN_FLAGS_RANDOM; 417 if(dwFlags & FILE_FLAG_SEQUENTIAL_SCAN) 418 os2Flags |= OPEN_FLAGS_SEQUENTIAL; 419 420 // TODO: 421 // if(dwFlags & FILE_FLAG_OVERLAPPED) 422 // if(dwFlags & FILE_FLAG_DELETE_ON_CLOSE 423 424 rc = DosOpen(lpFileName, &hFile, &ulAction, 0, 425 os2Attrib, os2Open, os2Flags, 0); 426 427 if(rc) 428 { 429 // TODO: TEST TEST 430 dprintf(("DosOpen Error rc:%d, try without GENERIC_WRITE", rc)); 431 if(dwAccess & GENERIC_WRITE) 432 os2Flags &= ~(OPEN_ACCESS_READWRITE | OPEN_ACCESS_WRITEONLY); 433 rc = DosOpen(lpFileName, &hFile, &ulAction, 0, 434 os2Attrib, os2Open, os2Flags, 0); 435 if(rc) 436 { 437 dprintf(("DosOpen Error rc:%d os2Attrib:%X os2Open:%X os2Flags:%X", 438 rc, os2Attrib, os2Open, os2Flags)); 439 hFile = -1; 440 } 441 } 442 443 *dwFile = hFile; 444 return rc; 445 } 446 //****************************************************************************** 447 //(without changing file pointer) 448 //****************************************************************************** 449 DWORD OSLibDosGetFileSize(DWORD hFile) 450 { 451 FILESTATUS3 fsts3ConfigInfo = {{0}}; 452 ULONG ulBufSize = sizeof(FILESTATUS3); 453 454 DosQueryFileInfo(hFile, FIL_STANDARD, &fsts3ConfigInfo, ulBufSize); 455 return fsts3ConfigInfo.cbFile; 456 } 457 //****************************************************************************** 458 //****************************************************************************** 459 DWORD OSLibDosSetFilePtr2(DWORD hFile, DWORD offset, DWORD method) 460 { 461 DWORD newoffset; 462 APIRET rc; 463 464 465 rc = DosSetFilePtr(hFile, offset, method, &newoffset); 466 if(rc) { 467 dprintf(("DosSetFilePtr Error rc:%d", rc)); 468 return -1; 469 } 470 else return newoffset; 471 } 472 //****************************************************************************** 473 //(FlushBuffer) 474 //****************************************************************************** 475 DWORD OSLibDosResetBuffer(DWORD hFile) 476 { 477 return DosResetBuffer(hFile); 478 } 479 //****************************************************************************** 480 //****************************************************************************** 481 DWORD OSLibDosDupHandle(DWORD hFile, DWORD *hNew) 482 { 483 *hNew = -1; 484 return DosDupHandle(hFile, hNew); 485 } 486 //****************************************************************************** 487 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.