- /* I can not find documentation of any other purpose for the
- * DirectoryNames field.
- */
- /*
- * Try to synthesize a principal:
- * service '/' fqdn '@' realm
- */
- if (options->k5service && options->k5realm && options->fqdn) {
- /* should k5princ be utf8 encoded? */
- size_t len;
- char *p = strchr( options->fqdn, ':' );
- if (p)
- *p = '\0';
- len = strlen( options->k5service )
- + strlen( options->fqdn )
- + strlen( options->k5realm );
- len+=2; /* '/' and '@' */
- if ( len > 255 || len+2 > maxstatuslen - offset) {
- *data++ = 0;
- LOG ( log_error, logtype_afpd, "status: could not set directory service list, no more room");
- }
- else {
- *data++ = 1; /* DirectoryNamesCount */
- *data++ = len;
- snprintf( data, len + 1, "%s/%s@%s", options->k5service,
- options->fqdn, options->k5realm );
- data += len;
- if (p)
- *p = ':';
- }