version 1.1, 1993/05/18 07:37:54 |
version 1.7, 1994/03/06 07:54:35 |
|
|
*/ |
*/ |
|
|
#if defined(LIBC_SCCS) && !defined(lint) |
#if defined(LIBC_SCCS) && !defined(lint) |
static char sccsid[] = "@(#)getcap.c 5.15 (Berkeley) 3/19/93"; |
/*static char *sccsid = "from: @(#)getcap.c 5.15 (Berkeley) 3/19/93";*/ |
|
static char *rcsid = "$Id$"; |
#endif /* LIBC_SCCS and not lint */ |
#endif /* LIBC_SCCS and not lint */ |
|
|
#include <sys/types.h> |
#include <sys/types.h> |
Line 194 getent(cap, len, db_array, fd, name, dep |
|
Line 195 getent(cap, len, db_array, fd, name, dep |
|
DB *capdbp; |
DB *capdbp; |
DBT key, data; |
DBT key, data; |
register char *r_end, *rp, **db_p; |
register char *r_end, *rp, **db_p; |
int myfd, eof, foundit, retval; |
int myfd, eof, foundit, retval, clen; |
char *record; |
char *record, *cbuf; |
int tc_not_resolved; |
int tc_not_resolved; |
char pbuf[_POSIX_PATH_MAX]; |
char pbuf[_POSIX_PATH_MAX]; |
|
|
Line 250 getent(cap, len, db_array, fd, name, dep |
|
Line 251 getent(cap, len, db_array, fd, name, dep |
|
!= NULL) { |
!= NULL) { |
free(record); |
free(record); |
retval = cdbget(capdbp, &record, name); |
retval = cdbget(capdbp, &record, name); |
if (capdbp->close(capdbp) < 0) |
clen = strlen(record); |
|
if ((cbuf = malloc(clen + 1)) == NULL) { |
|
errno = ENOMEM; |
|
return (-2); |
|
} |
|
memmove(cbuf, record, clen + 1); |
|
if (capdbp->close(capdbp) < 0) { |
|
free(cbuf); |
return (-2); |
return (-2); |
*len = strlen(record); |
} |
*cap = malloc(*len + 1); |
*len = clen; |
memmove(*cap, record, *len + 1); |
*cap = cbuf; |
return (retval); |
return (retval); |
} else { |
} else { |
fd = open(*db_p, O_RDONLY, 0); |
fd = open(*db_p, O_RDONLY, 0); |
Line 657 cgetnext(bp, db_array) |
|
Line 665 cgetnext(bp, db_array) |
|
gottoprec = 1; |
gottoprec = 1; |
line = toprec; |
line = toprec; |
} else { |
} else { |
line = fgetline(pfp, &len); |
line = fgetln(pfp, &len); |
if (line == NULL && pfp) { |
if (line == NULL && pfp) { |
(void)fclose(pfp); |
(void)fclose(pfp); |
if (ferror(pfp)) { |
if (ferror(pfp)) { |
Line 716 cgetnext(bp, db_array) |
|
Line 724 cgetnext(bp, db_array) |
|
*np = '\0'; |
*np = '\0'; |
break; |
break; |
} else { /* name field extends beyond the line */ |
} else { /* name field extends beyond the line */ |
line = fgetline(pfp, &len); |
line = fgetln(pfp, &len); |
if (line == NULL && pfp) { |
if (line == NULL && pfp) { |
(void)fclose(pfp); |
(void)fclose(pfp); |
if (ferror(pfp)) { |
if (ferror(pfp)) { |