From 69363a90a1b400b6001c2cae4f7484505b54fd66 Mon Sep 17 00:00:00 2001 From: maneeshpm Date: Tue, 23 Feb 2021 19:36:50 +0530 Subject: [PATCH 1/2] do not change the path provided by the user --- src/writer/creator.cpp | 10 ++++------ test/creator.cpp | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/writer/creator.cpp b/src/writer/creator.cpp index 4766c0541..9fa269333 100644 --- a/src/writer/creator.cpp +++ b/src/writer/creator.cpp @@ -286,7 +286,7 @@ namespace zim ::close(data->out_fd); TINFO("rename tmpfile to final one."); - DEFAULTFS::rename(data->basename+".zim.tmp", data->basename+".zim"); + DEFAULTFS::rename(data->basename+".tmp", data->basename); TINFO("finish"); } @@ -404,12 +404,10 @@ namespace zim nbClusters(0), nbCompClusters(0), nbUnCompClusters(0), - start_time(time(NULL)) + start_time(time(NULL)), + basename(fname) { - basename = (fname.size() > 4 && fname.compare(fname.size() - 4, 4, ".zim") == 0) - ? fname.substr(0, fname.size() - 4) - : fname; - auto zim_name = basename + ".zim.tmp"; + auto zim_name = basename + ".tmp"; #ifdef _WIN32 int mode = _S_IREAD | _S_IWRITE; #else diff --git a/test/creator.cpp b/test/creator.cpp index 4a4506f30..cceefa863 100644 --- a/test/creator.cpp +++ b/test/creator.cpp @@ -96,7 +96,7 @@ void test_redirect_dirent( TEST(ZimCreator, createEmptyZim) { unittests::TempFile temp("emptyzimfile"); - auto tempPath = temp.path() + ".zim"; + auto tempPath = temp.path(); writer::Creator creator; creator.startZimCreation(tempPath); creator.finishZimCreation(); @@ -171,7 +171,7 @@ class TestItem : public writer::Item TEST(ZimCreator, createZim) { unittests::TempFile temp("zimfile"); - auto tempPath = temp.path() + ".zim"; + auto tempPath = temp.path(); writer::Creator creator; creator.configIndexing(true, "eng"); creator.startZimCreation(tempPath); From e705b41daa5604d6d5acf2c61ba5d2a6a35b65c2 Mon Sep 17 00:00:00 2001 From: maneeshpm Date: Tue, 23 Feb 2021 19:43:28 +0530 Subject: [PATCH 2/2] rename basename to zimName, new member tmpFileName --- src/writer/creator.cpp | 10 +++++----- src/writer/creatordata.h | 3 ++- src/writer/xapianHandler.cpp | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/writer/creator.cpp b/src/writer/creator.cpp index 9fa269333..11fea8327 100644 --- a/src/writer/creator.cpp +++ b/src/writer/creator.cpp @@ -286,7 +286,7 @@ namespace zim ::close(data->out_fd); TINFO("rename tmpfile to final one."); - DEFAULTFS::rename(data->basename+".tmp", data->basename); + DEFAULTFS::rename(data->tmpFileName, data->zimName); TINFO("finish"); } @@ -405,19 +405,19 @@ namespace zim nbCompClusters(0), nbUnCompClusters(0), start_time(time(NULL)), - basename(fname) + zimName(fname), + tmpFileName(fname + ".tmp") { - auto zim_name = basename + ".tmp"; #ifdef _WIN32 int mode = _S_IREAD | _S_IWRITE; #else mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; #endif - out_fd = open(zim_name.c_str(), O_RDWR|O_CREAT|O_TRUNC, mode); + out_fd = open(tmpFileName.c_str(), O_RDWR|O_CREAT|O_TRUNC, mode); if (out_fd == -1){ perror(nullptr); std::ostringstream ss; - ss << "Cannot create file " << zim_name; + ss << "Cannot create file " << tmpFileName; throw std::runtime_error(ss.str()); } if(lseek(out_fd, CLUSTER_BASE_OFFSET, SEEK_SET) != CLUSTER_BASE_OFFSET) { diff --git a/src/writer/creatordata.h b/src/writer/creatordata.h index c799534f4..26bfb8737 100644 --- a/src/writer/creatordata.h +++ b/src/writer/creatordata.h @@ -98,7 +98,8 @@ namespace zim ThreadList workerThreads; std::thread writerThread; const CompressionType compression; - std::string basename; + std::string zimName; + std::string tmpFileName; bool isEmpty = true; bool isExtended = false; zsize_t clustersSize; diff --git a/src/writer/xapianHandler.cpp b/src/writer/xapianHandler.cpp index 37443d771..a0f8c1ec8 100644 --- a/src/writer/xapianHandler.cpp +++ b/src/writer/xapianHandler.cpp @@ -27,7 +27,7 @@ using namespace zim::writer; FullTextXapianHandler::FullTextXapianHandler(CreatorData* data) - : mp_indexer(new XapianIndexer(data->basename+"_fulltext.idx", data->indexingLanguage, IndexingMode::FULL, true)), + : mp_indexer(new XapianIndexer(data->zimName+"_fulltext.idx", data->indexingLanguage, IndexingMode::FULL, true)), mp_creatorData(data) {} @@ -71,7 +71,7 @@ void FullTextXapianHandler::handle(Dirent* dirent, std::shared_ptr item) } TitleXapianHandler::TitleXapianHandler(CreatorData* data) - : mp_indexer(new XapianIndexer(data->basename+"_title.idx", data->indexingLanguage, IndexingMode::TITLE, true)), + : mp_indexer(new XapianIndexer(data->zimName+"_title.idx", data->indexingLanguage, IndexingMode::TITLE, true)), mp_creatorData(data) {}