FreeBSD src
Go to file
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
bin Style police: keep a variable list in alphabetical order, and add 1997-10-13 09:36:05 +00:00
contrib Fix a serious bug in the recursion processor. When descending a tree, 1997-10-12 12:47:05 +00:00
crypto PR: bin/771 and bin/1037 are resolved by this change 1997-10-08 03:14:34 +00:00
etc 1) Remove comment about tip(1) not accepting comments in /etc/phones 1997-10-13 03:17:09 +00:00
games Remove bogus declaration of calloc() that broke the build. Test, folks, 1997-09-26 06:25:42 +00:00
gnu Fix improperly re-entrant code which caused the menu spammage we've 1997-10-12 12:09:46 +00:00
include Reinsert telnet.h into the list of files installed into include/arpa/ 1997-10-03 18:10:35 +00:00
kerberos5 Fix a break in the includes where the build blows chunks if it is 1997-10-02 15:03:23 +00:00
kerberosIV Correct the MAKE_EBONES macro --> MAKE_KERBEROS4 1997-10-03 06:37:35 +00:00
lib Fixed searching of $PATH in execvp(). Do what sh(1) should do according 1997-10-14 07:23:16 +00:00
libexec Store temporary files in /var/tmp instead /tmp. This should avoid 1997-10-11 22:05:44 +00:00
lkm Make the blank screen saver work with MDA and CGA. The fade and green 1997-10-04 04:24:18 +00:00
release Ask for extra confirmation if a newfs has been requested during 1997-10-13 17:32:29 +00:00
sbin Do not account the tape change time for ETA estimations. 1997-10-12 14:09:13 +00:00
secure Staticise a variable. 1997-10-08 07:02:48 +00:00
share Support output format html. 1997-10-12 18:54:34 +00:00
sys if_ep.c clarification/simplification. 1997-10-14 06:56:09 +00:00
tools Do not suppress the first 5 lines of updated ports. 1997-10-04 12:20:16 +00:00
usr.bin Add the primaries -mmin, -amin, -cmin to find, similar to the GNU find. 1997-10-13 21:06:22 +00:00
usr.sbin Ask for extra confirmation if a newfs has been requested during 1997-10-13 17:32:29 +00:00
COPYRIGHT This is the official 4.4 Lite copyright. 1994-09-11 07:53:28 +00:00
Makefile Do not use -B in initial build of "make". It doesn't exist in 2.1.x. 1997-10-10 13:02:36 +00:00
README Note that /etc is not installed by world target either. 1997-08-09 14:36:20 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on: $Id: README,v 1.10 1997/02/23 09:18:39 peter Exp $

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel and the contents of /etc.  Please see the top of the Makefile
in this directory for more information on the standard build targets
and compile-time flags.

Building a kernel with config(8) is a somewhat more involved process,
documentation for which can be found at:
   http://www.freebsd.org/handbook/kernelconfig.html
And in the config(8) man page.

The sample kernel configuration files reside in the sys/i386/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file LINT contains entries for all possible devices, not
just those commonly used, and is meant more as a general reference
than an actual kernel configuration file (a kernel built from it
wouldn't even run).


Source Roadmap:
---------------
bin		System/User commands.

contrib		Packages contributed by 3rd parties.

eBones		Kerberos package - NOT FOR EXPORT!

etc		Template files for /etc

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

lib		System libraries.

libexec		System daemons.

lkm		Loadable Kernel Modules.

release		Release building Makefile & associated tools.

sbin		System commands.

secure		DES and DES-related utilities - NOT FOR EXPORT!

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/handbook/synching.html