Annotation of coherent/b/bin/troff/env.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * env.c
                      3:  * Nroff/Troff.
                      4:  * Environments.
                      5:  */
                      6: 
                      7: #include "roff.h"
                      8: 
                      9: /*
                     10:  * Initialize the current environment.
                     11:  * The new environment inherits the values of all
                     12:  * environmental variables which are not initialized here:
                     13:  * this includes fcsz, fpsz, tfn, ufn, ufp.
                     14:  */
                     15: envset()
                     16: {
                     17:        register int inc, i, n;
                     18: 
                     19:        /* Set output line, default font and pointsize, vertical spacing. */
                     20:        tln = lln = (lflag) ? unit(9*SMINCH, SDINCH) : unit(13*SMINCH, 2*SDINCH);
                     21:        setline();
                     22:        curfont = 0;
                     23:        fon[0] = 'R';
                     24:        fon[1] = '\0';
                     25:        if (ntroff == TROFF) {
                     26:                psz = unit(10*SMPOIN, SDPOIN);  /* default point size = 10pt */
                     27:                vls = unit(11*SMPOIN, SDPOIN);  /* default leading 11 on 10 */
                     28:        }
                     29: 
                     30:        /* Set default tab stops. */
                     31:        tab[0].t_pos = 0;
                     32:        tab[0].t_jus = LJUS;
                     33:        inc = n = unit(8*SMINCH, 10*SDINCH);
                     34:        for (i=1; i<TABSIZE-1; i++) {
                     35:                env.e_tab[i].t_pos = n;
                     36:                env.e_tab[i].t_jus = LJUS;
                     37:                n += inc;
                     38:        }
                     39:        tab[TABSIZE-1].t_pos = 0;
                     40:        tab[TABSIZE-1].t_jus = NJUS;
                     41: 
                     42:        /* Set other variables. */
                     43:        adj = FJUS;
                     44:        adm = 1;
                     45:        ccc = '.';
                     46:        cec = 0;
                     47:        csz = 0;
                     48:        enb = 0;
                     49:        fill = 1;
                     50:        hic = EHYP;
                     51:        hyp = 1;
                     52:        hypf = 0;
                     53:        ind = 0;
                     54:        inpltrc = 0;
                     55:        inptrap[0] = '\0';
                     56:        ldc = '.';
                     57:        lgm = (ntroff == NROFF) ? 0 : 1;
                     58:        lmn = 0;
                     59:        lni = 0;
                     60:        lnn = 0;
                     61:        lns = 0;
                     62:        lsp = 1;
                     63:        mar = unit(SMEMSP, SDEMSP);
                     64:        mrc = '\0';
                     65:        mrch = '\0';
                     66:        nbc = '\'';
                     67:        nnc = 0;
                     68:        spcnt = 0;
                     69:        ssz = sszmul = (ntroff == NROFF) ? unit(SMEMSP, SDEMSP)
                     70:                                         : unit(SMEMSP * 12, SDEMSP * 36);
                     71:        sszdiv = psz;   
                     72:        tbc = '\0';
                     73:        tbs = 0;
                     74:        tif = 0;
                     75:        tin = 0;
                     76:        tpc = '%';
                     77:        ulc = 0;
                     78:        oldfon[0] = fon[0];
                     79:        oldfon[1] = fon[1];
                     80:        oldind = ind;
                     81:        oldlln = lln;
                     82:        oldlsp = lsp;
                     83:        oldpsz = psz;
                     84:        oldtln = tln;
                     85:        oldvls = vls;
                     86: }
                     87: 
                     88: /*
                     89:  * Save environment n.
                     90:  */
                     91: envsave(n) int n;
                     92: {
                     93:        lseek(fileno(tmp), (long) n * sizeof (ENV), 0);
                     94:        if (write(fileno(tmp), &env, sizeof (env)) != sizeof (env))
                     95:                panic("cannot write environment");
                     96: }
                     97: 
                     98: /*
                     99:  * Restore environment n.
                    100:  * Bug: in troff, restoring a saved environment does not set
                    101:  * fpsz[n] for a font n loaded in the new environment.
                    102:  */
                    103: envload(n) int n;
                    104: {
                    105:        lseek(fileno(tmp), (long) n * sizeof (ENV), 0);
                    106:        if (read(fileno(tmp), &env, sizeof (env)) != sizeof (env))
                    107:                panic("cannot read environment");
                    108:        dev_font(curfont);
                    109: }
                    110: 
                    111: /* end of env.c */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.