#!mkcmd
# $Id: example_rls.m,v 8.14 2012/08/30 14:42:41 ksb Exp $
# An example interface to an RPC base network protocol -- ksb
# Copied from the FreeBSD /usr/share/example/sunrpc/dir directory

require "std_help.m"
require "example_rls-inc,xdr,client.x"

type "rpc_client" named "cl" "server" {
	key 1 {
		2 "DIRPROG" "DIRVERS"
	}
	help "host to read directories from"
}

# realy should be an option, but we follow the example interface -- ksb
left "cl" {
}

every {
	named "Rls"
	help "directory to ls"
}

%c
static void
Rls(dir)
char *dir;
{
	readdir_res *result;
	auto namelist nl;

	/* Call the remote procedure "readdir" on the server
	 */
	result = readdir_1(&dir, cl);
	if ((readdir_res *)0 == result) {
		/* An error occurred while calling the server.
		 * Print error message and die.
		 */
		clnt_perror(cl, server);
		exit(1);
	}

	/* Okay, we successfully called the remote procedure.
	 */
	if (result->ierrno != 0) {
		/* A remote system error occurred.
		 * Print error message and die.
		 */
		errno = result->ierrno;
		perror(dir);
		exit(1);
	}

	/* Successfuly got a directory listing.
	 * Print it out.
	 */
	for (nl = result->readdir_res_u.list; (namelist)0 != nl; nl = nl->next) {
		printf("%s\n", nl->name);
	}
}
