diff options
Diffstat (limited to 'scripts/bareboximd.c')
-rw-r--r-- | scripts/bareboximd.c | 100 |
1 files changed, 2 insertions, 98 deletions
diff --git a/scripts/bareboximd.c b/scripts/bareboximd.c index c3dcb4dcf0..a734399aa5 100644 --- a/scripts/bareboximd.c +++ b/scripts/bareboximd.c @@ -17,6 +17,8 @@ #include <linux/kernel.h> #include <sys/mman.h> +#include "common.h" +#include "common.c" #include "../include/image-metadata.h" #define eprintf(args...) fprintf(stderr, ## args) @@ -40,104 +42,6 @@ int imd_command_setenv(const char *variable_name, const char *value) return -EINVAL; } -static int write_file(const char *filename, const void *buf, size_t size) -{ - int fd, ret = 0; - int now; - - fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); - if (fd < 0) - return fd; - - while (size) { - now = write(fd, buf, size); - if (now < 0) { - ret = now; - goto out; - } - size -= now; - buf += now; - } - -out: - close(fd); - - return ret; -} - -static int read_file_2(const char *filename, size_t *size, void **outbuf, size_t max_size) -{ - off_t fsize; - ssize_t rsize; - int ret, fd; - void *buf; - - *size = 0; - *outbuf = NULL; - - fd = open(filename, O_RDONLY); - if (fd < 0) { - fprintf(stderr, "Cannot open %s: %s\n", filename, strerror(errno)); - return -errno; - } - - fsize = lseek(fd, 0, SEEK_END); - if (fsize == -1) { - fprintf(stderr, "Cannot get size %s: %s\n", filename, strerror(errno)); - ret = -errno; - goto close; - } - - if (fsize < max_size) - max_size = fsize; - - if (lseek(fd, 0, SEEK_SET) == -1) { - fprintf(stderr, "Cannot seek to start %s: %s\n", filename, strerror(errno)); - ret = -errno; - goto close; - } - - buf = mmap(NULL, max_size, PROT_READ, MAP_SHARED, fd, 0); - if (buf == MAP_FAILED ) { - buf = malloc(max_size); - if (!buf) { - fprintf(stderr, "Cannot allocate memory\n"); - ret = -ENOMEM; - goto close; - } - - *outbuf = buf; - - while (*size < max_size) { - rsize = read(fd, buf, max_size - *size); - if (rsize == 0) { - ret = -EIO; - goto free; - } - - if (rsize < 0) { - ret = -errno; - goto free; - } - - buf += rsize; - *size += rsize; - } - } else { - *outbuf = buf; - *size = max_size; - } - - ret = 0; - goto close; -free: - *outbuf = NULL; - free(buf); -close: - close(fd); - return ret; -} - static inline void read_file_2_free(void *buf) { /* |