/****************************************************************************** * $Id: xdr_decode_c.c,v 1.2 1994/01/05 15:30:42 courtel Exp $ * * Kind: C test program * Abstract: Mix C and Ada program using XDR coding for data * * Copyright 1990,1993 Centre d'Etudes de la Navigation Aerienne (CENA) ******************************************************************************/ #include #include "xdr_types.h" main() { XDR xdrs; char buf[1024]; struct product val[10]; struct product *ptr = val; u_int length = 0; double ada_price; client_list clients; int i; xdrmem_create(&xdrs, buf, 1024, XDR_DECODE); read (0, buf, 1024); if (!xdr_array (&xdrs, &ptr, &length, 10, sizeof(struct product), xdr_product)) { fprintf(stderr, "xdr_decode : xdr_array failed\n"); exit(1); } if (!xdr_client_list (&xdrs, &clients)) { fprintf(stderr, "xdr_decode : xdr_client_list failed\n"); exit(1); } printf("\n"); for (i = 0; i < length; i++) { printf ("%s : $%8.2f (%6.2f %s).\n", val[i].name, (double)val[i].cost / PRICE_COEF, (val[i].form == SOLID) ? val[i].how_much.weight : val[i].how_much.volume, (val[i].form == SOLID) ? "kilograms" : "liters"); printf ("Stock = %4d units; last sellings = %4d%4d%4d\n", val[i].quantity, val[i].last_sellings[0], val[i].last_sellings[1], val[i].last_sellings[2]); printf ("Supplier phone : %s\n\n", val[i].from->phone); } printf ("Client identifier list : "); while (clients != NULL) { printf ("%3d", clients->id); clients = clients->next; } printf ("\n\n"); exit(0); }