SUMMARY: printing escape codes

From: Karen T. Thomas Connecticut State University System <kthomas_at_dilbert.sysoff.ctstateu.edu>
Date: Mon, 15 Apr 1996 16:14:35 -0400

I originally asked:

> I am porting people from a VMS environment where they have access
> to a DCL command procedure to print to their local printer when telneting
> in over a modem. The procedure prints to sys$output escape codes, then types
> the file. This works great on VMS but want to know how to implement this
> same procedure on DU? Does anyone know the best way for a user to print
> a file to a printer directly attached to their PC when they are telneting
> in from home?

Here were the **many** different ways to do it.
        
         ( I used the perl script - Thanks Paul!)

Paul A Sand <pas_at_unh.edu>:


I've written the following Perl script for our users (stealing the idea
from the Lynx C source code, so no claims to brilliance here...).

I use it while telnetting in from home myself...

---snip---
#!/usr/bin/perl
#
# lpansi -- allows printing of files (or stdin) from ``any VT100
# or ANSI''. Based on a C program in the lynx distribution
# by ``Gary Day, 11/30/93''. Saith Gary,
#
# Hey, it doesn't have to be complicated to be useful.
#
# ... and he's quite correct.
#


print "\033[5i";
while (<>) {
    print;
    if (eof) { # formfeed after each file
        print "\n\f";
    }
}
print "\033[4i";

---snip---

One can use this program as

    % lpansi file...

or

    % prog | lpansi


-----------------------------------------------------------------------------
Other responses that I didn't use but were helpful for future: (Thanks!)
-----------------------------------------------------------------------------

Jon Trulson <trulsonj_at_mscd.edu>:
- -----
#!/bin/ksh
# print out all files to local printer
#
PSTART="\033[5i" # the \033 is octal for the ESC char
PSTOP="\033[4i"

echo $PSTART
cat $* # output all files in the cmd line
echo $PSTOP

exit

--------------------------------------------------------------

Thomas Erskine <tom_at_silverlock.dgim.doc.ca>:

   ESC="^["; export ESC # get a real escape character in there
   FF="^L"; export FF # get a real form-feed character there
   echo -n "${ESC}[5i"
   cat file
   echo "${FF}${ESC}[4i"

----------------------------------------------------------------

"Eric Wyn Jones (01248-382407)" <e.w.jones_at_bangor.ac.uk>:

Hi Karen - if you have a C compiler then this might do the trick for you ...
Compile with
 cc -o pcprint pcprint.c
then
 pcprint filename
============================================================================
cut here
============================================================================


#include <stdio.h>
#include <stdlib.h>
main(int argc, char **argv)
{
        int status;
        char on[6]={27,'[','5','i','',0};
        char off[5]={27,'[','4','i',0};
        FILE *pf=NULL;
        char ch;
        if (argc < 2) {
           printf("Usage : pcprint <file>");
           exit(1);
        };
        if ((pf=fopen(argv[1],"r"))==NULL) {
                fprintf(stderr,"pcprint: Can't open file %s\n",argv[1]);
                perror("pcprint");
                exit(1);
                }
        status=fputs(on,stdout);

        if (status == EOF)
        {
            fprintf(stderr,"pcprint: Error while turning printer on");
            perror("pcprint");
            exit(1);
        }
        while ((ch=fgetc(pf))!=EOF) {
                   putc(ch,stdout);
         } /* end while */
        status=fputs(off,stdout);
        if (status == EOF)
        {
            fprintf(stderr,"pcprint: Error while turning printer off");
            perror("pcprint");
        }
        fclose(pf);
        exit(0);
}

-----------------------------------------------------------------
"USA::US0A20::CJS35102" <CJS35102%USA.US0A20.decnet_at_usav01.glaxo.com>:

#!/bin/sh
echo "\033[5i"
cat $1
echo "\f\033[4i"

(Add the "\c" to the end of the [5i to prevent the extra line from being added.

-------------------------------------------------------------------

mperlman_at_parsec.com (Mark Perlman):

> $ write sys$output esc, "[5i" <--- How would I do this in DU?

# Type the following:
echo "<CTRL>v<ESC>[5i" # this will do the trick!

# What will actually be displayed will look like this:
echo "


Included message follows...

-------------------------------------------------------------------

rwa_at_cs.athabascau.ca (Ross Alexander):

> $ esc [0,7] = 27 <--- How would I do this in DU?

in /bin/sh, from the keyboard:

esc='^V^]' (that's control-v esc)

>From inside a script, you don't need the ^V.

> $ write sys$output esc, "[5i" <--- How would I do this in DU?

echo ${esc}"[5i" (no spaces)

-----------------------------------------------------------------------
-
Received on Mon Apr 15 1996 - 22:47:27 NZST

This archive was generated by hypermail 2.4.0 : Wed Nov 08 2023 - 11:53:46 NZDT