annotate lib/linebuffer.h @ 2594:6b6374f18593

*** empty log message ***
author Jim Meyering <jim@meyering.net>
date Fri, 16 Jun 2000 12:51:33 +0000
parents 8cac4427bbda
children 5994c6f939c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
1 /* linebuffer.h -- declarations for reading arbitrarily long lines
1867
8cac4427bbda [struct linebuffer] (size): Declare to be of type size_t, not long.
Jim Meyering <jim@meyering.net>
parents: 1216
diff changeset
2 Copyright (C) 1986, 1991, 1998, 1999 Free Software Foundation, Inc.
14
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
3
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
4 This program is free software; you can redistribute it and/or modify
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
6 the Free Software Foundation; either version 2, or (at your option)
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
7 any later version.
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
8
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
12 GNU General Public License for more details.
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
13
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
756
Jim Meyering <jim@meyering.net>
parents: 742
diff changeset
15 along with this program; if not, write to the Free Software Foundation,
Jim Meyering <jim@meyering.net>
parents: 742
diff changeset
16 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
1216
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
17
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
18 #if !defined LINEBUFFER_H
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
19 # define LINEBUFFER_H
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
20
14
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
21 /* A `struct linebuffer' holds a line of text. */
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
22
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
23 struct linebuffer
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
24 {
1867
8cac4427bbda [struct linebuffer] (size): Declare to be of type size_t, not long.
Jim Meyering <jim@meyering.net>
parents: 1216
diff changeset
25 size_t size; /* Allocated. */
8cac4427bbda [struct linebuffer] (size): Declare to be of type size_t, not long.
Jim Meyering <jim@meyering.net>
parents: 1216
diff changeset
26 size_t length; /* Used. */
14
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
27 char *buffer;
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
28 };
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
29
1216
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
30 # ifndef PARAMS
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
31 # if defined PROTOTYPES || (defined __STDC__ && __STDC__)
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
32 # define PARAMS(Args) Args
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
33 # else
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
34 # define PARAMS(Args) ()
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
35 # endif
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
36 # endif
349
cac0f9ef1bf2 Change _P to __P.
Jim Meyering <jim@meyering.net>
parents: 14
diff changeset
37
14
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
38 /* Initialize linebuffer LINEBUFFER for use. */
742
cddc2692eef4 Define and use macro, PARAMS, not __P.
Jim Meyering <jim@meyering.net>
parents: 459
diff changeset
39 void initbuffer PARAMS ((struct linebuffer *linebuffer));
14
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
40
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
41 /* Read an arbitrarily long line of text from STREAM into LINEBUFFER.
1867
8cac4427bbda [struct linebuffer] (size): Declare to be of type size_t, not long.
Jim Meyering <jim@meyering.net>
parents: 1216
diff changeset
42 Keep the newline; append a newline if it's the last line of a file
8cac4427bbda [struct linebuffer] (size): Declare to be of type size_t, not long.
Jim Meyering <jim@meyering.net>
parents: 1216
diff changeset
43 that ends in a non-newline character. Do not null terminate.
14
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
44 Return LINEBUFFER, except at end of file return 0. */
742
cddc2692eef4 Define and use macro, PARAMS, not __P.
Jim Meyering <jim@meyering.net>
parents: 459
diff changeset
45 struct linebuffer *readline PARAMS ((struct linebuffer *linebuffer,
cddc2692eef4 Define and use macro, PARAMS, not __P.
Jim Meyering <jim@meyering.net>
parents: 459
diff changeset
46 FILE *stream));
14
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
47
3eda3e12f7ba Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
48 /* Free linebuffer LINEBUFFER and its data, all allocated with malloc. */
742
cddc2692eef4 Define and use macro, PARAMS, not __P.
Jim Meyering <jim@meyering.net>
parents: 459
diff changeset
49 void freebuffer PARAMS ((struct linebuffer *));
1216
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
50
cf3c93b52b9b Make PARAMS-defining conditionals consistent.
Jim Meyering <jim@meyering.net>
parents: 756
diff changeset
51 #endif /* LINEBUFFER_H */