#!/bin/perl
#
#  makemodes for madoka 4.0
#      Copyright(c)1998- cookie / The madoka project
#      This Software is under GNU Public Licence ver.2

print "makemodes for madoka 4.0 (c)1998 cookie\n\n";

print 'Input .pircmodes location[./.pircmodes]:';
chop($pircmodes = <STDIN>);
$pircmodes = './.pircmodes' if $pircmodes !~ /\S/;
until (-f $pircmodes && -r $pircmodes) {
  print "Cannot find (or read): $pircmodes\n";
  print 'Input .pircrc location[./.pircmodes]:';
  chop($pircmodes = <STDIN>);
  $pircmodes = './.pircmodes' if $pircmodes !~ /\S/;
}
unless (open(PIRCMODES, $pircmodes)) {
  die "Open fail: $pircmodes\n";
}
@pircmodes = <PIRCMODES>;
close(PIRCMODES);
print "changeing format $pircmodes to madoka.modes .\n";

foreach (@pircmodes) {
  print '.';
  next unless /\S/;
  next if /^#\s/;
  s/\s*\n$//;
  local($chan, $mode, $list) = (/^(.*)\s*\((\S)\)\s*:\s*(.*)$/);
  $chan =~ s/\s//g;
  if ($mode =~ /[mpk]/i) {
    print "not support: $mode\n";
    next;
  }
  push(@m, $_);
}
print "\n";
@m = reverse(sort(@m));
$chan_n = '';

die "ERROR: cannot open maodka.modes\n" unless open(MDK, ">madoka.modes");
print MDK "# madoka.modes made by support/makemodes\n";

foreach (@m) {
  local($chan, $mode, $list) = (/^(.*)\s*\((\S)\)\s*:\s*(.*)$/);
  $chan = 'all' unless $chan;
  if (!$chan_n || $chan ne $chan_n) {
    $chan_n = $chan;
    print MDK "\n[$chan]\n";
  }
  $mode .= 'o';
  print MDK "$mode=$list\n";
}
print "done.\n";
