Colors initialization was called after arg parsing. This disallow error messages and options called directly from arg parser to use colors. By example, call `mkinitcpio -k toto' or `mkinitcpio -L'. This patch initialize colors when terminal is able to support it but disable it if users don't wants it (with -n). Signed-off-by: Sébastien Luttringer <seblu@seblu.net> --- functions | 4 ++++ mkinitcpio | 11 ++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/functions b/functions index 4df91bc..d58a71a 100644 --- a/functions +++ b/functions @@ -693,4 +693,8 @@ try_enable_color() { fi } +disable_colors() { + unset _color_none _color_bold _color_blue _color_green _color_red _color_yellow +} + # vim: set ft=sh ts=4 sw=4 et: diff --git a/mkinitcpio b/mkinitcpio index fb07001..dca3a06 100755 --- a/mkinitcpio +++ b/mkinitcpio @@ -357,6 +357,10 @@ parseopts "$_opt_short" "${_opt_long[@]}" -- "$@" || exit 1 set -- "${OPTRET[@]}" unset _opt_short _opt_long OPTRET +if [[ -t 1 ]]; then + try_enable_color +fi + while :; do case $1 in # --add remains for backwards compat @@ -394,7 +398,8 @@ while :; do shift _optpreset=("$1") ;; -n|--nocolor) - _optcolor=0 ;; + _optcolor=0 + disable_colors ;; -v|--verbose) _optquiet=0 ;; -S|--skiphooks) @@ -427,10 +432,6 @@ while :; do shift done -if [[ -t 1 ]] && (( _optcolor )); then - try_enable_color -fi - # insist that /proc and /dev be mounted (important for chroots) # NOTE: avoid using mountpoint for this -- look for the paths that we actually # use in mkinitcpio. Avoids issues like FS#26344. -- Sébastien "Seblu" Luttringer