Fixed how errno is handled with isatty()
[akaros.git] / user / apps / parlib / file_error.c
1 #include <string.h>
2 #include <stdlib.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 #include <fcntl.h>
6 #include <stdio.h>
7 #include <unistd.h>
8 #include <errno.h>
9
10 #define IN_BUF_SIZE 1024
11
12 void file_error()
13 {
14                 
15         char buf[IN_BUF_SIZE];
16
17         int dne_fd = 99;
18         int result;
19
20         printf("Starting error testing....\n\n");
21
22         errno = 0;
23         int bad_fd = open("./test/DNE", O_RDWR, 0);
24         printf("Opened:       DNE\n");
25         printf("FD:           %d\n", bad_fd);
26         printf("ERRNO:        %s\n", strerror(errno));
27
28
29         errno = 0;
30         printf("\n");
31         result = close(dne_fd);
32         printf("CLOSED FD:    %d\n", dne_fd);
33         printf("RESULT:       %d\n", result);
34         printf("ERRNO:        %s\n", strerror(errno));
35
36         errno = 0;
37         printf("\n");
38         int result = read(bad_fd, buf, IN_BUF_SIZE - 1);
39         printf("Read:         %d bytes\n", result);
40         printf("ERRNO:        %s\n", strerror(errno));
41
42         errno = 0;
43         printf("\n");
44         result = write(bad_fd, buf, IN_BUF_SIZE - 1);
45         printf("Wrote:        %d bytes\n", result);
46         printf("ERRNO:        %s\n", strerror(errno));
47
48         errno = 0;
49         printf("\n");
50         result = unlink("DNE");
51         printf("UNLINKED:     DNE\n");
52         printf("RESULT:       %d\n", result);
53         printf("ERRNO:        %s\n", strerror(errno));
54         
55         errno = 0;
56         printf("\n");
57         result = link("DNE", "DEST");
58         printf("LINKED:       DEST to DNE\n");
59         printf("RESULT:       %d\n", result);
60         printf("ERRNO:        %s\n", strerror(errno));
61
62         errno = 0;
63         printf("\n");
64         result = isatty(dne_fd);
65         printf("ISATTY on FD: %d\n", dne_fd);
66         printf("RESULT:       %d\n", result);
67         printf("ERRNO:        %s\n", strerror(errno));
68
69         errno = 0;
70         printf("\n");
71         result = lseek(dne_fd, 0, 0);
72         printf("LSEEKED FD:   %d\n", dne_fd);
73         printf("RESULT:       %d\n", result);
74         printf("ERRNO:        %s\n", strerror(errno));
75
76         struct stat st;
77
78         errno = 0;
79         printf("\n");
80         result = stat("DNE", &st);
81         printf("STAT:         DNE\n");
82         printf("RESULT:       %d\n", result);
83         printf("ERRNO:        %s\n", strerror(errno));
84
85         errno = 0;
86         printf("\n");
87         result = fstat(dne_fd, &st);
88         printf("FSTAT on FD:  %d\n", dne_fd);
89         printf("RESULT:       %d\n", result);
90         printf("ERRNO:        %s\n", strerror(errno));
91
92         printf("\nTests Complete.\n\n");
93 }