Index: /trunk/tiny-import.pl
===================================================================
--- /trunk/tiny-import.pl	(revision 521)
+++ /trunk/tiny-import.pl	(revision 522)
@@ -37,11 +37,13 @@
 	conv	=> 0,
 	trial	=> 0,
+	legacy  => 0,
 	);
 # Handle some command-line arguments
 while ($ARGV[0] =~ /^-/) {
   my $arg = shift @ARGV;
-  usage() if $arg !~ /^-[rct]+$/;
+  usage() if $arg !~ /^-[rclt]+$/;
   # -r  rewrite imported files to comment imported records
   # -c  coerce/downconvert A+PTR = records to PTR
+  # -l  swallow A+PTR as-is
   # -t  trial mode;  don't commit to DB or actually rewrite flatfile (disables -r)
   $arg =~ s/^-//;
@@ -50,4 +52,5 @@
     $importcfg{rw} = 1 if $_ eq 'r';
     $importcfg{conv} = 1 if $_ eq 'c';
+    $importcfg{legacy} = 1 if $_ eq 'l';
     $importcfg{trial} = 1 if $_ eq 't';
   }
@@ -65,4 +68,6 @@
 	    Multiple passes may be necessary if SOA and = records are heavily
 	    intermixed and not clustered together.
+	-l  (for "legacy")  Force import of A+PTR records as-is.  Mutually exclusive
+            with -c.  -l takes precedence as -c is lossy.
 	-t  Trial run mode;  spits out records that would be left unimported.
 	    Disables -r if set.
@@ -272,5 +277,16 @@
 	$recsth->execute($fparent, $rparent, $host, 65280, $ip, 0, 0, 0, $ttl, $loc);
       } else {
-	if ($importcfg{conv}) {
+	if ($importcfg{legacy}) {
+	  # Just import it already!  Record may still be subject to downconversion on editing.
+	  $fparent = 0 if !$fparent;
+	  $rparent = 0 if !$rparent;
+	  if ($fparent || $rparent) {
+	    $recsth->execute($fparent, $rparent, $host, 65280, $ip, 0, 0, 0, $ttl, $loc);
+	  } else {
+	    # No parents found, cowardly refusing to add a dangling record
+	    push @deferred, $rec unless $nodefer;
+	    $impok = 0;
+	  }
+	} elsif ($importcfg{conv}) {
 	  # downconvert A+PTR if forward zone is not found
 	  $recsth->execute(0, $rparent, $host, 12, $ip, 0, 0, 0, $ttl, $loc);
