]> git.tdb.fi Git - libs/datafile.git/blobdiff - tool/packer.cpp
Provide access to the keyword of the current statement
[libs/datafile.git] / tool / packer.cpp
index 44be7243e86e45df093e8fdf38270f8bcdfbbd45..3576472e57b07baa7f2755e9c8012f5b60d0110e 100644 (file)
@@ -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);
                }
        }