#!/usr/bin/perl
#
 
# makeavl.pl&readlist.pm by Alexander Reznikov 2:4600/220@fidonet, 
#                                              99:2003/110@webnet, 
#                                              homebrewer@yandex.ru
#
#
# Этот скрипт предназначен для создания полного списка всех эх, доступных
# на узле. В качестве исходных данных используются списки эх аплинков в формате
# EchoList. Также опционально может быть использован свой собственных эхолист
# в том же формате. В случае hpt его можно создать при помощи скрипта 
# fconf2na.pl. Также скрипт пытается брать описания эх из echolist.txt 
# (файлэха ECHOLIST) и echo5020.lst, если они есть в текущей директории.

# Текущий эхолист в формате Echolist,
# если не задан (закомментирован) - не используется
# Его можно получить при помощи fidoconfig/fconf2na.pl
$echolist = 'echolist.fe';

# имя результирующего списка эх "без дупов"
$avlname = '11f800dc.fwd';

# Список avail-файлов в фомате Echolist, из которых формируется результирующий 
# список
@fwdlists = ('fwd126.txt', 'fwd113.txt', 'fwd103.txt');

#########
use readlist;
InitEchoList();

read_echolist($echolist) if (defined $echolist)&&($echolist ne '');

foreach $i (@fwdlists)
{
 read_echolist($i);
}

open FILE, ">$avlname";

foreach $i (sort keys(%echo))
{
 $descr = GetEchoListDescr($i) || $echo{$i} || '';
# $descr = $echo{$i} if length($descr)==0;

 $descr =~ tr/Н/H/;

 print FILE "$i".(length($descr)>0? " $descr": '')."\n";
}

close(FILE);

sub read_echolist
{
 my $filename = shift;
 if (!open FILE, "<$filename")
 {
  warn("Can not open \'$filename\' ($!)\n");
  return 0; 
 }

 my ($echoid, $descr);

 while (<FILE>)
 {
  chomp;

  if (/^([^ ]+)\s*\"?(.*?)\"?$/)
  {
   $echoid = uc($1);
   $descr = $2;

   $echo{$echoid} = $descr if (!exists $echo{$echoid})||(length($echo{$echoid})==0);
  }
 }
 close(FILE);
 return 1;
}


syntax highlighted by Code2HTML, v. 0.9.1