diff options
Diffstat (limited to 'otherlibs/unix/getpw.c')
| -rw-r--r-- | otherlibs/unix/getpw.c | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/otherlibs/unix/getpw.c b/otherlibs/unix/getpw.c deleted file mode 100644 index eba9d6c3c3..0000000000 --- a/otherlibs/unix/getpw.c +++ /dev/null @@ -1,65 +0,0 @@ -/***********************************************************************/ -/* */ -/* Objective Caml */ -/* */ -/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */ -/* */ -/* Copyright 1996 Institut National de Recherche en Informatique et */ -/* en Automatique. All rights reserved. This file is distributed */ -/* under the terms of the GNU Library General Public License, with */ -/* the special exception on linking described in file ../../LICENSE. */ -/* */ -/***********************************************************************/ - -/* $Id$ */ - -#include <mlvalues.h> -#include <alloc.h> -#include <memory.h> -#include <fail.h> -#include "unixsupport.h" -#include <pwd.h> - -static value alloc_passwd_entry(struct passwd *entry) -{ - value res; - value name = Val_unit, passwd = Val_unit, gecos = Val_unit; - value dir = Val_unit, shell = Val_unit; - - Begin_roots5 (name, passwd, gecos, dir, shell); - name = copy_string(entry->pw_name); - passwd = copy_string(entry->pw_passwd); -#ifndef __BEOS__ - gecos = copy_string(entry->pw_gecos); -#else - gecos = copy_string(""); -#endif - dir = copy_string(entry->pw_dir); - shell = copy_string(entry->pw_shell); - res = alloc_small(7, 0); - Field(res,0) = name; - Field(res,1) = passwd; - Field(res,2) = Val_int(entry->pw_uid); - Field(res,3) = Val_int(entry->pw_gid); - Field(res,4) = gecos; - Field(res,5) = dir; - Field(res,6) = shell; - End_roots(); - return res; -} - -CAMLprim value unix_getpwnam(value name) -{ - struct passwd * entry; - entry = getpwnam(String_val(name)); - if (entry == (struct passwd *) NULL) raise_not_found(); - return alloc_passwd_entry(entry); -} - -CAMLprim value unix_getpwuid(value uid) -{ - struct passwd * entry; - entry = getpwuid(Int_val(uid)); - if (entry == (struct passwd *) NULL) raise_not_found(); - return alloc_passwd_entry(entry); -} |
