LOAD.ENV.COMMON
From Pickwiki
Jump to navigationJump to search subroutine LOAD.ENV.COMMON( flag )
* Load the ENV.COMMON, if it is not already loaded
* ========================================================================================
* 27.Mar.2009 james: Actually call unix 'env' now in case we LOGTO (see below)
* 06.May.2007 jim: Cleanup; fix comments; etc. Interesting use of 'isnull' !
* 30-Dec-2006 manoj: Created
* ========================================================================================
*
* flag : EC.RELOAD or EC.CLEAR (or no flag to load only if necessary)
*
* Should this be called from STD.SETUP ? (see also 'GET.REALUSER')
*
* ========================================================================================
$include RMS.BP RMS.COMMON ;* For accessing 'USER.ID', etc; if necessary
$include RMS.BP ENV.COMMON
* if isnull(EC$IS.LOADED) then EC$IS.LOADED = @False
if unassigned(EC$IS.LOADED) then EC$IS.LOADED = @False
begin case
case flag = EC.CLEAR ; gosub [[CleanEnvCommon]]
case flag = EC.RELOAD ; gosub [[LoadEnvCommon]]
case not( EC$IS.LOADED) ; gosub [[LoadEnvCommon]]
end case
return
[[LoadEnvCommon]]:
EC$[[SUDO_USER]] = ""
* This does NOT actually do a unix 'env' !? Looks like it uses an old one; because
* when you LOGTO it does NOT pick up the new PWD ?:
*execute "ENV" capturing envOutput
*
* sooooo use THIS instead:
execute \SH -c "env"\ capturing envOutput
env[[LineCount]] = dcount (envOutput, @FM)
for i = 1 to env[[LineCount]]
envLine = envOutput<i>
if (envLine <> "") then
envId = envLine["=",1,1]
envData = ereplace (envLine, envId:"=", "")
begin case
case envId = "HOSTNAME" ; EC$HOSTNAME = trim(envData)
case envId = "USER" ; EC$USER = trim(envData)
case envId = "[[SUDO_USER]]" ; EC$[[SUDO_USER]] = trim(envData)
case envId = "UVHOME" ; EC$UVHOME = trim(envData)
case envId = "PWD" ; EC$PWD = trim(envData)
case envId = "HOME" ; EC$HOME = trim(envData)
end case
end
next i
* Don't be fooled if we are 'sudo'ed; get the real user:
if EC$[[SUDO_USER]] # "" then
EC$REALUSER = EC$[[SUDO_USER]]
end else
EC$REALUSER = EC$USER
end
EC$IS.LOADED = @True
return
[[CleanEnvCommon]]:
EC$HOSTNAME = ""
EC$USER = ""
EC$[[SUDO_USER]] = ""
EC$UVHOME = ""
EC$PWD = ""
EC$HOME = ""
EC$REALUSER = ""
EC$IS.LOADED = @False
return