Open System Services Programmer's Guide
Example 53 Sending an OSS File to the Guardian Spooler
/* Example: Sending an OSS file to the Guardian Spooler */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cextdecs.h(FILE_OPEN_,FILE_CLOSE_,\
SPOOLSTART, SPOOLCONTROL,\
SPOOLWRITE,SPOOLEND)>
#define MAXLINE 132
short filenum; /* file code number */
short retcode; /* procedure call return code */
char *printer; /* name of printer */
char *pathname; /* name of file to print */
short size; /* number of bytes used in buffer */
FILE *infile; /* input file to be printed */
#ifdef _TNS_E_TARGET || _TNS_R_TARGET
char buffer[MAXLINE]; /* buffer for print line */
#else
char _lowmem buffer[MAXLINE];
#endif
short l3buffer[512]; /* level-3 buffer for spooler,
note that it is not lowmem, even in CISC */
int main(int argc, char *argv[]) {
/* Get the Guardian printer filename and the name of the file to print.*/
if (argc > 1)
printer = argv[1];
else
printer = "$s.#default";
if (argc > 2)
pathname = argv[2];
else
pathname = __FILE__;
if((infile = fopen(pathname, "r")) == 0) {
perror("Can't open file");
printf("File name is %s\n", pathname);
exit(1);
}
retcode = FILE_OPEN_(printer, /* name of Guardian printer */
(short)strlen(printer), /* printer name length */
&filenum, /* file number returned */
2, /* open for write access */
1, /* open for exclusive use */
);
/* Check if open was successful. */
if (retcode != 0) {
fprintf(stderr, "Can't open %s\n", printer);
fprintf(stderr, "retcode = %d\n", retcode);
exit(1);
} /* Call SPOOLSTART to specify the job's attributes. */
/* in NMC, the "16-bit" and "32-bit" level-3 buffers are equivalent
Using the "32-bit" version makes the code work better with CISC C */
retcode = SPOOLSTART(
filenum, /* file number of spooler job file */
, /* old 16-bit level-3 spooler buffer */
Printer I/O 229