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

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: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//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.