ordered_tree: add some tests
[nit.git] / c_src / posix._ffi.c
1 /*
2 Extern implementation of Nit module posix
3 */
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include "posix._ffi.h"
7 #define String_to_cstring posix___String_to_cstring
8 #define NativeString_to_s posix___NativeString_to_s
9 #define new_Array_of_String posix___new_Array_of_String
10 #define Array_of_String_add posix___Array_of_String_add
11 #line 22 "lib/standard/posix.nit"
12
13 #include <sys/types.h>
14 #include <unistd.h>
15 #include <pwd.h>
16 #include <grp.h>
17
18 int posix___Sys_uid__assign___impl( Sys recv, int uid )
19 {
20 #line 30 "lib/standard/posix.nit"
21
22 return setuid(uid); }
23
24 int posix___Sys_uid___impl( Sys recv )
25 {
26 #line 31 "lib/standard/posix.nit"
27
28 return getuid(); }
29
30 int posix___Sys_gid__assign___impl( Sys recv, int gid )
31 {
32 #line 33 "lib/standard/posix.nit"
33
34 return setgid(gid); }
35
36 int posix___Sys_gid___impl( Sys recv )
37 {
38 #line 34 "lib/standard/posix.nit"
39
40 return getgid(); }
41
42 int posix___Sys_euid__assign___impl( Sys recv, int uid )
43 {
44 #line 36 "lib/standard/posix.nit"
45
46 return seteuid(uid); }
47
48 int posix___Sys_euid___impl( Sys recv )
49 {
50 #line 37 "lib/standard/posix.nit"
51
52 return geteuid(); }
53
54 int posix___Sys_egid__assign___impl( Sys recv, int gid )
55 {
56 #line 39 "lib/standard/posix.nit"
57
58 return setegid(gid); }
59
60 int posix___Sys_egid___impl( Sys recv )
61 {
62 #line 40 "lib/standard/posix.nit"
63
64 return getegid(); }
65
66 struct passwd* posix___new_Passwd_from_uid___impl( int uid )
67 {
68 #line 45 "lib/standard/posix.nit"
69
70 return getpwuid(uid); }
71
72 struct passwd* posix___new_Passwd_from_name___impl( String name )
73 {
74 #line 48 "lib/standard/posix.nit"
75
76 return getpwnam( String_to_cstring(name) ); }
77
78 String posix___Passwd_name___impl( struct passwd* recv )
79 {
80 #line 51 "lib/standard/posix.nit"
81
82 return NativeString_to_s(recv->pw_name); }
83
84 String posix___Passwd_passwd___impl( struct passwd* recv )
85 {
86 #line 54 "lib/standard/posix.nit"
87
88 return NativeString_to_s(recv->pw_passwd); }
89
90 int posix___Passwd_uid___impl( struct passwd* recv )
91 {
92 #line 57 "lib/standard/posix.nit"
93
94 return recv->pw_uid; }
95
96 int posix___Passwd_gid___impl( struct passwd* recv )
97 {
98 #line 60 "lib/standard/posix.nit"
99
100 return recv->pw_gid; }
101
102 String posix___Passwd_dir___impl( struct passwd* recv )
103 {
104 #line 63 "lib/standard/posix.nit"
105
106 return NativeString_to_s(recv->pw_dir); }
107
108 String posix___Passwd_shell___impl( struct passwd* recv )
109 {
110 #line 66 "lib/standard/posix.nit"
111
112 return NativeString_to_s(recv->pw_shell); }
113
114 struct group* posix___new_Group_from_gid___impl( int gid )
115 {
116 #line 70 "lib/standard/posix.nit"
117
118 return getgrgid(gid); }
119
120 struct group* posix___new_Group_from_name___impl( String name )
121 {
122 #line 71 "lib/standard/posix.nit"
123
124 return getgrnam( String_to_cstring(name) ); }
125
126 String posix___Group_name___impl( struct group* recv )
127 {
128 #line 73 "lib/standard/posix.nit"
129
130 return NativeString_to_s(recv->gr_name); }
131
132 String posix___Group_passwd___impl( struct group* recv )
133 {
134 #line 74 "lib/standard/posix.nit"
135
136 return NativeString_to_s(recv->gr_passwd); }
137
138 int posix___Group_gid___impl( struct group* recv )
139 {
140 #line 75 "lib/standard/posix.nit"
141
142 return recv->gr_gid; }
143
144 Array_of_String posix___Group_mem___impl( struct group* recv )
145 {
146 #line 76 "lib/standard/posix.nit"
147
148
149 char **mem;
150 int m;
151 Array_of_String ret;
152
153 mem = recv->gr_mem;
154 ret = new_Array_of_String();
155
156 for (m = 0; mem[m] != NULL; m++)
157 Array_of_String_add(ret, NativeString_to_s(mem[m]));
158
159 return ret;
160 }