Use our own xdr_int64() for all 64 bit types.
[deb_libnfs.git] / nfs / Makefile.am
index 50523690069b886f5dbbdb5afc1f90db89407840..51b8d928fb0fcd9b6ea2df2217c79a98d5ff5c7b 100644 (file)
@@ -15,6 +15,34 @@ $(nfs_GENERATED) : nfs-stamp
 nfs-stamp : nfs.x
        rm -f $(nfs_GENERATED)
        rpcgen -h @RPCGENFLAGS@ $< > libnfs-raw-nfs.h
-       rpcgen -c @RPCGENFLAGS@ $< | sed -e "s/#include \".*nfs.h\"/#include \"libnfs-raw-nfs.h\"/" > libnfs-raw-nfs.c
+       rpcgen -c @RPCGENFLAGS@ $< | sed -e "s/#include \".*nfs.h\"/#include \"libnfs-raw-nfs.h\"/" -e "s/^xdr_uint64/static xdr_uint64_broken/" > libnfs-raw-nfs.c
+       echo "" >> libnfs-raw-nfs.c
+       echo "xdr_uint64 (XDR *xdrs, uint64 *objp)" >> libnfs-raw-nfs.c
+       echo "{" >> libnfs-raw-nfs.c
+       echo "  uint32_t i;" >> libnfs-raw-nfs.c
+       echo "" >> libnfs-raw-nfs.c
+       echo "        switch (xdrs->x_op) {" >> libnfs-raw-nfs.c
+       echo "        case XDR_DECODE:" >> libnfs-raw-nfs.c
+       echo "          if (!xdr_u_int (xdrs, &i))" >> libnfs-raw-nfs.c
+       echo "                  return FALSE;" >> libnfs-raw-nfs.c
+       echo "          *objp = i;" >> libnfs-raw-nfs.c
+       echo "          *objp <<= 32;" >> libnfs-raw-nfs.c
+       echo "" >> libnfs-raw-nfs.c
+       echo "          if (!xdr_u_int (xdrs, &i))" >> libnfs-raw-nfs.c
+       echo "                  return FALSE;" >> libnfs-raw-nfs.c
+       echo "          *objp |= i;" >> libnfs-raw-nfs.c
+       echo "" >> libnfs-raw-nfs.c
+       echo "          return TRUE;" >> libnfs-raw-nfs.c
+       echo "  case XDR_ENCODE:" >> libnfs-raw-nfs.c
+       echo "          i = ((*objp) >> 32) & 0xffffffff;" >> libnfs-raw-nfs.c
+       echo "          if (!xdr_u_int (xdrs, &i))" >> libnfs-raw-nfs.c
+       echo "                  return FALSE;" >> libnfs-raw-nfs.c
+       echo "" >> libnfs-raw-nfs.c
+       echo "          i = ((*objp)      ) & 0xffffffff;" >> libnfs-raw-nfs.c
+       echo "          if (!xdr_u_int (xdrs, &i))" >> libnfs-raw-nfs.c
+       echo "                  return FALSE;" >> libnfs-raw-nfs.c
+       echo "          return TRUE;" >> libnfs-raw-nfs.c
+       echo "  }" >> libnfs-raw-nfs.c
+       echo "}" >> libnfs-raw-nfs.c
        touch nfs-stamp