]> git.sur5r.net Git - u-boot/blobdiff - arch/sandbox/cpu/os.c
Merge branch 'master' of git://git.denx.de/u-boot-spi
[u-boot] / arch / sandbox / cpu / os.c
index 9de71bb2b4ff21d210950f555b12d52121293866..4d5f8057533e89f2ed6edd0298ac4c69038360eb 100644 (file)
@@ -341,6 +341,7 @@ int os_dirent_ls(const char *dirname, struct os_dirent_node **headp)
                        ret = -ENOMEM;
                        goto done;
                }
+               next->next = NULL;
                strcpy(next->name, entry.d_name);
                switch (entry.d_type) {
                case DT_REG:
@@ -366,6 +367,7 @@ int os_dirent_ls(const char *dirname, struct os_dirent_node **headp)
 
 done:
        closedir(dir);
+       free(fname);
        return ret;
 }
 
@@ -384,7 +386,7 @@ const char *os_dirent_get_typename(enum os_dirent_t type)
        return os_dirent_typename[OS_FILET_UNKNOWN];
 }
 
-ssize_t os_get_filesize(const char *fname)
+int os_get_filesize(const char *fname, loff_t *size)
 {
        struct stat buf;
        int ret;
@@ -392,7 +394,8 @@ ssize_t os_get_filesize(const char *fname)
        ret = stat(fname, &buf);
        if (ret)
                return ret;
-       return buf.st_size;
+       *size = buf.st_size;
+       return 0;
 }
 
 void os_putc(int ch)
@@ -426,11 +429,11 @@ int os_read_ram_buf(const char *fname)
 {
        struct sandbox_state *state = state_get_current();
        int fd, ret;
-       int size;
+       loff_t size;
 
-       size = os_get_filesize(fname);
-       if (size < 0)
-               return -ENOENT;
+       ret = os_get_filesize(fname, &size);
+       if (ret < 0)
+               return ret;
        if (size != state->ram_size)
                return -ENOSPC;
        fd = open(fname, O_RDONLY);
@@ -488,7 +491,7 @@ int os_jump_to_image(const void *dest, int size)
        struct sandbox_state *state = state_get_current();
        char fname[30], mem_fname[30];
        int fd, err;
-       const char *extra_args[4];
+       const char *extra_args[5];
        char **argv = state->argv;
 #ifdef DEBUG
        int argc, i;
@@ -513,6 +516,7 @@ int os_jump_to_image(const void *dest, int size)
        extra_args[1] = fname;
        extra_args[2] = "-m";
        extra_args[3] = mem_fname;
+       extra_args[4] = "--rm_memory";
        err = add_args(&argv, extra_args,
                       sizeof(extra_args) / sizeof(extra_args[0]));
        if (err)