Files
Gen4_R-Car_Trace32/2_Trunk/demo/practice/my_environment.cmm
2025-10-14 09:52:32 +09:00

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