File: os.rs

package info (click to toggle)
rust-uzers 0.12.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 272 kB
  • sloc: makefile: 2
file content (47 lines) | stat: -rw-r--r-- 1,553 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
extern crate uzers;
use uzers::os::unix::{GroupExt, UserExt};
use uzers::{Groups, Users, UsersCache};
//use uzers::os::bsd::UserExt as BSDUserExt;

extern crate env_logger;

fn main() {
    env_logger::init();

    let cache = UsersCache::new();

    let current_uid = cache.get_current_uid();
    println!("Your UID is {}", current_uid);

    let you = cache
        .get_user_by_uid(current_uid)
        .expect("No entry for current user!");
    println!("Your username is {}", you.name().to_string_lossy());
    println!("Your shell is {}", you.shell().display());
    println!("Your home directory is {}", you.home_dir().display());

    // The two fields below are only available on BSD systems.
    // Linux systems don’t have the fields in their `passwd` structs!
    //println!("Your password change timestamp is {}", you.password_change_time());
    //println!("Your password expiry timestamp is {}", you.password_expire_time());

    let primary_group = cache
        .get_group_by_gid(you.primary_group_id())
        .expect("No entry for your primary group!");
    println!(
        "Your primary group has ID {} and name {}",
        primary_group.gid(),
        primary_group.name().to_string_lossy()
    );

    if primary_group.members().is_empty() {
        println!("There are no other members of that group.");
    } else {
        for username in primary_group.members() {
            println!(
                "User {} is also a member of that group.",
                username.to_string_lossy()
            );
        }
    }
}