D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
bin
/
Filename :
transform-fdt
back
Copy
#!/usr/bin/perl =head1 NAME transform-fdt - transform .fdt files to new file format =head1 SYNOPSIS transform-fdt *.fdt =head1 DESCRIPTION We are going to change the file format slightly for .fdt files. This script will take files of the old format and rewrite them using the new format. Old files will be renamed to have a ".BAK" extension. Running this script multiple times against the same file should cause an error. NOTE: The file format has not changed yet, so you should not run this. It is for testing purposes for core developers only at this point. =cut use strict; use warnings; use File::Slurp; use Plucene::Store::InputStream; while (my $file = shift) { eval { my $back = $file . ".BAK"; local $SIG{__WARN__} = sub { die "$file already converted" }; my $in = Plucene::Store::InputStream->new($file); my $out = ""; while (!$in->eof) { my @docs = map [ $in->read_vint, $in->read_byte, $in->read_string ], 1 .. $in->read_vint; my $template = "w" . ("wCw/a*" x @docs); $out .= pack $template, scalar @docs, map @$_, @docs; } rename $file => $back; write_file $file, $out; }; warn $@ if $@; }