Parse a user name or (optionally) a number into a uid */
| 142 | |
| 143 | /* Parse a user name or (optionally) a number into a uid */ |
| 144 | int user_to_uid(const char *name, uid_t *uid_p, BOOL num_ok) |
| 145 | { |
| 146 | if (!name || !*name) |
| 147 | return 0; |
| 148 | |
| 149 | if (num_ok && name[strspn(name, "0123456789")] == '\0') { |
| 150 | *uid_p = id_parse(name); |
| 151 | return 1; |
| 152 | } |
| 153 | |
| 154 | if (namecvt_pid) { |
| 155 | id_t id; |
| 156 | if (!namecvt_call("usr", &name, &id)) |
| 157 | return 0; |
| 158 | *uid_p = id; |
| 159 | } else { |
| 160 | struct passwd *pass = getpwnam(name); |
| 161 | if (!pass) |
| 162 | return 0; |
| 163 | *uid_p = pass->pw_uid; |
| 164 | } |
| 165 | |
| 166 | return 1; |
| 167 | } |
| 168 | |
| 169 | /* Parse a group name or (optionally) a number into a gid */ |
| 170 | int group_to_gid(const char *name, gid_t *gid_p, BOOL num_ok) |
no test coverage detected