Annotation of cci/usr/src/usr.bin/bsc/cmd/3270/emprint.c, revision 1.1.1.1

1.1       root        1: /*     D.L.Buck and Associates, Inc. - May, 1984
                      2:  *
                      3:  *     COPYRIGHT NOTICE:
                      4:  *             Copyright c 1984 - An unpublished work by
                      5:  *             D.L.Buck and Associates, Inc.
                      6:  *
                      7:  *     PROPRIETARY RIGHTS NOTICE:
                      8:  *             All rights reserved. This document and program contains
                      9:  *             proprietary information of D.L.Buck and Associates,Inc.
                     10:  *             of San Jose, California, U.S.A., embodying confidential
                     11:  *             information,  ideas, and expressions,  no part of which
                     12:  *             may be reproduced, or transmitted in any form or by any
                     13:  *             means,  electronic,  mechanical,  or otherwise, without
                     14:  *             the written permission of D.L.Buck and Associates, Inc.
                     15:  * NAME
                     16:  *     emprint
                     17:  *
                     18:  * SYNOPSIS
                     19:  *     emprint()
                     20:  *
                     21:  * DESCRIPTION
                     22:  *     do print processing - called from emulate()
                     23:  *
                     24:  * ALGORITHM
                     25:  *     I. Initialize everything
                     26:  *     II. Open file or process
                     27:  *     III. Get print format
                     28:  *             A. logical 'and' write control character with print format
                     29:  *                masks to determine line length --
                     30:  *                   40, 64, 80 words per line or variable length lines
                     31:  *     IV. Set characters printed counter to 0
                     32:  *     V. Print the screen image on the file or process
                     33:  *             A. For each character on the screen, if it isn't
                     34:  *                an invisible character, an attribute, or a null:
                     35:  *                     a. put it in the file or process
                     36:  *                     b. if counter indicates end of line, output
                     37:  *                        a newline character and reset the counter
                     38:  *     VI. Close the file or process
                     39:  */
                     40: static char s_emprint[] = "@(#)emprint.c       1.7 REL";
                     41: #include <em.h>
                     42: 
                     43: extern char ptype;
                     44: extern char pr_dest[];
                     45: 
                     46: emprint(as_is)
                     47: int as_is;     /* 1= print as is; 0= insert newlines every 80 characters
                     48:                   if a newline hasn't been encountered before then */
                     49: {
                     50:        register FILE *prptr;   /* FILE to use for printing */
                     51:        FILE *fopen(),*popen();
                     52:        register int pfmt;      /* print format : variable length
                     53:                                          40 chars
                     54:                                          64 chars
                     55:                                          80 chars      */
                     56:        register char *bufptr;  /* buffer pointer */
                     57:        register int *xrefptr;  /* cross-ref pointer */
                     58:        int chrctr;             /* character count */
                     59:        register int i;
                     60: 
                     61:        updstat (status | PRTR_BUSY);
                     62: /* open file or process */
                     63:        if (ptype == 'p')
                     64:                prptr = popen(pr_dest,"w");
                     65:        else
                     66:                prptr = fopen(pr_dest,"a");
                     67:        if (prptr == (FILE *)0) {
                     68:                wclear(cmd_scr);
                     69:                mvwaddstr(cmd_scr,0,0,"em3277: can't print to ");
                     70:                waddstr(cmd_scr,pr_dest);
                     71:                wrefresh(cmd_scr);
                     72:                updstat ( (status | PRTR_NW) & ~ PRTR_BUSY);
                     73:                return;
                     74:        }
                     75: /* determine print format */
                     76:        if ((wcc & WCCPRFMT) == WCCPRVAR)       {
                     77:                if (as_is)
                     78:                        pfmt = 132;
                     79:                else
                     80:                        pfmt = 80;
                     81:        }
                     82:        else if ((wcc & WCCPRFMT) == WCCPR40)
                     83:                pfmt = 40;
                     84:        else if ((wcc & WCCPRFMT) == WCCPR64)
                     85:                pfmt = 64;
                     86:        else if ((wcc & WCCPRFMT) == WCCPR80)
                     87:                pfmt = 80;
                     88:        
                     89:        chrctr = 0;
                     90: 
                     91:        for (bufptr = scrn_image, xrefptr = scrn_xref;
                     92:             bufptr <= &scrn_image[MAXSCREENSIZE-1];
                     93:             ++bufptr,++xrefptr) {
                     94:                if (!(invis_attr(fldattr[*xrefptr])) &&
                     95:                    *bufptr != (char)ATTRCODE && 
                     96:                    *bufptr != '\0')                    
                     97:                        fputc(*bufptr,prptr);
                     98:                else
                     99:                        fputc(' ',prptr);
                    100: 
                    101:                if (++chrctr >= pfmt) {
                    102:                        chrctr = 0;
                    103:                        fputc('\n',prptr);
                    104:                }
                    105:        }
                    106: 
                    107: /* close file or process */
                    108:        updstat (status & ~PRTR_BUSY);
                    109:        if (ptype == 'p')
                    110:                pclose(prptr);
                    111:        else
                    112:                fclose(prptr);
                    113: }

unix.superglobalmegacorp.com

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