#include <stdio.h>
#include <stdlib.h>
#include <auth_attr.h>
#include "getent.h"
static int
putauthattr(const authattr_t *auth, FILE *fp)
{
int i;
kva_t *attrs;
kv_t *data;
if (auth == NULL)
return (1);
if (fprintf(fp, "%s:%s:%s:%s:%s:",
auth->name != NULL ? auth->name : "",
auth->res1 != NULL ? auth->res1 : "",
auth->res2 != NULL ? auth->res2 : "",
auth->short_desc != NULL ? auth->short_desc : "",
auth->long_desc != NULL ? auth->long_desc : "") == EOF)
return (1);
attrs = auth->attr;
if (attrs != NULL) {
data = attrs->data;
for (i = 0; i < attrs->length; i++) {
if (fprintf(fp, "%s=%s%s",
data[i].key != NULL ? data[i].key : "",
data[i].value != NULL ? data[i].value : "",
i < (attrs->length)-1 ? ";" : "") == EOF)
return (1);
}
}
if (putc('\n', fp) == EOF)
return (1);
return (0);
}
int
dogetauthattr(const char **list)
{
authattr_t *pauth;
int rc = EXC_SUCCESS;
if (list == NULL || *list == NULL) {
setauthattr();
while ((pauth = getauthattr()) != NULL)
(void) putauthattr(pauth, stdout);
endauthattr();
} else {
for (; *list != NULL; list++) {
pauth = getauthnam(*list);
if (pauth == NULL)
rc = EXC_NAME_NOT_FOUND;
else
(void) putauthattr(pauth, stdout);
}
}
return (rc);
}