*** /tmp/T0k0aqHb	Thu May 25 14:28:35 2006
--- dialects/linux/dproc.c	Wed May 10 01:50:57 2006
***************
*** 233,242 ****
  		    pn = 1;
  		    ss = SB_ALL;
  		    if (HasNFS) {
! 			if ((sv = statsafely(path, &sb))) {
! 			    if (lnk)
! 				sv = statEx(pbuf, &sb, &ss);
! 			}
  		    } else
  			sv = stat(path, &sb);
  		    if (sv) {
--- 233,240 ----
  		    pn = 1;
  		    ss = SB_ALL;
  		    if (HasNFS) {
! 			if ((sv = statsafely(path, &sb)))
! 			    sv = statEx(pbuf, &sb, &ss);
  		    } else
  			sv = stat(path, &sb);
  		    if (sv) {
***************
*** 279,288 ****
  		if ((scko && !slash) || !scko) {
  		    pn = 1;
  		    if (HasNFS) {
! 			if ((sv = statsafely(path, &sb))) {
! 			    if (lnk)
! 				sv = statEx(pbuf, &sb, &ss);
! 			}
  		    } else
  			sv = stat(path, &sb);
  		    if (sv) {
--- 277,284 ----
  		if ((scko && !slash) || !scko) {
  		    pn = 1;
  		    if (HasNFS) {
! 			if ((sv = statsafely(path, &sb)))
! 			    sv = statEx(pbuf, &sb, &ss);
  		    } else
  			sv = stat(path, &sb);
  		    if (sv) {
***************
*** 329,339 ****
  		    pn = 1;
  		    if (HasNFS) {
  			if ((sv = statsafely(path, &sb))) {
! 			    if (lnk) {
! 				sv = statEx(pbuf, &sb,  &ss);
! 				if (!sv && (ss & SB_DEV) && (ss & SB_INO))
! 				    txts = 1;
! 			    }
  			}
  		    } else
  			sv = stat(path, &sb);
--- 325,333 ----
  		    pn = 1;
  		    if (HasNFS) {
  			if ((sv = statsafely(path, &sb))) {
! 			    sv = statEx(pbuf, &sb,  &ss);
! 			    if (!sv && (ss & SB_DEV) && (ss & SB_INO))
! 				txts = 1;
  			}
  		    } else
  			sv = stat(path, &sb);
***************
*** 422,439 ****
  			pn = 1;
  			if (HasNFS) {
  			    if (lstatsafely(path, &lsb)) {
! 				if (lnk)
! 				    (void) statEx(pbuf, &lsb, &ls);
! 				else
! 				    ls = 0;
  				enls = errno;
  			    } else
  				ls = SB_ALL;
  			    if (statsafely(path, &sb)) {
! 				if (lnk)
! 				    (void) statEx(pbuf, &sb, &ss);
! 				else
! 				    ss = SB_ALL;
  				enss = errno;
  			    } else
  				ss = SB_ALL;
--- 416,427 ----
  			pn = 1;
  			if (HasNFS) {
  			    if (lstatsafely(path, &lsb)) {
! 				(void) statEx(pbuf, &lsb, &ls);
  				enls = errno;
  			    } else
  				ls = SB_ALL;
  			    if (statsafely(path, &sb)) {
! 				(void) statEx(pbuf, &sb, &ss);
  				enss = errno;
  			    } else
  				ss = SB_ALL;
***************
*** 664,679 ****
  	    ||  !ep || *ep)
  		continue;
  	/*
! 	 * Assemble the inode number.
  	 */
  	    if (!fp[5] || !*fp[5])
  		continue;
  	    inode = (INODETYPE)atoi(fp[5]);
  	/*
  	 * See if the device + inode pair match that of the executable.
  	 * If they do, skip this map entry.
  	 */
- 	    dev = (dev_t)makedev((int)maj, (int)min);
  	    if (s && (ss & SB_DEV) && (ss & SB_INO)
  	    &&  (dev == s->st_dev) && (inode == (INODETYPE)s->st_ino))
  		continue;
--- 652,670 ----
  	    ||  !ep || *ep)
  		continue;
  	/*
! 	 * Assemble the device and inode numbers.  If they are both zero, skip
! 	 * the entry.
  	 */
+ 	    dev = (dev_t)makedev((int)maj, (int)min);
  	    if (!fp[5] || !*fp[5])
  		continue;
  	    inode = (INODETYPE)atoi(fp[5]);
+ 	    if (!dev && !inode)
+ 		continue;
  	/*
  	 * See if the device + inode pair match that of the executable.
  	 * If they do, skip this map entry.
  	 */
  	    if (s && (ss & SB_DEV) && (ss & SB_INO)
  	    &&  (dev == s->st_dev) && (inode == (INODETYPE)s->st_ino))
  		continue;
