Lines Matching refs:lb

120 	Linebuf *lb;  in Linebuf_alloc()  local
122 if (!(lb = malloc(sizeof(*lb)))) { in Linebuf_alloc()
129 lb->filename = filename; in Linebuf_alloc()
130 if (!(lb->stream = fopen(filename, "r"))) { in Linebuf_alloc()
131 xfree(lb); in Linebuf_alloc()
137 lb->filename = "(stdin)"; in Linebuf_alloc()
138 lb->stream = stdin; in Linebuf_alloc()
141 if (!(lb->buf = malloc(lb->size = LINEBUF_SIZE))) { in Linebuf_alloc()
143 (*errfun) ("linebuf (%s): malloc failed\n", lb->filename); in Linebuf_alloc()
144 xfree(lb); in Linebuf_alloc()
147 lb->errfun = errfun; in Linebuf_alloc()
148 lb->lineno = 0; in Linebuf_alloc()
149 return (lb); in Linebuf_alloc()
153 Linebuf_free(Linebuf * lb) in Linebuf_free() argument
155 fclose(lb->stream); in Linebuf_free()
156 xfree(lb->buf); in Linebuf_free()
157 xfree(lb); in Linebuf_free()
162 Linebuf_restart(Linebuf * lb)
164 clearerr(lb->stream);
165 rewind(lb->stream);
166 lb->lineno = 0;
170 Linebuf_lineno(Linebuf * lb)
172 return (lb->lineno);
177 Linebuf_getline(Linebuf * lb) in Linebuf_getline() argument
182 lb->lineno++; in Linebuf_getline()
185 if (!fgets(&lb->buf[n], lb->size - n, lb->stream)) { in Linebuf_getline()
186 if (ferror(lb->stream) && lb->errfun) in Linebuf_getline()
187 (*lb->errfun)("%s: %s\n", lb->filename, in Linebuf_getline()
191 n = strlen(lb->buf); in Linebuf_getline()
194 if (n > 0 && lb->buf[n - 1] == '\n') { in Linebuf_getline()
195 lb->buf[n - 1] = '\0'; in Linebuf_getline()
196 return (lb->buf); in Linebuf_getline()
198 if (n != lb->size - 1) { in Linebuf_getline()
199 if (lb->errfun) in Linebuf_getline()
200 (*lb->errfun)("%s: skipping incomplete last line\n", in Linebuf_getline()
201 lb->filename); in Linebuf_getline()
205 lb->size *= 2; in Linebuf_getline()
206 if ((p = realloc(lb->buf, lb->size)) == NULL) { in Linebuf_getline()
207 lb->size /= 2; in Linebuf_getline()
208 if (lb->errfun) in Linebuf_getline()
209 (*lb->errfun)("linebuf (%s): realloc failed\n", in Linebuf_getline()
210 lb->filename); in Linebuf_getline()
213 lb->buf = p; in Linebuf_getline()
811 Linebuf *lb; in main() local
816 lb = Linebuf_alloc(argv[j], error); in main()
817 if (!lb) in main()
819 while ((line = Linebuf_getline(lb)) != NULL) in main()
821 Linebuf_free(lb); in main()