| version 1.32, 2000/01/22 22:19:10 |
version 1.32.2.1, 2000/06/23 16:17:25 |
| Line 249 getent(cap, len, db_array, fd, name, dep |
|
| Line 249 getent(cap, len, db_array, fd, name, dep |
|
| char *r_end, *rp = NULL, **db_p; /* pacify gcc */ |
char *r_end, *rp = NULL, **db_p; /* pacify gcc */ |
| int myfd = 0, eof, foundit, retval; |
int myfd = 0, eof, foundit, retval; |
| size_t clen; |
size_t clen; |
| char *record, *cbuf; |
char *record, *cbuf, *newrecord; |
| int tc_not_resolved; |
int tc_not_resolved; |
| char pbuf[_POSIX_PATH_MAX]; |
char pbuf[_POSIX_PATH_MAX]; |
| |
|
| Line 435 getent(cap, len, db_array, fd, name, dep |
|
| Line 435 getent(cap, len, db_array, fd, name, dep |
|
| |
|
| pos = rp - record; |
pos = rp - record; |
| newsize = r_end - record + BFRAG; |
newsize = r_end - record + BFRAG; |
| record = realloc(record, newsize); |
newrecord = realloc(record, newsize); |
| if (record == NULL) { |
if (newrecord == NULL) { |
| |
free(record); |
| if (myfd) |
if (myfd) |
| (void)close(fd); |
(void)close(fd); |
| errno = ENOMEM; |
errno = ENOMEM; |
| return (-2); |
return (-2); |
| } |
} |
| |
record = newrecord; |
| r_end = record + newsize; |
r_end = record + newsize; |
| rp = record + pos; |
rp = record + pos; |
| } |
} |
|
|
| newsize = r_end - record + diff + BFRAG; |
newsize = r_end - record + diff + BFRAG; |
| tcpos = tcstart - record; |
tcpos = tcstart - record; |
| tcposend = tcend - record; |
tcposend = tcend - record; |
| record = realloc(record, newsize); |
newrecord = realloc(record, newsize); |
| if (record == NULL) { |
if (newrecord == NULL) { |
| |
free(record); |
| if (myfd) |
if (myfd) |
| (void)close(fd); |
(void)close(fd); |
| free(icap); |
free(icap); |
| errno = ENOMEM; |
errno = ENOMEM; |
| return (-2); |
return (-2); |
| } |
} |
| |
record = newrecord; |
| r_end = record + newsize; |
r_end = record + newsize; |
| rp = record + pos; |
rp = record + pos; |
| tcstart = record + tcpos; |
tcstart = record + tcpos; |
|
|
| if (myfd) |
if (myfd) |
| (void)close(fd); |
(void)close(fd); |
| *len = rp - record - 1; /* don't count NUL */ |
*len = rp - record - 1; /* don't count NUL */ |
| if (r_end > rp) |
if (r_end > rp) { |
| if ((record = |
if ((newrecord = |
| realloc(record, (size_t)(rp - record))) == NULL) { |
realloc(record, (size_t)(rp - record))) == NULL) { |
| |
free(record); |
| errno = ENOMEM; |
errno = ENOMEM; |
| return (-2); |
return (-2); |
| } |
} |
| |
record = newrecord; |
| |
} |
| |
|
| *cap = record; |
*cap = record; |
| if (tc_not_resolved) |
if (tc_not_resolved) |
| Line 887 cgetstr(buf, cap, str) |
|
| Line 894 cgetstr(buf, cap, str) |
|
| const char *bp; |
const char *bp; |
| char *mp; |
char *mp; |
| int len; |
int len; |
| char *mem; |
char *mem, *newmem; |
| |
|
| _DIAGASSERT(buf != NULL); |
_DIAGASSERT(buf != NULL); |
| _DIAGASSERT(cap != NULL); |
_DIAGASSERT(cap != NULL); |
| Line 978 cgetstr(buf, cap, str) |
|
| Line 985 cgetstr(buf, cap, str) |
|
| if (m_room == 0) { |
if (m_room == 0) { |
| size_t size = mp - mem; |
size_t size = mp - mem; |
| |
|
| if ((mem = realloc(mem, size + SFRAG)) == NULL) |
if ((newmem = realloc(mem, size + SFRAG)) == NULL) { |
| |
free(mem); |
| return (-2); |
return (-2); |
| |
} |
| |
mem = newmem; |
| m_room = SFRAG; |
m_room = SFRAG; |
| mp = mem + size; |
mp = mem + size; |
| } |
} |
| Line 991 cgetstr(buf, cap, str) |
|
| Line 1001 cgetstr(buf, cap, str) |
|
| /* |
/* |
| * Give back any extra memory and return value and success. |
* Give back any extra memory and return value and success. |
| */ |
*/ |
| if (m_room != 0) |
if (m_room != 0) { |
| if ((mem = realloc(mem, (size_t)(mp - mem))) == NULL) |
if ((newmem = realloc(mem, (size_t)(mp - mem))) == NULL) { |
| |
free(mem); |
| return (-2); |
return (-2); |
| |
} |
| |
mem = newmem; |
| |
} |
| *str = mem; |
*str = mem; |
| return (len); |
return (len); |
| } |
} |
| Line 1018 cgetustr(buf, cap, str) |
|
| Line 1032 cgetustr(buf, cap, str) |
|
| const char *bp; |
const char *bp; |
| char *mp; |
char *mp; |
| int len; |
int len; |
| char *mem; |
char *mem, *newmem; |
| |
|
| _DIAGASSERT(buf != NULL); |
_DIAGASSERT(buf != NULL); |
| _DIAGASSERT(cap != NULL); |
_DIAGASSERT(cap != NULL); |
| Line 1058 cgetustr(buf, cap, str) |
|
| Line 1072 cgetustr(buf, cap, str) |
|
| if (m_room == 0) { |
if (m_room == 0) { |
| size_t size = mp - mem; |
size_t size = mp - mem; |
| |
|
| if ((mem = realloc(mem, size + SFRAG)) == NULL) |
if ((newmem = realloc(mem, size + SFRAG)) == NULL) { |
| |
free(mem); |
| return (-2); |
return (-2); |
| |
} |
| |
mem = newmem; |
| m_room = SFRAG; |
m_room = SFRAG; |
| mp = mem + size; |
mp = mem + size; |
| } |
} |
| Line 1071 cgetustr(buf, cap, str) |
|
| Line 1088 cgetustr(buf, cap, str) |
|
| /* |
/* |
| * Give back any extra memory and return value and success. |
* Give back any extra memory and return value and success. |
| */ |
*/ |
| if (m_room != 0) |
if (m_room != 0) { |
| if ((mem = realloc(mem, (size_t)(mp - mem))) == NULL) |
if ((newmem = realloc(mem, (size_t)(mp - mem))) == NULL) { |
| |
free(mem); |
| return (-2); |
return (-2); |
| |
} |
| |
mem = newmem; |
| |
} |
| *str = mem; |
*str = mem; |
| return (len); |
return (len); |
| } |
} |