From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: <2dfd9898fe7656a885285032d9727684@ladd.quanstro.net> References: <2dfd9898fe7656a885285032d9727684@ladd.quanstro.net> Date: Sat, 27 Feb 2010 16:12:53 -0800 Message-ID: Subject: Re: [9fans] seq with hex, octal formats From: Russ Cox To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: text/plain; charset=UTF-8 Topicbox-Message-UUID: dcf09f78-ead5-11e9-9d60-3106f5b1d025 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){