@@ -83,19 +83,19 @@ int appenddbtoindex(int argc, const char **argv, const Command &command) {
8383 const unsigned int key = keys[i];
8484 const std::string& inDb = par.filenames [i];
8585 const std::string inIndexName = inDb + " .index" ;
86- size_t inSize = 0 ;
87- FILE* inIndexHandle = FileUtil::openFileOrDie (inIndexName.c_str (), " r" , true );
88- size_t indexSize = 0 ;
89- while ((indexSize = fread (buffer, 1 , 8192 , inIndexHandle)) > 0 ) {
90- size_t written = fwrite (buffer, 1 , indexSize, outDataHandle);
91- if (written != indexSize) {
92- Debug (Debug::ERROR) << " Cannot write to data file " << outDb << " \n " ;
93- EXIT (EXIT_FAILURE);
94- }
95- inSize += indexSize;
86+
87+ DBReader<unsigned int > reader (inDb.c_str (), inIndexName.c_str (), 1 , DBReader<unsigned int >::USE_DATA | DBReader<unsigned int >::USE_INDEX);
88+ reader.open (DBReader<unsigned int >::HARDNOSORT);
89+
90+ char * data = DBReader<unsigned int >::serialize (reader);
91+ size_t inSize = DBReader<unsigned int >::indexMemorySize (reader);
92+ size_t written = fwrite (data, 1 , inSize, outDataHandle);
93+ free (data);
94+ if (written != inSize) {
95+ Debug (Debug::ERROR) << " Cannot write to data file " << outDb << " \n " ;
96+ EXIT (EXIT_FAILURE);
9697 }
97- fclose (inIndexHandle);
98- size_t written = fwrite (&nullbyte, sizeof (char ), 1 , outDataHandle);
98+ written = fwrite (&nullbyte, sizeof (char ), 1 , outDataHandle);
9999 if (written != 1 ) {
100100 Debug (Debug::ERROR) << " Cannot write to data file " << outDb << " \n " ;
101101 EXIT (EXIT_FAILURE);
@@ -109,8 +109,6 @@ int appenddbtoindex(int argc, const char **argv, const Command &command) {
109109 }
110110 offset += inSize;
111111
112- DBReader<unsigned int > reader (inDb.c_str (), inIndexName.c_str (), 1 , DBReader<unsigned int >::USE_DATA | DBReader<unsigned int >::USE_INDEX);
113- reader.open (DBReader<unsigned int >::HARDNOSORT);
114112 inSize = reader.getTotalDataSize ();
115113 for (size_t idx = 0 ; idx < reader.getDataFileCnt (); idx++) {
116114 char * data = reader.getDataForFile (idx);
0 commit comments