commit 470dce9dee60ad1c38721a8ad24247c2fd59191f from: rsc date: Thu Oct 12 01:42:11 2006 UTC new seq from plan 9 (Anthony Martin) commit - 729e53b9e55756f1b0475195489cf7309a2b80ac commit + 470dce9dee60ad1c38721a8ad24247c2fd59191f blob - 062bb8a4a9635ed19807e6ff864c9a3963ac4958 blob + 9fde9ef516645e2f8426e3f58e3f9e6ca6ec8083 --- src/cmd/seq.c +++ src/cmd/seq.c @@ -18,19 +18,19 @@ usage(void) void buildfmt(void) { - int i; char *dp; int w, p, maxw, maxp; static char fmt[16]; char buf[32]; + double val; format = "%g\n"; if(!constant) return; maxw = 0; maxp = 0; - for(i=0; i<=nsteps; i++){ - sprint(buf, "%g", min+i*incr); + for(val = min; val <= max; val += incr){ + sprint(buf, "%g", val); if(strchr(buf, 'e')!=0) return; dp = strchr(buf,'.'); @@ -49,8 +49,9 @@ buildfmt(void) void main(int argc, char *argv[]){ - int i, j, n; + int j, n; char buf[256], ffmt[4096]; + double val; ARGBEGIN{ case 'w': @@ -78,15 +79,24 @@ main(int argc, char *argv[]){ fprint(2, "seq: zero increment\n"); exits("zero increment"); } - nsteps = (max-min)/incr+.5; if(!format) buildfmt(); - for(i=0; i<=nsteps; i++){ - n = sprint(buf, format, min+i*incr); - if(constant) - for(j=0; buf[j]==' '; j++) - buf[j] ='0'; - write(1, buf, n); + if(incr > 0){ + for(val = min; val <= max; val += incr){ + n = sprint(buf, format, val); + if(constant) + for(j=0; buf[j]==' '; j++) + buf[j] ='0'; + write(1, buf, n); + } + }else{ + for(val = min; val >= max; val += incr){ + n = sprint(buf, format, val); + if(constant) + for(j=0; buf[j]==' '; j++) + buf[j] ='0'; + write(1, buf, n); + } } exits(0); }