statvfs angepasst als Modul und zur einfacheren verwendung.
This commit is contained in:
parent
c02d135541
commit
629a1515e7
1 changed files with 70 additions and 54 deletions
|
@ -1,4 +1,6 @@
|
|||
; Module/File: System_FreeDiscSpace.pb
|
||||
; Original:
|
||||
; -------------------------------------------------------------
|
||||
; Module/File: System_FreeDiscSpace.pb
|
||||
; Function: Get free + used Drive-space from Directory - Linux
|
||||
; Author: remi_meier/uwekel (omi)
|
||||
; Date: Mar. 27, 2015
|
||||
|
@ -9,9 +11,30 @@
|
|||
; Link to topic: http://www.purebasic.fr/german/viewtopic.php?f=21&t=22963
|
||||
;--------------------------------------------------------------
|
||||
|
||||
;**************************************
|
||||
;*
|
||||
;* Erweitert: und Umgestellt als Modul
|
||||
;*
|
||||
;* lhs_statvfs.pbi
|
||||
;*
|
||||
;* (c) by René Linder
|
||||
;*
|
||||
;* Lizenz LGPL V2.1 < TODO: Abklären ob Lizenz akzeptiert wird ...
|
||||
;*
|
||||
;* Getesteter Compiler PureBasic 5.70/5.71b2
|
||||
;*
|
||||
|
||||
EnableExplicit
|
||||
CompilerIf #PB_Compiler_OS <> #PB_OS_Linux
|
||||
CompilerError "Dieses Modul ist nur für Linux"
|
||||
CompilerEndIf
|
||||
|
||||
DeclareModule statvfs
|
||||
Declare Size(Path.s)
|
||||
Declare Free(Path.s)
|
||||
Declare Used(Path.s)
|
||||
EndDeclareModule
|
||||
|
||||
Module statvfs
|
||||
Structure Statvfs
|
||||
f_bsize.i; file system block size
|
||||
f_frsize.i; fragment size
|
||||
|
@ -30,39 +53,32 @@ Structure Statvfs
|
|||
__f_spare.l[6]
|
||||
EndStructure
|
||||
|
||||
Structure DriveInfoResult
|
||||
Size.q
|
||||
Used.q
|
||||
Free.q
|
||||
EndStructure
|
||||
|
||||
ImportC ""
|
||||
statvfs.l(Path.p-utf8, *value.Statvfs)
|
||||
EndImport
|
||||
|
||||
Global Drive.DriveInfoResult
|
||||
|
||||
|
||||
|
||||
Procedure.q DriveInfo(Path.s, *Result.DriveInfoResult)
|
||||
; Global Drive.DriveInfoResult
|
||||
Procedure Size(Path.s)
|
||||
Protected Size.i
|
||||
Protected v.statvfs
|
||||
Statvfs(Path, v)
|
||||
*Result\Size= v\f_blocks * v\f_frsize
|
||||
*Result\Used= (v\f_blocks - v\f_bfree) * v\f_frsize
|
||||
*Result\Free= v\f_bavail * v\f_frsize
|
||||
Size = v\f_blocks * v\f_frsize
|
||||
ProcedureReturn Size
|
||||
EndProcedure
|
||||
|
||||
Procedure Free(Path.s)
|
||||
Protected Free.i
|
||||
Protected v.statvfs
|
||||
Statvfs(Path, v)
|
||||
Free= v\f_bavail * v\f_frsize
|
||||
ProcedureReturn Free
|
||||
EndProcedure
|
||||
|
||||
DriveInfo(GetHomeDirectory(), Drive); choose any directory from drive of interrest
|
||||
Debug "Drive-Info: " + GetHomeDirectory()
|
||||
Debug "Size: " + Str(Drive\Size)
|
||||
Debug "Used: " + Str(Drive\Used)
|
||||
Debug "Free: " + Str(Drive\Free)
|
||||
Debug "---"
|
||||
;
|
||||
; DriveInfo("/media/charly/96A2-6D58/", Drive); choose your USB-Stick
|
||||
; Debug "Drive-Info: " + "/media/charly-xubuntu/96A2-6D58/"
|
||||
; Debug "Size: " + Str(Drive\Size)
|
||||
; Debug "Used: " + Str(Drive\Used)
|
||||
; Debug "Free: " + Str(Drive\Free)
|
||||
; Debug "---"
|
||||
Procedure Used(Path.s)
|
||||
Protected Used.i
|
||||
Protected v.statvfs
|
||||
Statvfs(Path, v)
|
||||
Used = (v\f_blocks - v\f_bfree) * v\f_frsize
|
||||
ProcedureReturn Used
|
||||
EndProcedure
|
||||
EndModule
|
Loading…
Reference in a new issue