# 2.11BSD#431 - /usr/src/ucb/window/ttgeneric.c

##### Functions

    gen_clear         X
    gen_clreol        X
    gen_clreos        X
    gen_delchar       X
    gen_delline       X
    gen_end           X
    gen_init          X
    gen_insline       X
    gen_move          X
    gen_putc          X
    gen_setinsert     X
    gen_setmodes      X
    gen_write         X
    tt_generic        X

##### Variables

    BC                X
    PC                X
    UP                X
    ansi_frame        X
    gen_AE            X
    gen_AL            X
    gen_AM            X
    gen_AS            X
    gen_BC            X
    gen_BS            X
    gen_CD            X
    gen_CE            X
    gen_CL            X
    gen_CM            X
    gen_CO            X
    gen_DB            X
    gen_DC            X
    gen_DL            X
    gen_EI            X
    gen_HO            X
    gen_IC            X
    gen_IM            X
    gen_IP            X
    gen_LI            X
    gen_MI            X
    gen_MS            X
    gen_ND            X
    gen_NL            X
    gen_OS            X
    gen_PC            X
    gen_SE            X
    gen_SG            X
    gen_SO            X
    gen_TE            X
    gen_TI            X
    gen_UE            X
    gen_UG            X
    gen_UP            X
    gen_US            X
    gen_VE            X
    gen_VS            X
    gen_XE            X
    gen_XS            X
    gen_frame         X
    ospeed            X

##### Macros

    ANSI_AS           X
    G                 X

       1: #ifndef lint
       2: static char sccsid[] = "@(#)ttgeneric.c	3.29 5/2/86";
       3: #endif
       4:
       5: /*
       6:  * Copyright (c) 1983 Regents of the University of California,
       7:  * All rights reserved.  Redistribution permitted subject to
       8:  * the terms of the Berkeley Software License Agreement.
       9:  */
      10:
      11: #include "ww.h"
      12: #include "tt.h"
      13:
      14: char PC, *BC, *UP;
      15: short ospeed;
      16:
      17:     /* normal frame */
      18: short gen_frame[16] = {
      19:     ' ', '|', '-', '+',
      20:     '|', '|', '+', '+',
      21:     '-', '+', '-', '+',
      22:     '+', '+', '+', '+'
      23: };
      24:
      25:     /* ANSI graphics frame */
      26: #define G (WWM_GRP << WWC_MSHIFT)
      27: short ansi_frame[16] = {
      28:     ' ',    'x'|G,  'Q'|G,  'm'|G,
      29:     'x'|G,  'x'|G,  'l'|G,  't'|G,
      30:     'q'|G,  'j'|G,  'q'|G,  'v'|G,
      31:     'k'|G,  'u'|G,  'w'|G,  'n'|G
      32: };
      33: #define ANSI_AS "\033(0"    /* ) */
      34:
      35: struct tt_str *gen_CM;
      36: struct tt_str *gen_IM;
      37: struct tt_str *gen_IC;
      38: struct tt_str *gen_IP;
      39: struct tt_str *gen_EI;
      40: struct tt_str *gen_DC;
      41: struct tt_str *gen_AL;
      42: struct tt_str *gen_DL;
      43: struct tt_str *gen_CE;
      44: struct tt_str *gen_CD;
      45: struct tt_str *gen_CL;
      46: struct tt_str *gen_VS;
      47: struct tt_str *gen_VE;
      48: struct tt_str *gen_TI;
      49: struct tt_str *gen_TE;
      50: struct tt_str *gen_SO;
      51: struct tt_str *gen_SE;
      52: struct tt_str *gen_US;
      53: struct tt_str *gen_UE;
      54: struct tt_str *gen_UP;
      55: struct tt_str *gen_PC;
      56: struct tt_str *gen_BC;
      57: struct tt_str *gen_ND;
      58: struct tt_str *gen_HO;
      59: struct tt_str *gen_NL;
      60: struct tt_str *gen_AS;
      61: struct tt_str *gen_AE;
      62: struct tt_str *gen_XS;
      63: struct tt_str *gen_XE;
      64: char gen_MI;
      65: char gen_MS;
      66: char gen_AM;
      67: char gen_OS;
      68: char gen_BS;
      69: char gen_DB;
      70: int gen_CO;
      71: int gen_LI;
      72: int gen_UG;
      73: int gen_SG;
      74:
      75: gen_setinsert(new)
      76: char new;
      77: {
      78:     if (new) {
      79:         if (gen_IM)
      80:             ttxputs(gen_IM);
      81:     } else
      82:         if (gen_EI)
      83:             ttxputs(gen_EI);
      84:     tt.tt_insert = new;
      85: }
      86:
      87: gen_setmodes(new)
      88: register new;
      89: {
      90:     register diff;
      91:
      92:     diff = new ^ tt.tt_modes;
      93:     if (diff & WWM_REV) {
      94:         if (new & WWM_REV) {
      95:             if (gen_SO)
      96:                 ttxputs(gen_SO);
      97:         } else
      98:             if (gen_SE)
      99:                 ttxputs(gen_SE);
     100:     }
     101:     if (diff & WWM_UL) {
     102:         if (new & WWM_UL) {
     103:             if (gen_US)
     104:                 ttxputs(gen_US);
     105:         } else
     106:             if (gen_UE)
     107:                 ttxputs(gen_UE);
     108:     }
     109:     if (diff & WWM_GRP) {
     110:         if (new & WWM_GRP) {
     111:             if (gen_AS)
     112:                 ttxputs(gen_AS);
     113:         } else
     114:             if (gen_AE)
     115:                 ttxputs(gen_AE);
     116:     }
     117:     if (diff & WWM_USR) {
     118:         if (new & WWM_USR) {
     119:             if (gen_XS)
     120:                 ttxputs(gen_XS);
     121:         } else
     122:             if (gen_XE)
     123:                 ttxputs(gen_XE);
     124:     }
     125:     tt.tt_modes = new;
     126: }
     127:
     128: gen_insline()
     129: {
     130:     if (tt.tt_modes)            /* for concept 100 */
     131:         gen_setmodes(0);
     132:     if (gen_AL)
     133:         tttputs(gen_AL, gen_LI - tt.tt_row);
     134: }
     135:
     136: gen_delline()
     137: {
     138:     if (tt.tt_modes)            /* for concept 100 */
     139:         gen_setmodes(0);
     140:     if (gen_DL)
     141:         tttputs(gen_DL, gen_LI - tt.tt_row);
     142: }
     143:
     144: gen_putc(c)
     145: register char c;
     146: {
     147:     if (tt.tt_ninsert != tt.tt_insert)
     148:         gen_setinsert(tt.tt_ninsert);
     149:     if (tt.tt_nmodes != tt.tt_modes)
     150:         gen_setmodes(tt.tt_nmodes);
     151:     if (tt.tt_insert) {
     152:         if (gen_IC)
     153:             tttputs(gen_IC, gen_CO - tt.tt_col);
     154:         ttputc(c);
     155:         if (gen_IP)
     156:             tttputs(gen_IP, gen_CO - tt.tt_col);
     157:     } else
     158:         ttputc(c);
     159:     if (++tt.tt_col == gen_CO)
     160:         if (gen_AM)
     161:             tt.tt_col = 0, tt.tt_row++;
     162:         else
     163:             tt.tt_col--;
     164: }
     165:
     166: gen_write(p, n)
     167:     register char *p;
     168:     register n;
     169: {
     170:     if (tt.tt_ninsert != tt.tt_insert)
     171:         gen_setinsert(tt.tt_ninsert);
     172:     if (tt.tt_nmodes != tt.tt_modes)
     173:         gen_setmodes(tt.tt_nmodes);
     174:     if (tt.tt_insert && (gen_IC || gen_IP)) {
     175:         while (--n >= 0) {
     176:             if (gen_IC)
     177:                 tttputs(gen_IC, gen_CO - tt.tt_col);
     178:             ttputc(*p++);
     179:             if (gen_IP)
     180:                 tttputs(gen_IP, gen_CO - tt.tt_col);
     181:             tt.tt_col++;
     182:         }
     183:     } else {
     184:         tt.tt_col += n;
     185:         ttwrite(p, n);
     186:     }
     187:     if (tt.tt_col == gen_CO)
     188:         if (gen_AM)
     189:             tt.tt_col = 0, tt.tt_row++;
     190:         else
     191:             tt.tt_col--;
     192: }
     193:
     194: gen_move(row, col)
     195: register char row, col;
     196: {
     197:     if (tt.tt_row == row && tt.tt_col == col)
     198:         return;
     199:     if (!gen_MI && tt.tt_insert)
     200:         gen_setinsert(0);
     201:     if (!gen_MS && tt.tt_modes)
     202:         gen_setmodes(0);
     203:     if (tt.tt_row == row) {
     204:         if (tt.tt_col == col)
     205:             return;
     206:         if (tt.tt_col == col - 1) {
     207:             if (gen_ND) {
     208:                 ttxputs(gen_ND);
     209:                 goto out;
     210:             }
     211:         } else if (tt.tt_col == col + 1) {
     212:             if (gen_BC) {
     213:                 ttxputs(gen_BC);
     214:                 goto out;
     215:             }
     216:         }
     217:     }
     218:     if (tt.tt_col == col) {
     219:         if (tt.tt_row == row + 1) {
     220:             if (gen_UP) {
     221:                 ttxputs(gen_UP);
     222:                 goto out;
     223:             }
     224:         } else if (tt.tt_row == row + 1) {
     225:             ttxputs(gen_NL);
     226:             goto out;
     227:         }
     228:     }
     229:     if (gen_HO && col == 0 && row == 0) {
     230:         ttxputs(gen_HO);
     231:         goto out;
     232:     }
     233:     tttgoto(gen_CM, col, row);
     234: out:
     235:     tt.tt_col = col;
     236:     tt.tt_row = row;
     237: }
     238:
     239: gen_init()
     240: {
     241:     if (gen_VS)
     242:         ttxputs(gen_VS);
     243:     if (gen_TI)
     244:         ttxputs(gen_TI);
     245:     ttxputs(gen_CL);
     246:     tt.tt_col = tt.tt_row = 0;
     247:     tt.tt_ninsert = tt.tt_insert = 0;
     248:     tt.tt_nmodes = tt.tt_modes = 0;
     249: }
     250:
     251: gen_end()
     252: {
     253:     if (gen_TE)
     254:         ttxputs(gen_TE);
     255:     if (gen_VE)
     256:         ttxputs(gen_VE);
     257: }
     258:
     259: gen_clreol()
     260: {
     261:     if (tt.tt_modes)            /* for concept 100 */
     262:         gen_setmodes(0);
     263:     tttputs(gen_CE, gen_CO - tt.tt_col);
     264: }
     265:
     266: gen_clreos()
     267: {
     268:     if (tt.tt_modes)            /* for concept 100 */
     269:         gen_setmodes(0);
     270:     tttputs(gen_CD, gen_LI - tt.tt_row);
     271: }
     272:
     273: gen_clear()
     274: {
     275:     if (tt.tt_modes)            /* for concept 100 */
     276:         gen_setmodes(0);
     277:     ttxputs(gen_CL);
     278: }
     279:
     280: gen_delchar()
     281: {
     282:     tttputs(gen_DC, gen_CO - tt.tt_col);
     283: }
     284:
     285: tt_generic()
     286: {
     287:     gen_PC = tttgetstr("pc");
     288:     PC = gen_PC ? *gen_PC->ts_str : 0;
     289:     ospeed = wwoldtty.ww_sgttyb.sg_ospeed;
     290:
     291:     gen_CM = ttxgetstr("cm");       /* may not work */
     292:     gen_IM = ttxgetstr("im");
     293:     gen_IC = tttgetstr("ic");
     294:     gen_IP = tttgetstr("ip");
     295:     gen_EI = ttxgetstr("ei");
     296:     gen_DC = tttgetstr("dc");
     297:     gen_AL = tttgetstr("al");
     298:     gen_DL = tttgetstr("dl");
     299:     gen_CE = tttgetstr("ce");
     300:     gen_CD = tttgetstr("cd");
     301:     gen_CL = ttxgetstr("cl");
     302:     gen_VS = ttxgetstr("vs");
     303:     gen_VE = ttxgetstr("ve");
     304:     gen_TI = ttxgetstr("ti");
     305:     gen_TE = ttxgetstr("te");
     306:     gen_SO = ttxgetstr("so");
     307:     gen_SE = ttxgetstr("se");
     308:     gen_US = ttxgetstr("us");
     309:     gen_UE = ttxgetstr("ue");
     310:     gen_UP = ttxgetstr("up");
     311:     gen_BC = ttxgetstr("bc");
     312:     gen_ND = ttxgetstr("nd");
     313:     gen_HO = ttxgetstr("ho");
     314:     gen_NL = ttxgetstr("nl");
     315:     gen_AS = ttxgetstr("as");
     316:     gen_AE = ttxgetstr("ae");
     317:     gen_XS = ttxgetstr("XS");
     318:     gen_XE = ttxgetstr("XE");
     319:     gen_MI = tgetflag("mi");
     320:     gen_MS = tgetflag("ms");
     321:     gen_AM = tgetflag("am");
     322:     gen_OS = tgetflag("os");
     323:     gen_BS = tgetflag("bs");
     324:     gen_DB = tgetflag("db");
     325:     gen_CO = tgetnum("co");
     326:     gen_LI = tgetnum("li");
     327:     gen_UG = tgetnum("ug");
     328:     gen_SG = tgetnum("sg");
     329:
     330:     if (gen_NL == 0) {
     331:         static struct tt_str nl = { "\n", 1 };
     332:         gen_NL = &nl;
     333:     }
     334:     if (gen_BC == 0 && gen_BS) {
     335:         static struct tt_str bc = { "\b", 1 };
     336:         gen_BC = &bc;
     337:     }
     338:     BC = gen_BC ? gen_BC->ts_str : 0;
     339:     UP = gen_UP ? gen_UP->ts_str : 0;
     340:     if (gen_CL == 0 || gen_OS || gen_CM == 0)
     341:         return -1;
     342:
     343:     if (gen_DC)
     344:         tt.tt_delchar = gen_delchar;
     345:     if (gen_AL)
     346:         tt.tt_insline = gen_insline;
     347:     if (gen_DL)
     348:         tt.tt_delline = gen_delline;
     349:     if (gen_CE)
     350:         tt.tt_clreol = gen_clreol;
     351:     if (gen_CD)
     352:         tt.tt_clreos = gen_clreos;
     353:     if (gen_SG > 0)
     354:         gen_SO = 0;
     355:     if (gen_UG > 0)
     356:         gen_US = 0;
     357:     if (gen_SO)
     358:         tt.tt_availmodes |= WWM_REV;
     359:     if (gen_US)
     360:         tt.tt_availmodes |= WWM_UL;
     361:     if (gen_AS)
     362:         tt.tt_availmodes |= WWM_GRP;
     363:     if (gen_XS)
     364:         tt.tt_availmodes |= WWM_USR;
     365:     tt.tt_hasinsert = gen_IM != 0;
     366:     tt.tt_wrap = gen_AM;
     367:     tt.tt_retain = gen_DB;
     368:     tt.tt_ncol = gen_CO;
     369:     tt.tt_nrow = gen_LI;
     370:     tt.tt_init = gen_init;
     371:     tt.tt_end = gen_end;
     372:     tt.tt_write = gen_write;
     373:     tt.tt_putc = gen_putc;
     374:     tt.tt_move = gen_move;
     375:     tt.tt_clear = gen_clear;
     376:     tt.tt_setinsert = gen_setinsert;
     377:     tt.tt_setmodes = gen_setmodes;
     378:     tt.tt_frame = gen_AS && !strncmp(gen_AS->ts_str, ANSI_AS, gen_AS->ts_n)
     379:         ? ansi_frame : gen_frame;
     380:     return 0;
     381: }

#### Defined functions

gen_clear defined in line 273; used 1 times

- in line 375

gen_clreol defined in line 259; used 1 times

- in line 350

gen_clreos defined in line 266; used 1 times

- in line 352

gen_delchar defined in line 280; used 1 times

- in line 344

gen_delline defined in line 136; used 1 times

- in line 348

gen_end defined in line 251; used 1 times

- in line 371

gen_init defined in line 239; used 1 times

- in line 370

gen_insline defined in line 128; used 1 times

- in line 346

gen_move defined in line 194; used 1 times

- in line 374

gen_putc defined in line 144; used 1 times

- in line 373

gen_setinsert defined in line 75; used 4 times

- in line 148, 171, 200, 376

gen_setmodes defined in line 87; used 9 times

- in line 131, 139, 150, 173, 202, 262, 269, 276, 377

gen_write defined in line 166; used 1 times

- in line 372

tt_generic defined in line 285; used 4 times

- in /usr/src/ucb/window/ttf100.c line 32
- in /usr/src/ucb/window/ttinit.c line 18, 24
- in /usr/src/ucb/window/tttvi925.c line 31

#### Defined variables

BC defined in line 14; used 1 times

- in line 338

PC defined in line 14; used 1 times

- in line 288

UP defined in line 14; used 1 times

- in line 339

ansi_frame defined in line 27; used 1 times

- in line 379

gen_AE defined in line 61; used 4 times

- in line 114-115(2), 316
- in /usr/src/ucb/window/ttf100.c line 37

gen_AL defined in line 41; used 4 times

- in line 132-133(2), 297, 345

gen_AM defined in line 66; used 4 times

- in line 160, 188, 321, 366

gen_AS defined in line 60; used 8 times

- in line 111-112(2), 315, 361, 378(3)
- in /usr/src/ucb/window/ttf100.c line 36

gen_BC defined in line 56; used 7 times

- in line 212-213(2), 311, 334-338(4)

gen_BS defined in line 68; used 2 times

- in line 323, 334

gen_CD defined in line 44; used 3 times

- in line 270, 300, 351

gen_CE defined in line 43; used 3 times

- in line 263, 299, 349

gen_CL defined in line 45; used 4 times

- in line 245, 277, 301, 340

gen_CM defined in line 35; used 3 times

- in line 233, 291, 340

gen_CO defined in line 70; used 10 times

- in line 153-159(3), 177-180(2), 187, 263, 282, 325, 368

gen_DB defined in line 69; used 2 times

- in line 324, 367

gen_DC defined in line 40; used 3 times

- in line 282, 296, 343

gen_DL defined in line 42; used 4 times

- in line 140-141(2), 298, 347

gen_EI defined in line 39; used 3 times

- in line 82-83(2), 295

gen_HO defined in line 58; used 3 times

- in line 229-230(2), 313

gen_IC defined in line 37; used 6 times

- in line 152-153(2), 174-177(3), 293

gen_IM defined in line 36; used 4 times

- in line 79-80(2), 292, 365

gen_IP defined in line 38; used 6 times

- in line 155-156(2), 174-180(3), 294

gen_LI defined in line 71; used 5 times

- in line 133, 141, 270, 326, 369

gen_MI defined in line 64; used 2 times

- in line 199, 319

gen_MS defined in line 65; used 2 times

- in line 201, 320

gen_ND defined in line 57; used 3 times

- in line 207-208(2), 312

gen_NL defined in line 59; used 4 times

- in line 225, 314, 330-332(2)

gen_OS defined in line 67; used 2 times

- in line 322, 340

gen_PC defined in line 55; used 3 times

- in line 287-288(3)

gen_SE defined in line 51; used 3 times

- in line 98-99(2), 307

gen_SG defined in line 73; used 2 times

- in line 328, 353

gen_SO defined in line 50; used 5 times

- in line 95-96(2), 306, 354-357(2)

gen_TE defined in line 49; used 3 times

- in line 253-254(2), 305

gen_TI defined in line 48; used 3 times

- in line 243-244(2), 304

gen_UE defined in line 53; used 3 times

- in line 106-107(2), 309

gen_UG defined in line 72; used 2 times

- in line 327, 355

gen_UP defined in line 54; used 5 times

- in line 220-221(2), 310, 339(2)

gen_US defined in line 52; used 5 times

- in line 103-104(2), 308, 356-359(2)

gen_VE defined in line 47; used 6 times

- in line 255-256(2), 303
- in /usr/src/ucb/window/tth19.c line 196-197(2), 232

gen_VS defined in line 46; used 6 times

- in line 241-242(2), 302
- in /usr/src/ucb/window/tth19.c line 183-184(2), 231

gen_XE defined in line 63; used 8 times

- in line 122-123(2), 318
- in /usr/src/ucb/window/tth19.c line 86-87(2), 234
- in /usr/src/ucb/window/tth29.c line 55-56(2)

gen_XS defined in line 62; used 10 times

- in line 119-120(2), 317, 363
- in /usr/src/ucb/window/tth19.c line 83-84(2), 233, 255
- in /usr/src/ucb/window/tth29.c line 52-53(2)

gen_frame defined in line 18; used 1 times

- in line 379

ospeed defined in line 15; used 1 times

- in line 289

sccsid defined in line 2; never used

#### Defined macros

ANSI_AS defined in line 33; used 1 times

- in line 378

G defined in line 26; used 15 times

- in line 28-31(15)

Last modified: 1987-02-17 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1657 |