stubdom: support file creation
PATCH 1/1 stubdom: support file creation
Stubdom: add support for file creation.
Signed-off-by Samuel Thibault <[email protected]>
extras/mini-os/include/fcntl.h +6 -0
@@ -1,5 +1,9 @@#ifndef _I386_FCNTL_H#define _I386_FCNTL_H + +#ifdef HAVE_LIBC +#include_next <fcntl.h> +#else /* open/fcntl - O_SYNC is only implemented on blocks devices and on files located on an ext2 file system */
@@ -90,3 +94,5 @@ int open(const char *path, int flags, ..int open (const char *path,int flags, ...);int fcntl (int fd,int cmd, ...);#endif + +#endif
extras/mini-os/lib/sys.c +20 -2
@@ -172,8 +172,26 @@ int open(const char *pathname, int flagsprintk ("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 ;