X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=tool%2Fpacker.cpp;h=3576472e57b07baa7f2755e9c8012f5b60d0110e;hb=1a3b30ea35fbc19e56bbd35e4ee1811d8d5e02a4;hp=44be7243e86e45df093e8fdf38270f8bcdfbbd45;hpb=a3935faaba6187cbccc5f2b60b065d9180b1cdee;p=libs%2Fdatafile.git diff --git a/tool/packer.cpp b/tool/packer.cpp index 44be724..3576472 100644 --- a/tool/packer.cpp +++ b/tool/packer.cpp @@ -79,7 +79,7 @@ bool Packer::detect_raw(IO::Seekable &in) IO::SeekOffset offset = in.tell(); bool raw = false; DataFile::Parser parser(in, "-"); - while(!raw && !in.eof() && in.tell()<10240) + while(!raw && parser && in.tell()<10240) { try { @@ -106,8 +106,7 @@ void Packer::transfer_datafile(IO::Base &in, const string &fn, IO::Base &out, Ob DataFile::Statement st = parser.parse(true); if(st.valid) { - bool sys = !st.keyword.compare(0, 2, "__"); - if(collection && !sys) + if(collection && !st.control) { if(st.get_signature()=="s") { @@ -119,7 +118,7 @@ void Packer::transfer_datafile(IO::Base &in, const string &fn, IO::Base &out, Ob else collection = false; } - if(!sys || st.keyword=="__src") + if(!st.control || st.keyword=="__src") writer->write(st); } }