xref: /freebsd/contrib/libxo/doc/xolint-errors.rst (revision 34b867ca30479cec104fd069178df294f8ea35f1)
1*34b867caSPhil Shafer'A percent sign appearing in text is a literal'
2*34b867caSPhil Shafer+++++++++++++++++++++++++++++++++++++++++++++++
3*34b867caSPhil Shafer
4*34b867caSPhil ShaferThe message "A percent sign appearing in text is a literal" can be caused by code like:
5*34b867caSPhil Shafer
6*34b867caSPhil Shafer::
7*34b867caSPhil Shafer
8*34b867caSPhil Shafer    xo_emit("cost: %d", cost);
9*34b867caSPhil Shafer
10*34b867caSPhil ShaferThis code should be replaced with code like:
11*34b867caSPhil Shafer
12*34b867caSPhil Shafer::
13*34b867caSPhil Shafer
14*34b867caSPhil Shafer    xo_emit("{L:cost}: {:cost/%d}", cost);
15*34b867caSPhil Shafer
16*34b867caSPhil ShaferThis can be a bit surprising and could be a field that was not
17*34b867caSPhil Shaferproperly converted to a libxo-style format string.
18*34b867caSPhil Shafer
19*34b867caSPhil Shafer
20*34b867caSPhil Shafer'Unknown long name for role/modifier'
21*34b867caSPhil Shafer+++++++++++++++++++++++++++++++++++++
22*34b867caSPhil Shafer
23*34b867caSPhil ShaferThe message "Unknown long name for role/modifier" can be caused by code like:
24*34b867caSPhil Shafer
25*34b867caSPhil Shafer::
26*34b867caSPhil Shafer
27*34b867caSPhil Shafer    xo_emit("{,humanization:value}", value);
28*34b867caSPhil Shafer
29*34b867caSPhil ShaferThis code should be replaced with code like:
30*34b867caSPhil Shafer
31*34b867caSPhil Shafer::
32*34b867caSPhil Shafer
33*34b867caSPhil Shafer    xo_emit("{,humanize:value}", value);
34*34b867caSPhil Shafer
35*34b867caSPhil ShaferThe hn-* modifiers (hn-decimal, hn-space, hn-1000)
36*34b867caSPhil Shaferare only valid for fields with the {h:} modifier.
37*34b867caSPhil Shafer
38*34b867caSPhil Shafer
39*34b867caSPhil Shafer'Last character before field definition is a field type'
40*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++++++++++++++++++
41*34b867caSPhil Shafer
42*34b867caSPhil ShaferThe message "Last character before field definition is a field type" can be caused by code like:
43*34b867caSPhil ShaferA common typo:
44*34b867caSPhil Shafer
45*34b867caSPhil Shafer::
46*34b867caSPhil Shafer
47*34b867caSPhil Shafer    xo_emit("{T:Min} T{:Max}");
48*34b867caSPhil Shafer
49*34b867caSPhil ShaferThis code should be replaced with code like:
50*34b867caSPhil Shafer
51*34b867caSPhil Shafer::
52*34b867caSPhil Shafer
53*34b867caSPhil Shafer    xo_emit("{T:Min} {T:Max}");
54*34b867caSPhil Shafer
55*34b867caSPhil ShaferTwiddling the "{" and the field role is a common typo.
56*34b867caSPhil Shafer
57*34b867caSPhil Shafer
58*34b867caSPhil Shafer'Encoding format uses different number of arguments'
59*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++++++++++++++
60*34b867caSPhil Shafer
61*34b867caSPhil ShaferThe message "Encoding format uses different number of arguments" can be caused by code like:
62*34b867caSPhil Shafer
63*34b867caSPhil Shafer::
64*34b867caSPhil Shafer
65*34b867caSPhil Shafer    xo_emit("{:name/%6.6s %%04d/%s}", name, number);
66*34b867caSPhil Shafer
67*34b867caSPhil ShaferThis code should be replaced with code like:
68*34b867caSPhil Shafer
69*34b867caSPhil Shafer::
70*34b867caSPhil Shafer
71*34b867caSPhil Shafer    xo_emit("{:name/%6.6s %04d/%s-%d}", name, number);
72*34b867caSPhil Shafer
73*34b867caSPhil ShaferBoth format should consume the same number of arguments off the stack
74*34b867caSPhil Shafer
75*34b867caSPhil Shafer
76*34b867caSPhil Shafer'Only one field role can be used'
77*34b867caSPhil Shafer+++++++++++++++++++++++++++++++++
78*34b867caSPhil Shafer
79*34b867caSPhil ShaferThe message "Only one field role can be used" can be caused by code like:
80*34b867caSPhil Shafer
81*34b867caSPhil Shafer::
82*34b867caSPhil Shafer
83*34b867caSPhil Shafer    xo_emit("{LT:Max}");
84*34b867caSPhil Shafer
85*34b867caSPhil ShaferThis code should be replaced with code like:
86*34b867caSPhil Shafer
87*34b867caSPhil Shafer::
88*34b867caSPhil Shafer
89*34b867caSPhil Shafer    xo_emit("{T:Max}");
90*34b867caSPhil Shafer
91*34b867caSPhil Shafer'Potential missing slash after C, D, N, L, or T with format'
92*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
93*34b867caSPhil Shafer
94*34b867caSPhil ShaferThe message "Potential missing slash after C, D, N, L, or T with format" can be caused by code like:
95*34b867caSPhil Shafer
96*34b867caSPhil Shafer::
97*34b867caSPhil Shafer
98*34b867caSPhil Shafer    xo_emit("{T:%6.6s}\n", "Max");
99*34b867caSPhil Shafer
100*34b867caSPhil ShaferThis code should be replaced with code like:
101*34b867caSPhil Shafer
102*34b867caSPhil Shafer::
103*34b867caSPhil Shafer
104*34b867caSPhil Shafer    xo_emit("{T:/%6.6s}\n", "Max");
105*34b867caSPhil Shafer
106*34b867caSPhil ShaferThe "%6.6s" will be a literal, not a field format.  While
107*34b867caSPhil Shaferit's possibly valid, it's likely a missing "/".
108*34b867caSPhil Shafer
109*34b867caSPhil Shafer
110*34b867caSPhil Shafer'An encoding format cannot be given (roles: DNLT)'
111*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++++++++++++
112*34b867caSPhil Shafer
113*34b867caSPhil ShaferThe message "An encoding format cannot be given (roles: DNLT)" can be caused by code like:
114*34b867caSPhil Shafer
115*34b867caSPhil Shafer::
116*34b867caSPhil Shafer
117*34b867caSPhil Shafer    xo_emit("{T:Max//%s}", "Max");
118*34b867caSPhil Shafer
119*34b867caSPhil ShaferFields with the C, D, N, L, and T roles are not emitted in
120*34b867caSPhil Shaferthe 'encoding' style (JSON, XML), so an encoding format
121*34b867caSPhil Shaferwould make no sense.
122*34b867caSPhil Shafer
123*34b867caSPhil Shafer
124*34b867caSPhil Shafer'Format cannot be given when content is present (roles: CDLN)'
125*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
126*34b867caSPhil Shafer
127*34b867caSPhil ShaferThe message "Format cannot be given when content is present (roles: CDLN)" can be caused by code like:
128*34b867caSPhil Shafer
129*34b867caSPhil Shafer::
130*34b867caSPhil Shafer
131*34b867caSPhil Shafer    xo_emit("{N:Max/%6.6s}", "Max");
132*34b867caSPhil Shafer
133*34b867caSPhil ShaferFields with the C, D, L, or N roles can't have both
134*34b867caSPhil Shaferstatic literal content ("{L:Label}") and a
135*34b867caSPhil Shaferformat ("{L:/%s}").
136*34b867caSPhil ShaferThis error will also occur when the content has a backslash
137*34b867caSPhil Shaferin it, like "{N:Type of I/O}"; backslashes should be escaped,
138*34b867caSPhil Shaferlike "{N:Type of I\\/O}".  Note the double backslash, one for
139*34b867caSPhil Shaferhandling 'C' strings, and one for libxo.
140*34b867caSPhil Shafer
141*34b867caSPhil Shafer
142*34b867caSPhil Shafer'Field has color without fg- or bg- (role: C)'
143*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++++++++
144*34b867caSPhil Shafer
145*34b867caSPhil ShaferThe message "Field has color without fg- or bg- (role: C)" can be caused by code like:
146*34b867caSPhil Shafer
147*34b867caSPhil Shafer::
148*34b867caSPhil Shafer
149*34b867caSPhil Shafer    xo_emit("{C:green}{:foo}{C:}", x);
150*34b867caSPhil Shafer
151*34b867caSPhil ShaferThis code should be replaced with code like:
152*34b867caSPhil Shafer
153*34b867caSPhil Shafer::
154*34b867caSPhil Shafer
155*34b867caSPhil Shafer    xo_emit("{C:fg-green}{:foo}{C:}", x);
156*34b867caSPhil Shafer
157*34b867caSPhil ShaferColors must be prefixed by either "fg-" or "bg-".
158*34b867caSPhil Shafer
159*34b867caSPhil Shafer
160*34b867caSPhil Shafer'Field has invalid color or effect (role: C)'
161*34b867caSPhil Shafer+++++++++++++++++++++++++++++++++++++++++++++
162*34b867caSPhil Shafer
163*34b867caSPhil ShaferThe message "Field has invalid color or effect (role: C)" can be caused by code like:
164*34b867caSPhil Shafer
165*34b867caSPhil Shafer::
166*34b867caSPhil Shafer
167*34b867caSPhil Shafer    xo_emit("{C:fg-purple,bold}{:foo}{C:gween}", x);
168*34b867caSPhil Shafer
169*34b867caSPhil ShaferThis code should be replaced with code like:
170*34b867caSPhil Shafer
171*34b867caSPhil Shafer::
172*34b867caSPhil Shafer
173*34b867caSPhil Shafer    xo_emit("{C:fg-red,bold}{:foo}{C:fg-green}", x);
174*34b867caSPhil Shafer
175*34b867caSPhil ShaferThe list of colors and effects are limited.  The
176*34b867caSPhil Shaferset of colors includes default, black, red, green,
177*34b867caSPhil Shaferyellow, blue, magenta, cyan, and white, which must
178*34b867caSPhil Shaferbe prefixed by either "fg-" or "bg-".  Effects are
179*34b867caSPhil Shaferlimited to bold, no-bold, underline, no-underline,
180*34b867caSPhil Shaferinverse, no-inverse, normal, and reset.  Values must
181*34b867caSPhil Shaferbe separated by commas.
182*34b867caSPhil Shafer
183*34b867caSPhil Shafer
184*34b867caSPhil Shafer'Field has humanize modifier but no format string'
185*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++++++++++++
186*34b867caSPhil Shafer
187*34b867caSPhil ShaferThe message "Field has humanize modifier but no format string" can be caused by code like:
188*34b867caSPhil Shafer
189*34b867caSPhil Shafer::
190*34b867caSPhil Shafer
191*34b867caSPhil Shafer    xo_emit("{h:value}", value);
192*34b867caSPhil Shafer
193*34b867caSPhil ShaferThis code should be replaced with code like:
194*34b867caSPhil Shafer
195*34b867caSPhil Shafer::
196*34b867caSPhil Shafer
197*34b867caSPhil Shafer    xo_emit("{h:value/%d}", value);
198*34b867caSPhil Shafer
199*34b867caSPhil ShaferHumanization is only value for numbers, which are not
200*34b867caSPhil Shaferlikely to use the default format ("%s").
201*34b867caSPhil Shafer
202*34b867caSPhil Shafer
203*34b867caSPhil Shafer'Field has hn-* modifier but not 'h' modifier'
204*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++++++++
205*34b867caSPhil Shafer
206*34b867caSPhil ShaferThe message "Field has hn-* modifier but not 'h' modifier" can be caused by code like:
207*34b867caSPhil Shafer
208*34b867caSPhil Shafer::
209*34b867caSPhil Shafer
210*34b867caSPhil Shafer    xo_emit("{,hn-1000:value}", value);
211*34b867caSPhil Shafer
212*34b867caSPhil ShaferThis code should be replaced with code like:
213*34b867caSPhil Shafer
214*34b867caSPhil Shafer::
215*34b867caSPhil Shafer
216*34b867caSPhil Shafer    xo_emit("{h,hn-1000:value}", value);
217*34b867caSPhil Shafer
218*34b867caSPhil ShaferThe hn-* modifiers (hn-decimal, hn-space, hn-1000)
219*34b867caSPhil Shaferare only valid for fields with the {h:} modifier.
220*34b867caSPhil Shafer
221*34b867caSPhil Shafer
222*34b867caSPhil Shafer'Value field must have a name (as content)")'
223*34b867caSPhil Shafer+++++++++++++++++++++++++++++++++++++++++++++
224*34b867caSPhil Shafer
225*34b867caSPhil ShaferThe message "Value field must have a name (as content)")" can be caused by code like:
226*34b867caSPhil Shafer
227*34b867caSPhil Shafer::
228*34b867caSPhil Shafer
229*34b867caSPhil Shafer    xo_emit("{:/%s}", "value");
230*34b867caSPhil Shafer
231*34b867caSPhil ShaferThis code should be replaced with code like:
232*34b867caSPhil Shafer
233*34b867caSPhil Shafer::
234*34b867caSPhil Shafer
235*34b867caSPhil Shafer    xo_emit("{:tag-name/%s}", "value");
236*34b867caSPhil Shafer
237*34b867caSPhil ShaferThe field name is used for XML and JSON encodings.  These
238*34b867caSPhil Shafertags names are static and must appear directly in the
239*34b867caSPhil Shaferfield descriptor.
240*34b867caSPhil Shafer
241*34b867caSPhil Shafer
242*34b867caSPhil Shafer'Use hyphens, not underscores, for value field name'
243*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++++++++++++++
244*34b867caSPhil Shafer
245*34b867caSPhil ShaferThe message "Use hyphens, not underscores, for value field name" can be caused by code like:
246*34b867caSPhil Shafer
247*34b867caSPhil Shafer::
248*34b867caSPhil Shafer
249*34b867caSPhil Shafer    xo_emit("{:no_under_scores}", "bad");
250*34b867caSPhil Shafer
251*34b867caSPhil ShaferThis code should be replaced with code like:
252*34b867caSPhil Shafer
253*34b867caSPhil Shafer::
254*34b867caSPhil Shafer
255*34b867caSPhil Shafer    xo_emit("{:no-under-scores}", "bad");
256*34b867caSPhil Shafer
257*34b867caSPhil ShaferUse of hyphens is traditional in XML, and the XOF_UNDERSCORES
258*34b867caSPhil Shaferflag can be used to generate underscores in JSON, if desired.
259*34b867caSPhil ShaferBut the raw field name should use hyphens.
260*34b867caSPhil Shafer
261*34b867caSPhil Shafer
262*34b867caSPhil Shafer'Value field name cannot start with digit'
263*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++++
264*34b867caSPhil Shafer
265*34b867caSPhil ShaferThe message "Value field name cannot start with digit" can be caused by code like:
266*34b867caSPhil Shafer
267*34b867caSPhil Shafer::
268*34b867caSPhil Shafer
269*34b867caSPhil Shafer    xo_emit("{:10-gig/}");
270*34b867caSPhil Shafer
271*34b867caSPhil ShaferThis code should be replaced with code like:
272*34b867caSPhil Shafer
273*34b867caSPhil Shafer::
274*34b867caSPhil Shafer
275*34b867caSPhil Shafer    xo_emit("{:ten-gig/}");
276*34b867caSPhil Shafer
277*34b867caSPhil ShaferXML element names cannot start with a digit.
278*34b867caSPhil Shafer
279*34b867caSPhil Shafer
280*34b867caSPhil Shafer'Value field name should be lower case'
281*34b867caSPhil Shafer+++++++++++++++++++++++++++++++++++++++
282*34b867caSPhil Shafer
283*34b867caSPhil ShaferThe message "Value field name should be lower case" can be caused by code like:
284*34b867caSPhil Shafer
285*34b867caSPhil Shafer::
286*34b867caSPhil Shafer
287*34b867caSPhil Shafer    xo_emit("{:WHY-ARE-YOU-SHOUTING}", "NO REASON");
288*34b867caSPhil Shafer
289*34b867caSPhil ShaferThis code should be replaced with code like:
290*34b867caSPhil Shafer
291*34b867caSPhil Shafer::
292*34b867caSPhil Shafer
293*34b867caSPhil Shafer    xo_emit("{:why-are-you-shouting}", "no reason");
294*34b867caSPhil Shafer
295*34b867caSPhil ShaferLower case is more civilized.  Even TLAs should be lower case
296*34b867caSPhil Shaferto avoid scenarios where the differences between "XPath" and
297*34b867caSPhil Shafer"Xpath" drive your users crazy.  Lower case rules the seas.
298*34b867caSPhil Shafer
299*34b867caSPhil Shafer
300*34b867caSPhil Shafer'Value field name should be longer than two characters'
301*34b867caSPhil Shafer+++++++++++++++++++++++++++++++++++++++++++++++++++++++
302*34b867caSPhil Shafer
303*34b867caSPhil ShaferThe message "Value field name should be longer than two characters" can be caused by code like:
304*34b867caSPhil Shafer
305*34b867caSPhil Shafer::
306*34b867caSPhil Shafer
307*34b867caSPhil Shafer    xo_emit("{:x}", "mumble");
308*34b867caSPhil Shafer
309*34b867caSPhil ShaferThis code should be replaced with code like:
310*34b867caSPhil Shafer
311*34b867caSPhil Shafer::
312*34b867caSPhil Shafer
313*34b867caSPhil Shafer    xo_emit("{:something-meaningful}", "mumble");
314*34b867caSPhil Shafer
315*34b867caSPhil ShaferField names should be descriptive, and it's hard to
316*34b867caSPhil Shaferbe descriptive in less than two characters.  Consider
317*34b867caSPhil Shaferyour users and try to make something more useful.
318*34b867caSPhil ShaferNote that this error often occurs when the field type
319*34b867caSPhil Shaferis placed after the colon ("{:T/%20s}"), instead of before
320*34b867caSPhil Shaferit ("{T:/20s}").
321*34b867caSPhil Shafer
322*34b867caSPhil Shafer
323*34b867caSPhil Shafer'Value field name contains invalid character'
324*34b867caSPhil Shafer+++++++++++++++++++++++++++++++++++++++++++++
325*34b867caSPhil Shafer
326*34b867caSPhil ShaferThe message "Value field name contains invalid character" can be caused by code like:
327*34b867caSPhil Shafer
328*34b867caSPhil Shafer::
329*34b867caSPhil Shafer
330*34b867caSPhil Shafer    xo_emit("{:cost-in-$$/%u}", 15);
331*34b867caSPhil Shafer
332*34b867caSPhil ShaferThis code should be replaced with code like:
333*34b867caSPhil Shafer
334*34b867caSPhil Shafer::
335*34b867caSPhil Shafer
336*34b867caSPhil Shafer    xo_emit("{:cost-in-dollars/%u}", 15);
337*34b867caSPhil Shafer
338*34b867caSPhil ShaferAn invalid character is often a sign of a typo, like "{:]}"
339*34b867caSPhil Shaferinstead of "{]:}".  Field names are restricted to lower-case
340*34b867caSPhil Shafercharacters, digits, and hyphens.
341*34b867caSPhil Shafer
342*34b867caSPhil Shafer
343*34b867caSPhil Shafer'decoration field contains invalid character'
344*34b867caSPhil Shafer+++++++++++++++++++++++++++++++++++++++++++++
345*34b867caSPhil Shafer
346*34b867caSPhil ShaferThe message "decoration field contains invalid character" can be caused by code like:
347*34b867caSPhil Shafer
348*34b867caSPhil Shafer::
349*34b867caSPhil Shafer
350*34b867caSPhil Shafer    xo_emit("{D:not good}");
351*34b867caSPhil Shafer
352*34b867caSPhil ShaferThis code should be replaced with code like:
353*34b867caSPhil Shafer
354*34b867caSPhil Shafer::
355*34b867caSPhil Shafer
356*34b867caSPhil Shafer    xo_emit("{D:((}{:good}{D:))}", "yes");
357*34b867caSPhil Shafer
358*34b867caSPhil ShaferThis is minor, but fields should use proper roles.  Decoration
359*34b867caSPhil Shaferfields are meant to hold punctuation and other characters used
360*34b867caSPhil Shaferto decorate the content, typically to make it more readable
361*34b867caSPhil Shaferto human readers.
362*34b867caSPhil Shafer
363*34b867caSPhil Shafer
364*34b867caSPhil Shafer'Anchor content should be decimal width'
365*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++
366*34b867caSPhil Shafer
367*34b867caSPhil ShaferThe message "Anchor content should be decimal width" can be caused by code like:
368*34b867caSPhil Shafer
369*34b867caSPhil Shafer::
370*34b867caSPhil Shafer
371*34b867caSPhil Shafer    xo_emit("{[:mumble}");
372*34b867caSPhil Shafer
373*34b867caSPhil ShaferThis code should be replaced with code like:
374*34b867caSPhil Shafer
375*34b867caSPhil Shafer::
376*34b867caSPhil Shafer
377*34b867caSPhil Shafer    xo_emit("{[:32}");
378*34b867caSPhil Shafer
379*34b867caSPhil ShaferAnchors need an integer value to specify the width of
380*34b867caSPhil Shaferthe set of anchored fields.  The value can be positive
381*34b867caSPhil Shafer(for left padding/right justification) or negative (for
382*34b867caSPhil Shaferright padding/left justification) and can appear in
383*34b867caSPhil Shafereither the start or stop anchor field descriptor.
384*34b867caSPhil Shafer
385*34b867caSPhil Shafer
386*34b867caSPhil Shafer'Anchor format should be "%d"'
387*34b867caSPhil Shafer++++++++++++++++++++++++++++++
388*34b867caSPhil Shafer
389*34b867caSPhil ShaferThe message "Anchor format should be "%d"" can be caused by code like:
390*34b867caSPhil Shafer
391*34b867caSPhil Shafer::
392*34b867caSPhil Shafer
393*34b867caSPhil Shafer    xo_emit("{[:/%s}");
394*34b867caSPhil Shafer
395*34b867caSPhil ShaferThis code should be replaced with code like:
396*34b867caSPhil Shafer
397*34b867caSPhil Shafer::
398*34b867caSPhil Shafer
399*34b867caSPhil Shafer    xo_emit("{[:/%d}");
400*34b867caSPhil Shafer
401*34b867caSPhil ShaferAnchors only grok integer values, and if the value is not static,
402*34b867caSPhil Shaferif must be in an 'int' argument, represented by the "%d" format.
403*34b867caSPhil ShaferAnything else is an error.
404*34b867caSPhil Shafer
405*34b867caSPhil Shafer
406*34b867caSPhil Shafer'Anchor cannot have both format and encoding format")'
407*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++++++++++++++++++++++
408*34b867caSPhil Shafer
409*34b867caSPhil ShaferThe message "Anchor cannot have both format and encoding format")" can be caused by code like:
410*34b867caSPhil Shafer
411*34b867caSPhil Shafer::
412*34b867caSPhil Shafer
413*34b867caSPhil Shafer    xo_emit("{[:32/%d}");
414*34b867caSPhil Shafer
415*34b867caSPhil ShaferThis code should be replaced with code like:
416*34b867caSPhil Shafer
417*34b867caSPhil Shafer::
418*34b867caSPhil Shafer
419*34b867caSPhil Shafer    xo_emit("{[:32}");
420*34b867caSPhil Shafer
421*34b867caSPhil ShaferAnchors can have a static value or argument for the width,
422*34b867caSPhil Shaferbut cannot have both.
423*34b867caSPhil Shafer
424*34b867caSPhil Shafer
425*34b867caSPhil Shafer'Max width only valid for strings'
426*34b867caSPhil Shafer++++++++++++++++++++++++++++++++++
427*34b867caSPhil Shafer
428*34b867caSPhil ShaferThe message "Max width only valid for strings" can be caused by code like:
429*34b867caSPhil Shafer
430*34b867caSPhil Shafer::
431*34b867caSPhil Shafer
432*34b867caSPhil Shafer    xo_emit("{:tag/%2.4.6d}", 55);
433*34b867caSPhil Shafer
434*34b867caSPhil ShaferThis code should be replaced with code like:
435*34b867caSPhil Shafer
436*34b867caSPhil Shafer::
437*34b867caSPhil Shafer
438*34b867caSPhil Shafer    xo_emit("{:tag/%2.6d}", 55);
439*34b867caSPhil Shafer
440*34b867caSPhil Shaferlibxo allows a true 'max width' in addition to the traditional
441*34b867caSPhil Shaferprintf-style 'max number of bytes to use for input'.  But this
442*34b867caSPhil Shaferis supported only for string values, since it makes no sense
443*34b867caSPhil Shaferfor non-strings.  This error may occur from a typo,
444*34b867caSPhil Shaferlike "{:tag/%6..6d}" where only one period should be used.
445