Ensure that the tmp environment (e.g. RECOLL_TMPDIR) is used on Windows.
This commit is contained in:
parent
f3858a7e3a
commit
c84b61a6d8
@ -233,13 +233,20 @@ bool RclMain::maybeArgsToFile(vector<string>& args)
|
||||
TempFile temp("");
|
||||
m_idxargstmp = rememberTempFile(temp);
|
||||
}
|
||||
LOGDEB0("RclMain::maybeArgsToFile: temp file name [" <<
|
||||
m_idxargstmp->filename() << "]\n");
|
||||
bool hasrclindex = (args[0] == "recollindex");
|
||||
if (hasrclindex) {
|
||||
args.erase(args.begin());
|
||||
}
|
||||
string s;
|
||||
stringsToString(args, s);
|
||||
fstream fout(m_idxargstmp->filename(), ios::out|ios::trunc);
|
||||
fstream fout;
|
||||
if (!path_open(m_idxargstmp->filename(), ios::out|ios::trunc, fout)) {
|
||||
QMessageBox::warning(
|
||||
0, "Recoll", tr("Could not start recollindex (temp file error)"));
|
||||
return false;
|
||||
}
|
||||
fout << s;
|
||||
fout.close();
|
||||
if (hasrclindex) {
|
||||
@ -258,7 +265,9 @@ bool RclMain::checkIdxPaths()
|
||||
{
|
||||
string badpaths;
|
||||
vector<string> args{"recollindex", "-c", theconfig->getConfDir(), "-E"};
|
||||
maybeArgsToFile(args);
|
||||
if (!maybeArgsToFile(args)) {
|
||||
return false;
|
||||
}
|
||||
ExecCmd::backtick(args, badpaths);
|
||||
if (!badpaths.empty()) {
|
||||
int rep = QMessageBox::warning(
|
||||
@ -328,7 +337,9 @@ void RclMain::toggleIndexing()
|
||||
args.push_back(m_idxreasontmp->filename());
|
||||
}
|
||||
m_idxproc = new ExecCmd;
|
||||
maybeArgsToFile(args);
|
||||
if (!maybeArgsToFile(args)) {
|
||||
return;
|
||||
}
|
||||
m_idxproc->startExec("recollindex", args, false, false);
|
||||
}
|
||||
break;
|
||||
@ -434,7 +445,9 @@ void RclMain::rebuildIndex()
|
||||
args.push_back(m_idxreasontmp->filename());
|
||||
}
|
||||
m_idxproc = new ExecCmd;
|
||||
maybeArgsToFile(args);
|
||||
if (!maybeArgsToFile(args)) {
|
||||
return;
|
||||
}
|
||||
m_idxproc->startExec("recollindex", args, false, false);
|
||||
}
|
||||
}
|
||||
@ -561,7 +574,9 @@ void RclMain::specialIndex()
|
||||
args.push_back(top);
|
||||
}
|
||||
m_idxproc = new ExecCmd;
|
||||
maybeArgsToFile(args);
|
||||
if (!maybeArgsToFile(args)) {
|
||||
return;
|
||||
}
|
||||
LOGINFO("specialIndex: exec: " << execToString("recollindex", args) <<endl);
|
||||
m_idxproc->startExec("recollindex", args, false, false);
|
||||
}
|
||||
@ -584,7 +599,9 @@ void RclMain::updateIdxForDocs(vector<Rcl::Doc>& docs)
|
||||
}
|
||||
args.insert(args.end(), paths.begin(), paths.end());
|
||||
m_idxproc = new ExecCmd;
|
||||
maybeArgsToFile(args);
|
||||
if (!maybeArgsToFile(args)) {
|
||||
return;
|
||||
}
|
||||
m_idxproc->startExec("recollindex", args, false, false);
|
||||
// Call periodic100 to update the menu entries states
|
||||
periodic100();
|
||||
|
||||
@ -129,7 +129,8 @@ static const string& path_wingetrcltmpdir()
|
||||
|
||||
static bool path_gettempfilename(string& filename, string&)
|
||||
{
|
||||
string tdir = path_wingetrcltmpdir();
|
||||
string tdir = tmplocation();
|
||||
LOGDEB0("path_gettempfilename: tdir: [" << tdir << "]\n");
|
||||
wchar_t dbuf[MAX_PATH + 1];
|
||||
utf8towchar(tdir, dbuf, MAX_PATH);
|
||||
|
||||
@ -145,6 +146,7 @@ static bool path_gettempfilename(string& filename, string&)
|
||||
LOGDEB1("path_wingettempfilename: DeleteFile " << filename << " Ok\n");
|
||||
}
|
||||
path_slashize(filename);
|
||||
LOGDEB1("path_gettempfilename: filename: [" << filename << "]\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -312,9 +314,7 @@ const string& tmplocation()
|
||||
}
|
||||
if (tmpdir == 0) {
|
||||
#ifdef _WIN32
|
||||
wchar_t bufw[MAX_PATH + 1];
|
||||
GetTempPathW(MAX_PATH + 1, bufw);
|
||||
wchartoutf8(bufw, stmpdir);
|
||||
stmpdir = path_wingetrcltmpdir();
|
||||
#else
|
||||
stmpdir = "/tmp";
|
||||
#endif
|
||||
@ -444,24 +444,18 @@ TempFile::Internal::Internal(const string& suffix)
|
||||
return;
|
||||
}
|
||||
m_filename += suffix;
|
||||
LOGDEB1("TempFile: filename: " << m_filename << endl);
|
||||
int fd1 = open(m_filename.c_str(), O_CREAT | O_EXCL, 0600);
|
||||
if (fd1 < 0) {
|
||||
std::fstream fout;
|
||||
if (!path_open(m_filename, ios::out|ios::trunc, fout)) {
|
||||
m_reason = string("Open/create error. errno : ") +
|
||||
lltodecstr(errno) + " file name: " + m_filename;
|
||||
LOGSYSERR("Tempfile::Internal::Internal", "open/create", m_filename);
|
||||
m_filename.erase();
|
||||
} else {
|
||||
close(fd1);
|
||||
}
|
||||
}
|
||||
|
||||
const std::string& TempFile::rcltmpdir()
|
||||
{
|
||||
#ifdef _WIN32
|
||||
return path_wingetrcltmpdir();
|
||||
#else
|
||||
return tmplocation();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user