diff options
author | Marcin Bukat <marcin.bukat@gmail.com> | 2018-06-28 09:51:47 +0200 |
---|---|---|
committer | Marcin Bukat <marcin.bukat@gmail.com> | 2018-06-28 09:52:59 +0200 |
commit | 971001d141e7695e758496c927fd42215489b3f6 (patch) | |
tree | f3d721c935de0a6881f50ad6b19b9137487b891b /firmware | |
parent | d64ff86fb6be22875cfae054f8a878dbd8b1472b (diff) |
Agptek: Fix support for empty strings in sysfs helper functions
Change-Id: Id5573059da2b454f5336b3cebce7c09a83a7826f
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/hosted/agptek/sysfs.c | 24 |
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; |