Commit Graph

371 Commits

Author SHA1 Message Date
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
Bill Paul
e882d43eca Improve the innetgr() NIS+ compat kludge. We should only fail over to the
'slow' lookup if we get a YPERR_MAP (no such map in server's domain) error
instead of failing over on any error. In the latter case, if the 'fast'
search fails legitimately (i.e. the user or host really isn't a member
of the specified netgroup) then we end up doing the 'slow' search and
failing all over again. The result is still correct, but cycles are
consumed for no good reason.

Also removed the #ifdef CHARITABLE since the compat kludge is no longer
optional.
1997-10-13 17:09:15 +00:00
Bill Paul
c17942ca57 NIS+ compatibility kludge. A long time ago, I set up innetgr() so
that if searching through the special netgroup.byhost or netgroup.byuser
maps didn't work, we would roll over to the 'slow' method of grovelling
though the netgroup map and working out the dependencies on the fly.
But I left this option hidden inside an #ifdef CHARITABLE since I
didn't think I'd ever need it.

Well, the Sun rpc.nisd NIS+ server in YP compat mode doesn't support
the .byhost and .byuser reverse maps, so the  failover is necessary
in order to be compatible. *sigh*

This closes PR #3891, and should be merged into RELENG_2_2.
1997-10-11 00:03:25 +00:00
Philippe Charnier
8b76e1d7a8 Staticize usage(). Cosmetics. 1997-10-10 06:27:07 +00:00
Wolfram Schneider
bf5cbf3551 Sort cross refereces in section SEE ALSO. 1997-09-29 19:11:55 +00:00
Mike Smith
af35b9ccb0 Revert the previous prototype un-typo. Add a brief comment warning that
"fixing" it is not a good idea.
1997-09-28 17:11:31 +00:00
Mike Smith
27c729f066 Fix typo in signal() prototype 1997-09-28 03:28:09 +00:00
Peter Wemm
42396e05cf Apply fts() fix from PR#4593
Submitted by:  Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru>
1997-09-22 12:48:40 +00:00
Poul-Henning Kamp
d030d2d2ae Many places in the code NULL is used in integer context, where
plain 0 should be used.  This happens to work because we #define
NULL to 0, but is stylistically wrong and can cause problems
for people trying to port bits of code to other environments.

PR:		2752
Submitted by:	Arne Henrik Juul <arnej@imf.unit.no>
1997-09-18 14:08:40 +00:00
Peter Wemm
b7ecb08afa Put a system call not present checking wrapper around the call to
__getcwd().  I've got this libc code running on one of my machines
at the moment without the __getcwd() syscall being present.
1997-09-16 06:00:50 +00:00
Wolfram Schneider
211fed7e35 Fix yet a minor stylistic nit from Bruce.
(`cvs diff -ib' print one new char ;-).
1997-09-15 19:37:23 +00:00
Poul-Henning Kamp
36dff60096 Fix yet a minor stylistic nit from Bruce (Doesn't he have more
important things to do ?? :-)

Prepare for the likely case of a change in kernel algorithm.
1997-09-15 17:40:15 +00:00
Poul-Henning Kamp
9c2d6fcf05 Fix a buglet and a couple of stylistic nits from Bruce. 1997-09-15 08:25:14 +00:00
Wolfram Schneider
8be26e5d0f Potential bufferflow in getpwent(), getpwnam() and getpwuid()
PR: bin/4134
Submitted by:	nick@foobar.org
1997-09-14 18:16:11 +00:00
Poul-Henning Kamp
27262cac33 Add __getcwd() syscall, and have getcwd() take a shot at it.
If your kernel doesn't support __getcwd() or if __getcwd() cannot
deliver because of cache expiry, it does the canonical thing.
1997-09-14 16:57:27 +00:00
Bruce Evans
853aa1faf3 Fixed synopsis. The envp arg for execle() can't be given in the prototype.
Fortunately, the man page doesn't refer to "envp" so just deleting it is OK.
1997-09-03 03:25:35 +00:00
Bruce Evans
4447a79bf7 Fixed inclomplete function type in synopsis. 1997-08-31 21:54:10 +00:00
Peter Wemm
77909f5978 Initial elf nlist support, mostly stolen from OpenBSD (they use standard
#defines that are compatable with ours).  I made some some minor tweaks
to the leading '_' tests.

Again, this is off by default for the moment.  This probably should be
split into seperate files (like some of our other libc files that could
do with some splitting).

Obtained from: OpenBSD (plus some minor tweaks)
1997-08-31 00:08:35 +00:00
KATO Takenori
01f770e87c Added HW_MACHINE_ARCH. 1997-08-30 02:26:36 +00:00
Warner Losh
9a91f1cc25 Merge in the safe chdir changes from Todd Miller's mods to the OpenBSD
tree.  Also merge in fix to NetBSD PR #1495.  These represent 1.3-1.9 in
the OpenBSD tree.  Make minor KNF changes to new code (which is in the
OpenBSD as 1.10).  This avoids the symlink race problems.

These patches should go into 2.2.5 before the ship if they don't
break anything in -current.
Reviewed by:	Bruce Evans
Obtained from:	OpenBSD
1997-08-29 22:56:41 +00:00
Andrey A. Chernov
eb8eee5a55 Use getpwnam(getlogin()) before getpwuid(getuid()) 1997-08-27 13:36:34 +00:00
Warner Losh
3fa69daee8 Don't getenv(HOME) when set[ug]od. This can lead to a buffer overflow and
elevated privs.
Obtained from: OpenBSD
1997-08-27 05:27:53 +00:00
David Greenman
f5f31fba12 Fixed file descriptor leak that occurs after certain types of failures.
PR:		3516
Submitted by:	Matthew Flatt <mflatt@cs.rice.edu>
1997-08-15 05:21:16 +00:00
Andrey A. Chernov
067fe639d7 Describe upper limit based on itimerfix restriction 1997-08-14 07:44:57 +00:00
Andrey A. Chernov
a85a54896e Oops, fix logic for previous commit 1997-08-14 06:46:44 +00:00
Andrey A. Chernov
d1e224f2cc Remove wrong machine-dependent phrase about maximum microseconds
limit. Small cleanup.
1997-08-14 06:32:25 +00:00
Andrey A. Chernov
3b3d0d1b49 Break loop if error != EINTR occurse or it can take forever with
time_remaining unchanged
1997-08-14 06:23:48 +00:00
Andrey A. Chernov
2e2d038677 Note that default behaviour (restarting signals) is only for signal(3) 1997-08-13 18:40:57 +00:00
Andrey A. Chernov
71936d097e Handle syscalls error return slightly better 1997-08-13 18:22:41 +00:00
Andrey A. Chernov
3be4b5c3df Back out itimerfix hack since nanosleep1 fixed now
Handle syscalls error return slightly better
1997-08-13 18:13:17 +00:00
Andrey A. Chernov
fc0cc5ad9b Rearrange itimerfix loop doing it inside SIGALRM handling section 1997-08-12 19:54:31 +00:00
Andrey A. Chernov
b39d66c04a Solve itimerfix() problem completely by using loop in 100000000 secs chunks 1997-08-12 19:47:01 +00:00
Andrey A. Chernov
6d4ff45427 Reflect blocked SIGALRM changes 1997-08-12 19:28:07 +00:00
Andrey A. Chernov
8d7bf613b2 Back out my installation of SIGALRM handler even if it is blocked
and return to previous Peter's variant.
POSIX says that this place is implementation defined and old variant allows
application block SIGALRM and sleep and not be killed by external SIGALRMs.
BTW, GNU sleep f.e. sleeps forever in blocked SIGALRM :-)
1997-08-12 19:14:54 +00:00
Andrey A. Chernov
bc044b88dd Reflect -current implementations 1997-08-12 17:53:00 +00:00
Andrey A. Chernov
1ddf325cda 1) Make usleep() terminateable by alarm (or ualarm) as supposed
historically
2) Fix end of time loop condition: && -> ||
1997-08-12 17:17:53 +00:00
Andrey A. Chernov
fa23b4efb8 Change to reflect -current sleep implementation reality 1997-08-12 16:46:05 +00:00
Andrey A. Chernov
d23cc31d85 Make itimerfix hack better: return the time we can't sleep at once 1997-08-12 15:46:05 +00:00
Joerg Wunsch
ac77b4810d Hack^H^H^H^Hworkaround for itimerfix(9) gratuitously limiting the
acceptable range for tv_sec to the magic number 100000000 (which at
least ought to be declared in a header file, and explained in the
non-existing man page, as well as in the existing man pages for
nanosleep(2) & Co.).

PR:		bin/4259
1997-08-10 12:16:13 +00:00
Steve Price
febad2fcf4 Observe precedence set by Phillippe Charnier in adding an
rcsid.
1997-08-07 22:28:25 +00:00
Steve Price
d46c1a60d3 Remove #if(n)def BSD_4_4_LITE cruft and sccsid -> rcsid. 1997-08-07 15:33:50 +00:00
Peter Wemm
925d069aa8 Make sleep() and usleep() "eat" any stray SIGALRM signals during the
lifetime of the call, just like the old implementation did.  Previously,
we were only eating them if the application did not call sleep()/usleep()
with SIGALRM masked.

Submitted by:	ache
1997-07-18 09:48:37 +00:00
Peter Wemm
65b3003d2d kill the undead 1997-07-13 14:26:00 +00:00
Peter Wemm
dd1d7d1fa0 Add a quick description of sysctlbyname() and link sysctl.3 to
sysctlbyname.3
1997-07-12 11:16:18 +00:00
Peter Wemm
16373facf6 Have sysctlbyname() take a const first arg (the ascii string) 1997-07-12 11:14:30 +00:00
Bruce Evans
362c392f0b This commit was generated by cvs2svn to compensate for changes in r27180,
which included commits to RCS files with non-trunk default branches.
1997-07-03 03:28:27 +00:00
Bruce Evans
5500fdcd4f Import Lite2's src/lib, except for non-i386 machine-dependent directories,
libc/db, libc/gen/crypt.* and libtelnet.  All affected files except 3
unimportant ones have already left the vendor branch.
1997-07-03 03:28:27 +00:00
Jordan K. Hubbard
51e6986086 _err() -> err(). 1997-06-29 00:33:17 +00:00
Mike Smith
4ce2d5b5b5 Add stringlist functions from NetBSD. (required for the new ftp(1)
Obtained from:	NetBSD
1997-06-25 08:05:03 +00:00
John Hay
127feebec1 Add tickadj to struct clockinfo, like NetBSD and OpenBSD. 1997-06-24 18:22:44 +00:00