aboutsummaryrefslogtreecommitdiffstats
path: root/extras/mini-os/lib
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-03-18 11:26:21 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-03-18 11:26:21 +0000
commit1add612bf58d6c49a4fe8d93190dea514d6dc7d8 (patch)
tree1c1a7838977bd8899964c58f627bc20ef2893937 /extras/mini-os/lib
parentb698a6a18c01ee95ca3cc764e4ba7f8d55593c3b (diff)
downloadxen-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.c22
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;