summaryrefslogtreecommitdiff
path: root/src/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.c')
-rw-r--r--src/util.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/util.c b/src/util.c
index 80660b5..60311a0 100644
--- a/src/util.c
+++ b/src/util.c
@@ -30,31 +30,30 @@ static int sysfs_read_buf(char *path, char *buf, int len)
fd = open(path, O_RDONLY);
if (fd == -1)
- return -ENOENT;
+ return -errno;
r = read(fd, buf, len);
close(fd);
- if ((r < 0) || (r > len))
+ if ((r < 0) || (r >= len)) {
+ buf[0] = '\0';
return -EIO;
+ }
- /* Replace '\n' with space (ascii code is 32) */
- buf[strcspn(buf, "\n")] = (char)32;
buf[r] = '\0';
-
- return 0;
+ return r;
}
static int sysfs_write_buf(char *path, char *buf)
{
int w, fd;
- if ((!path) || (!buf))
+ if (!path || !buf)
return -EINVAL;
fd = open(path, O_WRONLY);
if (fd == -1)
- return -ENOENT;
+ return -errno;
w = write(fd, buf, strlen(buf));
close(fd);
@@ -67,17 +66,18 @@ static int sysfs_write_buf(char *path, char *buf)
int sysfs_read_int(char *path, int *val)
{
- char buf[MAX_BUF_SIZE + 1];
+ char buf[MAX_BUF_SIZE];
int r;
if ((!path) || (!val))
return -EINVAL;
- r = sysfs_read_buf(path, buf, MAX_BUF_SIZE);
+ r = sysfs_read_buf(path, buf, sizeof(buf));
if (r < 0)
return r;
*val = atoi(buf);
+
return 0;
}
@@ -97,13 +97,13 @@ int sysfs_read_str(char *path, char *str, int len)
int sysfs_write_int(char *path, int val)
{
- char buf[MAX_BUF_SIZE + 1];
+ char buf[MAX_BUF_SIZE];
int w;
if (!path)
return -EINVAL;
- snprintf(buf, MAX_BUF_SIZE, "%d", val);
+ snprintf(buf, sizeof(buf), "%d", val);
w = sysfs_write_buf(path, buf);
if (w < 0)
return w;