diff options
author | peter <peter@FreeBSD.org> | 1997-05-15 22:46:24 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1997-05-15 22:46:24 +0000 |
commit | 4f40fe8334ad5f056e1d9105f23fe7ac859c39ba (patch) | |
tree | 3b2f0092fa216d9f61059ba94b7f10b5bacf9496 /contrib/cvs/src/myndbm.c | |
parent | 8982e501c77217c860f79bba431f46a62b607a21 (diff) | |
download | FreeBSD-src-4f40fe8334ad5f056e1d9105f23fe7ac859c39ba.zip FreeBSD-src-4f40fe8334ad5f056e1d9105f23fe7ac859c39ba.tar.gz |
Import of cvs-1.9.9-970515 onto vendor branch.
Obtained from: cyclic.com
Diffstat (limited to 'contrib/cvs/src/myndbm.c')
-rw-r--r-- | contrib/cvs/src/myndbm.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/contrib/cvs/src/myndbm.c b/contrib/cvs/src/myndbm.c index 527f7ee..1a3fcae 100644 --- a/contrib/cvs/src/myndbm.c +++ b/contrib/cvs/src/myndbm.c @@ -19,7 +19,7 @@ #ifdef MY_NDBM -static void mydbm_load_file (); +static void mydbm_load_file PROTO ((FILE *, List *)); /* ARGSUSED */ DBM * @@ -31,7 +31,7 @@ mydbm_open (file, flags, mode) FILE *fp; DBM *db; - fp = fopen (file, FOPEN_BINARY_READ); + fp = CVS_FOPEN (file, FOPEN_BINARY_READ); if (fp == NULL && !(existence_error (errno) && (flags & O_CREAT))) return ((DBM *) 0); @@ -71,7 +71,7 @@ mydbm_close (db) if (db->modified) { FILE *fp; - fp = fopen (db->name, FOPEN_BINARY_WRITE); + fp = CVS_FOPEN (db->name, FOPEN_BINARY_WRITE); if (fp == NULL) error (1, errno, "cannot write %s", db->name); walklist (db->dbm_list, write_item, (void *)fp); @@ -199,11 +199,14 @@ mydbm_load_file (fp, list) { char *line = NULL; size_t line_len; - /* FIXME: arbitrary limit. */ - char value[MAXLINELEN]; + char *value; + size_t value_allocated; char *cp, *vp; int len, cont; + value_allocated = 1; + value = xmalloc (value_allocated); + for (cont = 0; getline (&line, &line_len, fp) >= 0;) { if ((cp = strrchr (line, '\012')) != NULL) @@ -221,9 +224,8 @@ mydbm_load_file (fp, list) * line; otherwise at the beginning, but only after any trailing * backslash is removed. */ - vp = value; - if (cont) - vp += strlen (value); + if (!cont) + value[0] = '\0'; /* * See if the line we read is a continuation line, and strip the @@ -243,7 +245,11 @@ mydbm_load_file (fp, list) { cont = 0; } - (void) strcpy (vp, line); + expand_string (&value, + &value_allocated, + strlen (value) + strlen (line) + 5); + strcat (value, line); + if (value[0] == '#') continue; /* comment line */ vp = value; @@ -283,6 +289,7 @@ mydbm_load_file (fp, list) } } free (line); + free (value); } #endif /* MY_NDBM */ |