123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- #define __FORCE_GLIBC__
- #include <features.h>
- #include <rpc/types.h>
- #include <stdio.h>
- #include <rpc/xdr.h>
- static bool_t xdrstdio_getlong();
- static bool_t xdrstdio_putlong();
- static bool_t xdrstdio_getbytes();
- static bool_t xdrstdio_putbytes();
- static u_int xdrstdio_getpos();
- static bool_t xdrstdio_setpos();
- static int32_t *xdrstdio_inline();
- static void xdrstdio_destroy();
- static struct xdr_ops xdrstdio_ops = {
- xdrstdio_getlong,
- xdrstdio_putlong,
- xdrstdio_getbytes,
- xdrstdio_putbytes,
- xdrstdio_getpos,
- xdrstdio_setpos,
- xdrstdio_inline,
- xdrstdio_destroy
- };
- void xdrstdio_create(xdrs, file, op)
- register XDR *xdrs;
- FILE *file;
- enum xdr_op op;
- {
- xdrs->x_op = op;
- xdrs->x_ops = &xdrstdio_ops;
- xdrs->x_private = (caddr_t) file;
- xdrs->x_handy = 0;
- xdrs->x_base = 0;
- }
- static void xdrstdio_destroy(xdrs)
- register XDR *xdrs;
- {
- (void) fflush((FILE *) xdrs->x_private);
-
- };
- static bool_t xdrstdio_getlong(xdrs, lp)
- XDR *xdrs;
- register long *lp;
- {
- if (fread((caddr_t) lp, sizeof(long), 1, (FILE *) xdrs->x_private) !=
- 1) return (FALSE);
- #ifndef mc68000
- *lp = ntohl(*lp);
- #endif
- return (TRUE);
- }
- static bool_t xdrstdio_putlong(xdrs, lp)
- XDR *xdrs;
- long *lp;
- {
- #ifndef mc68000
- long mycopy = htonl(*lp);
- lp = &mycopy;
- #endif
- if (fwrite((caddr_t) lp, sizeof(long), 1, (FILE *) xdrs->x_private) !=
- 1) return (FALSE);
- return (TRUE);
- }
- static bool_t xdrstdio_getbytes(xdrs, addr, len)
- XDR *xdrs;
- caddr_t addr;
- u_int len;
- {
- if ((len != 0)
- && (fread(addr, (int) len, 1, (FILE *) xdrs->x_private) != 1))
- return (FALSE);
- return (TRUE);
- }
- static bool_t xdrstdio_putbytes(xdrs, addr, len)
- XDR *xdrs;
- caddr_t addr;
- u_int len;
- {
- if ((len != 0)
- && (fwrite(addr, (int) len, 1, (FILE *) xdrs->x_private) != 1))
- return (FALSE);
- return (TRUE);
- }
- static u_int xdrstdio_getpos(xdrs)
- XDR *xdrs;
- {
- return ((u_int) ftell((FILE *) xdrs->x_private));
- }
- static bool_t xdrstdio_setpos(xdrs, pos)
- XDR *xdrs;
- u_int pos;
- {
- return ((fseek((FILE *) xdrs->x_private, (long) pos, 0) < 0) ?
- FALSE : TRUE);
- }
- static int32_t *xdrstdio_inline(xdrs, len)
- XDR *xdrs;
- u_int len;
- {
-
- return (NULL);
- }
|