Rev 2710 | Rev 2755 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2710 | Rev 2711 | ||
---|---|---|---|
Line 42... | Line 42... | ||
42 | "keimetha tois keinon rhemasi peithomenoi."; |
42 | "keimetha tois keinon rhemasi peithomenoi."; |
43 | 43 | ||
44 | char *test_vfs1(bool quiet) |
44 | char *test_vfs1(bool quiet) |
45 | { |
45 | { |
46 | if (mount("tmpfs", "/", "nulldev0") != EOK) |
46 | if (mount("tmpfs", "/", "nulldev0") != EOK) |
47 | return "Mount failed.\n"; |
47 | return "mount() failed.\n"; |
- | 48 | if (!quiet) |
|
- | 49 | printf("mounted tmpfs on /.\n"); |
|
48 | 50 | ||
49 | if (mkdir("/mydir", 0) != 0) |
51 | if (mkdir("/mydir", 0) != 0) |
50 | return "mkdir() failed.\n"; |
52 | return "mkdir() failed.\n"; |
51 | if (!quiet) |
53 | if (!quiet) |
52 | printf("Created directory /mydir\n"); |
54 | printf("created directory /mydir\n"); |
53 | 55 | ||
54 | int fd0 = open("/mydir/myfile", O_CREAT); |
56 | int fd0 = open("/mydir/myfile", O_CREAT); |
55 | if (fd0 < 0) |
57 | if (fd0 < 0) |
56 | return "open() failed.\n"; |
58 | return "open() failed.\n"; |
57 | if (!quiet) |
59 | if (!quiet) |
58 | printf("Created /mydir/myfile, handle=%d\n", fd0); |
60 | printf("created file /mydir/myfile, fd=%d\n", fd0); |
59 | 61 | ||
60 | ssize_t cnt; |
62 | ssize_t cnt; |
61 | size_t size = sizeof(text); |
63 | size_t size = sizeof(text); |
62 | cnt = write(fd0, text, size); |
64 | cnt = write(fd0, text, size); |
63 | if (cnt < 0) |
65 | if (cnt < 0) |
64 | return "write() failed.\n"; |
66 | return "write() failed.\n"; |
65 | if (!quiet) |
67 | if (!quiet) |
66 | printf("Written %d btyes to handle %d.\n", cnt, fd0); |
68 | printf("written %d bytes, fd=%d\n", cnt, fd0); |
67 | if (lseek(fd0, 0, SEEK_SET) != 0) |
69 | if (lseek(fd0, 0, SEEK_SET) != 0) |
68 | return "lseek() failed.\n"; |
70 | return "lseek() failed.\n"; |
69 | - | ||
70 | DIR *dirp; |
- | |
71 | struct dirent *dp; |
- | |
72 | - | ||
73 | dirp = opendir("/"); |
- | |
74 | if (!dirp) |
- | |
75 | return "opendir() failed."; |
- | |
76 | while ((dp = readdir(dirp))) |
- | |
77 | printf("Discovered %s\n", dp->d_name); |
- | |
78 | closedir(dirp); |
- | |
79 | - | ||
80 | int fd1 = open("/dir1/file1", O_RDONLY); |
- | |
81 | int fd2 = open("/dir2/file2", O_RDONLY); |
- | |
82 | - | ||
83 | if (fd1 < 0) |
- | |
84 | return "open() failed.\n"; |
- | |
85 | if (fd2 < 0) |
- | |
86 | return "open() failed.\n"; |
- | |
87 | - | ||
88 | if (!quiet) |
71 | if (!quiet) |
89 | printf("Opened file descriptors %d and %d.\n", fd1, fd2); |
72 | printf("sought to position 0, fd=%d\n", fd0); |
90 | 73 | ||
91 | char buf[10]; |
74 | char buf[10]; |
92 | 75 | ||
93 | cnt = read(fd0, buf, sizeof(buf)); |
76 | cnt = read(fd0, buf, sizeof(buf)); |
94 | if (cnt < 0) |
77 | if (cnt < 0) |
95 | return "read() failed.\n"; |
78 | return "read() failed.\n"; |
96 | 79 | ||
97 | if (!quiet) |
80 | if (!quiet) |
98 | printf("Read %d bytes from handle %d: %.*s\n", cnt, fd0, cnt, |
81 | printf("read %d bytes: \"%.*s\", fd=%d\n", cnt, cnt, buf, fd0); |
99 | buf); |
- | |
100 | 82 | ||
101 | cnt = read(fd1, buf, sizeof(buf)); |
- | |
102 | if (cnt < 0) |
83 | DIR *dirp; |
103 | return "read() failed.\n"; |
84 | struct dirent *dp; |
104 | 85 | ||
- | 86 | dirp = opendir("/"); |
|
105 | if (!quiet) |
87 | if (!dirp) |
- | 88 | return "opendir() failed."; |
|
- | 89 | while ((dp = readdir(dirp))) |
|
106 | printf("Read %d bytes from handle %d: %.*s\n", cnt, fd1, cnt, |
90 | printf("discovered node %s in /\n", dp->d_name); |
107 | buf); |
91 | closedir(dirp); |
108 | 92 | ||
109 | return NULL; |
93 | return NULL; |
110 | } |
94 | } |
111 | 95 |