fs/FileSystem: RemoveFile() throws exception on error
This commit is contained in:
parent
14d3da0e18
commit
ea0e6d9824
@ -321,8 +321,15 @@ spl_delete(const char *name_utf8)
|
||||
const auto path_fs = spl_map_to_fs(name_utf8);
|
||||
assert(!path_fs.IsNull());
|
||||
|
||||
if (!RemoveFile(path_fs))
|
||||
ThrowPlaylistErrno();
|
||||
try {
|
||||
RemoveFile(path_fs);
|
||||
} catch (const std::system_error &e) {
|
||||
if (IsFileNotFound(e))
|
||||
throw PlaylistError(PlaylistResult::NO_SUCH_LIST,
|
||||
"No such playlist");
|
||||
else
|
||||
throw;
|
||||
}
|
||||
|
||||
idle_add(IDLE_STORED_PLAYLIST);
|
||||
}
|
||||
|
@ -426,7 +426,7 @@ ServerSocket::AddPath(AllocatedPath &&path, Error &error)
|
||||
#ifdef HAVE_UN
|
||||
(void)error;
|
||||
|
||||
RemoveFile(path);
|
||||
unlink(path.c_str());
|
||||
|
||||
AllocatedSocketAddress address;
|
||||
address.SetLocal(path.c_str());
|
||||
|
@ -66,3 +66,15 @@ TruncateFile(Path path)
|
||||
close(fd);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
RemoveFile(Path path)
|
||||
{
|
||||
#ifdef WIN32
|
||||
if (!DeleteFile(path.c_str()))
|
||||
throw FormatLastError("Failed to delete %s", path.c_str());
|
||||
#else
|
||||
if (unlink(path.c_str()) < 0)
|
||||
throw FormatErrno("Failed to delete %s", path.c_str());
|
||||
#endif
|
||||
}
|
||||
|
@ -100,17 +100,11 @@ void
|
||||
TruncateFile(Path path);
|
||||
|
||||
/**
|
||||
* Wrapper for unlink() that uses #Path names.
|
||||
* Wrapper for unlink() that uses #Path names. Throws
|
||||
* std::system_error on error.
|
||||
*/
|
||||
static inline bool
|
||||
RemoveFile(Path file)
|
||||
{
|
||||
#ifdef WIN32
|
||||
return _tunlink(file.c_str()) == 0;
|
||||
#else
|
||||
return unlink(file.c_str()) == 0;
|
||||
#endif
|
||||
}
|
||||
void
|
||||
RemoveFile(Path path);
|
||||
|
||||
/**
|
||||
* Wrapper for readlink() that uses #Path names.
|
||||
|
@ -76,7 +76,11 @@ FileOutputStream::Cancel()
|
||||
assert(IsDefined());
|
||||
|
||||
Close();
|
||||
RemoveFile(GetPath());
|
||||
|
||||
try {
|
||||
RemoveFile(GetPath());
|
||||
} catch (std::runtime_error) {
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
@ -153,7 +157,10 @@ FileOutputStream::Commit()
|
||||
|
||||
#if HAVE_LINKAT
|
||||
if (is_tmpfile) {
|
||||
RemoveFile(GetPath());
|
||||
try {
|
||||
RemoveFile(GetPath());
|
||||
} catch (std::runtime_error) {
|
||||
}
|
||||
|
||||
/* hard-link the temporary file to the final path */
|
||||
char fd_path[64];
|
||||
@ -186,7 +193,10 @@ FileOutputStream::Cancel()
|
||||
#ifdef HAVE_LINKAT
|
||||
if (!is_tmpfile)
|
||||
#endif
|
||||
RemoveFile(GetPath());
|
||||
try {
|
||||
RemoveFile(GetPath());
|
||||
} catch (std::runtime_error) {
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -87,10 +87,10 @@ FifoOutput::Delete()
|
||||
FormatDebug(fifo_output_domain,
|
||||
"Removing FIFO \"%s\"", path_utf8.c_str());
|
||||
|
||||
if (!RemoveFile(path)) {
|
||||
FormatErrno(fifo_output_domain,
|
||||
"Could not remove FIFO \"%s\"",
|
||||
path_utf8.c_str());
|
||||
try {
|
||||
RemoveFile(path);
|
||||
} catch (const std::runtime_error &e) {
|
||||
LogError(e, "Could not remove FIFO");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,10 @@
|
||||
#include "system/FatalError.hxx"
|
||||
#include "fs/AllocatedPath.hxx"
|
||||
#include "fs/FileSystem.hxx"
|
||||
|
||||
#ifndef WIN32
|
||||
#include "PidFile.hxx"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
@ -247,7 +250,7 @@ void
|
||||
daemonize_finish(void)
|
||||
{
|
||||
if (!pidfile.IsNull()) {
|
||||
RemoveFile(pidfile);
|
||||
unlink(pidfile.c_str());
|
||||
pidfile = AllocatedPath::Null();
|
||||
}
|
||||
|
||||
|
@ -64,7 +64,7 @@ public:
|
||||
assert(!path.IsNull());
|
||||
|
||||
close(fd);
|
||||
RemoveFile(path);
|
||||
unlink(path.c_str());
|
||||
}
|
||||
|
||||
void Write(pid_t pid) {
|
||||
|
Loading…
Reference in New Issue
Block a user