Revision 678 (by dpavlin, 2005/02/27 23:07:35) Experimental support for dBase .dbf files. Usege like this in all2xml.conf:

[hda]
dbf_file=/data/drustvene/hda/ISO.DBF
type=dbf
dbf_codepage=cp852
dbf_mapping=<<_END_OF_MAP_
ID_BROJ 001
ISBN_BROJ 010
SKUPINA1 200
SKUPINA2 205
SKUPINA4 210
SKUPINA5 215
SKUPINA6 225
SKUPINA7 300
ANOTACIJA 330
PREDMET1 610
PREDMET2 610
PREDMET3 510
UDK 675
REDALICA 700
SIGNATURA 990
_END_OF_MAP_

dbf type will use <isis> tag in import_xml and dbf_codepage will
override codepage specified in import_xml file.

Small code refactoring.

#
# hash_sf($row_data,'field'[,'subfield'])
#
# e.g. hash_sf($row,'700','a')
#
sub hash_sf {
	my $row = shift @_;
	my $field = shift @_;
	my $subfield = shift @_;

	my $i = shift @_ || 0;

	my $out;

	if ($row->{$field}->[$i]) {
		if (! $subfield) {
			# subfield list undef, empty or no defined subfields for this record
			my $all_sf = $row->{record}->{$field}->[$i] || confess "can't find field $field:$i",Dumper($row);
			$all_sf =~ s/[\^\$]./ /g;   # nuke definitions
			return $all_sf;	
		}
		my $sf = $row->{$field}->[$i]->{$subfield};
		return $sf if ($sf);
	}
}

1;