11905Swollman/* @(#)rprintmsg.c	2.1 88/08/11 4.0 RPCSRC */
21905Swollman/*
31905Swollman * rprintmsg.c: remote version of "printmsg.c"
41905Swollman */
51905Swollman#include <stdio.h>
61905Swollman#include <rpc/rpc.h>		/* always need this */
71905Swollman#include "msg.h"		/* need this too: will be generated by rpcgen*/
81905Swollman
91905Swollmanmain(argc, argv)
101905Swollman	int argc;
111905Swollman	char *argv[];
121905Swollman{
131905Swollman	CLIENT *cl;
141905Swollman	int *result;
151905Swollman	char *server;
161905Swollman	char *message;
171905Swollman
181905Swollman	if (argc < 3) {
191905Swollman		fprintf(stderr, "usage: %s host message\n", argv[0]);
201905Swollman		exit(1);
211905Swollman	}
221905Swollman
231905Swollman	/*
241905Swollman	 * Remember what our command line arguments refer to
251905Swollman	 */
261905Swollman	server = argv[1];
271905Swollman	message = argv[2];
281905Swollman
291905Swollman	/*
301905Swollman	 * Create client "handle" used for calling MESSAGEPROG on the
311905Swollman	 * server designated on the command line. We tell the rpc package
321905Swollman	 * to use the "tcp" protocol when contacting the server.
331905Swollman	 */
341905Swollman	cl = clnt_create(server, MESSAGEPROG, MESSAGEVERS, "tcp");
351905Swollman	if (cl == NULL) {
361905Swollman		/*
371905Swollman		 * Couldn't establish connection with server.
381905Swollman		 * Print error message and die.
391905Swollman		 */
401905Swollman		clnt_pcreateerror(server);
411905Swollman		exit(1);
421905Swollman	}
438875Srgrimes
441905Swollman	/*
451905Swollman	 * Call the remote procedure "printmessage" on the server
461905Swollman	 */
471905Swollman	result = printmessage_1(&message, cl);
481905Swollman	if (result == NULL) {
491905Swollman		/*
508875Srgrimes		 * An error occurred while calling the server.
511905Swollman	 	 * Print error message and die.
521905Swollman		 */
531905Swollman		clnt_perror(cl, server);
541905Swollman		exit(1);
551905Swollman	}
561905Swollman
571905Swollman	/*
581905Swollman	 * Okay, we successfully called the remote procedure.
591905Swollman	 */
601905Swollman	if (*result == 0) {
611905Swollman		/*
628875Srgrimes		 * Server was unable to print our message.
631905Swollman		 * Print error message and die.
641905Swollman		 */
658875Srgrimes		fprintf(stderr, "%s: sorry, %s couldn't print your message\n",
668875Srgrimes			argv[0], server);
671905Swollman		exit(1);
688875Srgrimes	}
691905Swollman
701905Swollman	/*
711905Swollman	 * The message got printed on the server's console
721905Swollman	 */
731905Swollman	printf("Message delivered to %s!\n", server);
741905Swollman}
75