freebsd-src/lib
Bruce Evans 1df595f25d Fixed searching of $PATH in execvp(). Do what sh(1) should do according
to POSIX.2.  In particular:

- don't retry for ETXTBSY.  This matches what sh(1) does.  The retry code
  was broken anyway.  It only slept for several seconds for the first few
  retries.  Then it retried without sleeping.
- don't abort the search for errors related to the path prefix, in
  particular for ENAMETOOLONG, ENOTDIR, ELOOP.  This fixes PR1487.  sh(1)
  gets this wrong in the opposite direction by never aborting the search.
- don't confuse EACCES for errors related to the path prefix with EACCES
  for errors related to the file.  sh(1) gets this wrong.
- don't return a stale errno when the search terminates normally without
  finding anything.  The errno for the last unsuccessful execve() was
  usually returned.  This gave too much precedence to pathologies in the
  last component of $PATH.  This bug is irrelevant for sh(1).

The implementation still uses the optimization/race-inhibitor of trying
to execve() things first.  POSIX.2 seems to require looking at file
permissions using stat().  We now use stat() after execve() if execve()
fails with an ambiguous error.  Trying execve() first may actually be a
pessimization, since failing execve()s are fundamentally a little slower
than stat(), and are significantly slower when a file is found but has
unsuitable permissions or points to an unsuitable interpreter.

PR:		1487
1997-10-14 07:23:16 +00:00
..
compat Add libg++ 3.0 1997-04-03 06:08:28 +00:00
csu/i386 Make this file p-make clean. (Use "ld -O foo" instead of "ld; mv 1997-10-11 02:37:42 +00:00
libalias Upgrade to 2.4 (Fix -PKT_ALIAS_UNREGISTERED_ONLY) 1997-09-06 11:11:43 +00:00
libc Fixed searching of $PATH in execvp(). Do what sh(1) should do according 1997-10-14 07:23:16 +00:00
libc_r Bring back nanosleep from the cold. 1997-06-04 13:03:12 +00:00
libcom_err Revert $FreeBSD$ to $Id$ 1997-02-22 15:12:41 +00:00
libcompat kill the undead 1997-07-13 14:26:00 +00:00
libcrypt When compiling under elf, use correct library naming conventions. Also 1997-09-05 12:12:35 +00:00
libcurses Remove extra definition of vwprintw. 1997-08-23 23:23:07 +00:00
libdisk Fixed this header to compile with gcc -pedantic -Werror (removed comma 1997-03-19 01:54:04 +00:00
libedit Sort cross refereces in section SEE ALSO. 1997-09-29 19:11:55 +00:00
libf2c Add a -I switch to CFLAGS to use the f2c.h header file in the usr.bin/f2c 1997-04-24 17:10:56 +00:00
libF77 Upgrade to the 1997/02/26 version. 1997-04-13 01:16:58 +00:00
libftpio Teach ftpErrString to format UNIX errnos, since at least ftpLogin() 1997-10-02 23:26:03 +00:00
libgnumalloc Revert $FreeBSD$ to $Id$ 1997-02-22 15:12:41 +00:00
libI77 Upgrade to the 1997/02/26 version. 1997-04-13 01:16:58 +00:00
libipx -I${DESTDIR}/sys -> -I${.CURDIR}/../../sys. 1997-08-26 14:13:02 +00:00
libkse Bring back nanosleep from the cold. 1997-06-04 13:03:12 +00:00
libkvm -I${DESTDIR}/sys -> -I${.CURDIR}/../../sys. 1997-08-26 14:13:02 +00:00
libm This commit was generated by cvs2svn to compensate for changes in r27180, 1997-07-03 03:28:27 +00:00
libmd If not building a.out, still build a pic version of libmd. This allows 1997-09-05 11:49:43 +00:00
libmytinfo Fix longstanding bug with buffer pointer goes beyoud buffer start 1997-08-13 01:21:36 +00:00
libncurses environmental -> environment. 1997-09-18 06:55:21 +00:00
libopie Move locks from /etc/opielocks to /var/run/opielocks to keep 1997-10-01 13:02:20 +00:00
libpam/modules Changes for KTH KerberosIV. 1997-09-28 08:57:24 +00:00
libpcap Also install pcap-int.h so things can call pcap_compile on arbitary 1997-10-10 11:55:42 +00:00
libpthread Bring back nanosleep from the cold. 1997-06-04 13:03:12 +00:00
libresolv Yet another attempt to remove the old libraries correctly. libfoo.* 1996-10-08 20:06:41 +00:00
librpcsvc Fix conflicts (this one is easy: there's just the Makefile). 1997-05-28 04:53:07 +00:00
libscsi -I${DESTDIR}/sys -> -I${.CURDIR}/../../sys. 1997-08-26 14:13:02 +00:00
libskey If building under elf, have libskey.so depend on libmd and libcrypt. 1997-09-05 11:52:20 +00:00
libss Revert $FreeBSD$ to $Id$ 1997-02-22 15:12:41 +00:00
libtcl Update to tcl8.0 release version. 1997-10-01 13:37:27 +00:00
libtelnet Revert $FreeBSD$ to $Id$ 1997-02-22 15:12:41 +00:00
libtermcap Restore back issetugid() usage and bump major number 1997-08-31 08:37:28 +00:00
libutil Remove the claim that UUCP locking were not atomic. It is since 1997-10-07 07:24:50 +00:00
libvgl Add rudimentary support for using the keyboard. 1997-10-01 20:53:41 +00:00
libxpg4 Add mskanji.c 1997-09-25 23:24:35 +00:00
liby Revert $FreeBSD$ to $Id$ 1997-02-22 15:12:41 +00:00
libz This commit was generated by cvs2svn to compensate for changes in r29747, 1997-09-23 21:34:42 +00:00
msun Hide the declaration of `struct exception' from C++, since it conflicts 1997-08-31 22:12:19 +00:00
ncurses/ncurses Fix saving/restoring tty modes, allow initscr be called twice, 1997-08-25 07:41:15 +00:00
Makefile Changes for KTH KerberosIV 1997-09-28 09:08:48 +00:00
Makefile.inc