diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-03-18 11:26:21 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-03-18 11:26:21 +0000 |
commit | 1add612bf58d6c49a4fe8d93190dea514d6dc7d8 (patch) | |
tree | 1c1a7838977bd8899964c58f627bc20ef2893937 /extras/mini-os/lib | |
parent | b698a6a18c01ee95ca3cc764e4ba7f8d55593c3b (diff) | |
download | xen-1add612bf58d6c49a4fe8d93190dea514d6dc7d8.tar.gz xen-1add612bf58d6c49a4fe8d93190dea514d6dc7d8.tar.bz2 xen-1add612bf58d6c49a4fe8d93190dea514d6dc7d8.zip |
Stubdom: add support for file creation.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras/mini-os/lib')
-rw-r--r-- | extras/mini-os/lib/sys.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/extras/mini-os/lib/sys.c b/extras/mini-os/lib/sys.c index 13096d1eca..3e325b10a1 100644 --- a/extras/mini-os/lib/sys.c +++ b/extras/mini-os/lib/sys.c @@ -171,8 +171,26 @@ int open(const char *pathname, int flags, ...) printk("open(%s) -> %d\n", pathname, fd); return fd; } - printk("open(%s)", pathname); - fs_fd = fs_open(fs_import, (void *) pathname); + printk("open(%s, %x)", pathname, flags); + switch (flags & ~O_ACCMODE) { + case 0: + fs_fd = fs_open(fs_import, (void *) pathname); + break; + case O_CREAT|O_TRUNC: + { + va_list ap; + mode_t mode; + va_start(ap, flags); + mode = va_arg(ap, mode_t); + va_end(ap); + fs_fd = fs_create(fs_import, (void *) pathname, 0, mode); + break; + } + default: + printk(" unsupported flags\n"); + stack_walk(); + do_exit(); + } if (fs_fd < 0) { errno = EIO; return -1; |