diff -r 3024d1ef1140 src/cmd/seq.c --- a/src/cmd/seq.c Wed Sep 30 11:01:45 2009 -0700 +++ b/src/cmd/seq.c Sat Feb 27 16:11:56 2010 -0800 @@ -47,6 +47,39 @@ format = fmt; }
+extern int __ifmt(Fmt*); // _ifmt on Plan 9 + +static int +doifmt(Fmt *f, ...) +{ + int rv; + va_list argsav; + + f->flags |= FmtVLong; + va_copy(argsav, f->args); + va_end(f->args); + va_start(f->args, f); + rv = __ifmt(f); + va_end(f->args); + va_copy(f->args, argsav); + va_end(argsav); + return rv; +} + +static int +ifmt(Fmt *f) +{ + int rv; + static int running; + + if(running) + return __ifmt(f); + running = 1; + rv = doifmt(f, (vlong)va_arg(f->args, double)); + running = 0; + return rv; +} + void main(int argc, char *argv[]){ int j, n; @@ -79,7 +112,11 @@ fprint(2, "seq: zero increment\n"); exits("zero increment"); } - if(!format) + if(format){ + fmtinstall('d', ifmt); + fmtinstall('o', ifmt); + fmtinstall('x', ifmt); + }else buildfmt(); if(incr > 0){ for(val = min; val <= max; val += incr){