1*86d7f5d3SJohn Marino /* @(#)rprintmsg.c 2.1 88/08/11 4.0 RPCSRC */
2*86d7f5d3SJohn Marino /*
3*86d7f5d3SJohn Marino * rprintmsg.c: remote version of "printmsg.c"
4*86d7f5d3SJohn Marino */
5*86d7f5d3SJohn Marino #include <stdio.h>
6*86d7f5d3SJohn Marino #include <rpc/rpc.h> /* always need this */
7*86d7f5d3SJohn Marino #include "msg.h" /* need this too: will be generated by rpcgen*/
8*86d7f5d3SJohn Marino
main(argc,argv)9*86d7f5d3SJohn Marino main(argc, argv)
10*86d7f5d3SJohn Marino int argc;
11*86d7f5d3SJohn Marino char *argv[];
12*86d7f5d3SJohn Marino {
13*86d7f5d3SJohn Marino CLIENT *cl;
14*86d7f5d3SJohn Marino int *result;
15*86d7f5d3SJohn Marino char *server;
16*86d7f5d3SJohn Marino char *message;
17*86d7f5d3SJohn Marino
18*86d7f5d3SJohn Marino if (argc < 3) {
19*86d7f5d3SJohn Marino fprintf(stderr, "usage: %s host message\n", argv[0]);
20*86d7f5d3SJohn Marino exit(1);
21*86d7f5d3SJohn Marino }
22*86d7f5d3SJohn Marino
23*86d7f5d3SJohn Marino /*
24*86d7f5d3SJohn Marino * Remember what our command line arguments refer to
25*86d7f5d3SJohn Marino */
26*86d7f5d3SJohn Marino server = argv[1];
27*86d7f5d3SJohn Marino message = argv[2];
28*86d7f5d3SJohn Marino
29*86d7f5d3SJohn Marino /*
30*86d7f5d3SJohn Marino * Create client "handle" used for calling MESSAGEPROG on the
31*86d7f5d3SJohn Marino * server designated on the command line. We tell the rpc package
32*86d7f5d3SJohn Marino * to use the "tcp" protocol when contacting the server.
33*86d7f5d3SJohn Marino */
34*86d7f5d3SJohn Marino cl = clnt_create(server, MESSAGEPROG, MESSAGEVERS, "tcp");
35*86d7f5d3SJohn Marino if (cl == NULL) {
36*86d7f5d3SJohn Marino /*
37*86d7f5d3SJohn Marino * Couldn't establish connection with server.
38*86d7f5d3SJohn Marino * Print error message and die.
39*86d7f5d3SJohn Marino */
40*86d7f5d3SJohn Marino clnt_pcreateerror(server);
41*86d7f5d3SJohn Marino exit(1);
42*86d7f5d3SJohn Marino }
43*86d7f5d3SJohn Marino
44*86d7f5d3SJohn Marino /*
45*86d7f5d3SJohn Marino * Call the remote procedure "printmessage" on the server
46*86d7f5d3SJohn Marino */
47*86d7f5d3SJohn Marino result = printmessage_1(&message, cl);
48*86d7f5d3SJohn Marino if (result == NULL) {
49*86d7f5d3SJohn Marino /*
50*86d7f5d3SJohn Marino * An error occurred while calling the server.
51*86d7f5d3SJohn Marino * Print error message and die.
52*86d7f5d3SJohn Marino */
53*86d7f5d3SJohn Marino clnt_perror(cl, server);
54*86d7f5d3SJohn Marino exit(1);
55*86d7f5d3SJohn Marino }
56*86d7f5d3SJohn Marino
57*86d7f5d3SJohn Marino /*
58*86d7f5d3SJohn Marino * Okay, we successfully called the remote procedure.
59*86d7f5d3SJohn Marino */
60*86d7f5d3SJohn Marino if (*result == 0) {
61*86d7f5d3SJohn Marino /*
62*86d7f5d3SJohn Marino * Server was unable to print our message.
63*86d7f5d3SJohn Marino * Print error message and die.
64*86d7f5d3SJohn Marino */
65*86d7f5d3SJohn Marino fprintf(stderr, "%s: sorry, %s couldn't print your message\n",
66*86d7f5d3SJohn Marino argv[0], server);
67*86d7f5d3SJohn Marino exit(1);
68*86d7f5d3SJohn Marino }
69*86d7f5d3SJohn Marino
70*86d7f5d3SJohn Marino /*
71*86d7f5d3SJohn Marino * The message got printed on the server's console
72*86d7f5d3SJohn Marino */
73*86d7f5d3SJohn Marino printf("Message delivered to %s!\n", server);
74*86d7f5d3SJohn Marino }
75