]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - fs/sandbox/sandboxfs.c
Update from 2013.01 to 2013.07
[karo-tx-uboot.git] / fs / sandbox / sandboxfs.c
diff --git a/fs/sandbox/sandboxfs.c b/fs/sandbox/sandboxfs.c
new file mode 100644 (file)
index 0000000..dd028da
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2012, Google Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <fs.h>
+#include <os.h>
+
+int sandbox_fs_set_blk_dev(block_dev_desc_t *rbdd, disk_partition_t *info)
+{
+       return 0;
+}
+
+long sandbox_fs_read_at(const char *filename, unsigned long pos,
+                            void *buffer, unsigned long maxsize)
+{
+       ssize_t size;
+       int fd, ret;
+
+       fd = os_open(filename, OS_O_RDONLY);
+       if (fd < 0)
+               return fd;
+       ret = os_lseek(fd, pos, OS_SEEK_SET);
+       if (ret == -1) {
+               os_close(fd);
+               return ret;
+       }
+       if (!maxsize)
+               maxsize = os_get_filesize(filename);
+       size = os_read(fd, buffer, maxsize);
+       os_close(fd);
+
+       return size;
+}
+
+long sandbox_fs_write_at(const char *filename, unsigned long pos,
+                        void *buffer, unsigned long towrite)
+{
+       ssize_t size;
+       int fd, ret;
+
+       fd = os_open(filename, OS_O_RDWR | OS_O_CREAT);
+       if (fd < 0)
+               return fd;
+       ret = os_lseek(fd, pos, OS_SEEK_SET);
+       if (ret == -1) {
+               os_close(fd);
+               return ret;
+       }
+       size = os_write(fd, buffer, towrite);
+       os_close(fd);
+
+       return size;
+}
+
+int sandbox_fs_ls(const char *dirname)
+{
+       struct os_dirent_node *head, *node;
+       int ret;
+
+       ret = os_dirent_ls(dirname, &head);
+       if (ret)
+               return ret;
+
+       for (node = head; node; node = node->next) {
+               printf("%s %10lu %s\n", os_dirent_get_typename(node->type),
+                      node->size, node->name);
+       }
+
+       return 0;
+}
+
+void sandbox_fs_close(void)
+{
+}
+
+int fs_read_sandbox(const char *filename, void *buf, int offset, int len)
+{
+       int len_read;
+
+       len_read = sandbox_fs_read_at(filename, offset, buf, len);
+       if (len_read == -1) {
+               printf("** Unable to read file %s **\n", filename);
+               return -1;
+       }
+
+       return len_read;
+}
+
+int fs_write_sandbox(const char *filename, void *buf, int offset, int len)
+{
+       int len_written;
+
+       len_written = sandbox_fs_write_at(filename, offset, buf, len);
+       if (len_written == -1) {
+               printf("** Unable to write file %s **\n", filename);
+               return -1;
+       }
+
+       return len_written;
+}