--- a/sunrpc/rpc/types.h +++ b/sunrpc/rpc/types.h @@ -75,18 +75,23 @@ typedef unsigned long rpcport_t; #endif #ifndef __u_char_defined -typedef __u_char u_char; -typedef __u_short u_short; -typedef __u_int u_int; -typedef __u_long u_long; -typedef __quad_t quad_t; -typedef __u_quad_t u_quad_t; -typedef __fsid_t fsid_t; +typedef unsigned char u_char; +typedef unsigned short u_short; +typedef unsigned int u_int; +typedef unsigned long u_long; +#if __WORDSIZE == 64 +typedef long int quad_t; +typedef unsigned long int u_quad_t; +#elif defined __GLIBC_HAVE_LONG_LONG +typedef long long int quad_t; +typedef unsigned long long int u_quad_t; +#endif +typedef u_quad_t fsid_t; # define __u_char_defined #endif -#ifndef __daddr_t_defined -typedef __daddr_t daddr_t; -typedef __caddr_t caddr_t; +#if !defined(__daddr_t_defined) && defined(linux) +typedef long int daddr_t; +typedef char *caddr_t; # define __daddr_t_defined #endif --- a/sunrpc/rpc_main.c +++ b/sunrpc/rpc_main.c @@ -958,9 +958,10 @@ mkfile_output (struct commandline *cmd) abort (); temp = rindex (cmd->infile, '.'); cp = stpcpy (mkfilename, "Makefile."); - if (temp != NULL) - *((char *) stpncpy (cp, cmd->infile, temp - cmd->infile)) = '\0'; - else + if (temp != NULL) { + strncpy(cp, cmd->infile, temp - cmd->infile); + cp[temp - cmd->infile - 1] = 0; + } else stpcpy (cp, cmd->infile); }