X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=rtems%2Frtems-y-test%2Fbasic-test%2Fyaffs-rtems-basic-test.c;fp=rtems%2Frtems-y-test%2Fbasic-test%2Fyaffs-rtems-basic-test.c;h=27448f2122037c14f25b1ee3368b67b6dbca54bb;hp=0000000000000000000000000000000000000000;hb=7c666cd589631a555da943396a3124a610487b7e;hpb=0d592874019a980b1a32b887be84aaabe7fb0b0c;ds=sidebyside diff --git a/rtems/rtems-y-test/basic-test/yaffs-rtems-basic-test.c b/rtems/rtems-y-test/basic-test/yaffs-rtems-basic-test.c new file mode 100644 index 0000000..27448f2 --- /dev/null +++ b/rtems/rtems-y-test/basic-test/yaffs-rtems-basic-test.c @@ -0,0 +1,169 @@ +/* + * Simple test program -- demonstrating use of IMFS + */ + +#include + +#include +#include +#include +#include + +#include + +#include +#include + + +#define YPATH "/yaffs_mount_pt" + + + + + +void set_uint8_t_buffer(uint8_t *buf, uint32_t n, uint8_t start, uint8_t inc) +{ + while (n) { + *buf = start; + buf++; + start += inc; + n--; + } +} + + +#define FNAME YPATH"/test" +#define DIRNAME YPATH"/dirtest" + +void dump_directory_tree_worker(const char *dname,int recursive) +{ + DIR *d; + struct dirent *de; + struct stat s; + char str[1000]; + + d = opendir(dname); + + if(!d) + { + printf("opendir failed\n"); + } + else + { + while((de = readdir(d)) != NULL) + { + sprintf(str,"%s/%s",dname,de->d_name); + + lstat(str,&s); + + printf("%s inode %d length %d mode %X ", + str, (int)s.st_ino, (int)s.st_size, s.st_mode); + switch(s.st_mode & S_IFMT) + { + case S_IFREG: printf("data file"); break; + case S_IFDIR: printf("directory"); break; + case S_IFLNK: printf("symlink -->"); + if(readlink(str,str,100) < 0) + printf("no alias"); + else + printf("\"%s\"",str); + break; + default: printf("unknown"); break; + } + + printf("\n"); + + if((s.st_mode & S_IFMT) == S_IFDIR && recursive) + dump_directory_tree_worker(str,1); + + } + + closedir(d); + } + +} + +static void dump_directory_tree(const char *dname) +{ + dump_directory_tree_worker(dname,1); +} + + +void dumpDir(const char *dname) +{ dump_directory_tree_worker(dname,0); +} + +int run_the_test(void) +{ + int fd; + int ret; + uint8_t buf[100]; + uint8_t buf2[100]; + + + dump_directory_tree(YPATH); + + ret = mkdir(DIRNAME, 0777); + if (ret < 0) + perror("mkdir "DIRNAME); + + fd = open(FNAME, O_RDWR | O_CREAT | O_TRUNC, 0666); + printf("open %s = %d\n", FNAME, fd); + if (fd < 0) + perror("opening " FNAME); + + set_uint8_t_buffer(buf, sizeof(buf), 0xAA, 1); + + ret = write(fd, buf, sizeof(buf)); + + printf("write returned %d\n", ret); + + if (ret == -1) + perror("writing file"); + + ret = lseek(fd, 0, SEEK_END); + + printf("lseek end ret = %d\n", ret); + + ret = lseek(fd, 0, SEEK_SET); + printf("lseek start ret = %d\n", ret); + + ret = read(fd, buf2, sizeof(buf2)); + + printf("reading file ret = %d\n", ret); + + if (ret == -1) + perror("reading file"); + + + return ret; + +#if 0 + + + fd = open("test1", O_CREAT); + printf( "fcntl flags =0x%x\n", fcntl( fd, F_GETFL ) ); + close(fd); + + fd = open("test", O_RDONLY); + if (fd == -1) { + printf("Starting on the wrong foot....\n"); + exit(-1); + } + + printf( "fcntl flags =0x%x\n", fcntl( fd, F_GETFL ) ); + + fp = fdopen(fd, "r"); + if (fp == NULL) { + printf("Nothing ever goes my way!\n"); + close(fd); + exit(-1); + } else { + printf("Soon, I will be able to take over the world!\n"); + fgets(str, 200, fp); + printf("%s\n", str); + fclose(fp); + } +#endif +} +