This is partially in response to FS#24685, which should hopefully cut back on configuration duplication on non-sysvinit systems. This does, however, also fix a bug with keymap/consolefont pulling the wrong rc.conf when BASEDIR is not '/' or unset. Signed-off-by: Dave Reisner <dreisner@archlinux.org> --- install/consolefont | 42 +++++++++++++++++++++++------------------- install/keymap | 24 ++++++++++++++---------- 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/install/consolefont b/install/consolefont index a0a5088..49a324d 100644 --- a/install/consolefont +++ b/install/consolefont @@ -3,26 +3,30 @@ build() { local file ext - eval "$(grep -e "^CONSOLEFONT=" /etc/rc.conf)" - if [[ -n "$CONSOLEFONT" ]]; then - for file in "$BASEDIR/usr/share/kbd/consolefonts/$CONSOLEFONT".psf?(u)?(.gz); do - if [[ -e $file ]]; then - [[ $file =~ psfu? ]] && ext=${BASH_REMATCH[0]} - if [[ $file = *.gz ]]; then - gzip -cd "$file" > "$BUILDROOT/consolefont.$ext" - else - add_file "${file#$BASEDIR}" "/consolefont.$ext" + # subshell to avoid namespace pollution + ( + . "$BASEDIR/etc/rc.conf" + if [[ -n "$CONSOLEFONT" ]]; then + for file in "$BASEDIR/usr/share/kbd/consolefonts/$CONSOLEFONT".psf?(u)?(.gz); do + if [[ -e $file ]]; then + [[ $file =~ psfu? ]] && ext=${BASH_REMATCH[0]} + if [[ $file = *.gz ]]; then + gzip -cd "$file" > "$BUILDROOT/consolefont.$ext" + else + add_file "${file#$BASEDIR}" "/consolefont.$ext" + fi + exit 0 fi - SCRIPT=consolefont - return 0 - fi - done - error "consolefont: requested font not found: \`%s'" "$CONSOLEFONT" - return 1 - else - warning "consolefont: no font found in %s/etc/rc.conf" "${BASEDIR%/}" - return 1 - fi + done + error "consolefont: requested font not found: \`%s'" "$CONSOLEFONT" + exit 1 + else + warning "consolefont: no font found in %s/etc/rc.conf" "${BASEDIR%/}" + exit 1 + fi + ) + + (( $? == 0 )) && SCRIPT=consolefont } help() { diff --git a/install/keymap b/install/keymap index 34b744a..2cf4d15 100644 --- a/install/keymap +++ b/install/keymap @@ -1,18 +1,22 @@ #!/bin/bash build() { - SCRIPT=keymap - eval "$(grep -E "^(LOCALE|KEYMAP)=" /etc/rc.conf)" - if [[ $KEYMAP ]]; then - if [[ $LOCALE = *[Uu][Tt][Ff]-8 ]]; then - printf '%s\n' "UTF8=yes" > "$BUILDROOT/keymap.utf8" - /bin/loadkeys -q -u $KEYMAP -b > "$BUILDROOT/keymap.bin" - else - printf '%s\n' "UTF8=no" > "$BUILDROOT/keymap.utf8" - /bin/loadkeys -q $KEYMAP -b > "$BUILDROOT/keymap.bin" + # subshell to avoid namespace pollution + ( + . "$BASEDIR/etc/rc.conf" + if [[ $KEYMAP ]]; then + if [[ $LOCALE = *[Uu][Tt][Ff]-8 ]]; then + printf '%s\n' "UTF8=yes" > "$BUILDROOT/keymap.utf8" + /bin/loadkeys -q -u $KEYMAP -b > "$BUILDROOT/keymap.bin" + else + printf '%s\n' "UTF8=no" > "$BUILDROOT/keymap.utf8" + /bin/loadkeys -q $KEYMAP -b > "$BUILDROOT/keymap.bin" + fi fi - fi + ) + + (( $? == 0 )) && SCRIPT=keymap } help() { -- 1.7.6