#!/usr/bin/env perl
# fidoname -- convert FidoNet addresses to DNS domains

use Getopt::Long;

my $domain = "binkp.net";

my $re = qr{ ^
		(?: (\d+) : )?
		(\d+) / (\d+)
		(?: \. (\d+) )?
		(?: \@ (\w+) )?
	$ }x;

sub to_dns {
	my ($z, $n, $f, $p, $d) = @_;
	return
		(defined $p ? "p$p." : "").
		"f$f.n$n.".
		(defined $z ? "z$z." : "z1.").
		$domain;
}

sub to_fido {
	my ($z, $n, $f, $p, $d) = @m;
	return
		(defined $z ? "$z:" : "").
		"$n/$f".
		(defined $p ? ".$p" : "").
		(defined $d ? "@$d" : "");
}

GetOptions(
	"d|domain=s" => \$domain,
) || exit(2);

for (@ARGV) {
	if (my @m = $_ =~ $re) {
		print to_dns(@m)."\n";
	} else {
		warn "unrecognized input: '$_'\n";
	}
}
