summaryrefslogtreecommitdiffstats
path: root/scripts/bareboximd.c
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/bareboximd.c')
-rw-r--r--scripts/bareboximd.c100
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)
{
/*