9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [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).