From c7012f7bc0d1f3e941684d298b4681e6b110c596 Mon Sep 17 00:00:00 2001 From: Marian Ohligs Date: Tue, 2 Aug 2011 11:55:07 +0200 Subject: [PATCH] - enable flags O_RDONLY O_WRONLY and O_RDWR --- fs/initrd.c | 9 ++++++--- kernel/init.c | 3 +-- kernel/tasks.c | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/fs/initrd.c b/fs/initrd.c index dca371de..25ff4442 100755 --- a/fs/initrd.c +++ b/fs/initrd.c @@ -63,6 +63,9 @@ static ssize_t initrd_read(fildes_t* file, uint8_t* buffer, size_t size) vfs_node_t* node = file->node; block_list_t* blist = &node->block_list; + if (file->flags & O_WRONLY) + return -EACCES; + /* init the tmp offset */ offset = file->offset; @@ -109,9 +112,9 @@ static ssize_t initrd_write(fildes_t* file, uint8_t* buffer, size_t size) vfs_node_t* node = file->node; block_list_t* blist = &node->block_list; - if (BUILTIN_EXPECT(node->type != FS_FILE, 0)) - return 0; - + if (file->flags & O_RDONLY) + return -EACCES; + if (file->flags & O_APPEND) file->offset = node->block_size; diff --git a/kernel/init.c b/kernel/init.c index 28301787..c0b985fc 100755 --- a/kernel/init.c +++ b/kernel/init.c @@ -168,10 +168,9 @@ int network_shutdown(void) #elif defined(CONFIG_LWIP) && defined(CONFIG_PCI) dhcp_release(default_netif); dhcp_stop(default_netif); -#endif - mem_free(default_netif); default_netif = NULL; +#endif return 0; } diff --git a/kernel/tasks.c b/kernel/tasks.c index 28629171..c135e503 100755 --- a/kernel/tasks.c +++ b/kernel/tasks.c @@ -403,6 +403,7 @@ static int load_task(load_args_t* largs) //elf_section_header_t sec_header; fildes_t file; file.offset = 0; + file.flags = 0; //TODO: init the hole fildes_t struct! vfs_node_t* node;