Annotation of src/usr.bin/more/option.c, Revision 1.1.1.1
1.1 deraadt 1: /*
2: * Copyright (c) 1988 Mark Nudleman
3: * Copyright (c) 1988 Regents of the University of California.
4: * All rights reserved.
5: *
6: * Redistribution and use in source and binary forms, with or without
7: * modification, are permitted provided that the following conditions
8: * are met:
9: * 1. Redistributions of source code must retain the above copyright
10: * notice, this list of conditions and the following disclaimer.
11: * 2. Redistributions in binary form must reproduce the above copyright
12: * notice, this list of conditions and the following disclaimer in the
13: * documentation and/or other materials provided with the distribution.
14: * 3. All advertising materials mentioning features or use of this software
15: * must display the following acknowledgement:
16: * This product includes software developed by the University of
17: * California, Berkeley and its contributors.
18: * 4. Neither the name of the University nor the names of its contributors
19: * may be used to endorse or promote products derived from this software
20: * without specific prior written permission.
21: *
22: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32: * SUCH DAMAGE.
33: */
34:
35: #ifndef lint
36: /* from: static char sccsid[] = "@(#)option.c 5.11 (Berkeley) 6/1/90"; */
37: static char *rcsid = "$Id: option.c,v 1.3 1995/08/06 09:22:34 ghudson Exp $";
38: #endif /* not lint */
39:
40: #include <stdio.h>
41: #include <less.h>
42:
43: int top_scroll; /* Repaint screen from top */
44: int bs_mode; /* How to process backspaces */
45: int caseless; /* Do "caseless" searches */
46: int cbufs = 10; /* Current number of buffers */
47: int linenums = 1; /* Use line numbers */
48: int quit_at_eof;
49: int squeeze; /* Squeeze multiple blank lines into one */
50: int tabstop = 8; /* Tab settings */
51: int tagoption;
52: int novice = 0;
53:
54: char *firstsearch;
55: extern int sc_height;
56:
57: option(argc, argv)
58: int argc;
59: char **argv;
60: {
61: extern char *optarg;
62: extern int optind;
63: static int sc_window_set = 0;
64: int ch;
65: char *p;
66:
67: /* backward compatible processing for "+/search" */
68: char **a;
69: for (a = argv; *a; ++a)
70: if ((*a)[0] == '+' && (*a)[1] == '/')
71: (*a)[0] = '-';
72:
73: optind = 1; /* called twice, re-init getopt. */
74: while ((ch = getopt(argc, argv, "0123456789/:cdeinst:ux:f")) != EOF)
75: switch((char)ch) {
76: case '0': case '1': case '2': case '3': case '4':
77: case '5': case '6': case '7': case '8': case '9':
78: /*
79: * kludge: more was originally designed to take
80: * a number after a dash.
81: */
82: if (!sc_window_set) {
83: p = argv[optind - 1];
84: if (p[0] == '-' && p[1] == ch && !p[2])
85: sc_height = atoi(++p);
86: else
87: sc_height = atoi(argv[optind] + 1);
88: sc_window_set = 1;
89: }
90: break;
91: case '/':
92: firstsearch = optarg;
93: break;
94: case 'c':
95: top_scroll = 1;
96: break;
97: case 'd':
98: novice = 1;
99: break;
100: case 'e':
101: quit_at_eof = 1;
102: break;
103: case 'i':
104: caseless = 1;
105: break;
106: case 'n':
107: linenums = 0;
108: break;
109: case 's':
110: squeeze = 1;
111: break;
112: case 't':
113: tagoption = 1;
114: findtag(optarg);
115: break;
116: case 'u':
117: bs_mode = 1;
118: break;
119: case 'x':
120: tabstop = atoi(optarg);
121: if (tabstop <= 0)
122: tabstop = 8;
123: break;
124: case 'f': /* ignore -f, compatability with old more */
125: break;
126: case '?':
127: default:
128: fprintf(stderr,
129: "usage: more [-ceinus] [-t tag] [-x tabs] [-/ pattern] [-#] [file ...]\n");
130: exit(1);
131: }
132: return(optind);
133: }