diff options
Diffstat (limited to 'subr.ex/ex_init.subr')
-rw-r--r-- | subr.ex/ex_init.subr | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/subr.ex/ex_init.subr b/subr.ex/ex_init.subr index fcabce07..5d1035ad 100644 --- a/subr.ex/ex_init.subr +++ b/subr.ex/ex_init.subr @@ -410,16 +410,25 @@ ex_init_prereqs() { # # ex_init_theme() - initialise theme # @_rstatus: reference to out variable of status string on failure +# @_hname: build hostname # @_name_base: base name for theme file(s) # @_theme: theme name # # Return: zero (0) on success, non-zero (>0) on failure # ex_init_theme() { - local _eit_rstatus="${1#\$}" _eit_name_base="${2}" _eit_theme="${3}" \ + local _eit_rstatus="${1#\$}" _eit_hname="${2}" _eit_name_base="${3}" _eit_theme="${4}" \ _eit_rc=0 _eit_theme_fname=""; - _eit_theme_fname="etc/${_eit_name_base}${_eit_theme:+.${_eit_theme}}.theme"; + if [ "${_eit_theme:+1}" = 1 ]; then + _eit_theme_fname="etc/${_eit_name_base}.${_eit_theme}.theme"; + else + _eit_theme_fname="etc/${_eit_name_base}.theme.host.${_eit_hname}"; + if ! [ -e "${_eit_theme_fname}" ]; then + _eit_theme_fname="etc/${_eit_name_base}.theme"; + fi; + fi; + if ! [ -e "${_eit_theme_fname}" ]; then _eit_rc=1; exp_setrstatus "${_eit_rstatus}" 'failed to source \`'"${_eit_theme_fname}"''\''.'; |