Changeset 1710 for trunk/src/kernel32


Ignore:
Timestamp:
Nov 12, 1999, 12:38:45 PM (26 years ago)
Author:
sandervl
Message:

DIBSection changes, EB's file io additions, Jens Weissner's changes to several dlls

Location:
trunk/src/kernel32
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmopen32.cpp

    r690 r1710  
    1 /* $Id: hmopen32.cpp,v 1.9 1999-08-25 14:27:06 sandervl Exp $ */
     1/* $Id: hmopen32.cpp,v 1.10 1999-11-12 11:38:39 sandervl Exp $ */
    22
    33/*
     
    9797           srcprocess, pHMSrcHandle->hHMHandle, destprocess, desthandle));
    9898
     99#if 1
    99100  rc = O32_DuplicateHandle(srcprocess, pHMSrcHandle->hHMHandle, destprocess, desthandle, fdwAccess, fInherit, fdwOptions);
    100101
     
    104105  }
    105106  else  return(O32_GetLastError());
     107#else
     108  rc = OSLibDosDupHandle(pHMSrcHandle->hHMHandle, desthandle);
     109  if(rc == NO_ERROR)
     110  {
     111    pHMHandleData->hHMHandle = *desthandle;
     112    return (NO_ERROR);
     113  }
     114  else
     115  {
     116    dprintfl(("KERNEL32: HandleManager::Open32::DuplicateHandle Error %d\n",rc));
     117    O32_SetLastError(rc);
     118    return(rc);
     119  }
     120#endif
    106121}
    107122
     
    149164     hTemplate = 0;
    150165
     166#if 1
    151167  hFile = O32_CreateFile(lpFileName,
    152168                         pHMHandleData->dwAccess,
     
    164180  else
    165181    return(O32_GetLastError());
     182#else
     183
     184  rc = OSLibDosCreate((char *)lpFileName,
     185                       pHMHandleData->dwAccess,
     186                       pHMHandleData->dwShare,
     187                       //(LPSECURITY_ATTRIBUTES)lpSecurityAttributes,
     188                       NULL,
     189                       pHMHandleData->dwCreation,
     190                       pHMHandleData->dwFlags,
     191                       hTemplate, &hFile);
     192  if(rc)
     193  {
     194    dprintfl(("KERNEL32: HandleManager::Open32::CreateFile Error %d\n",rc));
     195    O32_SetLastError(rc);
     196    return(rc);
     197  }
     198  else
     199  {
     200    pHMHandleData->hHMHandle = hFile;
     201    return (NO_ERROR);
     202  }
     203#endif
    166204}
    167205
     
    186224           pHMHandleData->hHMHandle));
    187225
     226#if 1
    188227  bRC = O32_CloseHandle(pHMHandleData->hHMHandle);
    189228
     
    192231
    193232  return (DWORD)bRC;
     233#else
     234  bRC = OSLibDosClose(pHMHandleData->hHMHandle);
     235  if(bRC)
     236  {
     237    dprintfl(("KERNEL32: HandleManager::Open32::CloseHandle Error %d\n",bRC));
     238    O32_SetLastError(bRC);
     239    return TRUE;      // MUTEX Problem
     240    return FALSE;
     241  }
     242  else
     243  {
     244    return TRUE;
     245  }
     246#endif
    194247}
    195248
     
    227280           lpOverlapped));
    228281
     282#if 1
    229283  bRC = O32_ReadFile(pHMHandleData->hHMHandle,
    230284                     (PVOID)lpBuffer,
     
    237291
    238292  return (DWORD)bRC;
     293#else
     294  rc = OSLibDosRead(pHMHandleData->hHMHandle,
     295                    (PVOID) lpBuffer,
     296                    nNumberOfBytesToRead,
     297                    lpNumberOfBytesRead);
     298  if(rc)
     299  {
     300    dprintfl(("KERNEL32: HandleManager::Open32::ReadFile Error %d\n",rc));
     301    O32_SetLastError(rc);
     302    return FALSE;
     303  }
     304  else
     305  {
     306    return TRUE;
     307  }
     308#endif
    239309}
    240310
     
    272342           lpOverlapped));
    273343
     344#if 1
    274345  bRC = O32_WriteFile(pHMHandleData->hHMHandle,
    275346                      lpBuffer,
     
    282353
    283354  return (DWORD)bRC;
     355#else
     356  rc = OSLibDosWrite(pHMHandleData->hHMHandle,
     357                     (PVOID) lpBuffer,
     358                     nNumberOfBytesToWrite,
     359                     lpNumberOfBytesWritten);
     360  if(rc)
     361  {
     362    dprintfl(("KERNEL32: HandleManager::Open32::WriteFile Error %d\n",rc));
     363    O32_SetLastError(rc);
     364    return FALSE;
     365  }
     366  else
     367  {
     368    return TRUE;
     369  }
     370#endif
    284371}
    285372
     
    303390           pHMHandleData));
    304391
     392#if 1
    305393  return O32_GetFileType(pHMHandleData->hHMHandle);
     394#else
     395  // TODO: FILE_TYPE_DISK
     396  return FILE_TYPE_CHAR;
     397#endif
    306398}
    307399
     
    410502           pSize));
    411503
     504#if 1
    412505  return O32_GetFileSize(pHMHandleData->hHMHandle,
    413506                         pSize);
     507#else
     508  size = OSLibDosGetFileSize(pHMHandleData->hHMHandle);
     509  if(pSize)
     510    *pSize = size;
     511  return size;
     512#endif
    414513}
    415514
     
    442541           dwMoveMethod));
    443542
     543#if 1
    444544  return O32_SetFilePointer(pHMHandleData->hHMHandle,
    445545                            lDistanceToMove,
    446546                            lpDistanceToMoveHigh,
    447547                            dwMoveMethod);
     548#else
     549
     550  if(lpDistanceToMoveHigh)
     551    *lpDistanceToMoveHigh = 0;
     552  pos = OSLibDosSetFilePtr2(pHMHandleData->hHMHandle, lDistanceToMove, dwMoveMethod);
     553  return pos;
     554#endif
    448555}
    449556
  • trunk/src/kernel32/oslibdos.cpp

    r1687 r1710  
    1 /* $Id: oslibdos.cpp,v 1.7 1999-11-10 14:16:01 sandervl Exp $ */
     1/* $Id: oslibdos.cpp,v 1.8 1999-11-12 11:38:40 sandervl Exp $ */
    22
    33/*
     
    180180//******************************************************************************
    181181//******************************************************************************
    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 //******************************************************************************
    193182DWORD OSLibDosRead(DWORD hFile, LPVOID lpBuffer, DWORD size, DWORD *nrBytesRead)
    194183{
     
    290279//******************************************************************************
    291280//******************************************************************************
    292 
    293 #define OSLIB_SEARCHDIR         1
    294 #define OSLIB_SEARCHCURDIR      2
    295 #define OSLIB_SEARCHFILE        3
    296 #define OSLIB_SEARCHENV         4
    297 
    298281DWORD OSLibDosSearchPath(DWORD cmd, char *path, char *name, char *full_name,
    299282                         DWORD length_fullname)
     
    346329//******************************************************************************
    347330//******************************************************************************
     331DWORD 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//******************************************************************************
     449DWORD 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//******************************************************************************
     459DWORD 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//******************************************************************************
     475DWORD OSLibDosResetBuffer(DWORD hFile)
     476{
     477  return DosResetBuffer(hFile);
     478}
     479//******************************************************************************
     480//******************************************************************************
     481DWORD OSLibDosDupHandle(DWORD hFile, DWORD *hNew)
     482{
     483  *hNew = -1;
     484  return DosDupHandle(hFile, hNew);
     485}
     486//******************************************************************************
     487//******************************************************************************
  • trunk/src/kernel32/oslibdos.h

    r1628 r1710  
    1 /* $Id: oslibdos.h,v 1.6 1999-11-08 13:43:12 sandervl Exp $ */
     1/* $Id: oslibdos.h,v 1.7 1999-11-12 11:38:40 sandervl Exp $ */
    22
    33/*
     
    8080DWORD OSLibDosSearchPath(DWORD cmd, char *path, char *name, char *full_name, DWORD length_fullname);
    8181
     82
     83DWORD OSLibDosCreate(CHAR *lpFileName,
     84                     DWORD dwAccess,
     85                     DWORD dwShare,
     86                     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
     87                     DWORD dwCreation,
     88                     DWORD dwFlags,
     89                     HANDLE hTemplate,
     90                     DWORD *dwFile);
     91
     92DWORD OSLibDosResetBuffer(DWORD hFile);
     93DWORD OSLibDosDupHandle(DWORD hFile, DWORD *hNew);
     94DWORD OSLibDosSetFilePtr2(DWORD hFile, DWORD offset, DWORD method);
     95
    8296#endif
Note: See TracChangeset for help on using the changeset viewer.