Hello Thomas,

it appears commit 4bdf22803f9a41329694e0c3c82189635dccdcd0 breaks
disabling colors using the documented mechanism of touching
/etc/terminal-colors.d/dmesg.disable. See below for a user report.

On Sun, Jan 26, 2025 at 07:19:09PM +0100, Axel wrote:
> Package: util-linux
> Version: 2.40.4-1
> 
> Running dmesg after upgrading to trixie started showing color. The manpage
> mentions creating /etc/terminal-colors.d/disable which should disable colors
> for all. Creating the also mentioned /etc/terminal-colors.d/dmesg.disable
> doesn't disable color output also. I had /etc/terminal-colors.d/disable
> configured which did disable colors on -stable.

>From what I can tell, the new rc = -ENOENT in colors_readdir
introduced in 4bdf22803f9a41329694e0c3c82189635dccdcd0 bubbles up to
colors_init:

        int rc = colors_read_configuration(cc);  // calls colors_readdir, now 
returns -2
        if (rc)
                cc->mode = UL_COLORMODE_DEFAULT;
    else {
Evaluating color scores is skipped, effectively ignoring the
"disable" file.

Could you please take a look?

Reverting 4bdf22803f9a41329694e0c3c82189635dccdcd0 fixes the problem
for me.

Debug output from TERMINAL_COLORS_DEBUG=0xffff ./dmesg

| 321357: termcolors:     CONF: terminal is ready (supports 256 colors)
| 321357: termcolors:     CONF: reading dir: '/root/.config/terminal-colors.d'
| 321357: termcolors:     CONF: reading dir: '/etc/terminal-colors.d'
| 321357: termcolors:     CONF: item 'dmesg.disable': score=21 [cur: 0, 
name(5): dmesg.disable, term(0): (null)]
| 321357: termcolors:     CONF: setting 'disable' from 0 -to-> 21
| Colors:
|       utilname = 'dmesg'
|       termname = 'xterm-256color'
|       scheme file = '(null)'
|       mode = auto
|       has_colors = 1
|       disabled = 0
|       configured = 1
|       cs configured = 0
| 
|       score disable = 21
|       score enable = 0
|       score scheme = 0


After reverting 4bdf22803f9a41329694e0c3c82189635dccdcd0:

| 321318: termcolors:     CONF: terminal is ready (supports 256 colors)
| 321318: termcolors:     CONF: reading dir: '/root/.config/terminal-colors.d'
| 321318: termcolors:     CONF: reading dir: '/etc/terminal-colors.d'
| 321318: termcolors:     CONF: item 'dmesg.disable': score=21 [cur: 0, 
name(5): dmesg.disable, term(0): (null)]
| 321318: termcolors:     CONF: setting 'disable' from 0 -to-> 21
| Colors:
|       utilname = 'dmesg'
|       termname = 'xterm-256color'
|       scheme file = '(null)'
|       mode = never
|       has_colors = 0
|       disabled = 0
|       configured = 1
|       cs configured = 0
| 
|       score disable = 21
|       score enable = 0
|       score scheme = 0


Thanks,
Chris

Reply via email to