+ /* Build a local UUID */
+ if (type == UUID_USER) {
+ struct passwd *pwd;
+ if ((pwd = getpwnam(name)) == NULL) {
+ LOG(log_error, logtype_afpd, "getuuidfromname(\"%s\",t:%u): unknown user",
+ name, uuidtype[type & UUIDTYPESTR_MASK]);
+ mytype |= UUID_ENOENT;
+ memcpy(uuid, nulluuid, 16);
+ } else {
+ localuuid_from_id(uuid, UUID_USER, pwd->pw_uid);
+ ret = 0;
+ LOG(log_debug, logtype_afpd, "getuuidfromname{local}: name: %s, type: %s -> UUID: %s",
+ name, uuidtype[type & UUIDTYPESTR_MASK], uuid_bin2string(uuid));
+ }
+ } else {
+ struct group *grp;
+ if ((grp = getgrnam(name)) == NULL) {
+ LOG(log_error, logtype_afpd, "getuuidfromname(\"%s\",t:%u): unknown user",
+ name, uuidtype[type & UUIDTYPESTR_MASK]);
+ mytype |= UUID_ENOENT;
+ memcpy(uuid, nulluuid, 16);
+ } else {
+ localuuid_from_id(uuid, UUID_GROUP, grp->gr_gid);
+ ret = 0;
+ LOG(log_debug, logtype_afpd, "getuuidfromname{local}: name: %s, type: %s -> UUID: %s",
+ name, uuidtype[type & UUIDTYPESTR_MASK], uuid_bin2string(uuid));
+ }
+ }