@@ -217,6 +217,7 @@ static int read_hex_ll(const char *file, long long *value)
}
buf[rd] = '\0';
+ *value = 0;
if (sscanf(buf, "%llx\n", value) != 1) {
errmsg("cannot read integer from \"%s\"\n", file);
errno = EINVAL;
@@ -269,6 +270,7 @@ static int read_pos_ll(const char *file, long long *value)
goto out_error;
}
+ *value = 0;
if (sscanf(buf, "%lld\n", value) != 1) {
errmsg("cannot read integer from \"%s\"\n", file);
errno = EINVAL;
@@ -94,6 +94,7 @@ static int read_positive_ll(const char *file, long long *value)
}
buf[rd] = '\0';
+ *value = 0;
if (sscanf(buf, "%lld\n", value) != 1) {
errmsg("cannot read integer from \"%s\"\n", file);
errno = EINVAL;
@@ -81,8 +81,7 @@ int main(int argc, char **argv)
printf("Receive to MTD device %s with erasesize %d\n",
argv[3], meminfo.erasesize);
}
- }
- if (flfd == -1) {
+ } else {
/* Try again, as if it's a file */
flfd = open(argv[3], O_CREAT|O_TRUNC|O_RDWR, 0644);
if (flfd < 0) {
This patch modifies the internal helpers to read and parse integers from sysfs files by initializing them first and removes turns an obscure "a = open(...) if (a >= 0) {...} if (a == -1) {...}" inside recv_image into a more straight forward if/else branch. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at> --- lib/libmtd.c | 2 ++ lib/libubi.c | 1 + misc-utils/recv_image.c | 3 +-- 3 files changed, 4 insertions(+), 2 deletions(-)