diff -rc src/bin/named/ns_main.c src-mpe/bin/named/ns_main.c
*** src/bin/named/ns_main.c	Sun Jun  8 16:36:40 1997
--- src-mpe/bin/named/ns_main.c	Fri Jun  6 10:50:57 1997
***************
*** 479,490 ****
--- 479,497 ----
  		(void) close(rfd);
  		return;
  	}
+ #ifdef MPE
+ 	/* An error on MPE is indicated by -1, not simply non-zero. */
+ 	if (fcntl(rfd, F_SETFL, n|PORT_NONBLOCK) == -1) {
+ #else
  	if (fcntl(rfd, F_SETFL, n|PORT_NONBLOCK) != 0) {
+ #endif
  		ns_info(ns_log_default, "fcntl(rfd, NONBLOCK): %s",
  			strerror(errno));
  		(void) close(rfd);
  		return;
  	}
+ #ifndef MPE
+ 	/* SO_SNDBUF exists for MPE, but is not supported and will error. */
  	if (setsockopt(rfd, SOL_SOCKET, SO_SNDBUF,
  		      (char*)&sbufsize, sizeof sbufsize) < 0) {
  		ns_info(ns_log_default, "setsockopt(rfd, SO_SNDBUF, %d): %s",
***************
*** 492,497 ****
--- 499,505 ----
  		(void) close(rfd);
  		return;
  	}
+ #endif
  	if (setsockopt(rfd, SOL_SOCKET, SO_KEEPALIVE,
  		       (char *)&on, sizeof on) < 0) {
  		ns_info(ns_log_default, "setsockopt(rfd, KEEPALIVE): %s",
diff -rc src/bin/named-xfer/named-xfer.c src-mpe/bin/named-xfer/named-xfer.c
*** src/bin/named-xfer/named-xfer.c	Sun Jun  8 16:36:42 1997
--- src-mpe/bin/named-xfer/named-xfer.c	Fri Jun  6 10:50:59 1997
***************
*** 1150,1156 ****
--- 1150,1161 ----
  		}
  		errno = 0;
  		salen = sizeof sa;
+ #ifdef MPE
+ 		/* recvfrom() a stream will error with EOPNOTSUPP on MPE. */
+ 		n = recv(fd, buf, len, 0);
+ #else
  		n = recvfrom(fd, buf, len, 0, (struct sockaddr *)&sa, &salen);
+ #endif
  		if (n == 0 && errno == 0) {
  #if defined(NETREAD_BROKEN)
  			if (++retries < 42)	/* doug adams */
diff -rc src/lib/irs/dns_gr.c src-mpe/lib/irs/dns_gr.c
*** src/lib/irs/dns_gr.c	Mon Nov 18 01:09:15 1996
--- src-mpe/lib/irs/dns_gr.c	Sun Jun  8 15:27:55 1997
***************
*** 189,195 ****
--- 189,198 ----
  		goto cleanup;
  	*cp++ = '\0';
  	
+ #ifndef MPE
+ 	/* MPE lacks gr_passwd */
  	pvt->group.gr_passwd = cp;
+ #endif
  	if (!(cp = strchr(cp, ':')))
  		goto cleanup;
  	*cp++ = '\0';
diff -rc src/lib/irs/gen_gr.c src-mpe/lib/irs/gen_gr.c
*** src/lib/irs/gen_gr.c	Mon Dec 30 23:13:53 1996
--- src-mpe/lib/irs/gen_gr.c	Sun Jun  8 15:28:56 1997
***************
*** 307,313 ****
--- 307,316 ----
  	assert((nnew == 0) == (n == 0));
  	if (!preserve) {
  		n += strlen(src->gr_name) + 1;
+ #ifndef MPE
+ 		/* MPE lacks gr_passwd */
  		n += strlen(src->gr_passwd) + 1;
+ #endif
  	}
  	if (n == 0) {
  		/* No work to do. */
***************
*** 336,344 ****
--- 339,350 ----
  		pvt->group.gr_name = cp;
  		strcpy(cp, src->gr_name);
  		cp += strlen(src->gr_name) + 1;
+ #ifndef MPE
+ 		/* MPE lacks gr_passwd */
  		pvt->group.gr_passwd = cp;
  		strcpy(cp, src->gr_passwd);
  		cp += strlen(src->gr_passwd) + 1;
+ #endif
  	}
  	assert(cp >= pvt->membuf && cp <= &pvt->membuf[pvt->membufsize]);
  }
diff -rc src/lib/irs/irs_p.h src-mpe/lib/irs/irs_p.h
*** src/lib/irs/irs_p.h	Mon Nov 11 19:19:33 1996
--- src-mpe/lib/irs/irs_p.h	Wed May 28 13:51:27 1997
***************
*** 34,37 ****
--- 34,43 ----
  					gid_t, gid_t *, int *);
  extern struct irs_ng *	irs_nul_ng(struct irs_acc *);
  
+ #ifdef MPE
+ /* MPE requires sfcntl() for sockets and fcntl() for everything else.  IRS
+    is all "everything else", so undo the normal MPE #define fcntl sfcntl. */
+ #undef fcntl
+ #endif
+ 
  #endif
diff -rc src/lib/irs/lcl_gr.c src-mpe/lib/irs/lcl_gr.c
*** src/lib/irs/lcl_gr.c	Thu Apr 24 15:34:14 1997
--- src-mpe/lib/irs/lcl_gr.c	Sun Jun  8 15:29:45 1997
***************
*** 283,291 ****
--- 283,294 ----
  			goto corrupt;
  
  		/* Skip past the password field. */
+ #ifndef MPE
+ 		/* MPE lacks gr_passwd.  Heck, MPE lacks /etc/group. */
  		pvt->group.gr_passwd = strsep(&bp, ":");
  		if (bp == '\0')
  			goto corrupt;
+ #endif
  
  		/* Checking for a gid. */
  		if ((p = strsep(&bp, ":")) == NULL)
diff -rc src/lib/irs/nis_gr.c src-mpe/lib/irs/nis_gr.c
*** src/lib/irs/nis_gr.c	Tue Nov 26 01:53:50 1996
--- src-mpe/lib/irs/nis_gr.c	Sun Jun  8 15:30:27 1997
***************
*** 265,271 ****
--- 265,274 ----
  		goto cleanup;
  	*cp++ = '\0';
  	
+ #ifndef MPE
+ 	/* MPE lacks gr_passwd.  Heck, MPE lacks NIS. */
  	pvt->group.gr_passwd = cp;
+ #endif
  	if (!(cp = strchr(cp, ':')))
  		goto cleanup;
  	*cp++ = '\0';
