* [9fans] print(2)'s format
@ 2014-03-03 0:40 trebol
2014-03-03 2:33 ` erik quanstrom
0 siblings, 1 reply; 2+ messages in thread
From: trebol @ 2014-03-03 0:40 UTC (permalink / raw)
To: 9fans
Hello, this is the little story:
I usually write scripts needing numbers padded on the left with zeros, like in '%03.0f'. In UNIX I use printf(1), but now I'm using more and more rc scripts with P9P, and I like to use Plan9 programs to make the scripts more portable to Plan9... so I tried with seq, like '9 seq -f%03.0f $i $i' or -f%03g, getting the desired output in P9P, but discovering that in Plan9, the floating point verbs doesn't include the flag '0'.
I'm really curious about this. Anyone knows the reason of letting out this flag (and including it in P9P)?
Regards,
trebol.
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [9fans] print(2)'s format
2014-03-03 0:40 [9fans] print(2)'s format trebol
@ 2014-03-03 2:33 ` erik quanstrom
0 siblings, 0 replies; 2+ messages in thread
From: erik quanstrom @ 2014-03-03 2:33 UTC (permalink / raw)
To: 9fans
> Hello, this is the little story:
> I usually write scripts needing numbers padded on the left with zeros, like in '%03.0f'. In UNIX I use printf(1), but now I'm using more and more rc scripts with P9P, and I like to use Plan9 programs to make the scripts more portable to Plan9... so I tried with seq, like '9 seq -f%03.0f $i $i' or -f%03g, getting the desired output in P9P, but discovering that in Plan9, the floating point verbs doesn't include the flag '0'.
> I'm really curious about this. Anyone knows the reason of letting out this flag (and including it in P9P)?
>
i am not sure if there is any knock-on to this, but i think this is all that's
required. unfortunately %06s might do some wierd things. shouldn't
be a big issue, since that's not specified anyway, and
g '%0[0-9]*(\.[0-9]*)?[sq]' /sys/src
turns up nothing.
i'm considering the patch.
- erik
diff -c /n/dump/2014/0302/sys/src/libc/fmt/dofmt.c ./dofmt.c
/n/dump/2014/0302/sys/src/libc/fmt/dofmt.c:87,99 - ./dofmt.c:87,100
int
_fmtpad(Fmt *f, int n)
{
- char *t, *s;
+ char *t, *s, c;
int i;
t = f->to;
s = f->stop;
+ c = f->flags&FmtZero? '0': ' ';
for(i = 0; i < n; i++)
- FMTCHAR(f, t, s, ' ');
+ FMTCHAR(f, t, s, c);
f->nfmt += t - (char *)f->to;
f->to = t;
return 0;
/n/dump/2014/0302/sys/src/libc/fmt/dofmt.c:102,114 - ./dofmt.c:103,116
int
_rfmtpad(Fmt *f, int n)
{
- Rune *t, *s;
+ Rune *t, *s, r;
int i;
t = f->to;
s = f->stop;
+ r = f->flags&FmtZero? '0': ' ';
for(i = 0; i < n; i++)
- FMTRCHAR(f, t, s, ' ');
+ FMTRCHAR(f, t, s, r);
f->nfmt += t - (Rune *)f->to;
f->to = t;
return 0;
diff -c /n/dump/2014/0302/sys/src/libc/fmt/fltfmt.c ./fltfmt.c
/n/dump/2014/0302/sys/src/libc/fmt/fltfmt.c:303,309 - ./fltfmt.c:303,309
* which is 341 currently.
*/
xdtoa(fmt, s, f);
- fmt->flags &= FmtWidth|FmtLeft;
+ fmt->flags &= FmtZero|FmtWidth|FmtLeft;
_fmtcpy(fmt, s, strlen(s), strlen(s));
return 0;
}
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-03-03 2:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-03 0:40 [9fans] print(2)'s format trebol
2014-03-03 2:33 ` erik quanstrom
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).