mirror of
https://github.com/transmission/transmission.git
synced 2025-12-24 20:35:36 +00:00
refactor: add tr_error_set_from_errno() (#4662)
This commit is contained in:
@@ -52,12 +52,12 @@
|
||||
#include <fmt/format.h>
|
||||
|
||||
#include "transmission.h"
|
||||
|
||||
#include "error.h"
|
||||
#include "file.h"
|
||||
#include "log.h"
|
||||
#include "tr-assert.h"
|
||||
#include "tr-strbuf.h"
|
||||
#include "utils.h" // for _(), tr_strerror()
|
||||
|
||||
#ifndef O_LARGEFILE
|
||||
#define O_LARGEFILE 0
|
||||
@@ -99,21 +99,11 @@ using namespace std::literals;
|
||||
|
||||
namespace
|
||||
{
|
||||
void set_system_error(tr_error** error, int code)
|
||||
{
|
||||
if (error == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
tr_error_set(error, code, tr_strerror(code));
|
||||
}
|
||||
|
||||
void set_system_error_if_file_found(tr_error** error, int code)
|
||||
{
|
||||
if (code != ENOENT)
|
||||
{
|
||||
set_system_error(error, code);
|
||||
tr_error_set_from_errno(error, code);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -178,7 +168,7 @@ std::optional<tr_sys_path_info> tr_sys_path_get_info(std::string_view path, int
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -239,7 +229,7 @@ std::string tr_sys_path_resolve(std::string_view path, tr_error** error)
|
||||
return ret;
|
||||
}
|
||||
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -326,7 +316,7 @@ bool tr_sys_path_rename(char const* src_path, char const* dst_path, tr_error** e
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -343,7 +333,7 @@ bool tr_sys_path_copy(char const* src_path, char const* dst_path, tr_error** err
|
||||
#if defined(USE_COPYFILE)
|
||||
if (copyfile(src_path, dst_path, nullptr, COPYFILE_CLONE | COPYFILE_ALL) < 0)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -399,7 +389,7 @@ bool tr_sys_path_copy(char const* src_path, char const* dst_path, tr_error** err
|
||||
errno_cpy = errno; /* remember me for later */
|
||||
if (errno != EXDEV) /* EXDEV is expected, don't log error */
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
if (file_size > 0U)
|
||||
{
|
||||
@@ -435,7 +425,7 @@ bool tr_sys_path_copy(char const* src_path, char const* dst_path, tr_error** err
|
||||
{
|
||||
if (errno_cpy == 0)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -449,7 +439,7 @@ bool tr_sys_path_copy(char const* src_path, char const* dst_path, tr_error** err
|
||||
if (copied == -1)
|
||||
{
|
||||
errno_cpy = errno; /* remember me for later */
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
if (file_size > 0U)
|
||||
{
|
||||
file_size = info->size; /* restore file_size for next fallback */
|
||||
@@ -483,7 +473,7 @@ bool tr_sys_path_copy(char const* src_path, char const* dst_path, tr_error** err
|
||||
{
|
||||
if (errno_cpy == 0)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -536,7 +526,7 @@ bool tr_sys_path_remove(char const* path, tr_error** error)
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -567,7 +557,7 @@ tr_sys_file_t tr_sys_file_get_std(tr_std_sys_file_t std_file, tr_error** error)
|
||||
|
||||
default:
|
||||
TR_ASSERT_MSG(false, fmt::format(FMT_STRING("unknown standard file {:d}"), std_file));
|
||||
set_system_error(error, EINVAL);
|
||||
tr_error_set_from_errno(error, EINVAL);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -616,7 +606,7 @@ tr_sys_file_t tr_sys_file_open(char const* path, int flags, int permissions, tr_
|
||||
}
|
||||
else
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -630,7 +620,7 @@ tr_sys_file_t tr_sys_file_open_temp(char* path_template, tr_error** error)
|
||||
|
||||
if (ret == TR_BAD_SYS_FILE)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
set_file_for_single_pass(ret);
|
||||
@@ -646,7 +636,7 @@ bool tr_sys_file_close(tr_sys_file_t handle, tr_error** error)
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -673,7 +663,7 @@ bool tr_sys_file_read(tr_sys_file_t handle, void* buffer, uint64_t size, uint64_
|
||||
}
|
||||
else
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -717,7 +707,7 @@ bool tr_sys_file_read_at(
|
||||
}
|
||||
else if (my_bytes_read == -1)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -744,7 +734,7 @@ bool tr_sys_file_write(tr_sys_file_t handle, void const* buffer, uint64_t size,
|
||||
}
|
||||
else
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -788,7 +778,7 @@ bool tr_sys_file_write_at(
|
||||
}
|
||||
else
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -802,7 +792,7 @@ bool tr_sys_file_flush(tr_sys_file_t handle, tr_error** error)
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -817,7 +807,7 @@ bool tr_sys_file_flush_possible(tr_sys_file_t handle, tr_error** error)
|
||||
return S_ISREG(statbuf.st_mode);
|
||||
}
|
||||
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -829,7 +819,7 @@ bool tr_sys_file_truncate(tr_sys_file_t handle, uint64_t size, tr_error** error)
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -858,7 +848,7 @@ bool tr_sys_file_advise(
|
||||
|
||||
if (int const code = posix_fadvise(handle, offset, size, native_advice); code != 0)
|
||||
{
|
||||
set_system_error(error, code);
|
||||
tr_error_set_from_errno(error, code);
|
||||
ret = false;
|
||||
}
|
||||
|
||||
@@ -874,7 +864,7 @@ bool tr_sys_file_advise(
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1000,7 +990,7 @@ bool tr_sys_file_preallocate(tr_sys_file_t handle, uint64_t size, int flags, tr_
|
||||
}
|
||||
}
|
||||
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1082,7 +1072,7 @@ bool tr_sys_file_lock([[maybe_unused]] tr_sys_file_t handle, [[maybe_unused]] in
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -1102,7 +1092,7 @@ std::string tr_sys_dir_get_current(tr_error** error)
|
||||
|
||||
if (errno != ERANGE)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -1130,7 +1120,7 @@ namespace
|
||||
}
|
||||
if (!info && mkdir(subpath, permissions) == -1)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
return false;
|
||||
}
|
||||
if (end == std::string_view::npos)
|
||||
@@ -1186,7 +1176,7 @@ bool tr_sys_dir_create(char const* path, int flags, int permissions, tr_error**
|
||||
}
|
||||
else
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1209,7 +1199,7 @@ bool tr_sys_dir_create_temp(char* path_template, tr_error** error)
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -1223,7 +1213,7 @@ tr_sys_dir_t tr_sys_dir_open(char const* path, tr_error** error)
|
||||
|
||||
if (ret == nullptr)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
return TR_BAD_SYS_DIR;
|
||||
}
|
||||
|
||||
@@ -1244,7 +1234,7 @@ char const* tr_sys_dir_read_name(tr_sys_dir_t handle, tr_error** error)
|
||||
}
|
||||
else if (errno != 0)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -1258,7 +1248,7 @@ bool tr_sys_dir_close(tr_sys_dir_t handle, tr_error** error)
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
set_system_error(error, errno);
|
||||
tr_error_set_from_errno(error, errno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user