2 * Copyright (C) 1993-2001 by Darren Reed.
4 * See the IPFILTER.LICENCE file for details on licencing.
6 * $Id: getline.c,v 1.3 2001/06/09 17:09:24 darrenr Exp $
10 #if !defined(__SVR4) && !defined(__GNUC__)
18 * Similar to fgets(3) but can handle '\\' and NL is converted to NUL.
19 * Returns NULL if error occured, EOF encounterd or input line is too long.
22 getaline(char *str
, size_t size
, FILE *file
, int *linenum
)
28 for (p
= str
, s
= size
; ; p
+= (len
- 1), s
-= (len
- 1)) {
30 * if an error occured, EOF was encounterd, or there
31 * was no room to put NUL, return NULL.
33 if (fgets(p
, s
, file
) == NULL
)
36 if (p
[len
- 1] != '\n') {
42 if (len
< 2 || p
[len
- 2] != '\\')
46 * Convert '\\' to a space so words don't
51 } while (*str
== '\0');