kconfig: use pkg-config for ncurses detection
[akaros.git] / tools / syscall_server / newlib_trans.c
1 #include <sys/stat.h>
2 #include <fcntl.h>
3 #include <stdio.h>
4 #include <syscall_server.h>
5
6 void translate_stat(struct stat* native, struct newlib_stat* newlib) {
7         newlib->st_dev = native->st_dev;
8         newlib->st_ino = native->st_ino;
9         newlib->st_mode = native->st_mode;
10         newlib->st_nlink = native->st_nlink;
11         newlib->st_uid = native->st_uid;
12         newlib->st_gid = native->st_gid;
13         newlib->st_rdev = native->st_rdev;
14         newlib->st_size = native->st_size;
15         newlib->st_atim = native->st_atim.tv_nsec;
16         newlib->st_mtim = native->st_mtim.tv_nsec;
17         newlib->st_ctim = native->st_ctim.tv_nsec;
18         newlib->st_blksize = native->st_blksize;
19         newlib->st_blocks = native->st_blocks;
20 }
21 int translate_flags(int newlib_flags) {
22         int native_flags = 0;
23         if (newlib_flags & NEWLIB_O_RDONLY) {
24                 native_flags |= O_RDONLY;
25                 newlib_flags &= ~NEWLIB_O_RDONLY;
26         }
27         if (newlib_flags & NEWLIB_O_WRONLY) {
28                 native_flags |= O_WRONLY;
29                 newlib_flags &= ~NEWLIB_O_WRONLY;
30         }
31         if (newlib_flags & NEWLIB_O_RDWR) {
32                 native_flags |= O_RDWR;
33                 newlib_flags &= ~NEWLIB_O_RDWR;
34         }
35         if (newlib_flags & NEWLIB_O_APPEND) {
36                 native_flags |= O_APPEND;
37                 newlib_flags &= ~NEWLIB_O_APPEND;
38         }
39         if (newlib_flags & NEWLIB_O_CREAT) {
40                 native_flags |= O_CREAT;
41                 newlib_flags &= ~NEWLIB_O_CREAT;
42         }
43         if (newlib_flags & NEWLIB_O_TRUNC) {
44                 native_flags |= O_TRUNC;
45                 newlib_flags &= ~NEWLIB_O_TRUNC;
46         }
47         if (newlib_flags & NEWLIB_O_EXCL) {
48                 native_flags |= O_EXCL;
49                 newlib_flags &= ~NEWLIB_O_EXCL;
50         }
51         if(newlib_flags != 0)
52                 fprintf(stderr, "Warning: unsupported newlib flags passed to syscall...\n");
53         return native_flags;
54 }
55 int translate_mode(int newlib_mode) {
56         int native_mode = 0;
57         if (newlib_mode & NEWLIB_S_IRUSR) {
58                 native_mode |= S_IRUSR;
59                 newlib_mode &= ~NEWLIB_S_IRUSR;
60         }
61         if (newlib_mode & NEWLIB_S_IWUSR) {
62                 native_mode |= S_IWUSR;
63                 newlib_mode &= ~NEWLIB_S_IWUSR;
64         }
65         if (newlib_mode & NEWLIB_S_IXUSR) {
66                 native_mode |= S_IXUSR;
67                 newlib_mode &= ~NEWLIB_S_IXUSR;
68         }
69         if (newlib_mode & NEWLIB_S_IRGRP) {
70                 native_mode |= S_IRGRP;
71                 newlib_mode &= ~NEWLIB_S_IRGRP;
72         }
73         if (newlib_mode & NEWLIB_S_IWGRP) {
74                 native_mode |= S_IWGRP;
75                 newlib_mode &= ~NEWLIB_S_IWGRP;
76         }
77         if (newlib_mode & NEWLIB_S_IXGRP) {
78                 native_mode |= S_IXGRP;
79                 newlib_mode &= ~NEWLIB_S_IXGRP;
80         }
81         if (newlib_mode & NEWLIB_S_IROTH) {
82                 native_mode |= S_IROTH;
83                 newlib_mode &= ~NEWLIB_S_IROTH;
84         }
85         if (newlib_mode & NEWLIB_S_IWOTH) {
86                 native_mode |= S_IWOTH;
87                 newlib_mode &= ~NEWLIB_S_IWOTH;
88         }
89         if (newlib_mode & NEWLIB_S_IXOTH) {
90                 native_mode |= S_IXOTH;
91                 newlib_mode &= ~NEWLIB_S_IXOTH;
92         }
93         if(newlib_mode != 0)
94                 fprintf(stderr, "Warning: unsupported newlib mode passed to syscall...\n");
95         return native_mode;     
96 }
97 int translate_whence(int newlib_whence) {
98         int native_whence = 0;
99         if (newlib_whence == NEWLIB_SEEK_SET)
100                 native_whence = SEEK_SET;
101         else if (newlib_whence == NEWLIB_SEEK_CUR)
102                 native_whence = SEEK_CUR;
103         else if (newlib_whence == NEWLIB_SEEK_END)
104                 native_whence = SEEK_END;
105         return native_whence;   
106 }