bool_t xdr_remote_client_cmd_args (XDR *xdrs, remote_client_cmd_args *objp) { register int32_t *buf; if (!xdr_string (xdrs, &objp->cmdstring, MAX_CMD_LEN)) return FALSE; if (!xdr_stringlist (xdrs, &objp->environment_settings)) return FALSE; if (!xdr_string (xdrs, &objp->identstring, MAX_IDENT_LEN)) return FALSE; if (!xdr_int (xdrs, &objp->run_in_background)) return FALSE; if (!xdr_int (xdrs, &objp->run_in_shell)) return FALSE; if (!xdr_Iu32 (xdrs, &objp->timeout)) return FALSE; if (!xdr_bool (xdrs, &objp->fail_on_timeout)) return FALSE; if (!xdr_bool (xdrs, &objp->workqueueID_flag)) return FALSE; if (!xdr_Iu32 (xdrs, &objp->workqueueID)) return FALSE; if (!xdr_Iu32 (xdrs, &objp->actionresultID)) return FALSE; if (!xdr_int (xdrs, &objp->msglevel)) return FALSE; return TRUE; }
int main () { XDR xdr; stringlist strings; stringentry *entry; FILE *fp; fp = fopen ("test1.out", "w"); xdrstdio_create (&xdr, fp, XDR_ENCODE); strings = malloc (sizeof (struct stringentry)); strings->item = strdup ("hello"); strings->next = malloc (sizeof (struct stringentry)); strings->next->item = strdup ("goodbye"); strings->next->next = NULL; if (!xdr_stringlist (&xdr, &strings)) { fprintf (stderr, "test1: could not encode\n"); exit (1); } xdr_free ((xdrproc_t) xdr_stringlist, (char *) &strings); xdr_destroy (&xdr); fclose (fp); fp = fopen ("test1.out", "r"); xdrstdio_create (&xdr, fp, XDR_DECODE); strings = NULL; if (!xdr_stringlist (&xdr, &strings)) { fprintf (stderr, "test1: could not decode\n"); exit (1); } fclose (fp); for (entry = strings; entry; entry = entry->next) printf ("entry->item = %s\n", entry->item); xdr_free ((xdrproc_t) xdr_stringlist, (char *) &strings); xdr_destroy (&xdr); exit (0); }