1 cfa37a7b 2004-04-10 devnull .TH QUOTE 3
3 cfa37a7b 2004-04-10 devnull quotestrdup, quoterunestrdup, unquotestrdup, unquoterunestrdup, quotestrfmt, quoterunestrfmt, quotefmtinstall, doquote, needsrcquote \- quoted character strings
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B #include <u.h>
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
10 cfa37a7b 2004-04-10 devnull char *quotestrdup(char *s)
13 cfa37a7b 2004-04-10 devnull Rune *quoterunestrdup(Rune *s)
16 cfa37a7b 2004-04-10 devnull char *unquotestrdup(char *s)
19 cfa37a7b 2004-04-10 devnull Rune *unquoterunestrdup(Rune *s)
22 cfa37a7b 2004-04-10 devnull int quotestrfmt(Fmt*)
25 cfa37a7b 2004-04-10 devnull int quoterunestrfmt(Fmt*)
28 cfa37a7b 2004-04-10 devnull void quotefmtinstall(void)
31 cfa37a7b 2004-04-10 devnull int (*doquote)(int c)
34 cfa37a7b 2004-04-10 devnull int needsrcquote(int c)
36 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
37 cfa37a7b 2004-04-10 devnull These routines manipulate character strings, either adding or removing
38 cfa37a7b 2004-04-10 devnull quotes as necessary.
39 cfa37a7b 2004-04-10 devnull In the quoted form, the strings are in the style of
40 cfa37a7b 2004-04-10 devnull .IR rc (1) ,
41 cfa37a7b 2004-04-10 devnull with single quotes surrounding the string.
42 cfa37a7b 2004-04-10 devnull Embedded single quotes are indicated by a doubled single quote.
43 cfa37a7b 2004-04-10 devnull For instance,
46 cfa37a7b 2004-04-10 devnull Don't worry!
49 cfa37a7b 2004-04-10 devnull when quoted becomes
52 cfa37a7b 2004-04-10 devnull \&'Don''t worry!'
55 cfa37a7b 2004-04-10 devnull The empty string is represented by two quotes,
58 cfa37a7b 2004-04-10 devnull The first four functions act as variants of
59 cfa37a7b 2004-04-10 devnull .B strdup
61 bf8a59fa 2004-04-11 devnull .IR strcat (3)).
62 cfa37a7b 2004-04-10 devnull Each returns a
63 cfa37a7b 2004-04-10 devnull freshly allocated copy of the string, created using
64 bf8a59fa 2004-04-11 devnull .IR malloc (3).
65 cfa37a7b 2004-04-10 devnull .I Quotestrdup
66 cfa37a7b 2004-04-10 devnull returns a quoted copy of
69 cfa37a7b 2004-04-10 devnull .I unquotestrdup
70 cfa37a7b 2004-04-10 devnull returns a copy of
72 cfa37a7b 2004-04-10 devnull with the quotes evaluated.
75 cfa37a7b 2004-04-10 devnull versions of these functions do the same for
77 cfa37a7b 2004-04-10 devnull strings (see
78 bf8a59fa 2004-04-11 devnull .IR runestrcat (3)).
80 cfa37a7b 2004-04-10 devnull The string returned by
81 cfa37a7b 2004-04-10 devnull .I quotestrdup
83 cfa37a7b 2004-04-10 devnull .I quoterunestrdup
84 cfa37a7b 2004-04-10 devnull has the following properties:
87 cfa37a7b 2004-04-10 devnull If the original string
89 cfa37a7b 2004-04-10 devnull is empty, the returned string is
95 cfa37a7b 2004-04-10 devnull contains no quotes, blanks, or control characters,
96 cfa37a7b 2004-04-10 devnull the returned string is identical to
102 cfa37a7b 2004-04-10 devnull needs quotes to be added, the first character of the returned
103 cfa37a7b 2004-04-10 devnull string will be a quote.
104 cfa37a7b 2004-04-10 devnull For example,
105 cfa37a7b 2004-04-10 devnull .B hello\ world
107 cfa37a7b 2004-04-10 devnull .B \&'hello\ world'
109 cfa37a7b 2004-04-10 devnull .BR hello'\ 'world .
111 cfa37a7b 2004-04-10 devnull The function pointer
112 cfa37a7b 2004-04-10 devnull .I doquote
115 cfa37a7b 2004-04-10 devnull by default.
116 cfa37a7b 2004-04-10 devnull If it is non-nil, characters are passed to that function to see if they should
117 cfa37a7b 2004-04-10 devnull be quoted.
118 cfa37a7b 2004-04-10 devnull This mechanism allows programs to specify that
119 cfa37a7b 2004-04-10 devnull characters other than blanks, control characters, or quotes be quoted.
120 cfa37a7b 2004-04-10 devnull Regardless of the return value of
121 cfa37a7b 2004-04-10 devnull .IR *doquote ,
122 cfa37a7b 2004-04-10 devnull blanks, control characters, and quotes are always quoted.
123 cfa37a7b 2004-04-10 devnull .I Needsrcquote
124 cfa37a7b 2004-04-10 devnull is provided as a
125 cfa37a7b 2004-04-10 devnull .I doquote
126 cfa37a7b 2004-04-10 devnull function that flags any character special to
127 cfa37a7b 2004-04-10 devnull .IR rc (1).
129 cfa37a7b 2004-04-10 devnull .I Quotestrfmt
131 cfa37a7b 2004-04-10 devnull .I quoterunestrfmt
133 bf8a59fa 2004-04-11 devnull .IR print (3)
134 cfa37a7b 2004-04-10 devnull formatting routines that produce quoted strings as output.
135 cfa37a7b 2004-04-10 devnull They may be installed by hand, but
136 cfa37a7b 2004-04-10 devnull .I quotefmtinstall
137 cfa37a7b 2004-04-10 devnull installs them under the standard format characters
141 cfa37a7b 2004-04-10 devnull (They are not installed automatically.)
142 cfa37a7b 2004-04-10 devnull If the format string includes the alternate format character
144 cfa37a7b 2004-04-10 devnull for example
145 cfa37a7b 2004-04-10 devnull .BR %#q ,
146 cfa37a7b 2004-04-10 devnull the printed string will always be quoted; otherwise quotes will only be provided if necessary
147 cfa37a7b 2004-04-10 devnull to avoid ambiguity.
149 cfa37a7b 2004-04-10 devnull .B <libc.h>
150 cfa37a7b 2004-04-10 devnull there are
151 cfa37a7b 2004-04-10 devnull .B #pragma
152 cfa37a7b 2004-04-10 devnull statements so the compiler can type-check uses of
157 bf8a59fa 2004-04-11 devnull .IR print (3)
158 cfa37a7b 2004-04-10 devnull format strings.
159 cfa37a7b 2004-04-10 devnull .SH SOURCE
160 058b0118 2005-01-03 devnull .B /usr/local/plan9/src/lib9/quote.c
162 058b0118 2005-01-03 devnull .B /usr/local/plan9/src/lib9/fmt/fmtquote.c
163 cfa37a7b 2004-04-10 devnull .SH "SEE ALSO
164 cfa37a7b 2004-04-10 devnull .IR rc (1),
165 bf8a59fa 2004-04-11 devnull .IR malloc (3),
166 bf8a59fa 2004-04-11 devnull .IR print (3),
167 bf8a59fa 2004-04-11 devnull .IR strcat (3)