148756Sbostic /*-
2*62329Sbostic * Copyright (c) 1988, 1993
3*62329Sbostic * The Regents of the University of California. All rights reserved.
430016Sminshall *
548756Sbostic * %sccs.include.redist.c%
630016Sminshall */
730016Sminshall
833816Sbostic #ifndef lint
9*62329Sbostic static char sccsid[] = "@(#)options.c 8.1 (Berkeley) 06/06/93";
1033816Sbostic #endif /* not lint */
1130016Sminshall
1230016Sminshall /*
1330016Sminshall * this file contains the definitions, initialization, and processing of
1430016Sminshall * commands to handle the various local options (APL ON, etc.)
1530016Sminshall */
1630016Sminshall
1730016Sminshall #include "options.h"
1830016Sminshall
1931177Sminshall #include "../general/globals.h"
2035421Sminshall #include "declare.h"
2130016Sminshall
2230016Sminshall void
OptInit()2330016Sminshall OptInit()
2430016Sminshall {
2530016Sminshall register int i;
2630016Sminshall
2730016Sminshall OptAPLmode = 0;
2830016Sminshall OptNullProcessing = 1; /* improved null processing */
2930016Sminshall OptZonesMode = 0; /* zones mode off */
3030016Sminshall OptEnterNL = 0; /* regular enter/new line keys */
3130016Sminshall OptColFieldTab = 0; /* regular column/field tab keys */
3230016Sminshall OptPacing = 1; /* do pacing */
3330016Sminshall OptAlphaInNumeric = 0; /* allow alpha in numeric fields */
3430016Sminshall for (i = 0; i < sizeof OptColTabs; i++) {
3530016Sminshall OptColTabs[i] = ((i%8) == 0); /* every 8 columns */
3630016Sminshall }
3730016Sminshall OptHome = 0;
3830016Sminshall OptLeftMargin = 0;
3930016Sminshall OptWordWrap = 0;
4030016Sminshall }
4130016Sminshall
OptOrder(pointer,count,control)4230016Sminshall OptOrder(pointer, count, control)
4335421Sminshall unsigned char *pointer;
4430016Sminshall int count;
4530016Sminshall int control;
4630016Sminshall {
4730016Sminshall int i, j, character, origCount;
4830016Sminshall
4930016Sminshall origCount = count;
5030016Sminshall
5130016Sminshall if (count == 0) {
5230016Sminshall return(0);
5330016Sminshall }
5430016Sminshall character = *pointer&0xff;
5530016Sminshall pointer++;
5630016Sminshall count--;
5730016Sminshall switch (character) {
5830016Sminshall case 0xa0:
5930016Sminshall OptAPLmode = 1;
6030016Sminshall break;
6130016Sminshall case 0x61:
6230016Sminshall OptAPLmode = 0;
6330016Sminshall break;
6430016Sminshall case 0x95:
6530016Sminshall OptNullProcessing = 0;
6630016Sminshall break;
6730016Sminshall case 0xd5:
6830016Sminshall OptNullProcessing = 1;
6930016Sminshall break;
7030016Sminshall case 0xa9:
7130016Sminshall OptZonesMode = 1;
7230016Sminshall break;
7330016Sminshall case 0xe9:
7430016Sminshall OptZonesMode = 0;
7530016Sminshall break;
7630016Sminshall case 0x85:
7730016Sminshall OptEnterNL = 1;
7830016Sminshall break;
7930016Sminshall case 0xc5:
8030016Sminshall OptEnterNL = 0;
8130016Sminshall break;
8230016Sminshall case 0x83:
8330016Sminshall OptColFieldTab = 1;
8430016Sminshall break;
8530016Sminshall case 0xc3:
8630016Sminshall OptColFieldTab = 0;
8730016Sminshall break;
8830016Sminshall case 0x97:
8930016Sminshall OptPacing = 0;
9030016Sminshall break;
9130016Sminshall case 0xd7:
9230016Sminshall OptPacing = 1;
9330016Sminshall break;
9430016Sminshall case 0xa5:
9530016Sminshall OptAlphaInNumeric = 1;
9630016Sminshall break;
9730016Sminshall case 0xe5:
9830016Sminshall OptAlphaInNumeric = 0;
9930016Sminshall break;
10030016Sminshall case 0xe3:
10130016Sminshall if (!control && count < 30) {
10230016Sminshall return(0); /* want more! */
10330016Sminshall }
10430016Sminshall for (i = 0; i < sizeof OptColTabs; i++) {
10530016Sminshall OptColTabs[i] = 0;
10630016Sminshall }
10730016Sminshall if (!count) {
10830016Sminshall break;
10930016Sminshall }
11030016Sminshall j = (*pointer&0xff)-0x40;
11130016Sminshall count--;
11230016Sminshall pointer++;
11330016Sminshall if (j < 0 || j >= 24) {
11430016Sminshall break;
11530016Sminshall }
11630016Sminshall OptHome = j;
11730016Sminshall if (!count) {
11830016Sminshall break;
11930016Sminshall }
12030016Sminshall j = (*pointer&0xff)-0x40;
12130016Sminshall count--;
12230016Sminshall pointer++;
12330016Sminshall if (j < 0 || j >= 80) {
12430016Sminshall break;
12530016Sminshall }
12630016Sminshall OptLeftMargin = j;
12730016Sminshall if (!count) {
12830016Sminshall break;
12930016Sminshall }
13030016Sminshall i = count;
13130016Sminshall if (i > 28) {
13230016Sminshall i = 28;
13330016Sminshall }
13430016Sminshall while (i) {
13530016Sminshall j = (*pointer&0xff)-0x40;
13630016Sminshall if (j < 0 || j >= sizeof OptColTabs) {
13730016Sminshall break;
13830016Sminshall }
13930016Sminshall OptColTabs[j] = 1;
14030016Sminshall i --;
14130016Sminshall pointer++;
14230016Sminshall count--;
14330016Sminshall }
14430016Sminshall break;
14530016Sminshall case 0xa6:
14630016Sminshall OptWordWrap = 1;
14730016Sminshall break;
14830016Sminshall case 0xe6:
14930016Sminshall OptWordWrap = 0;
15030016Sminshall break;
15130016Sminshall default:
15230016Sminshall break;
15330016Sminshall }
15430016Sminshall return(origCount - count);
15530016Sminshall }
156