plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

quote.3 (2884B)


      1 .TH QUOTE 3
      2 .SH NAME
      3 quotestrdup, quoterunestrdup, unquotestrdup, unquoterunestrdup, quotestrfmt, quoterunestrfmt, quotefmtinstall, fmtdoquote \- quoted character strings
      4 .SH SYNOPSIS
      5 .B #include <utf.h>
      6 .br
      7 .B #include <fmt.h>
      8 .PP
      9 .B
     10 char *quotestrdup(char *s)
     11 .PP
     12 .B
     13 Rune *quoterunestrdup(Rune *s)
     14 .PP
     15 .B
     16 char *unquotestrdup(char *s)
     17 .PP
     18 .B
     19 Rune *unquoterunestrdup(Rune *s)
     20 .PP
     21 .B
     22 int quotestrfmt(Fmt*)
     23 .PP
     24 .B
     25 int quoterunestrfmt(Fmt*)
     26 .PP
     27 .B
     28 void quotefmtinstall(void)
     29 .PP
     30 .B
     31 int (*fmtdoquote)(int c)
     32 .PP
     33 .SH DESCRIPTION
     34 These routines manipulate character strings, either adding or removing
     35 quotes as necessary.
     36 In the quoted form, the strings are in the style of
     37 .IR rc (1) ,
     38 with single quotes surrounding the string.
     39 Embedded single quotes are indicated by a doubled single quote.
     40 For instance,
     41 .IP
     42 .EX
     43 Don't worry!
     44 .EE
     45 .PP
     46 when quoted becomes
     47 .IP
     48 .EX
     49 \&'Don''t worry!'
     50 .EE
     51 .PP
     52 The empty string is represented by two quotes,
     53 .BR '' .
     54 .PP
     55 The first four functions act as variants of
     56 .B strdup
     57 (see
     58 .IR strcat (3)).
     59 Each returns a
     60 freshly allocated copy of the string, created using
     61 .IR malloc (3).
     62 .I Quotestrdup
     63 returns a quoted copy of
     64 .IR s ,
     65 while
     66 .I unquotestrdup
     67 returns a copy of
     68 .IR s
     69 with the quotes evaluated.
     70 The
     71 .I rune
     72 versions of these functions do the same for
     73 .CW Rune
     74 strings (see
     75 .IR runestrcat (3)).
     76 .PP
     77 The string returned by
     78 .I quotestrdup
     79 or
     80 .I quoterunestrdup
     81 has the following properties:
     82 .TP
     83 1.
     84 If the original string
     85 .IR s
     86 is empty, the returned string is
     87 .BR '' .
     88 .TP
     89 2.
     90 If
     91 .I s
     92 contains no quotes, blanks, or control characters,
     93 the returned string is identical to
     94 .IR s .
     95 .TP
     96 3.
     97 If
     98 .I s
     99 needs quotes to be added, the first character of the returned
    100 string will be a quote.
    101 For example,
    102 .B hello\ world
    103 becomes
    104 .B \&'hello\ world'
    105 not
    106 .BR hello'\ 'world .
    107 .PP
    108 The function pointer
    109 .I fmtdoquote
    110 is
    111 .B nil
    112 by default.
    113 If it is non-nil, characters are passed to that function to see if they should
    114 be quoted.
    115 This mechanism allows programs to specify that
    116 characters other than blanks, control characters, or quotes be quoted.
    117 Regardless of the return value of
    118 .IR *fmtdoquote ,
    119 blanks, control characters, and quotes are always quoted.
    120 .I Needsrcquote
    121 is provided as a
    122 .I fmtdoquote
    123 function that flags any character special to
    124 .IR rc (1).
    125 .PP
    126 .I Quotestrfmt
    127 and
    128 .I quoterunestrfmt
    129 are
    130 .IR print (3)
    131 formatting routines that produce quoted strings as output.
    132 They may be installed by hand, but
    133 .I quotefmtinstall
    134 installs them under the standard format characters
    135 .B q
    136 and
    137 .BR Q .
    138 (They are not installed automatically.)
    139 If the format string includes the alternate format character
    140 .BR # ,
    141 for example
    142 .BR %#q ,
    143 the printed string will always be quoted; otherwise quotes will only be provided if necessary
    144 to avoid ambiguity.
    145 .SH SOURCE
    146 .B https://9fans.github.io/plan9port/unix
    147 .SH "SEE ALSO
    148 .IR rc (1),
    149 .IR malloc (3),
    150 .IR print (3),
    151 .IR strcat (3)