All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala-native.pwd.c Maven / Gradle / Ivy

The newest version!
#if defined(SCALANATIVE_COMPILE_ALWAYS) || defined(__SCALANATIVE_POSIX_PWD)
#if defined(__unix__) || defined(__unix) || defined(unix) ||                   \
    (defined(__APPLE__) && defined(__MACH__))
#include 
#include 
#include "types.h"

// We don't use the "standard" types such as `dev_t` for instance
// because these have different sizes on eg. Linux and OSX. We use the
// smallest type that can hold all the possible values for the different
// systems.

struct scalanative_passwd {
    char *pw_name;            /** User's login name. */
    scalanative_uid_t pw_uid; /** Numerical user ID. */
    scalanative_gid_t pw_gid; /** Numerical group ID. */
    char *pw_dir;             /** Initial working directory. */
    char *pw_shell;           /** Program to use as shell. */
};

void scalanative_passwd_copy(struct passwd *passwd,
                             struct scalanative_passwd *my_passwd) {
    my_passwd->pw_name = passwd->pw_name;
    my_passwd->pw_uid = passwd->pw_uid;
    my_passwd->pw_gid = passwd->pw_gid;
    my_passwd->pw_dir = passwd->pw_dir;
    my_passwd->pw_shell = passwd->pw_shell;
}
int scalanative_getpwuid(scalanative_uid_t uid,
                         struct scalanative_passwd *buf) {
    struct passwd *passwd = getpwuid(uid);

    if (passwd == NULL) {
        return 1;
    } else {
        scalanative_passwd_copy(passwd, buf);
        return 0;
    }
}

int scalanative_getpwnam(char *name, struct scalanative_passwd *buf) {
    struct passwd *passwd = getpwnam(name);

    if (passwd == NULL) {
        return 1;
    } else {
        scalanative_passwd_copy(passwd, buf);
        return 0;
    }
}

#endif // Unix or Mac OS
#endif




© 2015 - 2024 Weber Informatics LLC | Privacy Policy