mirror of
https://git.sr.ht/~cismonx/bookmarkfs
synced 2025-06-07 19:58:50 +00:00
xstd: add convenience function xstrerror_save()
This commit is contained in:
parent
6f11f51171
commit
03da5fea5c
3 changed files with 25 additions and 4 deletions
|
@ -93,8 +93,8 @@ write_iov (
|
||||||
while (1) {
|
while (1) {
|
||||||
ssize_t nbytes = writev(fd, bufv, bufcnt);
|
ssize_t nbytes = writev(fd, bufv, bufcnt);
|
||||||
if (unlikely(nbytes < 0)) {
|
if (unlikely(nbytes < 0)) {
|
||||||
int err = errno;
|
int err;
|
||||||
log_printf("writev(): %s", xstrerror(err));
|
log_printf("writev(): %s", xstrerror_save(&err));
|
||||||
|
|
||||||
switch (err) {
|
switch (err) {
|
||||||
case EIO:
|
case EIO:
|
||||||
|
|
14
src/xstd.c
14
src/xstd.c
|
@ -66,8 +66,8 @@ xfsync (
|
||||||
int fd
|
int fd
|
||||||
) {
|
) {
|
||||||
while (unlikely(0 != fsync(fd))) {
|
while (unlikely(0 != fsync(fd))) {
|
||||||
int err = errno;
|
int err;
|
||||||
log_printf("fsync(): %s", xstrerror(err));
|
log_printf("fsync(): %s", xstrerror_save(&err));
|
||||||
|
|
||||||
switch (err) {
|
switch (err) {
|
||||||
case EIO:
|
case EIO:
|
||||||
|
@ -170,3 +170,13 @@ xstrerror (
|
||||||
}
|
}
|
||||||
return err_str;
|
return err_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char const *
|
||||||
|
xstrerror_save (
|
||||||
|
int *errnum_ptr
|
||||||
|
) {
|
||||||
|
int err = errno;
|
||||||
|
|
||||||
|
*errnum_ptr = err;
|
||||||
|
return xstrerror(err);
|
||||||
|
}
|
||||||
|
|
11
src/xstd.h
11
src/xstd.h
|
@ -169,4 +169,15 @@ xstrerror (
|
||||||
int errnum
|
int errnum
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Like xstrerror(), but takes `errno` as error number,
|
||||||
|
* and saves its value to `err_ptr`.
|
||||||
|
*/
|
||||||
|
BOOKMARKFS_INTERNAL
|
||||||
|
FUNCATTR_RETURNS_NONNULL
|
||||||
|
char const *
|
||||||
|
xstrerror_save (
|
||||||
|
int *errnum_ptr
|
||||||
|
);
|
||||||
|
|
||||||
#endif /* !defined(BOOKMARKFS_XSTD_H_) */
|
#endif /* !defined(BOOKMARKFS_XSTD_H_) */
|
||||||
|
|
Loading…
Add table
Reference in a new issue