+++ /dev/null
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Services conforming to POSIX
-module posix
-
-import string
-
-`{
-#include <sys/types.h>
-#include <unistd.h>
-#include <pwd.h>
-#include <grp.h>
-`}
-
-redef class Sys
- fun uid=(uid: Int): Bool `{ return setuid(uid); `}
- fun uid: Int `{ return getuid(); `}
-
- fun gid=(gid: Int): Bool `{ return setgid(gid); `}
- fun gid: Int `{ return getgid(); `}
-
- fun euid=(uid: Int): Bool `{ return seteuid(uid); `}
- fun euid: Int `{ return geteuid(); `}
-
- fun egid=(gid: Int): Bool `{ return setegid(gid); `}
- fun egid: Int `{ return getegid(); `}
-end
-
-extern class Passwd `{struct passwd*`}
- # Get the `Passwd` of the user with the `uid`
- new from_uid(uid: Int) `{ return getpwuid(uid); `}
-
- # 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; `}
-
- # 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
-
-extern class Group `{struct group*`}
- 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 NativeString.to_s `{ return NativeString_to_s(recv->gr_name); `}
- fun passwd: String import NativeString.to_s `{ return NativeString_to_s(recv->gr_passwd); `}
- fun gid: Int `{ return recv->gr_gid; `}
- fun mem: Array[String] import Array[String], Array[String].add, NativeString.to_s `{
- char **mem;
- int m;
- Array_of_String ret;
-
- mem = recv->gr_mem;
- ret = new_Array_of_String();
-
- for (m = 0; mem[m] != NULL; m++)
- Array_of_String_add(ret, NativeString_to_s(mem[m]));
-
- return ret;
- `}
-end