summaryrefslogtreecommitdiffstats
path: root/firmware/target/hosted
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2018-06-28 09:51:47 +0200
committerMarcin Bukat <marcin.bukat@gmail.com>2018-06-28 09:52:59 +0200
commit971001d141e7695e758496c927fd42215489b3f6 (patch)
treef3d721c935de0a6881f50ad6b19b9137487b891b /firmware/target/hosted
parentd64ff86fb6be22875cfae054f8a878dbd8b1472b (diff)
downloadrockbox-971001d141e7695e758496c927fd42215489b3f6.tar.gz
rockbox-971001d141e7695e758496c927fd42215489b3f6.zip
Agptek: Fix support for empty strings in sysfs helper functions
Change-Id: Id5573059da2b454f5336b3cebce7c09a83a7826f
Diffstat (limited to 'firmware/target/hosted')
-rw-r--r--firmware/target/hosted/agptek/sysfs.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/firmware/target/hosted/agptek/sysfs.c b/firmware/target/hosted/agptek/sysfs.c
index ad4635ac57..177f338911 100644
--- a/firmware/target/hosted/agptek/sysfs.c
+++ b/firmware/target/hosted/agptek/sysfs.c
@@ -85,7 +85,7 @@ bool sysfs_set_int(const char *path, int value)
}
bool success = true;
- if(fprintf(f, "%d", value) < 1)
+ if(fprintf(f, "%d", value) < 0)
{
DEBUGF("ERROR %s: Write failed for %s.", __func__, path);
success = false;
@@ -98,7 +98,7 @@ bool sysfs_set_int(const char *path, int value)
bool sysfs_get_char(const char *path, char *value)
{
- *value = '\0';
+ int c;
FILE *f = open_read(path);
if(f == NULL)
{
@@ -106,11 +106,17 @@ bool sysfs_get_char(const char *path, char *value)
}
bool success = true;
- if(fscanf(f, "%c", value) == EOF)
+ c = fgetc(f);
+
+ if(c == EOF)
{
DEBUGF("ERROR %s: Read failed for %s.", __func__, path);
success = false;
}
+ else
+ {
+ *value = c;
+ }
fclose(f);
return success;
@@ -147,7 +153,13 @@ bool sysfs_get_string(const char *path, char *value, int size)
}
bool success = true;
- if(fgets(value, size, f) == NULL)
+
+ /* fgets returns NULL if en error occured OR
+ * when EOF occurs while no characters have been read.
+ *
+ * Empty string is not an error for us.
+ */
+ if(fgets(value, size, f) == NULL && value[0] != '\0')
{
DEBUGF("ERROR %s: Read failed for %s.", __func__, path);
success = false;
@@ -175,7 +187,9 @@ bool sysfs_set_string(const char *path, char *value)
}
bool success = true;
- if(fprintf(f, "%s", value) < 1)
+
+ /* If an output error is encountered, a negative value is returned */
+ if(fprintf(f, "%s", value) < 0)
{
DEBUGF("ERROR %s: Write failed for %s.", __func__, path);
success = false;