Annotation of 43BSD/ucb/fold.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1980 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  */
                      6: 
                      7: #ifndef lint
                      8: char copyright[] =
                      9: "@(#) Copyright (c) 1980 Regents of the University of California.\n\
                     10:  All rights reserved.\n";
                     11: #endif not lint
                     12: 
                     13: #ifndef lint
                     14: static char sccsid[] = "@(#)fold.c     5.1 (Berkeley) 5/31/85";
                     15: #endif not lint
                     16: 
                     17: #include <stdio.h>
                     18: /*
                     19:  * fold - fold long lines for finite output devices
                     20:  *
                     21:  * Bill Joy UCB June 28, 1977
                     22:  */
                     23: 
                     24: int    fold =  80;
                     25: 
                     26: main(argc, argv)
                     27:        int argc;
                     28:        char *argv[];
                     29: {
                     30:        register c;
                     31:        FILE *f;
                     32: 
                     33:        argc--, argv++;
                     34:        if (argc > 0 && argv[0][0] == '-') {
                     35:                fold = 0;
                     36:                argv[0]++;
                     37:                while (*argv[0] >= '0' && *argv[0] <= '9')
                     38:                        fold *= 10, fold += *argv[0]++ - '0';
                     39:                if (*argv[0]) {
                     40:                        printf("Bad number for fold\n");
                     41:                        exit(1);
                     42:                }
                     43:                argc--, argv++;
                     44:        }
                     45:        do {
                     46:                if (argc > 0) {
                     47:                        if (freopen(argv[0], "r", stdin) == NULL) {
                     48:                                perror(argv[0]);
                     49:                                exit(1);
                     50:                        }
                     51:                        argc--, argv++;
                     52:                }
                     53:                for (;;) {
                     54:                        c = getc(stdin);
                     55:                        if (c == -1)
                     56:                                break;
                     57:                        putch(c);
                     58:                }
                     59:        } while (argc > 0);
                     60:        exit(0);
                     61: }
                     62: 
                     63: int    col;
                     64: 
                     65: putch(c)
                     66:        register c;
                     67: {
                     68:        register ncol;
                     69: 
                     70:        switch (c) {
                     71:                case '\n':
                     72:                        ncol = 0;
                     73:                        break;
                     74:                case '\t':
                     75:                        ncol = (col + 8) &~ 7;
                     76:                        break;
                     77:                case '\b':
                     78:                        ncol = col ? col - 1 : 0;
                     79:                        break;
                     80:                case '\r':
                     81:                        ncol = 0;
                     82:                        break;
                     83:                default:
                     84:                        ncol = col + 1;
                     85:        }
                     86:        if (ncol > fold)
                     87:                putchar('\n'), col = 0;
                     88:        putchar(c);
                     89:        switch (c) {
                     90:                case '\n':
                     91:                        col = 0;
                     92:                        break;
                     93:                case '\t':
                     94:                        col += 8;
                     95:                        col &= ~7;
                     96:                        break;
                     97:                case '\b':
                     98:                        if (col)
                     99:                                col--;
                    100:                        break;
                    101:                case '\r':
                    102:                        col = 0;
                    103:                        break;
                    104:                default:
                    105:                        col++;
                    106:                        break;
                    107:        }
                    108: }

unix.superglobalmegacorp.com

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