From 629a1515e7dfaf2428b3c70b56853e86996be4bb Mon Sep 17 00:00:00 2001 From: Ground0 Date: Thu, 4 Jul 2019 17:28:46 +0200 Subject: [PATCH] statvfs angepasst als Modul und zur einfacheren verwendung. --- SYS/lhs_statvfs.pbi | 124 +++++++++++++++++++++++++------------------- 1 file changed, 70 insertions(+), 54 deletions(-) diff --git a/SYS/lhs_statvfs.pbi b/SYS/lhs_statvfs.pbi index 2f669cb..bd72083 100644 --- a/SYS/lhs_statvfs.pbi +++ b/SYS/lhs_statvfs.pbi @@ -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,60 +11,74 @@ ; 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 -Structure Statvfs - f_bsize.i; file system block size - f_frsize.i; fragment size - f_blocks.i; size of fs in f_frsize units - f_bfree.i; free blocks - f_bavail.i; free blocks for unprivileged users - f_files.i; inodes - f_ffree.i; free inodes - f_favail.i; free inodes for unprivileged users - f_fsid.i; file system ID - CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 - __f_unused.l - CompilerEndIf - f_flag.i; mount flags: 1=readonly 2= nosuid - f_namemax.i; maximum filename length - __f_spare.l[6] -EndStructure +DeclareModule statvfs + Declare Size(Path.s) + Declare Free(Path.s) + Declare Used(Path.s) +EndDeclareModule -Structure DriveInfoResult - Size.q - Used.q - Free.q -EndStructure +Module statvfs + Structure Statvfs + f_bsize.i; file system block size + f_frsize.i; fragment size + f_blocks.i; size of fs in f_frsize units + f_bfree.i; free blocks + f_bavail.i; free blocks for unprivileged users + f_files.i; inodes + f_ffree.i; free inodes + f_favail.i; free inodes for unprivileged users + f_fsid.i; file system ID + CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 + __f_unused.l + CompilerEndIf + f_flag.i; mount flags: 1=readonly 2= nosuid + f_namemax.i; maximum filename length + __f_spare.l[6] + EndStructure -ImportC "" - statvfs.l(Path.p-utf8, *value.Statvfs) -EndImport - -Global Drive.DriveInfoResult - - - -Procedure.q DriveInfo(Path.s, *Result.DriveInfoResult) - 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 -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 "---" \ No newline at end of file + ImportC "" + statvfs.l(Path.p-utf8, *value.Statvfs) + EndImport + +; Global Drive.DriveInfoResult + Procedure Size(Path.s) + Protected Size.i + Protected v.statvfs + Statvfs(Path, v) + 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 + + 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 \ No newline at end of file