summaryrefslogtreecommitdiffstats
path: root/contrib/cvs/src/myndbm.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1997-05-15 22:46:24 +0000
committerpeter <peter@FreeBSD.org>1997-05-15 22:46:24 +0000
commit4f40fe8334ad5f056e1d9105f23fe7ac859c39ba (patch)
tree3b2f0092fa216d9f61059ba94b7f10b5bacf9496 /contrib/cvs/src/myndbm.c
parent8982e501c77217c860f79bba431f46a62b607a21 (diff)
downloadFreeBSD-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.c25
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 */
OpenPOWER on IntegriCloud