1: #include <stdio.h>
2: #include <sys/types.h>
3: #include <netns/ns.h>
4: #include "Printing3_defs.h"
5: #include <xnscourier/except.h>
6:
7: static FILE *ipfile = NULL;
8:
9: SendSource(bdtconnection)
10: CourierConnection *bdtconnection;
11: {
12: int count;
13: char buffer[SPPMAXDATA];
14:
15: while ( (count = fread(buffer,1,SPPMAXDATA,ipfile)) > 0 &&
16: BDTwrite(bdtconnection,buffer,count) >= 0 )
17: ;
18: if (count <= 0)
19: BDTclosewrite(bdtconnection); /* last packet with EOM set */
20: else
21: BDTabort(bdtconnection);
22: }
23:
24: main(argc, argv)
25: int argc;
26: char *argv[];
27: {
28: PrintResults result;
29: struct xn_addr *destaddr;
30: CourierConnection *conn;
31: extern struct xn_addr *getXNSaddr();
32: char *xnshost;
33: PrintAttributes attributes;
34: PrintOptions options;
35: xnshost = "2-273#2-852-159-207"; /* CornellS2 */
36:
37: /* default to CornellS1 2-273, 2-852-151-014 */
38: /* xnshost = "8E1#00.00.AA.00.5E.E6"; */
39:
40: if ((destaddr = getXNSaddr(xnshost)) == NULL) {
41: fprintf(stderr,"Invalid machine name.\n");
42: }
43:
44: switch (argc) {
45: case 2: if ((ipfile = fopen(argv[1],"r")) != NULL)
46: break; /* got a valid file name */
47: default:
48: fprintf(stderr,"Usage: %s file\n",argv[0]);
49: exit(1);
50: }
51:
52: if ((conn = CourierOpen(destaddr)) == NULL) {
53: fprintf(stderr,"Can't open connection to %s\n",xnshost);
54: exit(1);
55: }
56:
57: attributes.length = 0;
58: options.length = 0;
59:
60: DURING
61: result = Print(conn, SendSource, BulkData1_immediateSource,
62: attributes, options);
63: HANDLER {
64: switch (Exception.Code) {
65: case Busy:
66: fprintf(stderr,"Busy\n");
67: break;
68: case ConnectionError:
69: fprintf(stderr,"Connection error, %d\n",
70: CourierErrArgs(ConnectionErrorArgs,problem));
71: break;
72: case InsufficientSpoolSpace:
73: fprintf(stderr,"Insufficient Spool Space error\n");
74: break;
75: case InvalidPrintParameters:
76: fprintf(stderr,"InvalidPrintParameters error\n");
77: break;
78: case MasterTooLarge:
79: fprintf(stderr,"MasterTooLarge error\n");
80: break;
81: case MediumUnavailable:
82: fprintf(stderr,"MediumUnavailable error\n");
83: break;
84: case ServiceUnavailable:
85: fprintf(stderr,"ServiceUnavailable error\n");
86: break;
87: case SpoolingDisabled:
88: fprintf(stderr,"SpoolingDisabled\n");
89: break;
90: case SpoolingQueueFull:
91: fprintf(stderr,"SpoolingQueueFull error\n");
92: break;
93: case SystemError:
94: fprintf(stderr,"System Error\n");
95: break;
96: case TooManyClients:
97: fprintf(stderr,"TooManyClients error\n");
98: break;
99: case TransferError:
100: fprintf(stderr,"TransferError error\n");
101: break;
102: case Undefined:
103: fprintf(stderr,"Undefined error, number %d\n",
104: CourierErrArgs(UndefinedArgs,problem));
105:
106: case REJECT_ERROR:
107: fprintf(stderr,"REJECT: type = %d\n",
108: CourierErrArgs(rejectionDetails, designator));
109: break;
110: default:
111: fprintf(stderr,"Some random error, code %d\n",
112: Exception.Code);
113: break;
114: }
115: exit(1);
116: } END_HANDLER;
117:
118: /* CourierClose(conn); */
119: /* RETURNS [printRequestID: RequestID] */
120: printf("Done. Request ID %x %x %x %x %x\n",
121: result.printRequestID[0],
122: result.printRequestID[1],
123: result.printRequestID[2],
124: result.printRequestID[3],
125: result.printRequestID[4]);
126: }