Annotation of 43BSDTahoe/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.
                      4:  *
                      5:  * Redistribution and use in source and binary forms are permitted
                      6:  * provided that the above copyright notice and this paragraph are
                      7:  * duplicated in all such forms and that any documentation,
                      8:  * advertising materials, and other materials related to such
                      9:  * distribution and use acknowledge that the software was developed
                     10:  * by the University of California, Berkeley.  The name of the
                     11:  * University may not be used to endorse or promote products derived
                     12:  * from this software without specific prior written permission.
                     13:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
                     14:  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
                     15:  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     16:  */
                     17: 
                     18: #ifndef lint
                     19: char copyright[] =
                     20: "@(#) Copyright (c) 1980 Regents of the University of California.\n\
                     21:  All rights reserved.\n";
                     22: #endif /* not lint */
                     23: 
                     24: #ifndef lint
                     25: static char sccsid[] = "@(#)fold.c     5.2 (Berkeley) 6/29/88";
                     26: #endif /* not lint */
                     27: 
                     28: #include <stdio.h>
                     29: /*
                     30:  * fold - fold long lines for finite output devices
                     31:  *
                     32:  * Bill Joy UCB June 28, 1977
                     33:  */
                     34: 
                     35: int    fold =  80;
                     36: 
                     37: main(argc, argv)
                     38:        int argc;
                     39:        char *argv[];
                     40: {
                     41:        register c;
                     42:        FILE *f;
                     43: 
                     44:        argc--, argv++;
                     45:        if (argc > 0 && argv[0][0] == '-') {
                     46:                fold = 0;
                     47:                argv[0]++;
                     48:                while (*argv[0] >= '0' && *argv[0] <= '9')
                     49:                        fold *= 10, fold += *argv[0]++ - '0';
                     50:                if (*argv[0]) {
                     51:                        printf("Bad number for fold\n");
                     52:                        exit(1);
                     53:                }
                     54:                argc--, argv++;
                     55:        }
                     56:        do {
                     57:                if (argc > 0) {
                     58:                        if (freopen(argv[0], "r", stdin) == NULL) {
                     59:                                perror(argv[0]);
                     60:                                exit(1);
                     61:                        }
                     62:                        argc--, argv++;
                     63:                }
                     64:                for (;;) {
                     65:                        c = getc(stdin);
                     66:                        if (c == -1)
                     67:                                break;
                     68:                        putch(c);
                     69:                }
                     70:        } while (argc > 0);
                     71:        exit(0);
                     72: }
                     73: 
                     74: int    col;
                     75: 
                     76: putch(c)
                     77:        register c;
                     78: {
                     79:        register ncol;
                     80: 
                     81:        switch (c) {
                     82:                case '\n':
                     83:                        ncol = 0;
                     84:                        break;
                     85:                case '\t':
                     86:                        ncol = (col + 8) &~ 7;
                     87:                        break;
                     88:                case '\b':
                     89:                        ncol = col ? col - 1 : 0;
                     90:                        break;
                     91:                case '\r':
                     92:                        ncol = 0;
                     93:                        break;
                     94:                default:
                     95:                        ncol = col + 1;
                     96:        }
                     97:        if (ncol > fold)
                     98:                putchar('\n'), col = 0;
                     99:        putchar(c);
                    100:        switch (c) {
                    101:                case '\n':
                    102:                        col = 0;
                    103:                        break;
                    104:                case '\t':
                    105:                        col += 8;
                    106:                        col &= ~7;
                    107:                        break;
                    108:                case '\b':
                    109:                        if (col)
                    110:                                col--;
                    111:                        break;
                    112:                case '\r':
                    113:                        col = 0;
                    114:                        break;
                    115:                default:
                    116:                        col++;
                    117:                        break;
                    118:        }
                    119: }

unix.superglobalmegacorp.com

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