Changeset 4189 for trunk/src


Ignore:
Timestamp:
Sep 4, 2000, 8:24:43 PM (25 years ago)
Author:
sandervl
Message:

GetDiskFreeSpace(Ex) changes/fixes

Location:
trunk/src/kernel32
Files:
5 edited

Legend:

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

    r4171 r4189  
    1 /* $Id: disk.cpp,v 1.15 2000-09-03 09:32:13 sandervl Exp $ */
     1/* $Id: disk.cpp,v 1.16 2000-09-04 18:24:42 sandervl Exp $ */
    22
    33/*
     
    2121#include "unicode.h"
    2222#include "oslibdos.h"
     23#include "exceptutil.h"
    2324
    2425#define DBG_LOCALLOG  DBG_disk
     
    6162    DWORD dwNumberOfFreeClusters;       // address of number of free clusters
    6263    DWORD dwTotalNumberOfClusters;      // address of total number of clusters
    63     dprintf(("KERNEL32:  OS2GetDiskFreeSpaceA %s, 0x%08X, 0x%08X, 0x%08X, 0x%08X,\n",
     64    dprintf(("KERNEL32:  GetDiskFreeSpaceA %s, 0x%08X, 0x%08X, 0x%08X, 0x%08X,\n",
    6465             arg1!=NULL?arg1:"NULL", arg2,arg3,arg4,arg5));
    65     rc = O32_GetDiskFreeSpace(arg1, &dwSectorsPerCluster, &dwBytesPerSector,
    66                               &dwNumberOfFreeClusters, &dwTotalNumberOfClusters);
     66
     67    rc = OSLibGetDiskFreeSpace((LPSTR)arg1, &dwSectorsPerCluster, &dwBytesPerSector,
     68                               &dwNumberOfFreeClusters, &dwTotalNumberOfClusters);
    6769    if(rc)
    6870    {
     
    8890    dprintf(("KERNEL32:  OS2GetDiskFreeSpaceW\n"));
    8991    astring = UnicodeToAsciiString((LPWSTR)arg1);
    90     rc = O32_GetDiskFreeSpace(astring, arg2, arg3, arg4, arg5);
     92    rc = GetDiskFreeSpaceA(astring, arg2, arg3, arg4, arg5);
    9193    FreeAsciiString(astring);
    9294    return(rc);
     
    148150    DWORD dwTotalNumberOfClusters;      // address of total number of clusters
    149151
    150     rc = O32_GetDiskFreeSpace(lpDirectoryName, &dwSectorsPerCluster, &dwBytesPerSector,
    151                               &dwNumberOfFreeClusters, &dwTotalNumberOfClusters);
     152    rc = GetDiskFreeSpaceA(lpDirectoryName, &dwSectorsPerCluster, &dwBytesPerSector,
     153                           &dwNumberOfFreeClusters, &dwTotalNumberOfClusters);
    152154    if(rc)
    153155    {
    154         //TODO: Fill in high part (overflow possible)!!!!!!
    155156        if(lpFreeBytesAvailableToCaller!=NULL) {
    156                 lpFreeBytesAvailableToCaller->LowPart  = dwNumberOfFreeClusters*dwSectorsPerCluster*dwBytesPerSector;
    157                 lpFreeBytesAvailableToCaller->HighPart = 0;
     157                Mul32x32to64(lpFreeBytesAvailableToCaller, dwNumberOfFreeClusters, (dwSectorsPerCluster*dwBytesPerSector));
     158                dprintf(("lpFreeBytesAvailableToCaller %x%x", lpFreeBytesAvailableToCaller->LowPart, lpFreeBytesAvailableToCaller->HighPart));
    158159        }
    159160        if(lpTotalNumberOfBytes!=NULL) {
    160                 lpTotalNumberOfBytes->LowPart  = dwTotalNumberOfClusters*dwSectorsPerCluster*dwBytesPerSector;
    161                 lpTotalNumberOfBytes->HighPart = 0;
     161                Mul32x32to64(lpTotalNumberOfBytes, dwTotalNumberOfClusters, (dwSectorsPerCluster*dwBytesPerSector));
     162                dprintf(("lpTotalNumberOfBytes %x%x", lpTotalNumberOfBytes->LowPart, lpTotalNumberOfBytes->HighPart));
    162163        }
    163164        if(lpTotalNumberOfFreeBytes!=NULL) {
    164                 lpTotalNumberOfFreeBytes->LowPart  = dwNumberOfFreeClusters*dwSectorsPerCluster*dwBytesPerSector;
    165                 lpTotalNumberOfFreeBytes->HighPart = 0;
     165                memcpy(lpTotalNumberOfFreeBytes, lpFreeBytesAvailableToCaller, sizeof(*lpFreeBytesAvailableToCaller));
     166                dprintf(("lpTotalNumberOfFreeBytes %x%x", lpTotalNumberOfFreeBytes->LowPart, lpTotalNumberOfFreeBytes->HighPart));
    166167        }
    167168    }
  • trunk/src/kernel32/exceptutil.asm

    r4106 r4189  
    1 ; $Id: exceptutil.asm,v 1.9 2000-08-28 18:35:28 sandervl Exp $
     1; $Id: exceptutil.asm,v 1.10 2000-09-04 18:24:42 sandervl Exp $
    22
    33;/*
     
    209209        ret
    210210RestoreOS2FS endp
     211
     212        PUBLIC _Mul32x32to64
     213_Mul32x32to64 proc near
     214        push    ebp
     215        mov     ebp, esp
     216        push    eax
     217        push    edx
     218        push    edi
     219
     220        mov     edi, [ebp+8]    ;64 bits result
     221        mov     eax, [ebp+12]   ;op1
     222        mov     edx, [ebp+16]   ;op2
     223        mul     edx
     224        mov     [edi], eax
     225        mov     [edi+4], edx
     226
     227        pop     edi
     228        pop     edx
     229        pop     eax
     230        pop     ebp
     231        ret
     232_Mul32x32to64 endp
     233
    211234CODE32          ENDS
    212235
  • trunk/src/kernel32/exceptutil.h

    r3483 r4189  
    1 /* $Id: exceptutil.h,v 1.8 2000-05-02 20:53:13 sandervl Exp $ */
     1/* $Id: exceptutil.h,v 1.9 2000-09-04 18:24:42 sandervl Exp $ */
    22
    33/*
     
    4343USHORT getGS();
    4444
     45void CDECL Mul32x32to64(PVOID result, DWORD op1, DWORD op2);
     46
    4547#ifdef __cplusplus
    4648}
  • trunk/src/kernel32/oslibdos.cpp

    r4008 r4189  
    1 /* $Id: oslibdos.cpp,v 1.39 2000-08-14 08:10:16 sandervl Exp $ */
     1/* $Id: oslibdos.cpp,v 1.40 2000-09-04 18:24:42 sandervl Exp $ */
    22/*
    33 * Wrappers for OS/2 Dos* API
     
    19381938//******************************************************************************
    19391939//******************************************************************************
    1940 
    1941 
     1940BOOL OSLibGetDiskFreeSpace(LPSTR lpRootPathName, LPDWORD lpSectorsPerCluster,
     1941                           LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters,
     1942                           LPDWORD lpTotalNumberOfClusters)
     1943{
     1944 ULONG diskNum;
     1945 FSALLOCATE fsAlloc;
     1946 APIRET rc;
     1947
     1948   if(lpRootPathName == 0)
     1949      diskNum = 0;
     1950   else
     1951   if('A' <= *lpRootPathName && *lpRootPathName <= 'Z' )
     1952      diskNum = *lpRootPathName - 'A' + 1;
     1953   else
     1954   if('a' <= *lpRootPathName && *lpRootPathName <= 'z' )
     1955      diskNum = *lpRootPathName - 'a' + 1;
     1956   else
     1957      diskNum = 0;
     1958
     1959   DosError(FERR_DISABLEHARDERR);
     1960   rc = DosQueryFSInfo(diskNum, FSIL_ALLOC, &fsAlloc, sizeof(fsAlloc));
     1961   DosError(FERR_ENABLEHARDERR);
     1962
     1963   if(rc == 0)
     1964   {
     1965        *lpSectorsPerCluster     = fsAlloc.cSectorUnit;
     1966        *lpBytesPerSector        = fsAlloc.cbSector;
     1967        *lpNumberOfFreeClusters  = fsAlloc.cUnitAvail;
     1968        *lpTotalNumberOfClusters = fsAlloc.cUnit;
     1969        SetLastError(ERROR_SUCCESS_W);
     1970        return TRUE;
     1971   }
     1972   SetLastError(error2WinError(rc));
     1973   return FALSE;
     1974}
    19421975//******************************************************************************
    19431976//******************************************************************************
  • trunk/src/kernel32/oslibdos.h

    r3819 r4189  
    1 /* $Id: oslibdos.h,v 1.20 2000-07-12 18:21:45 sandervl Exp $ */
     1/* $Id: oslibdos.h,v 1.21 2000-09-04 18:24:43 sandervl Exp $ */
    22
    33/*
     
    182182DWORD OSLibDosQueryVolumeFS(int drive, LPSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize);
    183183DWORD OSLibDosQueryVolumeSerialAndName(int drive, LPDWORD lpVolumeSerialNumber, LPSTR lpVolumeNameBuffer, DWORD nVolumeNameSize);
     184
     185BOOL OSLibGetDiskFreeSpace(LPSTR lpRootPathName, LPDWORD lpSectorsPerCluster,
     186                           LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters,
     187                           LPDWORD lpTotalNumberOfClusters);
    184188
    185189
Note: See TracChangeset for help on using the changeset viewer.