.TH STRING 3
.SH NAME
s_alloc, s_append, s_array, s_copy, s_error, s_free, s_incref, s_memappend, s_nappend, s_new, s_newalloc, s_parse, s_reset, s_restart, s_terminate, s_tolower, s_putc, s_unique, s_grow, s_read, s_read_line, s_getline, s_allocinstack, s_freeinstack, s_rdinstack \- extensible strings
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.br
.B #include <String.h>
.PP
.ta +\w'\fLSinstack* 'u
.B
String*	s_new(void)
.br
.B
void		s_free(String *s)
.br
.B
String*	s_newalloc(int n)
.br
.B
String*	s_array(char *p, int n)
.br
.B
String*	s_grow(String *s, int n)
.PP
.B
void		s_putc(String *s, int c)
.br
.B
void		s_terminate(String *s)
.br
.B
String*	s_reset(String *s)
.br
.B
String*	s_restart(String *s)
.br
.B
String*	s_append(String *s, char *p)
.br
.B
String*	s_nappend(String *s, char *p, int n)
.br
.B
String*	s_memappend(String *s, char *p, int n)
.br
.B
String*	s_copy(char *p)
.br
.B
String*	s_parse(String *s1, String *s2)
.br
.PP
.B
void		s_tolower(String *s)
.PP
.B
String*	s_incref(String *s)
.br
.B
String*	s_unique(String *s)
.PP
.B
Sinstack*	s_allocinstack(char *file)
.br
.B
void	s_freeinstack(Sinstack *stack)
.br
.B
char*	s_rdinstack(Sinstack *stack, String *s)
.PP
.B
#include <bio.h>
.PP
.B
int		s_read(Biobuf *b, String *s, int n)
.br
.B
char*	s_read_line(Biobuf *b, String *s)
.br
.B
char*	s_getline(Biobuf *b, String *s)
.SH DESCRIPTION
.PP
These routines manipulate extensible strings.  
The basic type is
.BR String ,
which points to an array of characters.  The string
maintains pointers to the beginning and end of the allocated
array.  In addition a finger pointer keeps track of where 
parsing will start (for
.IR s_parse )
or new characters will be added (for
.IR s_putc ,
.IR s_append ,
and
.IR s_nappend ).
The structure, and a few useful macros are:
.sp
.EX
typedef struct String {
	Lock;
	char	*base;	/* base of String */
	char	*end;	/* end of allocated space+1 */
	char	*ptr;	/* ptr into String */
	...
} String;

#define s_to_c(s) ((s)->base)
#define s_len(s) ((s)->ptr-(s)->base)
#define s_clone(s) s_copy((s)->base)
.EE
.PP
.I S_to_c
is used when code needs a reference to the character array.
Using
.B s->base
directly is frowned upon since it exposes too much of the implementation.
.SS "Allocation and freeing
.PP
A string must be allocated before it can be used.
One normally does this using
.IR s_new ,
giving the string an initial allocation of
128 bytes.
If you know that the string will need to grow much
longer, you can use
.I s_newalloc
instead, specifying the number of bytes in the
initial allocation.
.PP
.I S_free
causes both the string and its character array to be freed.
.PP
.I S_grow
grows a string's allocation by a fixed amount.  It is useful if
you are reading directly into a string's character array but should
be avoided if possible.
.PP
.I S_array
is used to create a constant array, that is, one whose contents
won't change.  It points directly to the character array
given as an argument.  Tread lightly when using this call.
.SS "Filling the string
After its initial allocation, the string points to the beginning
of an allocated array of characters starting with
.SM NUL.
.PP
.I S_putc
writes a character into the string at the
pointer and advances the pointer to point after it.
.PP
.I S_terminate
writes a
.SM NUL
at the pointer but doesn't advance it.
.PP
.I S_restart
resets the pointer to the begining of the string but doesn't change the contents.
.PP
.I S_reset
is equivalent to
.I s_restart
followed by
.IR s_terminate .
.PP
.I S_append
and
.I s_nappend
copy characters into the string at the pointer and
advance the pointer.  They also write a
.SM NUL
at
the pointer without advancing the pointer beyond it.
Both routines stop copying on encountering a
.SM NUL.
.I S_memappend
is like
.I s_nappend
but doesn't stop at a
.SM NUL.
.PP
If you know the initial character array to be copied into a string,
you can allocate a string and copy in the bytes using
.IR s_copy .
This is the equivalent of a
.I s_new
followed by an
.IR s_append .
.PP
.I S_parse
copies the next white space terminated token from
.I s1
to
the end of 
.IR s2 .
White space is defined as space, tab,
and newline.  Both single and double quoted strings are treated as
a single token.  The bounding quotes are not copied.
There is no escape mechanism. 
.PP
.I S_tolower
converts all
.SM ASCII
characters in the string to lower case.
.SS Multithreading
.PP
.I S_incref
is used by multithreaded programs to avoid having the string memory
released until the last user of the string performs an
.IR s_free .
.I S_unique
returns a unique copy of the string: if the reference count it
1 it returns the string, otherwise it returns an
.I s_clone
of the string.
.SS "Bio interaction
.PP
.I S_read
reads the requested number of characters through a
.I Biobuf
into a string.  The string is grown as necessary.
An eof or error terminates the read.
The number of bytes read is returned.
The string is null terminated.
.PP
.I S_read_line
reads up to and including the next newline and returns
a pointer to the beginning of the bytes read.
An eof or error terminates the read.
The string is null terminated.
.PP
.I S_getline
reads up to the next newline, appends the input to
.IR s ,
and returns
a pointer to the beginning of the bytes read.  Leading
spaces and tabs and the trailing newline are all discarded.
.I S_getline
discards blank lines and lines beginning with
.LR # .
.I S_getline
ignores
newlines escaped by immediately-preceding backslashes.
.PP
.I S_allocinstack
allocates an input stack with the single file
.I file
open for reading.
.I S_freeinstack
frees an input stack.
.I S_rdinstack
reads a line from an input stack.
It follows the same rules as
.I s_getline
except that when it encounters a line of the form
.B #include
.IR newfile ,
.I s_getline
pushes
.I newfile
onto the input stack, postponing further reading of the current
file until
.I newfile
has been read.
The input stack has a maximum depth of 32 nested include files.
.SH SOURCE
.B \*9/src/libString
.SH SEE ALSO
.IR bio (3)
