 b6cbf7203b
			
		
	
	
		b6cbf7203b
		
	
	
	
	
		
			
			This patch imports the unmodified current version of NetBSD libc. The NetBSD includes are in /nbsd_include, while the libc code itself is split between lib/nbsd_libc and common/lib/libc.
		
			
				
	
	
		
			149 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: fparseln.3,v 1.4 2009/10/21 01:07:45 snj Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 1997 Christos Zoulas.  All rights reserved.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 | |
| .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 | |
| .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 | |
| .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 | |
| .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 | |
| .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 | |
| .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 | |
| .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | |
| .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 | |
| .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
| .\"
 | |
| .Dd November 30, 2002
 | |
| .Dt FPARSELN 3
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm fparseln
 | |
| .Nd return the next logical line from a stream
 | |
| .Sh LIBRARY
 | |
| .Lb libc
 | |
| .Sh SYNOPSIS
 | |
| .In stdio.h
 | |
| .Ft "char *"
 | |
| .Fo "fparseln"
 | |
| .Fa "FILE *stream" "size_t *len" "size_t *lineno"
 | |
| .Fa "const char delim[3]" "int flags"
 | |
| .Fc
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Fn fparseln
 | |
| function
 | |
| returns a pointer to the next logical line from the stream referenced by
 | |
| .Fa stream .
 | |
| This string is
 | |
| .Dv NUL
 | |
| terminated and it is dynamically allocated on each invocation.
 | |
| It is the responsibility of the caller to free the pointer.
 | |
| .Pp
 | |
| By default, if a character is escaped, both it and the preceding escape
 | |
| character will be present in the returned string.
 | |
| Various
 | |
| .Fa flags
 | |
| alter this behaviour.
 | |
| .Pp
 | |
| The meaning of the arguments is as follows:
 | |
| .Bl -tag -width "lineno"
 | |
| .It Fa stream
 | |
| The stream to read from.
 | |
| .It Fa len
 | |
| If not
 | |
| .Dv NULL ,
 | |
| the length of the string is stored in the memory location to which it
 | |
| points.
 | |
| .It Fa lineno
 | |
| If not
 | |
| .Dv NULL ,
 | |
| the value of the memory location to which is pointed to, is incremented
 | |
| by the number of lines actually read from the file.
 | |
| .It Fa delim
 | |
| Contains the escape, continuation, and comment characters.
 | |
| If a character is
 | |
| .Dv NUL
 | |
| then processing for that character is disabled.
 | |
| If
 | |
| .Dv NULL ,
 | |
| all characters default to values specified below.
 | |
| The contents of
 | |
| .Fa delim
 | |
| is as follows:
 | |
| .Bl -tag -width "delim[0]"
 | |
| .It Fa delim[0]
 | |
| The escape character, which defaults to
 | |
| .Cm \e ,
 | |
| is used to remove any special meaning from the next character.
 | |
| .It Fa delim[1]
 | |
| The continuation character, which defaults to
 | |
| .Cm \e ,
 | |
| is used to indicate that the next line should be concatenated with the
 | |
| current one if this character is the last character on the current line
 | |
| and is not escaped.
 | |
| .It Fa delim[2]
 | |
| The comment character, which defaults to
 | |
| .Cm # ,
 | |
| if not escaped indicates the beginning of a comment that extends until the
 | |
| end of the current line.
 | |
| .El
 | |
| .It Fa flags
 | |
| If non-zero, alter the operation of
 | |
| .Fn fparseln .
 | |
| The various flags, which may be
 | |
| .Em or Ns -ed
 | |
| together, are:
 | |
| .Bl -tag -width "FPARSELN_UNESCCOMM"
 | |
| .It Dv FPARSELN_UNESCCOMM
 | |
| Remove escape preceding an escaped comment.
 | |
| .It Dv FPARSELN_UNESCCONT
 | |
| Remove escape preceding an escaped continuation.
 | |
| .It Dv FPARSELN_UNESCESC
 | |
| Remove escape preceding an escaped escape.
 | |
| .It Dv FPARSELN_UNESCREST
 | |
| Remove escape preceding any other character.
 | |
| .It Dv FPARSELN_UNESCALL
 | |
| All of the above.
 | |
| .El
 | |
| .Pp
 | |
| .El
 | |
| .Sh RETURN VALUES
 | |
| Upon successful completion a pointer to the parsed line is returned;
 | |
| otherwise,
 | |
| .Dv NULL
 | |
| is returned.
 | |
| .Pp
 | |
| The
 | |
| .Fn fparseln
 | |
| function uses internally
 | |
| .Xr fgetln 3 ,
 | |
| so all error conditions that apply to
 | |
| .Xr fgetln 3 ,
 | |
| apply to
 | |
| .Fn fparseln .
 | |
| In addition
 | |
| .Fn fparseln
 | |
| may set
 | |
| .Va errno
 | |
| to
 | |
| .Bq Er ENOMEM
 | |
| and return
 | |
| .Dv NULL
 | |
| if it runs out of memory.
 | |
| .Sh SEE ALSO
 | |
| .Xr fgetln 3
 | |
| .Sh HISTORY
 | |
| The
 | |
| .Fn fparseln
 | |
| function first appeared in
 | |
| .Nx 1.4 .
 |