This is ps3270_main.m in view mode; [Download] [Up]
/* * Copyright (C) 1990 The Board of Trustees of The Leland Stanford Junior University. * All Rights Reserved. * Transparent mode command on NeXT for tn3270 * Not to be directly called from shell. * Specify 'ps3270' as tn3270 '-t' option. e.g. 'tn3270 -t ps3270 hostname' * Requires tn3270 4.1.1 or later, which was NOT supplied with NeXTOS 1.0!, but * you can get it from the usual sources. * * ps3270 captures PostScript to a temporary file, * then messages Preview on a NeXT * by Paul Kunz, pfkeb@ebnextk.slac.stanford.edu or pfkeb@slacvm.bitnet * Stanford Linear Accelerator Center 1/90 */ #include <stdio.h> #include <stdlib.h> #include <strings.h> #import <appkit/Listener.h> #import <appkit/Speaker.h> char *mktemp(char *template); int read( int d, char *buf, int nbytes); int write( int d, char *buf, int nbytes); void main(int argc, char *argv[]) { id aSpeaker; port_t ws_port; char fnameo[] = "/tmp/psoXXXXXX"; char psname[] = "/tmp/psoXXXXXX.ps"; char inbuf[BUFSIZ]; int c, irc; int returnOk; FILE *fopen(), *fpo; (void) mktemp(fnameo); if ((fpo = fopen(fnameo, "w")) == NULL) { exit(EXIT_FAILURE); } /* endless read loop until tn3270 closes pipe */ while ((c = read(fileno(stdin), inbuf, sizeof(inbuf))) != 0) { if (c > 0) { write(fileno(fpo), inbuf, c); } } (void) fclose(fpo); (void) strcpy(psname,fnameo); (void) strcat(psname,".ps" ); irc = rename(fnameo,psname); aSpeaker = [Speaker new]; ws_port = NXPortFromName(getenv(NX_WORKSPACEREQUEST), NULL); if ( ws_port == PORT_NULL ) fprintf(stderr, "ps3270: error in attempting to find Workspace\n" ); [aSpeaker setSendPort:ws_port]; irc = [aSpeaker openTempFile:psname ok:&returnOk]; [aSpeaker free]; exit(EXIT_SUCCESS); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.