summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2016-07-31 15:11:53 -0700
committerGitHub <noreply@github.com>2016-07-31 15:11:53 -0700
commit932f22be4e9f25115ee9ba84047a3afd5899ff91 (patch)
tree54b1c4d5de1fffa4411838c78264ffa3e45dd0ae
parent3b4f15d5769530cb540d992f0583bca63af847ee (diff)
parent19fb32a0a9beb34dac3ff174174744d7bf3debf3 (diff)
downloadrust-libc-932f22be4e9f25115ee9ba84047a3afd5899ff91.tar.gz
Merge pull request #342 from knight42/getpw
Add functions to get password/group file entry
-rw-r--r--src/unix/bsd/mod.rs9
-rw-r--r--src/unix/mod.rs16
-rw-r--r--src/unix/notbsd/linux/mod.rs2
-rw-r--r--src/unix/notbsd/mod.rs5
-rw-r--r--src/unix/solaris/mod.rs8
5 files changed, 39 insertions, 1 deletions
diff --git a/src/unix/bsd/mod.rs b/src/unix/bsd/mod.rs
index f36fa61cab..a2e2dd75bd 100644
--- a/src/unix/bsd/mod.rs
+++ b/src/unix/bsd/mod.rs
@@ -354,12 +354,21 @@ extern {
pub fn kqueue() -> ::c_int;
pub fn unmount(target: *const ::c_char, arg: ::c_int) -> ::c_int;
pub fn syscall(num: ::c_int, ...) -> ::c_int;
+ #[cfg_attr(target_os = "netbsd", link_name = "__getpwnam_r50")]
+ pub fn getpwnam_r(name: *const ::c_char,
+ pwd: *mut passwd,
+ buf: *mut ::c_char,
+ buflen: ::size_t,
+ result: *mut *mut passwd) -> ::c_int;
#[cfg_attr(target_os = "netbsd", link_name = "__getpwuid_r50")]
pub fn getpwuid_r(uid: ::uid_t,
pwd: *mut passwd,
buf: *mut ::c_char,
buflen: ::size_t,
result: *mut *mut passwd) -> ::c_int;
+ #[cfg_attr(target_os = "netbsd", link_name = "__getpwent50")]
+ pub fn getpwent() -> *mut passwd;
+ pub fn setpwent();
pub fn getprogname() -> *const ::c_char;
pub fn setprogname(name: *const ::c_char);
pub fn getloadavg(loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index 314219e78c..d2ae4eaeb0 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -17,6 +17,13 @@ pub enum DIR {}
pub enum locale_t {}
s! {
+ pub struct group {
+ pub gr_name: *mut ::c_char,
+ pub gr_passwd: *mut ::c_char,
+ pub gr_gid: ::gid_t,
+ pub gr_mem: *mut *mut ::c_char,
+ }
+
pub struct utimbuf {
pub actime: time_t,
pub modtime: time_t,
@@ -226,6 +233,15 @@ cfg_if! {
}
extern {
+ pub fn getgrnam(name: *const ::c_char) -> *mut group;
+ pub fn getgrgid(gid: ::gid_t) -> *mut group;
+
+ pub fn endpwent();
+ #[cfg_attr(target_os = "netbsd", link_name = "__getpwnam50")]
+ pub fn getpwnam(name: *const ::c_char) -> *mut passwd;
+ #[cfg_attr(target_os = "netbsd", link_name = "__getpwuid50")]
+ pub fn getpwuid(uid: ::uid_t) -> *mut passwd;
+
pub fn fprintf(stream: *mut ::FILE,
format: *const ::c_char, ...) -> ::c_int;
pub fn printf(format: *const ::c_char, ...) -> ::c_int;
diff --git a/src/unix/notbsd/linux/mod.rs b/src/unix/notbsd/linux/mod.rs
index 25007fbdf9..a909082a5a 100644
--- a/src/unix/notbsd/linux/mod.rs
+++ b/src/unix/notbsd/linux/mod.rs
@@ -503,6 +503,8 @@ f! {
}
extern {
+ pub fn setpwent();
+ pub fn getpwent() -> *mut passwd;
pub fn shm_open(name: *const c_char, oflag: ::c_int,
mode: mode_t) -> ::c_int;
pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;
diff --git a/src/unix/notbsd/mod.rs b/src/unix/notbsd/mod.rs
index d625f1b721..8280141961 100644
--- a/src/unix/notbsd/mod.rs
+++ b/src/unix/notbsd/mod.rs
@@ -715,6 +715,11 @@ f! {
}
extern {
+ pub fn getpwnam_r(name: *const ::c_char,
+ pwd: *mut passwd,
+ buf: *mut ::c_char,
+ buflen: ::size_t,
+ result: *mut *mut passwd) -> ::c_int;
pub fn getpwuid_r(uid: ::uid_t,
pwd: *mut passwd,
buf: *mut ::c_char,
diff --git a/src/unix/solaris/mod.rs b/src/unix/solaris/mod.rs
index 5a31e5269b..047051ef6d 100644
--- a/src/unix/solaris/mod.rs
+++ b/src/unix/solaris/mod.rs
@@ -966,10 +966,16 @@ extern {
serv: *mut ::c_char,
sevlen: ::socklen_t,
flags: ::c_int) -> ::c_int;
+ pub fn getpwnam_r(name: *const ::c_char,
+ pwd: *mut passwd,
+ buf: *mut ::c_char,
+ buflen: ::c_int) -> *const passwd;
pub fn getpwuid_r(uid: ::uid_t,
pwd: *mut passwd,
buf: *mut ::c_char,
- buflen: ::size_t) -> *const passwd;
+ buflen: ::c_int) -> *const passwd;
+ pub fn setpwent();
+ pub fn getpwent() -> *mut passwd;
pub fn readdir(dirp: *mut ::DIR) -> *const ::dirent;
pub fn fdatasync(fd: ::c_int) -> ::c_int;
pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;