X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/f0fca04e4e136c4a487a922e8fb09acf46aeafa0..8ef4ffd6987bb566c268d2a353d5fea1cfd9e430:/util.c diff --git a/util.c b/util.c index f74228ef..67308cd2 100644 --- a/util.c +++ b/util.c @@ -446,3 +446,39 @@ void kill_all(int sig) } } +/* like strncpy but does not 0 fill the buffer and always null + terminates (thus it can use maxlen+1 space in d) */ +void strlcpy(char *d, char *s, int maxlen) +{ + int len = strlen(s); + if (len > maxlen) len = maxlen; + memcpy(d, s, len); + d[len] = 0; +} + +/* turn a user name into a uid */ +int name_to_uid(char *name, uid_t *uid) +{ + struct passwd *pass; + if (!name || !*name) return 0; + pass = getpwnam(name); + if (pass) { + *uid = pass->pw_uid; + return 1; + } + return 0; +} + +/* turn a group name into a gid */ +int name_to_gid(char *name, gid_t *gid) +{ + struct group *grp; + if (!name || !*name) return 0; + grp = getgrnam(name); + if (grp) { + *gid = grp->gr_gid; + return 1; + } + return 0; +} +