/* dirlist_client.c -- ディレクトリの内容を表示するRPCのプログラム(クライアント側) Created on: 2006/01/18 20:57:49 */ #include /* exit() */ #include /* 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 ); } }