diff options
Diffstat (limited to 'libc/misc')
-rw-r--r-- | libc/misc/mntent/mntent.c | 11 | ||||
-rw-r--r-- | libc/misc/ttyent/getttyent.c | 10 |
2 files changed, 18 insertions, 3 deletions
diff --git a/libc/misc/mntent/mntent.c b/libc/misc/mntent/mntent.c index 93d591812..d98a6870f 100644 --- a/libc/misc/mntent/mntent.c +++ b/libc/misc/mntent/mntent.c @@ -65,10 +65,17 @@ struct mntent *getmntent_r (FILE *filep, struct mntent *getmntent(FILE * filep) { struct mntent *tmp; - static char buff[BUFSIZ]; + static char *buff = NULL; static struct mntent mnt; LOCK; - tmp = getmntent_r(filep, &mnt, buff, sizeof buff); + + if (!buff) { + buff = malloc(BUFSIZ); + if (!buff) + abort(); + } + + tmp = getmntent_r(filep, &mnt, buff, BUFSIZ); UNLOCK; return(tmp); } diff --git a/libc/misc/ttyent/getttyent.c b/libc/misc/ttyent/getttyent.c index 18b9109af..0b2c9a3cc 100644 --- a/libc/misc/ttyent/getttyent.c +++ b/libc/misc/ttyent/getttyent.c @@ -99,11 +99,19 @@ struct ttyent * getttyent(void) { register int c; register char *p; - static char line[BUFSIZ]; + static char *line = NULL; if (!tf && !setttyent()) return (NULL); + + if (!line) { + line = malloc(BUFSIZ); + if (!line) + abort(); + } + flockfile (tf); + for (;;) { if (!fgets_unlocked(p = line, sizeof(line), tf)) { funlockfile (tf); |