Subject: dircolors: please eliminate duplicates before writing variable

From: martin f krafft <[email-masked]>
Date: Mon, 5 May 2008 13:21:22 +0100

Package: coreutils
Version: 6.10-6
Severity: wishlist
File: /usr/bin/dircolors

If I specify a filetype twice in the dircolors file, the resulting
LS_COLORS will have the entry twice:

  lapse:/% echo "EXEC 00\nEXEC 01" | dircolors -
  LS_COLORS='ex=00:ex=01:';
  export LS_COLORS

While /bin/ls works fine with it and prefers the last setting over
previous ones, e.g. zsh's completion system works the other way.

I realise I could be filing this as a bug against zsh, but that
would be asking zsh to work around a shortcoming in the dircolors
"API".

Instead, would it be possible to fix dircolors so that it eliminates
earlier entries if the dircolors file overrides entries for a given
file class?

The rationale is that I need dircolors --print-database output in my
own dircolors file if I don't want to hardcode defaults by hand. If
I do that, I'd prefer to keep customisation separate.

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.24-1+scoflowctrl.1-686 (SMP w/1 CPU core)
Locale: LANG=en_GB, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages coreutils depends on:
ii  libacl1                       2.2.47-2   Access control list shared library
ii  libc6                         2.7-10     GNU C Library: Shared libraries
ii  libselinux1                   2.0.59-1   SELinux shared libraries

coreutils recommends no packages.

-- no debconf information

-- 
 .''`.   martin f. krafft <[email-masked]>
: :'  :  proud Debian developer, author, administrator, and user
`. `'`   http://people.debian.org/~madduck - http://debiansystem.info
  `-  Debian - when you have better things to do than fixing systems

---

From: Jim Meyering <[email-masked]>
Date: Mon, 05 May 2008 19:29:27 +0200

> I do that, I'd prefer to keep customisation separate.

Good idea.
If no one volunteers to do this soon
I'll put it on the TODO list.

---

From: martin f krafft <[email-masked]>
Date: Tue, 6 May 2008 09:30:43 +0100

> I'll put it on the TODO list.

FWIW, this is a zsh-style way of dealing with it. It's not exactly
rocket science, I just use an associative array to uniquify:

  http://git.madduck.net/v/etc/zsh.git?a=blob;f=.zsh/zshrc/89_dircolors;hb=HEAD

---

From: Jim Meyering <[email-masked]>
Date: Tue, 06 May 2008 10:46:37 +0200

>   http://git.madduck.net/v/etc/zsh.git?a=blob;f=.zsh/zshrc/89_dircolors;hb=HEAD

Yep.  When this is done in dircolors, it'll do the same, using lib/hash.c.