`}
redef class Sys
+ # Set the real current user id of this process
fun uid=(uid: Int): Bool `{ return setuid(uid); `}
+
+ # Current real user id of this process
fun uid: Int `{ return getuid(); `}
+ # Set the current real group id of this process
fun gid=(gid: Int): Bool `{ return setgid(gid); `}
+
+ # Current real group id of this process
fun gid: Int `{ return getgid(); `}
+ # Set the effective user id of this process
fun euid=(uid: Int): Bool `{ return seteuid(uid); `}
+
+ # The effective user id of this process
fun euid: Int `{ return geteuid(); `}
+ # Set the effective group id of this process
fun egid=(gid: Int): Bool `{ return setegid(gid); `}
+
+ # The effective group id of this process
fun egid: Int `{ return getegid(); `}
end
+# Information on a user account
extern class Passwd `{struct passwd*`}
+ # Get the `Passwd` of the user with the `uid`
new from_uid(uid: Int) `{ return getpwuid(uid); `}
- new from_name(name: String) import String::to_cstring `{ return getpwnam( String_to_cstring(name) ); `}
- fun name: String import String::from_cstring `{ return new_String_from_cstring(recv->pw_name); `}
- fun passwd: String import String::from_cstring `{ return new_String_from_cstring(recv->pw_passwd); `}
+ # Get the `Passwd` of the user with the `name`
+ new from_name(name: String) import String.to_cstring `{ return getpwnam( String_to_cstring(name) ); `}
+
+ # Username
+ fun name: String import NativeString.to_s `{ return NativeString_to_s(recv->pw_name); `}
+
+ # User password
+ fun passwd: String import NativeString.to_s `{ return NativeString_to_s(recv->pw_passwd); `}
+
+ # User ID
fun uid: Int `{ return recv->pw_uid; `}
+
+ # Group ID
fun gid: Int `{ return recv->pw_gid; `}
- fun gecos: String import String::from_cstring `{ return new_String_from_cstring(recv->pw_gecos); `}
- fun dir: String import String::from_cstring `{ return new_String_from_cstring(recv->pw_dir); `}
- fun shell: String import String::from_cstring `{ return new_String_from_cstring(recv->pw_shell); `}
+
+ # Home directory
+ fun dir: String import NativeString.to_s `{ return NativeString_to_s(recv->pw_dir); `}
+
+ # Shell program
+ fun shell: String import NativeString.to_s `{ return NativeString_to_s(recv->pw_shell); `}
end
+# Information on a user group
extern class Group `{struct group*`}
+ # Get a group from its id
new from_gid(gid: Int) `{ return getgrgid(gid); `}
- new from_name(name: String) import String::to_cstring `{ return getgrnam( String_to_cstring(name) ); `}
- fun name: String import String::from_cstring `{ return new_String_from_cstring(recv->gr_name); `}
- fun passwd: String import String::from_cstring `{ return new_String_from_cstring(recv->gr_passwd); `}
+ # Get a group from its name
+ new from_name(name: String) import String.to_cstring `{ return getgrnam( String_to_cstring(name) ); `}
+
+ # Name of this ground
+ fun name: String import NativeString.to_s `{ return NativeString_to_s(recv->gr_name); `}
+
+ # Encrypted password of this group
+ fun passwd: String import NativeString.to_s `{ return NativeString_to_s(recv->gr_passwd); `}
+
+ # Id of this group
fun gid: Int `{ return recv->gr_gid; `}
- fun mem: Array[String] import Array, Array::add, String::from_cstring, String as (nullable Object) `{
+
+ # List of the members of the group
+ fun mem: Array[String] import Array[String], Array[String].add, NativeString.to_s `{
char **mem;
int m;
- Array ret;
+ Array_of_String ret;
mem = recv->gr_mem;
- ret = new_Array();
+ ret = new_Array_of_String();
for (m = 0; mem[m] != NULL; m++)
- Array_add(ret, String_as_nullable_Object( new_String_from_cstring(mem[m]) ));
+ Array_of_String_add(ret, NativeString_to_s(mem[m]));
return ret;
`}