From 5c8e82e097272d46caf139eda5bab58d2cbac9a0 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Wed, 10 Mar 2004 19:47:59 +0000 Subject: You can't open() a directory as a file (at least not for writing) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4359 a1c6a512-1295-4272-9138-f99709370657 --- firmware/common/file.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'firmware') diff --git a/firmware/common/file.c b/firmware/common/file.c index 3a91bda876..5c1db105f4 100644 --- a/firmware/common/file.c +++ b/firmware/common/file.c @@ -160,6 +160,13 @@ int open(const char* pathname, int flags) closedir(dir); return -7; } + } else { + if(file->write && (file->attr & FAT_ATTR_DIRECTORY)) { + errno = EISDIR; + file->busy = false; + closedir(dir); + return -8; + } } closedir(dir); @@ -169,7 +176,7 @@ int open(const char* pathname, int flags) if (file->write && (flags & O_APPEND)) { rc = lseek(fd,0,SEEK_END); if (rc < 0 ) - return rc * 10 - 8; + return rc * 10 - 9; } return fd; -- cgit v1.2.3