Annotation of researchv8dc/cmd/seq.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: 
                      3: double min=1.0;
                      4: double max=0.0;
                      5: double incr=1.0;
                      6: int    width=0;
                      7: int    const=0;
                      8: char   *format="%.0f\n";
                      9: char   *picture;
                     10: 
                     11: extern double atof();
                     12: extern char *strchr();
                     13: 
                     14: main(argc, argv)
                     15:        char *argv[];
                     16: {
                     17:        register i, j, k, n;
                     18:        char buf[BUFSIZ];
                     19:        double x;
                     20: 
                     21:        while(argc>1 && argv[1][0]=='-'){
                     22:                switch(argv[1][1]){
                     23:                case 'w':
                     24:                        const++;
                     25:                        break;
                     26:                case 'p':
                     27:                        picture= &argv[1][2];
                     28:                        break;
                     29:                default:
                     30:                        goto out;
                     31:                }
                     32:                --argc;
                     33:                argv++;
                     34:        }
                     35:     out:
                     36:        if(argc<2 || argc>4)
                     37:                usage();
                     38:        max=atof(argv[argc-1]);
                     39:        if(argc>2){
                     40:                if(argc>3){
                     41:                        incr=atof(argv[2]);
                     42:                        argv[2]=argv[3];
                     43:                }
                     44:                min=atof(argv[1]);
                     45:        }
                     46:        if(incr==0){
                     47:                fprintf(stderr, "seq: zero increment\n");
                     48:                exit(1);
                     49:        }
                     50:        buildfmt();
                     51:        n=(max-min)/incr;
                     52:        for(i=0; i<=n; i++){
                     53:                x=min+i*incr;
                     54:                if(width){
                     55:                        if(const){
                     56:                                sprintf(buf, "%.0f", x);
                     57:                                k=width-strlen(buf);
                     58:                        }else
                     59:                                k=width;
                     60:                        if(x<0){
                     61:                                putchar('-');
                     62:                                x= -x;
                     63:                        }
                     64:                        for(j=0; j<k; j++)
                     65:                                putchar('0');
                     66:                }
                     67:                sprintf(buf, format, x);
                     68:                fputs(buf, stdout);
                     69:        }
                     70:        return 0;
                     71: }
                     72: usage(){
                     73:        fprintf(stderr, "usage: seq [-w] [-p10.2] [first [incr]] last\n");
                     74:        exit(1);
                     75: }
                     76: buildfmt()
                     77: {
                     78:        static char fmt[10]="%.0f";
                     79:        register char *t;
                     80:        char buf[32];
                     81:        if(const){
                     82:                sprintf(buf, fmt, min);
                     83:                width=strlen(buf);
                     84:                sprintf(buf, fmt, max);
                     85:                if(strlen(buf)>width)
                     86:                        width=strlen(buf);
                     87:        }
                     88:        if(picture)
                     89:                while(picture[0]=='0' && picture[1]!='.'){
                     90:                        width++;
                     91:                        picture++;
                     92:                }
                     93:        if(picture==0)
                     94:                return;
                     95:        if(picture[0]=='-')
                     96:                picture++;
                     97:        t=strchr(picture, '.');
                     98:        if(t>0){
                     99:                t++;
                    100:                if(*t==0)
                    101:                        strcat(fmt, ".");
                    102:                else
                    103:                        sprintf(fmt, "%%.%df", strlen(t));
                    104:        }
                    105:        strcat(fmt, "\n");
                    106:        format=fmt;
                    107: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.