lights_helper: I/O API cleanup
* buf => buffer for consistency
* explicitly cast strtol retval to int
* close(NULL) is a no-op, remove superfluous checking
* replace variying buffer sizes by INT_MAX_STRLEN
* always return signed errno codes
Change-Id: I972e33e2435ec7d68a8ffdc5ab88a14d8005ff55
diff --git a/liblights/lights_helper.c b/liblights/lights_helper.c
index 5fd8b12..6ac18bf 100644
--- a/liblights/lights_helper.c
+++ b/liblights/lights_helper.c
@@ -33,41 +33,40 @@
* @param path The absolute path string.
* @return The Integer with decimal base, -1 or errno on error.
*/
-int read_int(char const *path)
+static int read_int(char const *path)
{
int fd, len;
- int num_bytes = 10;
- char buf[11];
- int ret;
+ int ret = 0;
+ const int INT_MAX_STRLEN = 10;
+ char buffer[INT_MAX_STRLEN+1];
fd = open(path, O_RDONLY);
if (fd < 0) {
- ret = errno;
+ ret = -errno;
ALOGE("%s: failed to open %s (%s)", __func__, path, strerror(errno));
goto exit;
}
- len = read(fd, buf, num_bytes - 1);
+ len = read(fd, buffer, INT_MAX_STRLEN-1);
if (len < 0) {
- ret = errno;
+ ret = -errno;
ALOGE("%s: failed to read from %s (%s)", __func__, path, strerror(errno));
goto exit;
}
- buf[len] = '\0';
+ buffer[len] = '\0';
- // decimal base
+ /* now parse the integer from buffer */
char *endptr = NULL;
- ret = strtol(buf, &endptr, 10);
+ ret = (int) strtol(buffer, &endptr, 10);
if (ret == 0 && endptr == NULL) {
ret = -1;
- ALOGE("%s: failed to extract number from string %s", __func__, buf);
+ ALOGE("%s: failed to extract number from string %s", __func__, buffer);
goto exit;
}
exit:
- if (fd >= 0)
- close(fd);
+ close(fd);
return ret;
}
@@ -78,30 +77,30 @@
* @param value The Integer value to be written.
* @return 0 on success, errno on error.
*/
-int write_int(char const *path, const int value)
+static int write_int(char const *path, const int value)
{
- int fd, len;
+ int fd, len, num_bytes;
int ret = 0;
+ const int INT_MAX_STRLEN = 10;
+ char buffer[INT_MAX_STRLEN+1];
fd = open(path, O_WRONLY);
if (fd < 0) {
- ret = errno;
+ ret = -errno;
ALOGE("%s: failed to open %s (%s)", __func__, path, strerror(errno));
goto exit;
}
- char buffer[20];
- int bytes = sprintf(buffer, "%d", value);
- len = write(fd, buffer, bytes);
+ num_bytes = sprintf(buffer, "%d", value);
+ len = write(fd, buffer, num_bytes);
if (len < 0) {
- ret = errno;
+ ret = -errno;
ALOGE("%s: failed to write to %s (%s)", __func__, path, strerror(errno));
goto exit;
}
exit:
- if (fd >= 0)
- close(fd);
+ close(fd);
return ret;
}