summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAhmad Fatoum <a.fatoum@pengutronix.de>2024-03-04 19:58:48 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2024-03-05 16:28:04 +0100
commitb0b6b9bd263420a75a48871a2ddb87a33ac42493 (patch)
treeebf554121b5b0128aa96c9bd297146c1bef752a0 /lib
parentd4a47c5f147758fac0ebe4d76b8a530b74fca154 (diff)
downloadbarebox-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.c15
-rw-r--r--lib/parameter.c22
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;
}
/**