#! /usr/bin/perl -w
#
# slrnrc-conv - converts an old ~/.slrnrc file by remapping key bindings
#
# by Matthias Friedrich <mafr@topmail.de>
#
# Usage: perl slrnrc-conv ~/.slrnrc > new_config
#
use strict;

#
# group conversation table
#
my %group = (
    down          =>    'line_down',
    group_bob     =>    'bob',
    group_eob     =>    'eob',
    pagedown      =>    'page_down',
    pageup        =>    'page_up',
    uncatch_up    =>    'uncatchup',
    up            =>    'line_up'
);

#
# article conversation table
#
my %article = (
    art_bob                  =>   'article_bob',
    art_eob                  =>   'article_eob',
    art_xpunge               =>   'article_expunge',
    article_linedn           =>   'article_line_down',
    article_lineup           =>   'article_line_up',
    article_pagedn           =>   'article_page_down',
    article_pageup           =>   'article_page_up',
    down                     =>   'header_line_down',
    enlarge_window           =>   'enlarge_article_window',
    goto_beginning           =>   'article_bob',
    goto_end                 =>   'article_eob',
    left                     =>   'article_left',
    locate_header_by_msgid   =>   'locate_article',
    pagedn                   =>   'header_page_down',
    pageup                   =>   'header_page_up',
    pipe_article             =>   'pipe',
    prev                     =>   'previous',
    print_article            =>   'print',
    right                    =>   'article_right',
    scroll_dn                =>   'article_page_down',
    scroll_up                =>   'article_page_up',
    shrink_window            =>   'shrink_article_window',
    skip_to_prev_group       =>   'skip_to_previous_group',
    toggle_show_author       =>   'toggle_header_formats',
    up                       =>   'header_line_up'
);

# read input file line by line
while ( <> )
{
    if ( m/^(\s*setkey\s*"?)(group|article)("?\s*"?)([^\s"]+)(\s*.*)$/ )
    {
	if ( $2 eq 'group' and $group{$4} )
	{
	    print "$1$2$3$group{$4}$5\n";
	    next;
	}
	elsif ( $2 eq 'article' and $article{$4} )
	{
	    print "$1$2$3$article{$4}$5\n";
	    next;
	}
    }

    # print all lines that are no group/article key bindings
    print;
}
