update copyright date
[gnulib.git] / lib / linebuffer.h
1 /* linebuffer.h -- declarations for reading arbitrarily long lines
2    Copyright (C) 1986, 1991, 1998, 1999, 2000 Free Software Foundation, Inc.
3
4    This program is free software; you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 2, or (at your option)
7    any later version.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13
14    You should have received a copy of the GNU General Public License
15    along with this program; if not, write to the Free Software Foundation,
16    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
17
18 #if !defined LINEBUFFER_H
19 # define LINEBUFFER_H
20
21 /* A `struct linebuffer' holds a line of text. */
22
23 struct linebuffer
24 {
25   size_t size;                  /* Allocated. */
26   size_t length;                /* Used. */
27   char *buffer;
28 };
29
30 # ifndef PARAMS
31 #  if defined PROTOTYPES || (defined __STDC__ && __STDC__)
32 #   define PARAMS(Args) Args
33 #  else
34 #   define PARAMS(Args) ()
35 #  endif
36 # endif
37
38 /* Initialize linebuffer LINEBUFFER for use. */
39 void initbuffer PARAMS ((struct linebuffer *linebuffer));
40
41 /* Read an arbitrarily long line of text from STREAM into LINEBUFFER.
42    Keep the newline; append a newline if it's the last line of a file
43    that ends in a non-newline character.  Do not null terminate.
44    Return LINEBUFFER, except at end of file return 0.  */
45 struct linebuffer *readline PARAMS ((struct linebuffer *linebuffer,
46                                      FILE *stream));
47
48 /* Free linebuffer LINEBUFFER and its data, all allocated with malloc. */
49 void freebuffer PARAMS ((struct linebuffer *));
50
51 #endif /* LINEBUFFER_H */