Rev 2710 | Rev 2737 | 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 | ||