UTSName - Module

Share your advanced PureBasic knowledge/code with the community.
User avatar
StarBootics
Addict
Addict
Posts: 1006
Joined: Sun Jul 07, 2013 11:35 am
Location: Canada

UTSName - Module

Post 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 <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<
The Stone Age did not end due to a shortage of stones !
infratec
Always Here
Always Here
Posts: 7620
Joined: Sun Sep 07, 2008 12:45 pm
Location: Germany

Re: UTSName - Module

Post 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
Post Reply