Merge branch 'master' of ssh://www.aleph1.co.uk/home/aleph1/git/yaffs2
[yaffs2.git] / direct / timothy_tests / quick_tests / test_yaffs_rmdir_ELOOP_dir.c
1 /*
2  * YAFFS: Yet another FFS. A NAND-flash specific file system.
3  *
4  * Copyright (C) 2002-2011 Aleph One Ltd.
5  *   for Toby Churchill Ltd and Brightstar Engineering
6  *
7  * Created by Timothy Manning <timothy@yaffs.net>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License version 2 as
11  * published by the Free Software Foundation.
12  */
13
14 #include "test_yaffs_rmdir_ELOOP_dir.h"
15
16
17 int test_yaffs_rmdir_ELOOP_dir(void)
18 {
19         int output=0;
20         int error_code =0;
21
22         if (set_up_ELOOP()<0){
23                 print_message("failed to setup symlinks\n",2);
24                 return -1;
25         }
26
27
28         if (0 !=  yaffs_access(DIR_PATH,0)) {
29                 output = yaffs_mkdir(DIR_PATH,S_IWRITE | S_IREAD);
30                 if (output < 0) {
31                         print_message("failed to create directory\n",2);
32                         return -1;
33                 }
34         }
35         output = yaffs_rmdir(ELOOP_PATH "/file");
36         if (output<0){ 
37                 error_code=yaffs_get_error();
38                 if (abs(error_code)==ELOOP){
39                         return 1;
40                 } else {
41                         print_message("returned error does not match the the expected error\n",2);
42                         return -1;
43                 }
44         } else{
45                 print_message("removed /yaffs2/ directory (which is a bad thing)\n",2);
46                 return -1;
47         }       
48 }
49
50
51 int test_yaffs_rmdir_ELOOP_dir_clean(void)
52 {
53         int output = 0;
54         if (0 ==  yaffs_access(DIR_PATH,0)) {
55                 output = yaffs_rmdir(DIR_PATH);
56                 if (output < 0) {
57                         print_message("failed to remove the directory\n",2);
58                         return -1;
59                 }
60         }
61         return 1;
62
63 }
64