[interchange-cvs] interchange - jon modified lib/Vend/Data.pm

interchange-core@interchange.redhat.com interchange-core@interchange.redhat.com
Thu Oct 25 19:32:01 2001


User:      jon
Date:      2001-10-25 23:31:03 GMT
Modified:  lib/Vend Data.pm
Log:
Prevent corruption of tab-delimited DB exports by filtering tabs to spaces.
Unfortunately any delimiter presents these kinds of problems, but few have
fairly safe default replacements like tab->space.

Also make a tiny optimization around $nuke checking.

Revision  Changes    Path
2.3       +7 -2      interchange/lib/Vend/Data.pm


rev 2.3, prev_rev 2.2
Index: Data.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Data.pm,v
retrieving revision 2.2
retrieving revision 2.3
diff -u -u -r2.2 -r2.3
--- Data.pm	2001/10/06 06:14:23	2.2
+++ Data.pm	2001/10/25 23:31:03	2.3
@@ -1,6 +1,6 @@
 # Vend::Data - Interchange databases
 #
-# $Id: Data.pm,v 2.2 2001/10/06 06:14:23 mheins Exp $
+# $Id: Data.pm,v 2.3 2001/10/25 23:31:03 jon Exp $
 # 
 # Copyright (C) 1996-2001 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -1196,9 +1196,11 @@
 	elsif($record_delim eq "\n") {
 		print EXPORT join $delim, @cols;
 		print EXPORT $record_delim;
+		my $detab = ($delim eq "\t") ? 1 : 0;
 		if(defined $nuke) {
 			while( (undef, @data) = $db->each_record() ) {
-				splice(@data, $nuke, 1) if defined $nuke;
+				splice(@data, $nuke, 1);
+				if ($detab) { s/\t/ /g for @data; }
 				$tempdata = join $delim, @data;
 				$tempdata =~ s/\r?\n/\r/g;
 				print EXPORT $tempdata, $record_delim;
@@ -1206,6 +1208,7 @@
 		}
 		else {
 			while( (undef, @data) = $db->each_record() ) {
+				if ($detab) { s/\t/ /g for @data; }
 				$tempdata = join $delim, @data;
 				$tempdata =~ s/\r?\n/\r/g;
 				print EXPORT $tempdata, $record_delim;
@@ -1215,8 +1218,10 @@
 	else {
 		print EXPORT join $delim, @cols;
 		print EXPORT $record_delim;
+		my $detab = ($delim eq "\t" or $record_delim eq "\t") ? 1 : 0;
 		while( (undef, @data) = $db->each_record() ) {
 			splice(@data, $nuke, 1) if defined $nuke;
+			if ($detab) { s/\t/ /g for @data; }
 			print EXPORT join($delim, @data);
 			print EXPORT $record_delim;
 		}