version 1.32, 2000/01/22 22:19:10 |
version 1.33, 2000/06/02 13:13:07 |
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); |
} |
} |