|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1988 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: static char sccsid[] = "@(#)options.c 4.1 (Berkeley) 12/4/88"; ! 20: #endif /* not lint */ ! 21: ! 22: /* ! 23: * this file contains the definitions, initialization, and processing of ! 24: * commands to handle the various local options (APL ON, etc.) ! 25: */ ! 26: ! 27: #include "options.h" ! 28: ! 29: #include "../general/globals.h" ! 30: #include "declare.h" ! 31: ! 32: void ! 33: OptInit() ! 34: { ! 35: register int i; ! 36: ! 37: OptAPLmode = 0; ! 38: OptNullProcessing = 1; /* improved null processing */ ! 39: OptZonesMode = 0; /* zones mode off */ ! 40: OptEnterNL = 0; /* regular enter/new line keys */ ! 41: OptColFieldTab = 0; /* regular column/field tab keys */ ! 42: OptPacing = 1; /* do pacing */ ! 43: OptAlphaInNumeric = 0; /* allow alpha in numeric fields */ ! 44: for (i = 0; i < sizeof OptColTabs; i++) { ! 45: OptColTabs[i] = ((i%8) == 0); /* every 8 columns */ ! 46: } ! 47: OptHome = 0; ! 48: OptLeftMargin = 0; ! 49: OptWordWrap = 0; ! 50: } ! 51: ! 52: OptOrder(pointer, count, control) ! 53: unsigned char *pointer; ! 54: int count; ! 55: int control; ! 56: { ! 57: int i, j, character, origCount; ! 58: ! 59: origCount = count; ! 60: ! 61: if (count == 0) { ! 62: return(0); ! 63: } ! 64: character = *pointer&0xff; ! 65: pointer++; ! 66: count--; ! 67: switch (character) { ! 68: case 0xa0: ! 69: OptAPLmode = 1; ! 70: break; ! 71: case 0x61: ! 72: OptAPLmode = 0; ! 73: break; ! 74: case 0x95: ! 75: OptNullProcessing = 0; ! 76: break; ! 77: case 0xd5: ! 78: OptNullProcessing = 1; ! 79: break; ! 80: case 0xa9: ! 81: OptZonesMode = 1; ! 82: break; ! 83: case 0xe9: ! 84: OptZonesMode = 0; ! 85: break; ! 86: case 0x85: ! 87: OptEnterNL = 1; ! 88: break; ! 89: case 0xc5: ! 90: OptEnterNL = 0; ! 91: break; ! 92: case 0x83: ! 93: OptColFieldTab = 1; ! 94: break; ! 95: case 0xc3: ! 96: OptColFieldTab = 0; ! 97: break; ! 98: case 0x97: ! 99: OptPacing = 0; ! 100: break; ! 101: case 0xd7: ! 102: OptPacing = 1; ! 103: break; ! 104: case 0xa5: ! 105: OptAlphaInNumeric = 1; ! 106: break; ! 107: case 0xe5: ! 108: OptAlphaInNumeric = 0; ! 109: break; ! 110: case 0xe3: ! 111: if (!control && count < 30) { ! 112: return(0); /* want more! */ ! 113: } ! 114: for (i = 0; i < sizeof OptColTabs; i++) { ! 115: OptColTabs[i] = 0; ! 116: } ! 117: if (!count) { ! 118: break; ! 119: } ! 120: j = (*pointer&0xff)-0x40; ! 121: count--; ! 122: pointer++; ! 123: if (j < 0 || j >= 24) { ! 124: break; ! 125: } ! 126: OptHome = j; ! 127: if (!count) { ! 128: break; ! 129: } ! 130: j = (*pointer&0xff)-0x40; ! 131: count--; ! 132: pointer++; ! 133: if (j < 0 || j >= 80) { ! 134: break; ! 135: } ! 136: OptLeftMargin = j; ! 137: if (!count) { ! 138: break; ! 139: } ! 140: i = count; ! 141: if (i > 28) { ! 142: i = 28; ! 143: } ! 144: while (i) { ! 145: j = (*pointer&0xff)-0x40; ! 146: if (j < 0 || j >= sizeof OptColTabs) { ! 147: break; ! 148: } ! 149: OptColTabs[j] = 1; ! 150: i --; ! 151: pointer++; ! 152: count--; ! 153: } ! 154: break; ! 155: case 0xa6: ! 156: OptWordWrap = 1; ! 157: break; ! 158: case 0xe6: ! 159: OptWordWrap = 0; ! 160: break; ! 161: default: ! 162: break; ! 163: } ! 164: return(origCount - count); ! 165: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.