~ubuntu-branches/ubuntu/hardy/klibc/hardy-updates

« back to all changes in this revision

Viewing changes to dash/bltin/printf.1

  • Committer: Bazaar Package Importer
  • Author(s): Jeff Bailey
  • Date: 2006-01-04 20:24:52 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20060104202452-ec4v3n829rymukuv
Tags: 1.1.15-0ubuntu1
* New upstream version.

* Patch to fix compilation on parisc64 kernels.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
.\" Copyright (c) 1989, 1990, 1993
 
2
.\"     The Regents of the University of California.  All rights reserved.
 
3
.\" Copyright (c) 1997-2005
 
4
.\"     Herbert Xu <herbert@gondor.apana.org.au>.  All rights reserved.
 
5
.\"
 
6
.\" This code is derived from software contributed to Berkeley by
 
7
.\" the Institute of Electrical and Electronics Engineers, Inc.
 
8
.\"
 
9
.\" Redistribution and use in source and binary forms, with or without
 
10
.\" modification, are permitted provided that the following conditions
 
11
.\" are met:
 
12
.\" 1. Redistributions of source code must retain the above copyright
 
13
.\"    notice, this list of conditions and the following disclaimer.
 
14
.\" 2. Redistributions in binary form must reproduce the above copyright
 
15
.\"    notice, this list of conditions and the following disclaimer in the
 
16
.\"    documentation and/or other materials provided with the distribution.
 
17
.\" 3. Neither the name of the University nor the names of its contributors
 
18
.\"    may be used to endorse or promote products derived from this software
 
19
.\"    without specific prior written permission.
 
20
.\"
 
21
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 
22
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
23
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
24
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 
25
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
26
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
27
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
28
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
29
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
30
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
31
.\" SUCH DAMAGE.
 
32
.\"
 
33
.\"     from: @(#)printf.1      8.1 (Berkeley) 6/6/93
 
34
.\"
 
35
.Dd November 5, 1993
 
36
.Dt PRINTF 1
 
37
.Os
 
38
.Sh NAME
 
39
.Nm printf
 
40
.Nd formatted output
 
41
.Sh SYNOPSIS
 
42
.Nm
 
43
.Ar format
 
44
.Op Ar arguments  ...
 
45
.Sh DESCRIPTION
 
46
.Nm
 
47
formats and prints its arguments, after the first, under control
 
48
of the
 
49
.Ar format  .
 
50
The
 
51
.Ar format
 
52
is a character string which contains three types of objects: plain characters,
 
53
which are simply copied to standard output, character escape sequences which
 
54
are converted and copied to the standard output, and format specifications,
 
55
each of which causes printing of the next successive
 
56
.Ar argument  .
 
57
.Pp
 
58
The
 
59
.Ar arguments
 
60
after the first are treated as strings if the corresponding format is
 
61
either
 
62
.Cm b ,
 
63
.Cm B ,
 
64
.Cm c
 
65
or
 
66
.Cm s ;
 
67
otherwise it is evaluated as a C constant, with the following extensions:
 
68
.Pp
 
69
.Bl -bullet -offset indent -compact
 
70
.It
 
71
A leading plus or minus sign is allowed.
 
72
.It
 
73
If the leading character is a single or double quote, the value is the
 
74
.Tn ASCII
 
75
code of the next character.
 
76
.El
 
77
.Pp
 
78
The format string is reused as often as necessary to satisfy the
 
79
.Ar arguments  .
 
80
Any extra format specifications are evaluated with zero or the null
 
81
string.
 
82
.Pp
 
83
Character escape sequences are in backslash notation as defined in
 
84
.St -ansiC .
 
85
The characters and their meanings are as follows:
 
86
.Bl -tag -width Ds -offset indent
 
87
.It Cm \ee
 
88
Write an \*[Lt]escape\*[Gt] character.
 
89
.It Cm \ea
 
90
Write a \*[Lt]bell\*[Gt] character.
 
91
.It Cm \eb
 
92
Write a \*[Lt]backspace\*[Gt] character.
 
93
.It Cm \ef
 
94
Write a \*[Lt]form-feed\*[Gt] character.
 
95
.It Cm \en
 
96
Write a \*[Lt]new-line\*[Gt] character.
 
97
.It Cm \er
 
98
Write a \*[Lt]carriage return\*[Gt] character.
 
99
.It Cm \et
 
100
Write a \*[Lt]tab\*[Gt] character.
 
101
.It Cm \ev
 
102
Write a \*[Lt]vertical tab\*[Gt] character.
 
103
.It Cm \e\'
 
104
Write a \*[Lt]single quote\*[Gt] character.
 
105
.It Cm \e"
 
106
Write a \*[Lt]double quote\*[Gt] character.
 
107
.It Cm \e\e
 
108
Write a backslash character.
 
109
.It Cm \e Ns Ar num
 
110
Write an 8\-bit character whose
 
111
.Tn ASCII
 
112
value is the 1\-, 2\-, or 3\-digit octal number
 
113
.Ar num .
 
114
.It Cm \ex Ns Ar xx
 
115
Write an 8\-bit character whose
 
116
.Tn ASCII
 
117
value is the 1\- or 2\-digit hexadecimal number
 
118
.Ar xx .
 
119
.El
 
120
.Pp
 
121
Each format specification is introduced by the percent character
 
122
(``%'').
 
123
The remainder of the format specification includes,
 
124
in the following order:
 
125
.Bl -tag -width Ds
 
126
.It "Zero or more of the following flags:"
 
127
.Bl -tag -width Ds
 
128
.It Cm #
 
129
A `#' character
 
130
specifying that the value should be printed in an ``alternative form''.
 
131
For
 
132
.Cm b ,
 
133
.Cm c ,
 
134
.Cm d ,
 
135
and
 
136
.Cm s
 
137
formats, this option has no effect.
 
138
For the
 
139
.Cm o
 
140
format the precision of the number is increased to force the first
 
141
character of the output string to a zero.
 
142
For the
 
143
.Cm x
 
144
.Pq Cm X
 
145
format, a non-zero result has the string
 
146
.Li 0x
 
147
.Pq Li 0X
 
148
prepended to it.
 
149
For
 
150
.Cm e  ,
 
151
.Cm E ,
 
152
.Cm f  ,
 
153
.Cm g ,
 
154
and
 
155
.Cm G
 
156
formats, the result will always contain a decimal point, even if no
 
157
digits follow the point (normally, a decimal point only appears in the
 
158
results of those formats if a digit follows the decimal point).
 
159
For
 
160
.Cm g
 
161
and
 
162
.Cm G
 
163
formats, trailing zeros are not removed from the result as they
 
164
would otherwise be.
 
165
.\" I turned this off - decided it isn't a valid use of '#'
 
166
.\" For the
 
167
.\" .Cm B
 
168
.\" format, backslash-escape sequences are expanded first;
 
169
.It Cm \&\-
 
170
A minus sign `\-' which specifies
 
171
.Em left adjustment
 
172
of the output in the indicated field;
 
173
.It Cm \&+
 
174
A `+' character specifying that there should always be
 
175
a sign placed before the number when using signed formats.
 
176
.It Sq \&\ \&
 
177
A space specifying that a blank should be left before a positive number
 
178
for a signed format.
 
179
A `+' overrides a space if both are used;
 
180
.It Cm \&0
 
181
A zero `0' character indicating that zero-padding should be used
 
182
rather than blank-padding.
 
183
A `\-' overrides a `0' if both are used;
 
184
.El
 
185
.It "Field Width:"
 
186
An optional digit string specifying a
 
187
.Em field width ;
 
188
if the output string has fewer characters than the field width it will
 
189
be blank-padded on the left (or right, if the left-adjustment indicator
 
190
has been given) to make up the field width (note that a leading zero
 
191
is a flag, but an embedded zero is part of a field width);
 
192
.It Precision :
 
193
An optional period,
 
194
.Sq Cm \&.\& ,
 
195
followed by an optional digit string giving a
 
196
.Em precision
 
197
which specifies the number of digits to appear after the decimal point,
 
198
for
 
199
.Cm e
 
200
and
 
201
.Cm f
 
202
formats, or the maximum number of characters to be printed
 
203
from a string
 
204
.Sm off
 
205
.Pf ( Cm b No ,
 
206
.Sm on
 
207
.Cm B
 
208
and
 
209
.Cm s
 
210
formats); if the digit string is missing, the precision is treated
 
211
as zero;
 
212
.It Format :
 
213
A character which indicates the type of format to use (one of
 
214
.Cm diouxXfwEgGbBcs ) .
 
215
.El
 
216
.Pp
 
217
A field width or precision may be
 
218
.Sq Cm \&*
 
219
instead of a digit string.
 
220
In this case an
 
221
.Ar argument
 
222
supplies the field width or precision.
 
223
.Pp
 
224
The format characters and their meanings are:
 
225
.Bl -tag -width Fl
 
226
.It Cm diouXx
 
227
The
 
228
.Ar argument
 
229
is printed as a signed decimal (d or i), unsigned octal, unsigned decimal,
 
230
or unsigned hexadecimal (X or x), respectively.
 
231
.It Cm f
 
232
The
 
233
.Ar argument
 
234
is printed in the style
 
235
.Sm off
 
236
.Pf [\-]ddd Cm \&. No ddd
 
237
.Sm on
 
238
where the number of d's
 
239
after the decimal point is equal to the precision specification for
 
240
the argument.
 
241
If the precision is missing, 6 digits are given; if the precision
 
242
is explicitly 0, no digits and no decimal point are printed.
 
243
.It Cm eE
 
244
The
 
245
.Ar argument
 
246
is printed in the style
 
247
.Sm off
 
248
.Pf [\-]d Cm \&. No ddd Cm e No \\*(Pmdd
 
249
.Sm on
 
250
where there
 
251
is one digit before the decimal point and the number after is equal to
 
252
the precision specification for the argument; when the precision is
 
253
missing, 6 digits are produced.
 
254
An upper-case E is used for an `E' format.
 
255
.It Cm gG
 
256
The
 
257
.Ar argument
 
258
is printed in style
 
259
.Cm f
 
260
or in style
 
261
.Cm e
 
262
.Pq Cm E
 
263
whichever gives full precision in minimum space.
 
264
.It Cm b
 
265
Characters from the string
 
266
.Ar argument
 
267
are printed with backslash-escape sequences expanded.
 
268
.br
 
269
The following additional backslash-escape sequences are supported:
 
270
.Bl -tag -width Ds
 
271
.It Cm \ec
 
272
Causes
 
273
.Nm
 
274
to ignore any remaining characters in the string operand containing it,
 
275
any remaining string operands, and any additional characters in
 
276
the format operand.
 
277
.It Cm \e0 Ns Ar num
 
278
Write an 8\-bit character whose
 
279
.Tn ASCII
 
280
value is the 1\-, 2\-, or 3\-digit
 
281
octal number
 
282
.Ar num .
 
283
.It Cm \e^ Ns Ar c
 
284
Write the control character 
 
285
.Ar c .
 
286
Generates characters `\e000' through `\e037`, and `\e177' (from `\e^?').
 
287
.It Cm \eM\- Ns Ar c
 
288
Write the character 
 
289
.Ar c
 
290
with the 8th bit set.
 
291
Generates characters `\e241' through `\e376`.
 
292
.It Cm \eM^ Ns Ar c
 
293
Write the control character 
 
294
.Ar c
 
295
with the 8th bit set.
 
296
Generates characters `\e000' through `\e037`, and `\e177' (from `\eM^?').
 
297
.El
 
298
.It Cm B
 
299
Characters from the string
 
300
.Ar argument
 
301
are printed with unprintable characters backslash-escaped using the
 
302
.Sm off
 
303
.Pf ` Cm \e Ar c No ',
 
304
.Pf ` Cm \e^ Ar c No ',
 
305
.Pf ` Cm \eM\- Ar c No '
 
306
or
 
307
.Pf ` Cm \eM^ Ar c No ',
 
308
.Sm on
 
309
formats described above.
 
310
.It Cm c
 
311
The first character of
 
312
.Ar argument
 
313
is printed.
 
314
.It Cm s
 
315
Characters from the string
 
316
.Ar argument
 
317
are printed until the end is reached or until the number of characters
 
318
indicated by the precision specification is reached; if the
 
319
precision is omitted, all characters in the string are printed.
 
320
.It Cm \&%
 
321
Print a `%'; no argument is used.
 
322
.El
 
323
.Pp
 
324
In no case does a non-existent or small field width cause truncation of
 
325
a field; padding takes place only if the specified field width exceeds
 
326
the actual width.
 
327
.Sh EXIT STATUS
 
328
.Nm
 
329
exits 0 on success, 1 on failure.
 
330
.Sh SEE ALSO
 
331
.Xr echo 1 ,
 
332
.Xr printf 3 ,
 
333
.Xr printf 9
 
334
.Xr vis 3
 
335
.Sh STANDARDS
 
336
The
 
337
.Nm
 
338
utility conforms to
 
339
.St -p1003.1-2001 .
 
340
.Pp
 
341
Support for the floating point formats and `*' as a field width and precision
 
342
are optional in POSIX.
 
343
.Pp
 
344
The behaviour of the %B format and the \e', \e", \exxx, \ee and
 
345
\e[M][\-|^]c escape sequences are undefined in POSIX.
 
346
.Sh BUGS
 
347
Since the floating point numbers are translated from
 
348
.Tn ASCII
 
349
to floating-point and
 
350
then back again, floating-point precision may be lost.
 
351
.Pp
 
352
Hexadecimal character constants are restricted to, and should be specified
 
353
as, two character constants.  This is contrary to the ISO C standard but
 
354
does guarantee detection of the end of the constant.