#!/usr/bin/perl -w
#
# update_wdm_wmlist, (c) 1998 Marcelo Magalln <mmagallo@debian.org>
#
# This script will read the list of installed window managers from
# /etc/X11/window-managers and update the DisplayManager*wdmWm
# resource in /etc/X11/wdm/wdm-config. BEWARE: It doesn't ask any
# questions about this. It just does it. It takes an optional list of
# window managers.

use strict;

my $wm_list='';

if (! defined @ARGV) {
    my @wm_list = ();
    open(WINDOW_MANAGERS, '</etc/X11/window-managers')
        or die "Can't open /etc/X11/window-managers for reading: $!";
    
    while (<WINDOW_MANAGERS>) {
        if (! /^\s*#.*$/) {
            chop;
            s|/.*/||; # these things better be on the path
            $wm_list[@wm_list] = $_;
        }
    }
    
    close(WINDOW_MANAGERS);
    
    $wm_list = join (':', sort @wm_list);
} else {
    $wm_list = join (':', sort @ARGV);
}

open (WDM_CONFIG_FILE, '</etc/X11/wdm/wdm-config')
    or die "Can't open /etc/X11/wdm-config for reading: $!";
open (NEW_WDM_CONFIG_FILE, '>/etc/X11/wdm/wdm-config.new')
    or die "Can't open /etc/X11/wdm-config.new for writing: $!";

while (<WDM_CONFIG_FILE>) {
    s|^!?\s*(.*wdmWm:\s*).*|$1$wm_list|;
    print NEW_WDM_CONFIG_FILE;
}

close(WDM_CONFIG_FILE);
close(NEW_WDM_CONFIG_FILE);

rename '/etc/X11/wdm/wdm-config.new', '/etc/X11/wdm/wdm-config'
    or die "Can't rename /etc/X11/window-managers.new: $!";

exit 0;
