[comp.unix.ultrix] termcap entries for LN03's

grr@cbmvax.UUCP (George Robbins) (03/31/89)

In article <980@lgnp1.LS.COM> vskahan@lgnp1.LS.COM (Vince Skahan) writes:
> 
> does anyone know how to kick a LN03 into 132 character lanscape
> mode and back to "normal" from Ultrix ??? We have a VMS procedure
> that prints a file containing the proper escape sequences to do the
> trick from VMS systems...but you need to print with a /PASSALL (I think)
> flag to pass the escape characters to the printer...

We use this dumb little filter to set rational margins for both portrait
and landscape printouts.  It prepends the appropriate escape codes to
set portrait or landscape mode and appends the command to reset the
default settings.

Usage:

ln03 -P filename | lpr		- or -		pr filename | ln03 -P | lpr
ln03 -L filename | lpr		- or -		pr filename | ln03 -L | lpr

I once made up versions for Imagen and some other printer, but it's
all pretty much the same.  Orginally there were going to be options
to set mode/margins/whatnot, but the -L/-P "macro" switches seemed to
be adequate...

#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	ln03.c
# This archive created: Fri Mar 31 01:16:20 1989
export PATH; PATH=/bin:$PATH
if test -f 'ln03.c'
then
	echo shar: will not over-write existing file "'ln03.c'"
else
sed 's/^X//' << \SHAR_EOF > 'ln03.c'
X#include <stdio.h>
X
Xint	didfile;
X
Xmain(argc,argv)
X	int	argc;
X	char	*argv[];
X{
X	int	argn;
X
X	didfile = 0;
X	for (argn = 1; argn < argc; )
X		argn = doarg(argc, argv, argn);
X	if (didfile == 0)
X		dostdin();
X	printf("\033[!p");
X	fflush(stdout);
X}
X
Xint
Xdoarg(argc, argv, argn)
X	int	argc;
X	char	*argv[];
X	int	argn;
X{
X	char	*argp;
X	char	argl;
X
X	argp = argv[argn++];
X	if (*argp++ != '-') {
X		dofile(--argp);
X		didfile++;
X	} else
X		while(argl = *argp++)
X			argn = doswitch(argc, argv, argn, argl);
X	return(argn);
X}
X
Xint
Xdoswitch(argc, argv, argn, argl)
X	int	argc;
X	char	*argv;
X	int	argn;
X	char	argl;
X{
X	int	targ;
X
X	switch(argl) {
X	case 'L':
X		printf("\033[?21 J\033[15m\033[5;255s\015");
X		break;
X	case 'P':
X		printf("\033[?20 J\033[12m\033[13;255s\015");
X		break;
X	case 'M':
X		printf("\033[10;255s");
X		break;
X	case 'l':
X	case 'p':
X	default:
X		fprintf(stderr,"invalid switch -%c\n",argl);
X	}
X	return(argn);
X}
X
Xint
Xdofile(argp)
X	char	*argp;
X{
X	FILE	*input;
X	int	c;
X
X	if (input = fopen(argp, "r")) {
X		while ((c = fgetc(input)) != EOF)
X			putchar(c);
X		fclose(input);
X	} else
X		fprintf(stderr,"can't open %s\n",argp);
X}
X
Xdostdin()
X{
X	int	c;
X	while ((c = getchar()) != EOF)
X		putchar(c);
X}
X
SHAR_EOF
fi # end of overwriting check
#	End of shell archive
exit 0
-- 
George Robbins - now working for,	uucp: {uunet|pyramid|rutgers}!cbmvax!grr
but no way officially representing	arpa: cbmvax!grr@uunet.uu.net
Commodore, Engineering Department	fone: 215-431-9255 (only by moonlite)

avolio@decuac.dec.com (Frederick M. Avolio) (03/31/89)

If you want the whole printout to be in landscape the filter that comes
with ULTRIX understands to do that when you give it a width = 132

	lpr -w132 filename