#!/bin/sh -e

# Silently remove dangling symlinks.
#
# This function is adapted from the `cleanlinks' program which is part of
# XFree86 (see /usr/share/doc/lists-archives/copyright).
function clean_symlinks
{
    if [ -n "$1" ]; then
        find "$1" -type l -print |
        (
            read i || break
            while [ -n "$i" ]; do
                if [ ! -f "$i" ]; then
                    rm -f "$i"
                fi
                read i || break
            done
        )
    fi
}

[ -d /var/lib/lists-archives/archives ] || exit 0
umask 002

DATE=$(date +%y%m)

# Incorporate mailman archives, if any
#if [ -d /var/lib/mailman/archives/public ]
#then
#    for file in /var/lib/mailman/archives/public/*
#    do
#	base=$(basename $file)
#	rm -f /var/lib/lists-archives/lists/$base-*
#	[ -f $file ] && ln -f $file /var/lib/lists-archives/lists/$base-$DATE
#	[ -d $file ] && ln -sf $file /var/lib/lists-archives/lists/$base-$DATE
#    done
#fi

# Touch files for updatemail (ugly hack, but oh well)
cd /var/lib/lists-archives/archives
for dir in $(find * -type d -maxdepth 0)
do
    [ -f ../lists/$dir ] || touch ../lists/$dir
done

# Not sure yet why this is needed.  :-)
clean_symlinks /var/lib/lists-archives

# Fix stray ownerships and permissions (searchlists.log must be www-data).
chown -R daemon.list /var/lib/lists-archives/archives
chown -R daemon.list /var/lib/lists-archives/glimpse
chown -R daemon.list /var/lib/lists-archives/lists
chown -R daemon.list /var/lib/lists-archives/log
chmod -R ug+rwX,o+rX /var/lib/lists-archives/archives
chmod -R ug+rwX,o+rX /var/lib/lists-archives/glimpse
chmod -R ug+rwX,o+rX /var/lib/lists-archives/lists
chmod -R ug+rwX,o+rX /var/lib/lists-archives/log


# Update web archives.
su daemon -c "/usr/lib/lists-archives/updatemail"

# Update master index file.
su daemon -c "/usr/lib/lists-archives/updatemail -x"

# Create links in website (list -> list-NOW)
cd /var/lib/lists-archives/archives
for dir in $(find * -type d -maxdepth 0)
do
    base=$(echo $dir | perl -pe "s/-\d+$//;")
    ln -sf $dir $base
done

clean_symlinks /var/lib/lists-archives
