This is abpp.c in view mode; [Download] [Up]
/* * $Author: cck $ $Date: 88/02/22 09:33:24 $ * $Header: abpp.c,v 1.5 88/02/22 09:33:24 cck Rel $ * $Revision: 1.5 $ */ /* * abpp - Unix Printer Access Protocol calls * * A set of routines which emulate the unix read/write calls. * The calls are always synchronous. * * Note: these aren't much use unless you fork off since * a blocking read will pretty much kill you * * * AppleTalk package for UNIX (4.2 BSD). * * Copyright (c) 1986, 1987 by The Trustees of Columbia University in the * City of New York. * * Edit History: * * July 5, 1986 CCKim Created. * */ #include <stdio.h> #include <sys/types.h> #include <netat/appletalk.h> /* * ppopen * * open pap socket * * note: does not return until connection is opened. * */ int ppopen(cno, lwname, flowq, pstatus) int *cno; char *lwname; int flowq; int (*pstatus)(); { int err; PAPStatusRec statusbuff; int rcomp; while ((err = PAPOpen(cno, lwname, flowq, &statusbuff, &rcomp)) != noErr) { (*pstatus)(&statusbuff.StatusStr[1]); sleep(5); /* wait five seconds */ } do { abSleep(4*5, TRUE); /* wait 2 seconds */ (*pstatus)(&statusbuff.StatusStr[1]); } while (rcomp > 0); return(rcomp); } /* * ppread * * Read from the LaserWriter * * Note: buf is assume to be PAPSegSize * flowquantum returned by the * laserWriter. To be safe, use 512 (PAPSegSize) * 8 (the maximum flow * quantum) * * returns number of bytes or zero to indicate eof * */ ppread(cno, buf) int cno; char *buf; { int rcomp; int rlen; static int eof = 0; int err; if (eof) /* check for eof on previous call */ return(0); do { if ((err = PAPRead(cno, buf, &rlen, &eof, &rcomp)) != noErr) return(err); do { abSleep(4, TRUE); } while (rcomp > 0); if (rcomp > 0) return(rcomp); } while (rlen == 0 && !eof); if (eof && rlen == 0) return(0); /* zero length indicates eof */ return(rlen); } /* * ppwrite - write to laserWriter * * eof - true if we are to send eof to the laserwriter * */ ppwrite(cno, buf, blen, eof) int cno; char *buf; int blen; { int wcomp; int err; err = PAPWrite(cno, buf, blen, eof, &wcomp); /* send eof */ if (err != noErr) return(err); do { abSleep(4, TRUE); } while (wcomp > 0); return(err); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.