#! /usr/bin/perl
#
# Perl script to sort DNS names
# 
# $Id: dnssort.in 291 2006-09-13 14:45:39Z remi $

#**********************************************************************
#*  Copyright (C) 2004-2006 Remi Denis-Courmont.                      *
#*  This program is free software; you can redistribute and/or modify *
#*  it under the terms of the GNU General Public License as published *
#*  by the Free Software Foundation; version 2 of the license.        *
#*                                                                    *
#*  This program is distributed in the hope that it will be useful,   *
#*  but WITHOUT ANY WARRANTY; without even the implied warranty of    *
#*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.              *
#*  See the GNU General Public License for more details.              *
#*                                                                    *
#*  You should have received a copy of the GNU General Public License *
#*  along with this program; if not, you can get it from:             *
#*  http://www.gnu.org/copyleft/gpl.html                              *
#**********************************************************************

use strict;
#use locale; -- not very useful for DNS
use Getopt::Std;

$Getopt::Std::STANDARD_HELP_VERSION = 1;
$main::VERSION = '0.7.3';

sub main::HELP_MESSAGE()
{
	print "Usage: dnssort [-r] [FILES]\n".
	      "       Sorts DNS hostnames from input.\n";
}


# Parse command line
our $opt_r;
getopts('r');

if ($#ARGV < 0)
{
	# No files specified -> Use standard input
	push @ARGV, '-';
}

# Read files
my @names = ();

foreach (@ARGV)
{
	open FD,"< $_" or die "$_: $!\n";
	while(<FD>)
	{
		chomp;
		split /\./;
		push @names, join('.', reverse @_);
	}
	close FD;
}

# Sort entries
@names = sort { lc($a) cmp lc($b) } @names;
if ($opt_r)
{
	@names = reverse @names;
}

# Print results
foreach (@names)
{
	split /\./;
	print join('.', reverse @_)."\n";
}

