Windows: replace unlink() with unicode-capable path_unlink()
This commit is contained in:
parent
cb3a59f88f
commit
f15e3f21fa
@ -145,7 +145,7 @@ public:
|
|||||||
if (path_exists(m_stopfilename)) {
|
if (path_exists(m_stopfilename)) {
|
||||||
LOGINF("recollindex: asking indexer to stop because " <<
|
LOGINF("recollindex: asking indexer to stop because " <<
|
||||||
m_stopfilename << " exists\n");
|
m_stopfilename << " exists\n");
|
||||||
unlink(m_stopfilename.c_str());
|
path_unlink(m_stopfilename);
|
||||||
stopindexing = true;
|
stopindexing = true;
|
||||||
}
|
}
|
||||||
if (stopindexing) {
|
if (stopindexing) {
|
||||||
|
|||||||
@ -472,10 +472,10 @@ WebQueueIndexer::processone(const string &path,
|
|||||||
dounlink = true;
|
dounlink = true;
|
||||||
out:
|
out:
|
||||||
if (dounlink) {
|
if (dounlink) {
|
||||||
if (unlink(path.c_str())) {
|
if (!path_unlink(path)) {
|
||||||
LOGSYSERR("WebQueueIndexer::processone", "unlink", path);
|
LOGSYSERR("WebQueueIndexer::processone", "unlink", path);
|
||||||
}
|
}
|
||||||
if (unlink(dotpath.c_str())) {
|
if (!path_unlink(dotpath)) {
|
||||||
LOGSYSERR("WebQueueIndexer::processone", "unlink", dotpath);
|
LOGSYSERR("WebQueueIndexer::processone", "unlink", dotpath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -246,7 +246,7 @@ void Db::Native::openWrite(const string& dir, Db::OpenMode mode)
|
|||||||
if (mode == DbTrunc) {
|
if (mode == DbTrunc) {
|
||||||
if (path_exists(path_cat(dir, "iamchert"))) {
|
if (path_exists(path_cat(dir, "iamchert"))) {
|
||||||
wipedir(dir);
|
wipedir(dir);
|
||||||
unlink(dir.c_str());
|
path_unlink(dir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -23,6 +23,7 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include "safesysstat.h"
|
#include "safesysstat.h"
|
||||||
#include "safeunistd.h"
|
#include "safeunistd.h"
|
||||||
|
#include "pathut.h"
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <utime.h>
|
#include <utime.h>
|
||||||
@ -83,7 +84,7 @@ bool copyfile(const char *src, const char *dst, string &reason, int flags)
|
|||||||
ret = true;
|
ret = true;
|
||||||
out:
|
out:
|
||||||
if (ret == false && !(flags©FILE_NOERRUNLINK))
|
if (ret == false && !(flags©FILE_NOERRUNLINK))
|
||||||
::unlink(dst);
|
path_unlink(dst);
|
||||||
if (sfd >= 0)
|
if (sfd >= 0)
|
||||||
::close(sfd);
|
::close(sfd);
|
||||||
if (dfd >= 0)
|
if (dfd >= 0)
|
||||||
@ -121,7 +122,7 @@ bool stringtofile(const string& dt, const char *dst, string& reason,
|
|||||||
ret = true;
|
ret = true;
|
||||||
out:
|
out:
|
||||||
if (ret == false && !(flags©FILE_NOERRUNLINK))
|
if (ret == false && !(flags©FILE_NOERRUNLINK))
|
||||||
::unlink(dst);
|
path_unlink(dst);
|
||||||
if (dfd >= 0)
|
if (dfd >= 0)
|
||||||
::close(dfd);
|
::close(dfd);
|
||||||
return ret;
|
return ret;
|
||||||
@ -133,7 +134,7 @@ bool renameormove(const char *src, const char *dst, string &reason)
|
|||||||
// Windows refuses to rename to an existing file. It appears that
|
// Windows refuses to rename to an existing file. It appears that
|
||||||
// there are workarounds (See MoveFile, MoveFileTransacted), but
|
// there are workarounds (See MoveFile, MoveFileTransacted), but
|
||||||
// anyway we are not expecting atomicity here.
|
// anyway we are not expecting atomicity here.
|
||||||
unlink(dst);
|
path_unlink(dst);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// First try rename(2). If this succeeds we're done. If this fails
|
// First try rename(2). If this succeeds we're done. If this fails
|
||||||
@ -182,7 +183,7 @@ bool renameormove(const char *src, const char *dst, string &reason)
|
|||||||
utimes(dst, times);
|
utimes(dst, times);
|
||||||
#endif
|
#endif
|
||||||
// All ok, get rid of origin
|
// All ok, get rid of origin
|
||||||
if (unlink(src) < 0) {
|
if (!path_unlink(src)) {
|
||||||
reason += string("Can't unlink ") + src + "Error : " + strerror(errno);
|
reason += string("Can't unlink ") + src + "Error : " + strerror(errno);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -854,6 +854,12 @@ bool path_chdir(const std::string& path)
|
|||||||
return CHDIR(syspath) == 0;
|
return CHDIR(syspath) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool path_unlink(const std::string& path)
|
||||||
|
{
|
||||||
|
SYSPATH(path, syspath);
|
||||||
|
return UNLINK(syspath);
|
||||||
|
}
|
||||||
|
|
||||||
#if !defined(__GNUC__) || __GNUC__ > 4 || defined(__clang__)
|
#if !defined(__GNUC__) || __GNUC__ > 4 || defined(__clang__)
|
||||||
// Not sure what g++ version supports fstream assignment but 4.9
|
// Not sure what g++ version supports fstream assignment but 4.9
|
||||||
// (jessie) certainly does not
|
// (jessie) certainly does not
|
||||||
|
|||||||
@ -135,6 +135,7 @@ extern bool path_makepath(const std::string& path, int mode);
|
|||||||
|
|
||||||
///
|
///
|
||||||
extern bool path_chdir(const std::string& path);
|
extern bool path_chdir(const std::string& path);
|
||||||
|
extern bool path_unlink(const std::string& path);
|
||||||
|
|
||||||
/* Open file, trying to do the right thing with non-ASCII paths on
|
/* Open file, trying to do the right thing with non-ASCII paths on
|
||||||
* Windows, where it only works with MSVC at the moment if the path is
|
* Windows, where it only works with MSVC at the moment if the path is
|
||||||
|
|||||||
@ -170,7 +170,7 @@ static bool path_gettempfilename(string& filename, string& reason)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
unlink(cp);
|
path_unlink(cp);
|
||||||
filename = cp;
|
filename = cp;
|
||||||
free(cp);
|
free(cp);
|
||||||
return true;
|
return true;
|
||||||
@ -474,7 +474,7 @@ TempFile::Internal::~Internal()
|
|||||||
{
|
{
|
||||||
if (!m_filename.empty() && !m_noremove) {
|
if (!m_filename.empty() && !m_noremove) {
|
||||||
LOGDEB1("TempFile:~: unlinking " << m_filename << endl);
|
LOGDEB1("TempFile:~: unlinking " << m_filename << endl);
|
||||||
if (unlink(m_filename.c_str()) != 0) {
|
if (!path_unlink(m_filename)) {
|
||||||
LOGSYSERR("TempFile:~", "unlink", m_filename);
|
LOGSYSERR("TempFile:~", "unlink", m_filename);
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
{
|
{
|
||||||
@ -500,7 +500,7 @@ void TempFile::tryRemoveAgain()
|
|||||||
std::unique_lock<std::mutex> lock(remTmpFNMutex);
|
std::unique_lock<std::mutex> lock(remTmpFNMutex);
|
||||||
std::list<string>::iterator pos = remainingTempFileNames.begin();
|
std::list<string>::iterator pos = remainingTempFileNames.begin();
|
||||||
while (pos != remainingTempFileNames.end()) {
|
while (pos != remainingTempFileNames.end()) {
|
||||||
if (unlink(pos->c_str()) != 0) {
|
if (!path_unlink(*pos)) {
|
||||||
LOGSYSERR("TempFile::tryRemoveAgain", "unlink", *pos);
|
LOGSYSERR("TempFile::tryRemoveAgain", "unlink", *pos);
|
||||||
pos++;
|
pos++;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user