From 19eac2d7dcf77bf6c3cad7ab3dd9bcf9224cdf5c Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Tue, 29 Sep 2020 13:35:55 +0200 Subject: [PATCH] Renamed path_open() -> path_streamopen() --- src/common/conf_post.h | 8 +++++++- src/common/rclconfig.cpp | 8 ++++---- src/qtgui/rclm_idx.cpp | 2 +- src/qtgui/rclmain_w.cpp | 4 ++-- src/qtgui/restable.cpp | 4 ++-- src/qtgui/winschedtool.cpp | 18 ++++++++++++------ src/rcldb/rcldb.cpp | 4 ++-- src/utils/conftree.cpp | 6 +++--- src/utils/pathut.cpp | 33 +++++---------------------------- src/utils/pathut.h | 3 +-- src/utils/rclutil.cpp | 2 +- 11 files changed, 40 insertions(+), 52 deletions(-) diff --git a/src/common/conf_post.h b/src/common/conf_post.h index b9457e2e..fcdc688e 100644 --- a/src/common/conf_post.h +++ b/src/common/conf_post.h @@ -48,8 +48,12 @@ typedef int ssize_t; #define strcasecmp _stricmp #define chdir _chdir +#ifndef R_OK #define R_OK 4 +#endif +#ifndef W_OK #define W_OK 2 +#endif #ifndef X_OK #define X_OK 4 #endif @@ -59,6 +63,8 @@ typedef int ssize_t; #endif // _WIN32 -#define PRETEND_USE(expr) ((void)(expr)) +#ifndef PRETEND_USE +# define PRETEND_USE(expr) ((void)(expr)) +#endif /* PRETEND_USE */ #endif /* INCLUDED */ diff --git a/src/common/rclconfig.cpp b/src/common/rclconfig.cpp index 34151455..1d5afba5 100644 --- a/src/common/rclconfig.cpp +++ b/src/common/rclconfig.cpp @@ -938,8 +938,8 @@ bool RclConfig::getMissingHelperDesc(string& out) const void RclConfig::storeMissingHelperDesc(const string &s) { string fmiss = path_cat(getCacheDir(), "missing"); - fstream fp = path_open(fmiss, ios::trunc | ios::out); - if (fp.is_open()) { + fstream fp; + if (path_streamopen(fmiss, ios::trunc | ios::out, fp)) { fp << s; } } @@ -1787,8 +1787,8 @@ bool RclConfig::initUserConfig() for (int i = 0; i < ncffiles; i++) { string dst = path_cat(m_confdir, string(configfiles[i])); if (!path_exists(dst)) { - fstream output = path_open(dst, ios::out); - if (output.is_open()) { + fstream output; + if (path_streamopen(dst, ios::out, output)) { output << blurb << "\n"; if (!strcmp(configfiles[i], "recoll.conf")) { // Add improved unac_except_trans for some languages diff --git a/src/qtgui/rclm_idx.cpp b/src/qtgui/rclm_idx.cpp index f54b6a40..7018e825 100644 --- a/src/qtgui/rclm_idx.cpp +++ b/src/qtgui/rclm_idx.cpp @@ -234,7 +234,7 @@ bool RclMain::maybeArgsToFile(vector& args) string s; stringsToString(args, s); fstream fout; - if (!path_open(m_idxargstmp->filename(), ios::out|ios::trunc, fout)) { + if (!path_streamopen(m_idxargstmp->filename(), ios::out|ios::trunc, fout)) { QMessageBox::warning( 0, "Recoll", tr("Could not start recollindex (temp file error)")); return false; diff --git a/src/qtgui/rclmain_w.cpp b/src/qtgui/rclmain_w.cpp index c162bd63..3d2fb277 100644 --- a/src/qtgui/rclmain_w.cpp +++ b/src/qtgui/rclmain_w.cpp @@ -1158,8 +1158,8 @@ void RclMain::exportSimpleSearchHistory() } string path = qs2utf8s(dialog.selectedFiles().value(0)); LOGDEB("Chosen path: " << path << "\n"); - std::fstream fp = path_open(path, std::ios::out | std::ios::trunc); - if (!fp.is_open()) { + std::fstream fp; + if (!path_streamopen(path, std::ios::out | std::ios::trunc, fp)) { QMessageBox::warning(0, "Recoll", tr("Could not open/create file")); return; } diff --git a/src/qtgui/restable.cpp b/src/qtgui/restable.cpp index 1599f943..ead13084 100644 --- a/src/qtgui/restable.cpp +++ b/src/qtgui/restable.cpp @@ -807,8 +807,8 @@ void ResTable::saveAsCSV() if (s.isEmpty()) return; std::string tofile = qs2path(s); - std::fstream fp = path_open(tofile, std::ios::out|std::ios::trunc); - if (!fp.is_open()) { + std::fstream fp; + if (!path_streamopen(tofile, std::ios::out|std::ios::trunc,fp)) { QMessageBox::warning(0, "Recoll", tr("Can't open/create file: ") + s); return; diff --git a/src/qtgui/winschedtool.cpp b/src/qtgui/winschedtool.cpp index 3ca34905..07b79dbd 100644 --- a/src/qtgui/winschedtool.cpp +++ b/src/qtgui/winschedtool.cpp @@ -36,9 +36,9 @@ using namespace std; void WinSchedToolW::init() { if (!theconfig) { - QMessageBox::warning(0, tr("Error"), - tr("Configuration not initialized")); - return; + QMessageBox::warning(0, tr("Error"), + tr("Configuration not initialized")); + return; } connect(startPB, SIGNAL(clicked()), this, SLOT(startWinScheduler())); @@ -55,9 +55,15 @@ void WinSchedToolW::init() LOGDEB("WinSchedTool: batch file " << batchfile << endl); if (!path_exists(batchfile)) { - std::fstream fp = path_open(batchfile, ios::out|ios::trunc); - fp << "\"" << recollindex << "\" -c \"" << confdir << "\"\n"; - fp.close(); + std::fstream fp; + if (path_streamopen(batchfile, ios::out|ios::trunc, fp)) { + fp << "\"" << recollindex << "\" -c \"" << confdir << "\"\n"; + fp.close(); + } else { + QMessageBox::warning(0, tr("Error"), + tr("Could not create batch file")); + return; + } } QString blurb = tr( "

Recoll indexing batch scheduling

" diff --git a/src/rcldb/rcldb.cpp b/src/rcldb/rcldb.cpp index ad25e279..3b43ef7a 100644 --- a/src/rcldb/rcldb.cpp +++ b/src/rcldb/rcldb.cpp @@ -284,8 +284,8 @@ void Db::Native::openWrite(const string& dir, Db::OpenMode mode) // Force Chert format, don't store the text. string stub = path_cat(m_rcldb->m_config->getConfDir(), "xapian.stub"); - std::fstream fp = path_open(stub, std::ios::out|std::ios::trunc); - if (!fp.is_open()) { + std::fstream fp; + if (!path_streamopen(stub, std::ios::out|std::ios::trunc, fp)) { throw(string("Can't create ") + stub); } fp << "chert " << dir << "\n"; diff --git a/src/utils/conftree.cpp b/src/utils/conftree.cpp index 9e172e76..62f16274 100644 --- a/src/utils/conftree.cpp +++ b/src/utils/conftree.cpp @@ -235,7 +235,7 @@ ConfSimple::ConfSimple(const char *fname, int readonly, bool tildexp, mode |= ios::trunc; } fstream input; - path_open(fname, mode, input); + path_streamopen(fname, mode, input); if (!input.is_open()) { LOGDEB0("ConfSimple::ConfSimple: fstream(w)(" << fname << ", " << mode << ") errno " << errno << "\n"); @@ -246,7 +246,7 @@ ConfSimple::ConfSimple(const char *fname, int readonly, bool tildexp, input.clear(); status = STATUS_RO; // open readonly - path_open(fname, ios::in, input); + path_streamopen(fname, ios::in, input); } if (!input.is_open()) { @@ -579,7 +579,7 @@ bool ConfSimple::write() } if (m_filename.length()) { fstream output; - path_open(m_filename, ios::out | ios::trunc, output); + path_streamopen(m_filename, ios::out | ios::trunc, output); if (!output.is_open()) { return 0; } diff --git a/src/utils/pathut.cpp b/src/utils/pathut.cpp index 71d59bce..c2d50caa 100644 --- a/src/utils/pathut.cpp +++ b/src/utils/pathut.cpp @@ -879,29 +879,7 @@ bool path_rmdir(const std::string& path) return RMDIR(syspath) == 0; } -#if !defined(__GNUC__) || __GNUC__ > 4 || defined(__clang__) -// Not sure what g++ version supports fstream assignment but 4.9 -// (jessie) certainly does not -std::fstream path_open(const std::string& path, int mode) -{ -#if defined(_WIN32) && defined (_MSC_VER) - // MSC STL has support for using wide chars in fstream - // constructor. We need this if, e.g. the user name/home directory - // is not ASCII. Actually don't know how to do this with gcc - wchar_t wpath[MAX_PATH + 1]; - utf8towchar(path, wpath, MAX_PATH); - std::fstream ret(wpath, std::ios_base::openmode(mode)); - if (!ret.is_open()) { - LOGERR("path_open("<< path << ", "<< mode <<") errno " << errno <<"\n"); - } - return ret; -#else - return std::fstream(path, std::ios_base::openmode(mode)); -#endif -} -#endif - -bool path_open(const std::string& path, int mode, std::fstream& outstream) +bool path_streamopen(const std::string& path, int mode, std::fstream& outstream) { #if defined(_WIN32) && defined (_MSC_VER) // MSC STL has support for using wide chars in fstream @@ -910,15 +888,14 @@ bool path_open(const std::string& path, int mode, std::fstream& outstream) wchar_t wpath[MAX_PATH + 1]; utf8towchar(path, wpath, MAX_PATH); outstream.open(wpath, std::ios_base::openmode(mode)); +#else + outstream.open(path, std::ios_base::openmode(mode)); +#endif if (!outstream.is_open()) { - LOGERR("path_open("<< path << ", "<< mode <<") errno " << errno <<"\n"); + LOGERR("path_streamopen("<