Add battfs_fileExists & test.
authorbatt <batt@38d2e660-2303-0410-9eaa-f027e97ec537>
Sat, 16 Feb 2008 10:55:56 +0000 (10:55 +0000)
committerbatt <batt@38d2e660-2303-0410-9eaa-f027e97ec537>
Sat, 16 Feb 2008 10:55:56 +0000 (10:55 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@1112 38d2e660-2303-0410-9eaa-f027e97ec537

app/battfs/battfs_test.c
fs/battfs.c
fs/battfs.h

index 183d6c8ae99c6264ddde945ddfa0ea205d2fe4b0..83fa804522fed1ebfb94fe5da95b0192951b925b 100644 (file)
@@ -357,12 +357,13 @@ static void test10(BattFsSuper *disk)
 
        fp = fopen(test_filename, "w+");
 
-       #define PAGE_FILL 116
-       #define INODE 0
-       #define INODE2 4
-       #define MODE 0
+       unsigned int PAGE_FILL = 116;
+       unsigned int INODE = 0;
+       unsigned int INODE2 = 4;
+       unsigned int INEXISTENT_INODE = 123;
+       unsigned int MODE = 0;
 
-       battfs_writeTestBlock(disk, 0, INODE, 0, PAGE_FILL, 0, 1235);
+       battfs_writeTestBlock(disk, 0, 123, 0, PAGE_FILL, 0, 1235);
        battfs_writeTestBlock(disk, 1, INODE, 0, PAGE_FILL, 0, MARK_PAGE_VALID);
        battfs_writeTestBlock(disk, 2, INODE, 3, PAGE_FILL, 1, MARK_PAGE_VALID);
        battfs_writeTestBlock(disk, 3, INODE, 0, PAGE_FILL, 1, MARK_PAGE_VALID);
@@ -374,7 +375,9 @@ static void test10(BattFsSuper *disk)
        fclose(fp);
 
        ASSERT(battfs_init(disk));
+       ASSERT(!battfs_fileExists(disk, INEXISTENT_INODE));
 
+       ASSERT(battfs_fileExists(disk, INODE));
        ASSERT(battfs_fileopen(disk, &fd1, INODE, MODE));
        ASSERT(fd1.fd.size == PAGE_FILL * 2);
        ASSERT(fd1.fd.seek_pos == 0);
@@ -384,6 +387,7 @@ static void test10(BattFsSuper *disk)
        ASSERT(fd1.disk == disk);
        ASSERT(LIST_HEAD(&disk->file_opened_list) == &fd1.link);
 
+       ASSERT(battfs_fileExists(disk, INODE2));
        ASSERT(battfs_fileopen(disk, &fd2, INODE2, MODE));
        ASSERT(fd2.fd.size == PAGE_FILL * 2);
        ASSERT(fd2.fd.seek_pos == 0);
index d17bc372882d9860bbb71e336c3188aaaed3fa91..fd8fe1c6761b6cabdbb5c65a4eac8bba894c05b3 100644 (file)
@@ -681,6 +681,14 @@ static pgcnt_t *findFile(BattFsSuper *disk, inode_t inode)
        return NULL;
 }
 
+/**
+ * \return true if file \a inode exists on \a disk, false otherwise.
+ */
+bool battfs_fileExists(BattFsSuper *disk, inode_t inode)
+{
+       return findFile(disk, inode) != NULL;
+}
+
 /**
  * Count size of file \a inode on \a disk, starting at pointer \a start
  * in disk->page_array. Size is written in \a size.
index 32d3a11651a9067a7b1912a481a2604d0d3a2008..0456fcfb6a841388d16a37dc7d83a45343cd030a 100644 (file)
@@ -251,6 +251,7 @@ INLINE KFileBattFs * KFILEBATTFS(KFile *fd)
 bool battfs_init(struct BattFsSuper *d);
 bool battfs_close(struct BattFsSuper *disk);
 
+bool battfs_fileExists(BattFsSuper *disk, inode_t inode);
 bool battfs_fileopen(BattFsSuper *disk, KFileBattFs *fd, inode_t inode, filemode_t mode);
 
 bool battfs_writeTestBlock(struct BattFsSuper *disk, pgcnt_t page, inode_t inode, seq_t seq, fill_t fill, pgoff_t pgoff, mark_t mark);