182 lines
4.3 KiB
Plaintext
182 lines
4.3 KiB
Plaintext
; --------------------------------------------------------------------------------
|
|
; @Title: Example for reading environment variables
|
|
; @Description:
|
|
; Example script for reading and displaying some environment variables.
|
|
; @Keywords: OS.NAME(), OS.ENV()
|
|
; @Author: RIC
|
|
; @Copyright: (C) 1989-2016 Lauterbach GmbH, licensed for use with TRACE32(R) only
|
|
; --------------------------------------------------------------------------------
|
|
; $Id: my_environment.cmm 15414 2019-12-12 17:59:12Z hlohn $
|
|
|
|
LOCAL &user &home &name &cpu
|
|
|
|
IF VERSION.BUILD()<65657.
|
|
(
|
|
DIALOG.OK "TRACE32 Version too old." "Please update to build 65657 or later." "Click 'OK' to exit."
|
|
ENDDO
|
|
)
|
|
|
|
|
|
;VAR WIN LINUX MAC
|
|
; User USERNAME USER LOGNAME
|
|
; Home HOMEPATH HOME HOME
|
|
; PC name COMPUTERNAME 'uname -n' 'uname -n'
|
|
; CPU PROCESSOR_IDENTIFIER 'uname -p' 'uname -p'
|
|
|
|
|
|
; Check which host OS is in use
|
|
IF OS.NAME()=="Windows"
|
|
(
|
|
; Windows detected
|
|
; Extract relevant data from Environment Variables
|
|
&user=OS.ENV("USERNAME")
|
|
&home=OS.ENV("HOMEPATH")
|
|
&name=OS.ENV("COMPUTERNAME")
|
|
&cpu=OS.ENV("PROCESSOR_IDENTIFIER")
|
|
)
|
|
ELSE IF OS.NAME()=="Linux"
|
|
(
|
|
; Linux detected
|
|
; Extract relevant data from environment variables
|
|
&user=OS.ENV("USER")
|
|
&home=OS.ENV("HOME")
|
|
; Some aren't available so we need to get them from a command
|
|
GOSUB getname
|
|
RETURNVALUES &name
|
|
GOSUB getcpu
|
|
RETURNVALUES &cpu
|
|
)
|
|
ELSE IF OS.NAME()=="MacOSX"
|
|
(
|
|
; MacOS detected
|
|
; Extract relevant data from environment variables
|
|
&user=OS.ENV("USER")
|
|
&home=OS.ENV("HOME")
|
|
; Some aren't available so we need to get them from a command
|
|
GOSUB getname
|
|
RETURNVALUES &name
|
|
GOSUB getcpu
|
|
RETURNVALUES &cpu
|
|
)
|
|
ELSE
|
|
(
|
|
; Something else - unsupported
|
|
DIALOG.OK "Unsupported host OS." "Requires Linux, Mac OSX or Windows."
|
|
ENDDO
|
|
)
|
|
|
|
|
|
AREA.view
|
|
|
|
PRINT
|
|
PRINT " *** RESULTS ***"
|
|
PRINT "User Name : &user"
|
|
PRINT "Home Directory : &home"
|
|
PRINT "CPU Type : &cpu"
|
|
PRINT "Machine name : &name"
|
|
PRINT
|
|
ENDDO
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; Subroutines
|
|
;
|
|
;-------------------------------------------------------------------------------
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; getname
|
|
; Gets the name of the computer by calline 'uname -n'
|
|
; PARAMETERS: NONE
|
|
; RETURNS : Name of computer
|
|
getname:
|
|
PRIVATE &tmpfile &txtline
|
|
|
|
; Get a temporary file from the host OS
|
|
&tmpfile=OS.TMPFILE()
|
|
|
|
; Log some info to the temporary file
|
|
OS.Hidden uname -n > &tmpfile
|
|
|
|
; WAIT until the command has completed
|
|
; This allows for filesystem caches to be flushed before
|
|
; we try to open the file.
|
|
LOCAL &cnt
|
|
&cnt=0.
|
|
WHILE (!OS.FILE("&tmpfile"))&&(&cnt<100)
|
|
(
|
|
WAIT 200.ms
|
|
&cnt=&cnt+1.
|
|
)
|
|
; Check to see if the count has been exceeded
|
|
IF &cnt>=100.
|
|
(
|
|
;ERROR
|
|
GOSUB ErrHandler "TMPFILE for name does not exist. Please check &tmpfile."
|
|
)
|
|
|
|
OPEN #2 &tmpfile /READ
|
|
READ #2 %LINE &txtline
|
|
CLOSE #2
|
|
|
|
IF "&txtline"==""
|
|
(
|
|
; Empty line - probably an error
|
|
GOSUB ErrHandler "Error getting host name."
|
|
)
|
|
|
|
RETURN "&txtline"
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; getcpu
|
|
; Gets the CPU type of the computer by calline 'uname -p'
|
|
; PARAMETERS: NONE
|
|
; RETURNS : CPU type of computer
|
|
getcpu:
|
|
PRIVATE &tmpfile &txtline
|
|
|
|
; Get a temporary file from the host OS
|
|
&tmpfile=OS.TMPFILE()
|
|
|
|
; Log some info to the temporary file
|
|
OS.Hidden uname -p > &tmpfile
|
|
|
|
; WAIT until the command has completed
|
|
LOCAL &cnt
|
|
&cnt=0.
|
|
WHILE (!OS.FILE("&tmpfile"))&&(&cnt<100)
|
|
(
|
|
WAIT 200.ms
|
|
&cnt=&cnt+1.
|
|
)
|
|
; Check to see if the count has been exceeded
|
|
IF &cnt>=100.
|
|
(
|
|
;ERROR
|
|
GOSUB ErrHandler "TMPFILE for CPU does not exist. Please check &tmpfile."
|
|
)
|
|
|
|
OPEN #2 &tmpfile /READ
|
|
READ #2 %LINE &txtline
|
|
CLOSE #2
|
|
|
|
IF "&txtline"==""
|
|
(
|
|
; Empty line - probably an error
|
|
GOSUB ErrHandler "Error getting host name."
|
|
)
|
|
|
|
RETURN "&txtline"
|
|
|
|
;-------------------------------------------------------------------------------
|
|
; ErrHandler
|
|
; End up here if something goes wrong.
|
|
; PARAMETERS: NONE
|
|
; RETURNS : NONE
|
|
ErrHandler:
|
|
PARAMETERS &txt
|
|
PRINT ""
|
|
PRINT %COLOR.RED "An error occurred."
|
|
PRINT "&txt"
|
|
PRINT "Script will now terminate."
|
|
ENDDO
|
|
RETURN
|