#include <stdio.h>
#include <stdlib.h>
#include <exec_attr.h>
#include "getent.h"
static int
putexecattr(const execattr_t *exec, FILE *fp)
{
int i;
kva_t *attrs;
kv_t *data;
if (exec == NULL)
return (1);
if (fprintf(fp, "%s:%s:%s:%s:%s:%s:",
exec->name != NULL ? exec->name : "",
exec->policy != NULL ? exec->policy : "",
exec->type != NULL ? exec->type : "",
exec->res1 != NULL ? exec->res1 : "",
exec->res2 != NULL ? exec->res2 : "",
exec->id != NULL ? exec->id : "") == EOF)
return (1);
attrs = exec->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
dogetexecattr(const char **list)
{
execattr_t *pexec;
int rc = EXC_SUCCESS;
if (list == NULL || *list == NULL) {
setexecattr();
while ((pexec = getexecattr()) != NULL)
(void) putexecattr(pexec, stdout);
endexecattr();
} else {
for (; *list != NULL; list++) {
pexec = getexecprof(*list, NULL, NULL, GET_ALL);
if (pexec == NULL) {
rc = EXC_NAME_NOT_FOUND;
} else {
for (; pexec != NULL; pexec = pexec->next) {
(void) putexecattr(pexec, stdout);
}
}
}
}
return (rc);
}