TH QUOTE 2
SH NAME
quotestrdup, quoterunestrdup, unquotestrdup, unquoterunestrdup, quotestrconv, quoterunestrconv, quotefmtinstall, doquote \- quoted character strings
SH SYNOPSIS
B #include <u.h>
br
B #include <libc.h>
PP
B
char *quotestrdup(char *s)
PP
B
Rune *quoterunestrdup(Rune *s)
PP
B
char *unquotestrdup(char *s)
PP
B
Rune *unquoterunestrdup(Rune *s)
PP
B
int quotestrconv(va_list *arg, Fconv *fp)
PP
B
int quoterunestrconv(va_list *arg, Fconv *fp)
PP
B
void quotefmtinstall(void)
PP
B
int (*doquote)(int c)
PP
SH DESCRIPTION
These routines manipulate character strings, either adding or removing
quotes as necessary.
In the quoted form, the strings are in the style of
IR rc (1) ,
with single quotes surrounding the string.
Embedded single quotes are indicated by a doubled single quote.
For instance,
IP
EX
Don't worry!
EE
PP
when quoted becomes
IP
EX
\&'Don''t worry!'
EE
PP
The empty string is represented by two quotes,
BR '' .
PP
The first four functions act as variants of
B strdup
(see
IR strcat (2)).
Each returns a
freshly allocated copy of the string, created using
IR malloc (2).
I Quotestrdup
returns a quoted copy of
IR s ,
while
I unquotestrdup
returns a copy of
IR s
with the quotes evaluated.
The
I rune
versions of these functions do the same for
CW Rune
strings (see
IR runestrcat (2)).
PP
The string returned by
I quotestrdup
or
I quoterunestrdup
has the following properties:
TP
1.
If the original string
IR s
is empty, the returned string is
BR '' .
TP
2.
If
I s
contains no quotes, blanks, or control characters,
the returned string is identical to
IR s .
TP
3.
If
I s
needs quotes to be added, the first character of the returned
string will be a quote.
For example,
B hello\ world
becomes
B \&'hello\ world'
not
BR hello'\ 'world .
PP
The function pointer
I doquote
is
B nil
by default.
If it is non-nil, characters are passed to that function to see if they should
be quoted.
This mechanism allows programs to specify that
characters other than blanks, control characters, or quotes be quoted.
Regardless of the return value of
IR *doquote ,
blanks, control characters, and quotes are always quoted.
PP
I Quotestrconv
and
I quoterunestrconv
are
IR print (2)
formatting routines that produce quoted strings as output.
They may be installed by hand, but
I quotefmtinstall
installs them under the standard format characters
B q
and
BR Q .
(They are not installed automatically because they use
IR malloc ,
which no other standard format requires.)
In
B <libc.h>
there are
B #pragma
statements so the compiler can type-check uses of
B %q
and
B %Q
in
IR print (2)
format strings.
SH SOURCE
B /sys/src/libc/port/quote.c
br
B /sys/src/libc/port/printquote.c
SH "SEE ALSO
IR rc (1),
IR malloc (2),
IR print (2),
IR strcat (2)