#include <stdio.h>
#include <stdlib.h>
#include <prof_attr.h>
#include "getent.h"
static int
putprofattr(const profattr_t *prof, FILE *fp)
{
int i;
kva_t *attrs;
kv_t *data;
if (prof == NULL)
return (1);
if (fprintf(fp, "%s:%s:%s:%s:",
prof->name != NULL ? prof->name : "",
prof->res1 != NULL ? prof->res1 : "",
prof->res2 != NULL ? prof->res2 : "",
prof->desc != NULL ? prof->desc : "") == EOF)
return (1);
attrs = prof->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
dogetprofattr(const char **list)
{
profattr_t *pprof;
int rc = EXC_SUCCESS;
if (list == NULL || *list == NULL) {
setprofattr();
while ((pprof = getprofattr()) != NULL)
(void) putprofattr(pprof, stdout);
endprofattr();
} else {
for (; *list != NULL; list++) {
pprof = getprofnam(*list);
if (pprof == NULL)
rc = EXC_NAME_NOT_FOUND;
else
(void) putprofattr(pprof, stdout);
}
}
return (rc);
}