return to first page linux journal archive
keywordscontents

Listing 4.

#include "avg.h"
#include <stdlib.h>

void
averageprog_1( char* host, int argc, char *argv[])
{
   CLIENT *clnt;
   double  *result_1, *dp, f;
      char *endptr;
      int i;
   input_data  average_1_arg;
     average_1_arg.input_data.input_data_val = 
     (double*) malloc(MAXAVGSIZE*sizeof(double));
     dp = average_1_arg.input_data.input_data_val;
     average_1_arg.input_data.input_data_len = 
         argc - 2;
      for (i=1;i<=(argc - 2);i++) {
        f = strtod(argv[i+1],&endptr);
        printf("value   = %e\n",f);
        *dp = f;
        dp++;
      }
   clnt = clnt_create(host, AVERAGEPROG, 
	AVERAGEVERS, "udp");
   if (clnt == NULL) {
      clnt_pcreateerror(host);
      exit(1);
   }
   result_1 = average_1(&average_1_arg, clnt);
   if (result_1 == NULL) {
      clnt_perror(clnt, "call failed:");
   }
   clnt_destroy( clnt );
      printf("average = %e\n",*result_1);
}


main( int argc, char* argv[] )
{
   char *host;

   if(argc < 3) {
     printf(
      "usage: %s server_host value ...\n",
      argv[0]);
      exit(1);
   }
        if(argc > MAXAVGSIZE + 2) {
          printf("Two many input values\n");
          exit(2);
        }
   host = argv[1];
   averageprog_1( host, argc, argv);
}