123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- MODULE RAWPrinter; (** AUTHOR "dk"; PURPOSE "Printing Raw to Port 9100"; *)
- IMPORT Files, Streams, IP, TCP, DNS;
- CONST
- DefConPort = 9100;
- (*Errors*)
- FILENOTFOUND = -1;
- HOSTNOTFOUND = -2;
- READERNIL = -3;
- OK = 0;
- PROCEDURE PrintFile*(CONST printer, fn: ARRAY OF CHAR; VAR res : WORD);
- VAR
- fileReader : Files.Reader;
- file : Files.File;
- BEGIN
- file := Files.Old(fn);
- IF (file # NIL) THEN
- Files.OpenReader(fileReader, file, 0);
- PrintStream(printer, fileReader, res);
- ELSE
- res := FILENOTFOUND;
- END;
- END PrintFile;
- PROCEDURE PrintStream*(CONST printer : ARRAY OF CHAR; reader : Streams.Reader; VAR res : WORD);
- VAR
- writer: Streams.Writer;
- buf : ARRAY 10000 OF CHAR;
- conn : TCP.Connection;
- fadr: IP.Adr;
- connres: WORD; len : LONGINT;
- BEGIN
- DNS.HostByName(printer, fadr, connres);
- IF res = DNS.Ok THEN
- NEW(conn); conn.Open(TCP.NilPort, fadr, DefConPort, connres);
- Streams.OpenWriter(writer, conn.Send);
- IF connres = TCP.Ok THEN
- IF reader # NIL THEN
- WHILE reader.res = Streams.Ok DO
- reader.Bytes(buf, 0, LEN(buf), len);
- writer.Bytes(buf, 0, len);
- END;
- writer.Update();
- conn.Close();
- res := OK;
- ELSE
- res := READERNIL;
- END;
- ELSE
- res := HOSTNOTFOUND;
- END;
- END;
- END PrintStream;
- END RAWPrinter.
- Usage:
- PROCEDURE PrintTest1*();
- VAR
- res : WORD;
- BEGIN
- RAWPrinter.PrintFile("129.132.134.122", "test.ps", res);
- KernelLog.String("Printing res : "); KernelLog.Int(res, 5); KernelLog.Ln;
- END PrintTest1;
- PROCEDURE PrintTest2*();
- VAR
- file : Files.File;
- res : WORD;
- reader : Files.Reader;
- BEGIN
- file := Files.Old("test.ps");
- Files.OpenReader(reader, file, 0);
- RAWPrinter.PrintStream("129.132.134.122", reader,res);
- KernelLog.String("Printing res : "); KernelLog.Int(res, 5); KernelLog.Ln;
- END PrintTest2;
|