From 352f485649092543575898802a5775317941b793 Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jackpot51@gmail.com> Date: Sat, 3 Mar 2018 20:52:10 -0700 Subject: [PATCH] Build grp header --- Cargo.lock | 9 +++++++ Cargo.toml | 1 + src/grp/Cargo.toml | 11 +++++++++ src/grp/build.rs | 11 +++++++++ src/grp/cbindgen.toml | 6 +++++ src/{todo/grp => grp/src}/lib.rs | 41 +++++++++++++++++++------------- src/lib.rs | 1 + 7 files changed, 64 insertions(+), 16 deletions(-) create mode 100644 src/grp/Cargo.toml create mode 100644 src/grp/build.rs create mode 100644 src/grp/cbindgen.toml rename src/{todo/grp => grp/src}/lib.rs (57%) diff --git a/Cargo.lock b/Cargo.lock index 60bc0e45a..8be22825d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -97,6 +97,14 @@ name = "fuchsia-zircon-sys" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "grp" +version = "0.1.0" +dependencies = [ + "cbindgen 0.5.0", + "platform 0.1.0", +] + [[package]] name = "itoa" version = "0.3.4" @@ -222,6 +230,7 @@ dependencies = [ "compiler_builtins 0.1.0 (git+https://github.com/rust-lang-nursery/compiler-builtins.git)", "ctype 0.1.0", "fcntl 0.1.0", + "grp 0.1.0", "platform 0.1.0", "stdio 0.1.0", "stdlib 0.1.0", diff --git a/Cargo.toml b/Cargo.toml index d012812b3..af003fd33 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,7 @@ compiler_builtins = { git = "https://github.com/rust-lang-nursery/compiler-built platform = { path = "platform" } ctype = { path = "src/ctype" } fcntl = { path = "src/fcntl" } +grp = { path = "src/grp" } stdio = { path = "src/stdio" } stdlib = { path = "src/stdlib" } string = { path = "src/string" } diff --git a/src/grp/Cargo.toml b/src/grp/Cargo.toml new file mode 100644 index 000000000..d09fdca34 --- /dev/null +++ b/src/grp/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "grp" +version = "0.1.0" +authors = ["Jeremy Soller <jackpot51@gmail.com>"] +build = "build.rs" + +[build-dependencies] +cbindgen = { path = "../../cbindgen" } + +[dependencies] +platform = { path = "../../platform" } diff --git a/src/grp/build.rs b/src/grp/build.rs new file mode 100644 index 000000000..9ee6c6961 --- /dev/null +++ b/src/grp/build.rs @@ -0,0 +1,11 @@ +extern crate cbindgen; + +use std::{env, fs}; + +fn main() { + let crate_dir = env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR not set"); + fs::create_dir_all("../../target/include").expect("failed to create include directory"); + cbindgen::generate(crate_dir) + .expect("failed to generate bindings") + .write_to_file("../../target/include/grp.h"); +} diff --git a/src/grp/cbindgen.toml b/src/grp/cbindgen.toml new file mode 100644 index 000000000..5b249723f --- /dev/null +++ b/src/grp/cbindgen.toml @@ -0,0 +1,6 @@ +sys_includes = [] +include_guard = "_GRP_H" +language = "C" + +[enum] +prefix_with_name = true diff --git a/src/todo/grp/lib.rs b/src/grp/src/lib.rs similarity index 57% rename from src/todo/grp/lib.rs rename to src/grp/src/lib.rs index 3b7bbd403..c80ee95af 100644 --- a/src/todo/grp/lib.rs +++ b/src/grp/src/lib.rs @@ -1,24 +1,26 @@ -/* automatically generated by rust-bindgen */ +//! grp implementation for Redox, following http://pubs.opengroup.org/onlinepubs/7908799/xsh/grp.h.html + +#![no_std] + +extern crate platform; + +use platform::types::*; + #[repr(C)] -#[derive(Debug, Copy)] pub struct group { - pub gr_name: *mut libc::c_char, - pub gr_passwd: *mut libc::c_char, + pub gr_name: *mut c_char, + pub gr_passwd: *mut c_char, pub gr_gid: gid_t, - pub gr_mem: *mut *mut libc::c_char, -} -impl Clone for group { - fn clone(&self) -> Self { - *self - } + pub gr_mem: *mut *mut c_char, } + #[no_mangle] pub extern "C" fn getgrgid(gid: gid_t) -> *mut group { unimplemented!(); } #[no_mangle] -pub extern "C" fn getgrnam(name: *const libc::c_char) -> *mut group { +pub extern "C" fn getgrnam(name: *const c_char) -> *mut group { unimplemented!(); } @@ -26,21 +28,21 @@ pub extern "C" fn getgrnam(name: *const libc::c_char) -> *mut group { pub extern "C" fn getgrgid_r( gid: gid_t, grp: *mut group, - buffer: *mut libc::c_char, + buffer: *mut c_char, bufsize: usize, result: *mut *mut group, -) -> libc::c_int { +) -> c_int { unimplemented!(); } #[no_mangle] pub extern "C" fn getgrnam_r( - name: *const libc::c_char, + name: *const c_char, grp: *mut group, - buffer: *mut libc::c_char, + buffer: *mut c_char, bufsize: usize, result: *mut *mut group, -) -> libc::c_int { +) -> c_int { unimplemented!(); } @@ -58,3 +60,10 @@ pub extern "C" fn endgrent() { pub extern "C" fn setgrent() { unimplemented!(); } + +/* +#[no_mangle] +pub extern "C" fn func(args) -> c_int { + unimplemented!(); +} +*/ diff --git a/src/lib.rs b/src/lib.rs index d1cdd8af0..63815d70b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,6 +6,7 @@ extern crate platform; extern crate ctype; extern crate fcntl; +extern crate grp; extern crate stdio; extern crate stdlib; extern crate string; -- GitLab