1*48756Sbostic /*- 2*48756Sbostic * Copyright (c) 1988 The Regents of the University of California. 333816Sbostic * All rights reserved. 430016Sminshall * 5*48756Sbostic * %sccs.include.redist.c% 630016Sminshall */ 730016Sminshall 833816Sbostic #ifndef lint 9*48756Sbostic static char sccsid[] = "@(#)options.c 4.2 (Berkeley) 04/26/91"; 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 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 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