[Oberon] Re. PSPrinter.Mod

easlab at absamail.co.za easlab at absamail.co.za
Fri Apr 30 18:06:11 CEST 2004

Peter E. wrote:

> There is a LaserJet III here with an HP PostScript 
> cartridge and PSPrinter is installed in ETH Oberon 
> / PC Native 05.01.2003.  A test page prints correctly 
> but then "PROCESSING DATA" continues until "PS 
> ERROR 16".
> The _PostScript Cartridge User's Guide_ explains the 
> error in section 5.8.b.  Quoting briefly, "The 
> control-D must be the last thing sent to the printer."
> I don't really understand the need for the control-D.
> Apparently the newer printers at the ETH don't impose
> this requirement.  In any case, I added the second of
> these three statements in PSPrinter.Close.
> Files.WriteBytes(printR, buffer, bufSize-srcR.res) UNTIL srcR.eof;
> (* End-of-file signal for a LaserJet III with an HP PostScript cartidge. *) 
> IF ~P.eps THEN Files.Write(printR, 4X) END;  (* P. Easthope, 2004-04-29. *)
> IF ~P.anonymous THEN Printer.Spool(P.printF) END;

Without thinking much about it, my first approach would be:
 if it wants a control-D terminator, then give it one, instead
 of modifying the algorithm/code.

Use the unix approach: filter/modify the data to be as the 
 'consumer' wants, instead of reprogramming the 'consumer'.

Here's a case where this cheap hack approach is not possible:
n-o's email client (ver 2001, falsely: because it's not in the RFC) 
assumes that the server's data will be some thing like:
  "you have 9 messages",
and accordingly extracts the first interger value from the 
received data, (char-string) at this stage.
So when eg. the server says: "NovellNet ver 3.0.4b ...",
the client falsely sets-up for 3 messages.

== Chris Glur

More information about the Oberon mailing list