mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-02-01 01:03:16 +08:00
Handle return values from fchown
The function fchown is annotated with warn_unused_result. As formerly used in the code, it would emit a compiler warning ```warning: ignoring return value of ‘fchown’, declared with attribute warn_unused_result [-Wunused-result]``` This commit notes the return value and emits appropriate error/logging messages if the call fails, creating more traceable results and satisfying the compiler.
This commit is contained in:
parent
540bdfcb02
commit
46b9f263ac
|
@ -859,22 +859,23 @@ bool env_universal_t::sync(callback_data_list_t *callbacks)
|
|||
success = this->write_to_fd(private_fd, private_file_path);
|
||||
if (! success) UNIVERSAL_LOG("write_to_fd() failed");
|
||||
}
|
||||
|
||||
|
||||
if (success)
|
||||
{
|
||||
/* Ensure we maintain ownership and permissions (#2176) */
|
||||
struct stat sbuf;
|
||||
if (wstat(vars_path, &sbuf) >= 0)
|
||||
{
|
||||
fchown(private_fd, sbuf.st_uid, sbuf.st_gid);
|
||||
if (0 > fchown(private_fd, sbuf.st_uid, sbuf.st_gid))
|
||||
UNIVERSAL_LOG("fchown() failed");
|
||||
fchmod(private_fd, sbuf.st_mode);
|
||||
}
|
||||
|
||||
|
||||
/* Linux by default stores the mtime with low precision, low enough that updates that occur in quick succession may
|
||||
result in the same mtime (even the nanoseconds field). So manually set the mtime of the new file to a high-precision
|
||||
clock. Note that this is only necessary because Linux aggressively reuses inodes, causing the ABA problem; on other
|
||||
platforms we tend to notice the file has changed due to a different inode (or file size!)
|
||||
|
||||
|
||||
It's probably worth finding a simpler solution to this. The tests ran into this, but it's unlikely to affect users.
|
||||
*/
|
||||
#if HAVE_CLOCK_GETTIME && HAVE_FUTIMENS
|
||||
|
|
|
@ -1453,7 +1453,10 @@ bool history_t::save_internal_via_rewrite()
|
|||
if (wstat(new_name, &sbuf) >= 0)
|
||||
{
|
||||
/* Success */
|
||||
fchown(out_fd, sbuf.st_uid, sbuf.st_gid);
|
||||
if (0 > fchown(out_fd, sbuf.st_uid, sbuf.st_gid))
|
||||
{
|
||||
debug(2, L"Error when changing ownership of history file");
|
||||
}
|
||||
fchmod(out_fd, sbuf.st_mode);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user