diff -Nurd tinydns-bent-1.1/tinydns-bent.spec tinydns-bent-1.3/tinydns-bent.spec
--- tinydns-bent-1.1/tinydns-bent.spec	Thu Mar  2 13:48:03 2000
+++ tinydns-bent-1.3/tinydns-bent.spec	Mon Feb 19 21:13:12 2001
@@ -1,5 +1,5 @@
 Name: tinydns-bent
-Version: 1.1
+Version: 1.3
 Release: 1
 Summary: perl scripts for beautifying tinydns-data
 Source: tinydns-bent-%{PACKAGE_VERSION}.tar.gz
@@ -27,20 +27,25 @@
 pod2man tinydns-data-pull      >tinydns-data-pull.1
 
 %install
-mkdir -p $RPM_BUILD_ROOT/usr/{bin,man/man1}
-install tinydns-data-compactor   $RPM_BUILD_ROOT/usr/bin/
-install tinydns-data-beautify    $RPM_BUILD_ROOT/usr/bin/
-install tinydns-data-pull        $RPM_BUILD_ROOT/usr/bin/
-install tinydns-data-compactor.1 $RPM_BUILD_ROOT/usr/man/man1/
-install tinydns-data-beautify.1  $RPM_BUILD_ROOT/usr/man/man1/
-install tinydns-data-pull.1      $RPM_BUILD_ROOT/usr/man/man1/
+mkdir -p $RPM_BUILD_ROOT/usr/local/{bin,man/man1}
+install tinydns-data-compactor   $RPM_BUILD_ROOT/usr/local/bin/
+install tinydns-data-beautify    $RPM_BUILD_ROOT/usr/local/bin/
+install tinydns-data-pull        $RPM_BUILD_ROOT/usr/local/bin/
+install tinydns-data-compactor.1 $RPM_BUILD_ROOT/usr/local/man/man1/
+install tinydns-data-beautify.1  $RPM_BUILD_ROOT/usr/local/man/man1/
+install tinydns-data-pull.1      $RPM_BUILD_ROOT/usr/local/man/man1/
 
 %files
 %defattr(-,root,root)
-/usr/bin/*
-%doc /usr/man/man1/*
+/usr/local/bin/*
+%doc /usr/local/man/man1/*
 
 %changelog
+* Mon Feb 19 2001 Andrew Pam <xanni@sericyb.com.au>
+  - Version 1.3, added decoding of wildcards and generic TXT records,
+    handle embedded octal escapes correctly in tinydns-data-compactor
+* Sun Feb 18 2001 Andrew Pam <xanni@sericyb.com.au>
+  - Version 1.2, fixed ptr support in tinydns-data-compactor
 * Wed Mar  1 2000 Bennett Todd <bet@rahul.net>
   - Version 1.1, added tinydns-data-pull
 * Tue Feb 15 2000 Bennett Todd <bet@rahul.net>
diff -Nurd tinydns-bent-1.1/tinydns-data-compactor tinydns-bent-1.3/tinydns-data-compactor
--- tinydns-bent-1.1/tinydns-data-compactor	Wed Feb 16 04:05:26 2000
+++ tinydns-bent-1.3/tinydns-data-compactor	Mon Feb 19 21:08:21 2001
@@ -1,9 +1,16 @@
 #!/usr/bin/perl -w
-# tinydns-data-compactor 1.0 2000-02-08 Bennett Todd <bet@rahul.net>
+# tinydns-data-compactor 1.3 2001-02-19 Andrew Pam <xanni@sericyb.com.au>
+# based on tinydns-data-compactor 1.0 2000-02-08 Bennett Todd <bet@rahul.net>
 # Copyright 2000 OVEN Digital
 # You may freely use and redistribute this as you like; please don't
 # remove the copyright statement; and if you modify it please
 # add a comment describing your changes.
+#
+# Modified 2001-02-18 Andrew Pam to handle ptr correctly
+# Modified 2001-02-19 Andrew Pam
+# * Decode wildcards
+# * Decode generic TXT records
+# * Handle embedded octal escapes correctly in &octstr_decode
 
 =head1 NAME
 
@@ -51,10 +58,32 @@
 my @ptr     = grep { $_->[0] eq '^' } @records;
 my @cname   = grep { $_->[0] eq 'C' } @records;
 
+# Added 2001-02-19 Andrew Pam
+# Decode encoded wildcards
+map { $_->[-1] =~ s/^(.)\\052/$1\*/ } @service, @cname;
+
 # Build indices onto parts of the data
 my %service = map { $_->[1] => $_ } @service;
+my %ptrs = map { $_->[1] => $_ } @ptr;	# Added 2001/02/18 Andrew Pam
 my %generic_ptrs = map { $_->[2] => $_ } grep { $_->[3] == 12 } @generic;
 @generic = grep { $_->[3] != 12 } @generic;
+# Added 2001-02-19 Andrew Pam
+my %generic_txt = map { $_->[2] => $_ } grep { $_->[3] == 16 } @generic;
+@generic = grep { $_->[3] != 16 } @generic;
+
+# Added 2001-02-18 Andrew Pam
+for (keys %ptrs) {
+	next unless /^(\d+)\.(\d+)\.(\d+)\.(\d+)\.in-addr\.arpa$/;
+	my $ip = "$4.$3.$2.$1";
+	my $h = $ptrs{$_}->[2];
+	chop $h if $h =~ /\.$/;
+	next unless exists $service{$h};
+	next unless $service{$h}->[2] eq $ip;
+	my $ttl = $service{$h}->[3];
+	push @host, [ '=', $h, $ip, $ttl, "=$h:$ip:$ttl" ];
+	delete $service{$h};
+	delete $ptrs{$_};
+}
 
 for (keys %generic_ptrs) {
 	next unless /^(\d+)\.(\d+)\.(\d+)\.(\d+)\.in-addr\.arpa$/;
@@ -68,11 +97,25 @@
 	delete $generic_ptrs{$_};
 }
 
+# Added 2001-02-19 Andrew Pam
+for (keys %generic_txt) {
+	my $h = $generic_txt{$_}->[2];
+	my $s = &octstr_decode($generic_txt{$_}->[4]);
+	$s =~ s/\\040/\040/g;	# Decode spaces
+	my $ttl = $generic_txt{$_}->[5];
+	push @txt, [ "'", $h, $s, $ttl, "'$h:$s:$ttl" ];
+	delete $generic_txt{$_};
+}
+
 sub octstr_decode {
 	my($src) = @_;
 	my @dst;
 	while ($src =~ s/^\\([0-7][0-7][0-7])//) {
 		my $len = oct($1);
+		# Modified 2001-02-19 Andrew Pam
+		# Handle embedded octal escapes!
+		my @list = $src =~ m/\\[0-7][0-7][0-7]/g;
+		$len += ($#list + 1) * 3;
 		die "len=$1 > length($src)" if $len > length($src);
 		push @dst, substr($src, 0, $len, '');
 	}
@@ -80,5 +123,8 @@
 	return join('.', grep{length}@dst);
 }
 
-print map { $_->[-1] } @prim_ns, @dele_ns, @zone, @host, @mx, @txt, @ptr,
-	@cname, @generic, values(%service), values(%generic_ptrs);
+#print map { $_->[-1] } @prim_ns, @dele_ns, @zone, @host, @mx, @txt, @ptr,
+#	@cname, @generic, values(%service), values(%generic_ptrs);
+# Modified 2001-02-18 Andrew Pam
+print map { $_->[-1] } @prim_ns, @dele_ns, @zone, @host, @mx, @txt, @cname,
+	@generic, values(%service), values(%ptrs), values(%generic_ptrs);

