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){

Reply via email to