/*
	dirlist_client.c -- ディレクトリの内容を表示するRPCのプログラム(クライアント側)
	Created on: 2006/01/18 20:57:49
*/

#include <stdlib.h>		/* exit() */
#include <stdio.h>		/* printf() */

#include "dirlist.h"

main( int argc, char *argv[] )
{
	if( argc != 3 )
	{
	    fprintf(stderr,"usage: %% %s server_host dir\n", argv[0]);
	    exit( 1 );
	}
	dirlist( argv[1], argv[2] );
}

dirlist(char *host, char *dir)
{
	CLIENT *clnt;
	dirlist_res  *result;
	char *arg;

	clnt = clnt_create (host, DIRLIST_PROG, DIRLIST_VERSION, "tcp");
	if( clnt == NULL )
	{
	    clnt_pcreateerror( host );
	    exit( 1 );
	}

	arg = dir;
	result = dirlist_1( &arg, clnt );
	if( result == NULL )
	{
	    clnt_perror( clnt, "call failed");
	    exit( 1 );
	}
	print_dirlist_res( result );
	xdr_free( (xdrproc_t)xdr_dirlist_res, (char *)result );
	clnt_destroy( clnt );
}

print_dirlist_res( dirlist_res *result )
{
	printf("errno: %d (%s)\n",
	       result->dlr_errno, strerror(result->dlr_errno));
	switch( result->dlr_errno )
	{
	case 0:
	    print_delist( result->dirlist_res_u.dlr_head );
	    break;
	default:
	    break;
	}
}

print_delist( struct delist *del )
{
	if( del == NULL )
	{
	}
	else
	{
	    printf("%s\n",del->del_name );
	    print_delist( del->del_next );
	}
}
