diff options
author | Ahmad Fatoum <a.fatoum@pengutronix.de> | 2024-03-04 19:58:48 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2024-03-05 16:28:04 +0100 |
commit | b0b6b9bd263420a75a48871a2ddb87a33ac42493 (patch) | |
tree | ebf554121b5b0128aa96c9bd297146c1bef752a0 /lib | |
parent | d4a47c5f147758fac0ebe4d76b8a530b74fca154 (diff) | |
download | barebox-b0b6b9bd263420a75a48871a2ddb87a33ac42493.tar.gz barebox-b0b6b9bd263420a75a48871a2ddb87a33ac42493.tar.xz |
treewide: add errno_set helper for returning positive error code in errno
We have this sequence at multiple places: Check a return value for being
below zero and if so, turn it positive and store into errno.
Instead of opencoding it everywhere, add a helper to encapsulate this.
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Link: https://lore.barebox.org/20240304190038.3486881-4-a.fatoum@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libfile.c | 15 | ||||
-rw-r--r-- | lib/parameter.c | 22 |
2 files changed, 13 insertions, 24 deletions
diff --git a/lib/libfile.c b/lib/libfile.c index 72a2fc79c7..185c7af721 100644 --- a/lib/libfile.c +++ b/lib/libfile.c @@ -33,10 +33,8 @@ int pwrite_full(int fd, const void *buf, size_t size, loff_t offset) while (size) { now = pwrite(fd, buf, size, offset); - if (now == 0) { - errno = ENOSPC; - return -errno; - } + if (now == 0) + return errno_set(-ENOSPC); if (now < 0) return now; size -= now; @@ -61,10 +59,8 @@ int write_full(int fd, const void *buf, size_t size) while (size) { now = write(fd, buf, size); - if (now == 0) { - errno = ENOSPC; - return -errno; - } + if (now == 0) + return errno_set(-ENOSPC); if (now < 0) return now; size -= now; @@ -240,8 +236,7 @@ again: /* ensure wchar_t nul termination */ buf = calloc(ALIGN(read_size, 2) + 2, 1); if (!buf) { - ret = -ENOMEM; - errno = ENOMEM; + ret = errno_set(-ENOMEM); goto err_out; } diff --git a/lib/parameter.c b/lib/parameter.c index dc80f3f858..c587d10eab 100644 --- a/lib/parameter.c +++ b/lib/parameter.c @@ -90,28 +90,22 @@ int dev_set_param(struct device *dev, const char *name, const char *val) struct param_d *param; int ret; - if (!dev) { - errno = ENODEV; - return -ENODEV; - } + if (!dev) + return errno_set(-ENODEV); param = get_param_by_name(dev, name); - if (!param) { - errno = EINVAL; - return -EINVAL; - } + if (!param) + return errno_set(-EINVAL); - if (param->flags & PARAM_FLAG_RO) { - errno = EACCES; - return -EACCES; - } + if (param->flags & PARAM_FLAG_RO) + return errno_set(-EACCES); ret = param->set(dev, param, val); if (ret) - errno = -ret; + return errno_set(ret); - return ret; + return 0; } /** |