Re: Directory info?

new topic     » goto parent     » topic index » view thread      » older message » newer message

On Windows:


include machine.e include dll.e include get.e

constant SECTORS_PER_CLUSTER = 1, BYTES_PER_SECTOR = 2, NUMBER_OF_FREE_CLUSTERS = 3, TOTAL_NUMBER_OF_CLUSTERS = 4,

TOTAL = 1, USED = 2, AVAILABLE = 3,

KERNEL32 = open_dll("kernel32.dll"),

xGetDiskFreeSpaceA = define_c_func(KERNEL32, "GetDiskFreeSpaceA", {C_CHAR, C_POINTER, C_POINTER, C_POINTER, C_POINTER}, C_INT)

sequence sDiskSpace integer void

function GetDiskFreeSpaceA(object xPath) sequence sDiskSpace atom aPath atom aSectorsPerCluster, aBytesPerSector, aNumberOfFreeClusters, aTotalNumberOfClusters

sDiskSpace = {0, 0, 0, 0}

if sequence(xPath) then aPath = allocate_string(xPath) else aPath = NULL end if

aSectorsPerCluster = allocate(4) aBytesPerSector = allocate(4) aNumberOfFreeClusters = allocate(4) aTotalNumberOfClusters = allocate(4)

if c_func(xGetDiskFreeSpaceA, {aPath, aSectorsPerCluster, aBytesPerSector, aNumberOfFreeClusters, aTotalNumberOfClusters}) then sDiskSpace[SECTORS_PER_CLUSTER] = peek4s(aSectorsPerCluster) sDiskSpace[BYTES_PER_SECTOR] = peek4s(aBytesPerSector) sDiskSpace[NUMBER_OF_FREE_CLUSTERS] = peek4s(aNumberOfFreeClusters) sDiskSpace[TOTAL_NUMBER_OF_CLUSTERS] = peek4s(aTotalNumberOfClusters) end if

if sequence(xPath) then free(aPath) end if free(aSectorsPerCluster) free(aBytesPerSector) free(aNumberOfFreeClusters) free(aTotalNumberOfClusters)

return sDiskSpace end function

function GetDiskSpaceInBytes(object xPath) sequence sBytes, sTmpBytes sBytes = {0, 0, 0} sTmpBytes = GetDiskFreeSpaceA(xPath) sBytes[TOTAL] = sTmpBytes[BYTES_PER_SECTOR] * sTmpBytes[SECTORS_PER_CLUSTER] * sTmpBytes[TOTAL_NUMBER_OF_CLUSTERS] sBytes[AVAILABLE] = sTmpBytes[BYTES_PER_SECTOR] * sTmpBytes[SECTORS_PER_CLUSTER] * sTmpBytes[NUMBER_OF_FREE_CLUSTERS] sBytes[USED] = sBytes[TOTAL] - sBytes[AVAILABLE] return sBytes end function

sDiskSpace = GetDiskSpaceInBytes("C:")

printf(1, "Total: %d\nUsed: %d\nAvailable: %d", {sDiskSpace[TOTAL], sDiskSpace[USED], sDiskSpace[AVAILABLE]})

void = wait_key()


JG
 
{{{ 
 

}}}

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu