Annotation of researchv10dc/cmd/sp.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Print horizontally as possible, thus saving paper
        !             3:  */
        !             4: #include <stdio.h>
        !             5: int tab[8] = {8,7,6,5,4,3,2,1};
        !             6: int next;      /*next output position on line*/
        !             7: int slen;      /*length at start of line*/
        !             8: int alen;      /*actual length*/
        !             9: int elen;      /*length on current line*/
        !            10: char buf[256];
        !            11: getit()
        !            12: {      register int i;
        !            13:        register c;
        !            14:        slen=alen=elen=0;
        !            15:        for(i=0;;i++)
        !            16:        {       buf[i]=c=getchar();
        !            17:                switch(c)
        !            18:                {
        !            19:                case '\n':      if(i==0) continue;
        !            20:                case EOF:
        !            21:                        alen=i;
        !            22:                        return(i);
        !            23:                case '\t':
        !            24:                        elen+= tab[(next+elen)%8];
        !            25:                        slen += tab[slen%8];
        !            26:                        continue;
        !            27:                default:
        !            28:                        elen++;
        !            29:                        slen++;
        !            30:                        continue;
        !            31:                }
        !            32:        }
        !            33: }
        !            34: putit(ntab)
        !            35: {      register int i;
        !            36:        for(i=0;i<ntab;i++) putchar('\t');
        !            37:        for(i=0;i<alen;i++) putchar(buf[i]);
        !            38: }
        !            39: clean()
        !            40: {
        !            41:        putchar('\n');
        !            42: }
        !            43: main(argc,argv) char *argv[];
        !            44: {      int len,ntab;
        !            45:        int i;
        !            46:        len=80;
        !            47:        for( ; argc>1; argv++,argc--) {
        !            48:                if(access(argv[1],04)==0) {
        !            49:                        freopen(argv[1],"r",stdin);
        !            50:                        continue;
        !            51:                }
        !            52:                i=atoi(argv[1]);
        !            53:                if(i<0) i= -i;
        !            54:                len=(i<1?1:i);
        !            55:        }
        !            56:        for(;;)
        !            57:        {       if(next==0) ntab=0;
        !            58:                else if(tab[next%8]<1)
        !            59:                        {       ntab=2;
        !            60:                                next+= tab[next%8];
        !            61:                                next += tab[next%8];
        !            62:                        }
        !            63:                        else
        !            64:                        {       ntab=1;
        !            65:                                next += tab[next%8];
        !            66:                        }
        !            67:                if(getit()<=0) {clean(); exit(0);}
        !            68:                if(elen+next>=len)
        !            69:                {       clean();
        !            70:                        next=slen;
        !            71:                        putit(0);
        !            72:                }
        !            73:                else
        !            74:                {       next += elen;
        !            75:                        putit(ntab);
        !            76:                }
        !            77:        }
        !            78: }

unix.superglobalmegacorp.com

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