#!/usr/bin/perl

open (STDERR, ">&STDOUT");
select ((select(STDOUT), $| = 1)[0]); # Synchronize STDOUT
select ((select(STDERR), $| = 1)[0]); # with STDERR

($dns_lib = $0) =~ s:(^|/)[^/]*$::;
($script=$0) =~ s:^.*/([^/]*)$:$1:;	# Get the simple name of this script.

push (@INC, $dns_lib);

require 5.0;
require 'dns_lib.perl';

use Getopt::Long;
$Getopt::Long::autoabbrev=1;    # Allow keyword abbreviations (to uniqueness).
$Getopt::Long::getopt_compat=1; # Allow both "--foo=bar" and "+foo=bar" style.
#$Getopt::Long::option_start='(--|-|\+)';       # [Use the defaults]
#$Getopt::Long::order=$Getopt::Long::REQUIRE_ORDER; # Options can't intermingle
$Getopt::Long::order=$Getopt::Long::PERMUTE;    # or options may intermingle.
$Getopt::Long::ignorecase=1;    # Don't consider case in options.
$Getopt::Long::debug=0;         ### Debug ###

$opt_help = ($#ARGV < 0);

&GetOptions ('help') || die "\nTry: $script --help for more information.\n\n";

if ($opt_help) { 
 
    print <<"EndOfHelp";
Usage: $script [OPTION] host txt
 
  --help   This page.

  host     The fully qualified DNS name or IP address you want to remove
           a HINFO RR from.
  hardware The hardware in question.  Make sure to quote as needed.
  os       The OS the machine is running.  Make sure to quote as needed.
 
EndOfHelp
    
    exit;

} # End if - help

$name = $ARGV[0];

if (! $name) {

    die "\nError.  Try: $script --help for more information.\n\n";

} else {

    $name = &zone_or_subnet ($name);

}

$hw = $ARGV[1];

if (! $hw) {

    die "\nError.  Try: $script --help for more information.\n\n";

}

$os = $ARGV[2];

if (! $os) {

    die "\nError.  Try: $script --help for more information.\n\n";

}

if ((($x = &verify_zone ($name)) eq 'PRIMARY') || ($x eq 'SEC_W_GLUE')) {

    $host = '@';
    $zone = $name;

} else {

    ($host, $zone) = split ('\.', $name, 2);
    die "Error: Cannot remove HINFO for $host to $zone -- no .primary file, use new_primary.\n" unless (($x = &verify_zone ($zone)) eq 'PRIMARY') || ($x eq 'SEC_W_GLUE');

}

&rcs_co ($zone, '.primary');
@file = &read_file ($zone, '.primary');
$record = &build_record ($host, 'HINFO', '"'.$hw.'"', '"'.$os.'"');
@recs = &find_record ($record, @file);

if ($#recs < 0) {

    $output = "\nError: No matching record.\nTry show_primary $zone\n";

} else {

    ($result, @file) = &remove_record ($record, @file);

    if ($result eq 'REMOVED') {

	&write_file ($zone, '.primary', @file);
	$output = "\nRecord Removed: HINFO removed for $host in $zone\n";
	$change = 1;

    } else {

	$output = "\nError: This isn't supposed to happen...\n";
	
    }

}

&rcs_ci ($zone, '.primary', "Script $script: removed HINFO record for $host", $change);
print "$output\n";

exit;
