Page 1 of 1

UTSName - Module

Posted: Wed Apr 22, 2015 3:45 pm
by StarBootics
Hello everyone,

Another simple module mostly based on http://www.purebasic.fr/english/viewtop ... 55#p198155
With Ascii and Unicode support

Enjoy it !

Best regards
StarBootics

Code: Select all

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : UTSName - Module
; File Name : UTSName - Module.pb
; File version: 0.0.0
; Programming : OK
; Programmed by : StarBootics
; Date : 22-04-2015
; Last Update : 22-04-2015
; PureBasic code : V5.31
; Platform : Linux, MacOS X ???
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

DeclareModule UTSName

  Declare.s SystemName()
  Declare.s NodeName()
  Declare.s Release()
  Declare.s Version()
  Declare.s Machine()
  Declare.s DomainName()
  Declare Initialize()
  Declare Reset()

EndDeclareModule

Module UTSName

  Structure Instance

    SystemName.s{65}
    NodeName.s{65}
    Release.s{65}
    Version.s{65}
    Machine.s{65}
    DomainName.s{65}

  EndStructure

  Global Instance.Instance

  Procedure.s SystemName()

    ProcedureReturn Instance\SystemName
  EndProcedure

  Procedure.s NodeName()

    ProcedureReturn Instance\NodeName
  EndProcedure

  Procedure.s Release()

    ProcedureReturn Instance\Release
  EndProcedure

  Procedure.s Version()

    ProcedureReturn Instance\Version
  EndProcedure

  Procedure.s Machine()

    ProcedureReturn Instance\Machine
  EndProcedure

  Procedure.s DomainName()

    ProcedureReturn Instance\DomainName
  EndProcedure

  Procedure Initialize()
    
    CompilerIf #PB_Compiler_Unicode
      
      *Memory = AllocateMemory(6 * 65)
      
      If *Memory <> #Null
        
        uname_(*Memory)
        
        Instance\SystemName = PeekS(*Memory + 65 * 0, -1, #PB_Ascii)
        Instance\NodeName   = PeekS(*Memory + 65 * 1, -1, #PB_Ascii)
        Instance\Release    = PeekS(*Memory + 65 * 2, -1, #PB_Ascii)
        Instance\Version    = PeekS(*Memory + 65 * 3, -1, #PB_Ascii)
        Instance\Machine    = PeekS(*Memory + 65 * 4, -1, #PB_Ascii)
        Instance\DomainName = PeekS(*Memory + 65 * 5, -1, #PB_Ascii)
        
        FreeMemory(*Memory)
        
      EndIf

    CompilerElse
      
      uname_(Instance)
      
    CompilerEndIf
    
  EndProcedure

  Procedure Reset()
    
    Instance\SystemName = ""
    Instance\NodeName = ""
    Instance\Release = ""
    Instance\Version = ""
    Instance\Machine = ""
    Instance\DomainName = ""
    
  EndProcedure

EndModule

CompilerIf #PB_Compiler_IsMainFile
  
  UTSName::Initialize()
  
  Debug UTSName::SystemName()
  Debug UTSName::NodeName()
  Debug UTSName::Release()
  Debug UTSName::Version()
  Debug UTSName::Machine()
  Debug UTSName::DomainName()
  
  UTSName::Reset()
  
CompilerEndIf

; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<

Re: UTSName - Module

Posted: Wed Apr 22, 2015 4:16 pm
by infratec
An alternative way:

Code: Select all

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : UTSName - Module
; File Name : UTSName - Module.pb
; File version: 0.0.0
; Programming : OK
; Programmed by : StarBootics
; Date : 22-04-2015
; Last Update : 22-04-2015
; PureBasic code : V5.31
; Platform : Linux, MacOS X ???
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

DeclareModule UTSName

  Declare.s SystemName()
  Declare.s NodeName()
  Declare.s Release()
  Declare.s Version()
  Declare.s Machine()
  Declare.s DomainName()
  Declare Initialize()
  Declare Reset()

EndDeclareModule

Module UTSName

  Structure Instance

    SystemName.a[65]
    NodeName.a[65]
    Release.a[65]
    Version.a[65]
    Machine.a[65]
    DomainName.a[65]

  EndStructure

  Global Instance.Instance

  Procedure.s SystemName()

    ProcedureReturn PeekS(@Instance\SystemName[0], -1, #PB_Ascii)
  EndProcedure

  Procedure.s NodeName()

    ProcedureReturn PeekS(@Instance\NodeName[0], -1, #PB_Ascii)
  EndProcedure

  Procedure.s Release()

    ProcedureReturn PeekS(@Instance\Release[0], -1, #PB_Ascii)
  EndProcedure

  Procedure.s Version()

    ProcedureReturn PeekS(@Instance\Version[0], -1, #PB_Ascii)
  EndProcedure

  Procedure.s Machine()

    ProcedureReturn PeekS(@Instance\Machine[0], -1, #PB_Ascii)
  EndProcedure

  Procedure.s DomainName()

    ProcedureReturn PeekS(@Instance\DomainName[0], -1, #PB_Ascii)
  EndProcedure

  Procedure Initialize()    
     
      uname_(Instance)
   
  EndProcedure

  Procedure Reset()
    
    FillMemory(@Instance, SizeOf(Instance), 0, #PB_Byte)
   
  EndProcedure

EndModule

CompilerIf #PB_Compiler_IsMainFile
 
  UTSName::Initialize()
 
  Debug UTSName::SystemName()
  Debug UTSName::NodeName()
  Debug UTSName::Release()
  Debug UTSName::Version()
  Debug UTSName::Machine()
  Debug UTSName::DomainName()
 
  UTSName::Reset()
 
CompilerEndIf

; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<
Bernd