Commit Graph

43 Commits

Author SHA1 Message Date
christos 14ebd4f381 Appease Coverity CID 2527; not a bug. 2006-03-17 17:17:00 +00:00
elad e77db80a44 Revert back to revision 1.40, as requested by cube@.
Unbreaks KDE.
2005-12-31 12:32:30 +00:00
elad 0c73d40610 Allow last component to be non-existing again. I broke this behavior for
no apparent good reason in revision 1.39.

This is what broke systrace's filename normalization.

Go back to original behavior as in revision 1.35: return resolved name,
but also set errno to ENOENT.
2005-12-22 23:29:23 +00:00
elad ccdc56641c Make this compile again (remove unused serrno).
Noted by uwe@.
2005-08-13 21:16:58 +00:00
elad 314b003dee Don't allow last path element to be nonexistant. 2005-08-13 19:53:53 +00:00
enami 8bf4305eee Fixes to previous:
- Don't handle single and multiple slashes differently.
- A symlink to a directory can be appear in the middle of path.  Don't
  reject it.
2005-07-05 02:56:12 +00:00
elad 0b9ed39b26 Make realpath(3) work correctly.
The current code resolves paths like `/foo/bar/', `/foo/bar/./', and
`/foo/bar/../', even if `bar' is a regular file and not a directory.

Reviewed by cube@.
2005-07-04 20:44:47 +00:00
enami 22e3442eb2 - Modify realpath() not to alter process wide state current working
directory.  Strategy from FreeBSD.  Addess PR#28986.
- Make realpath() to return an error when null string is passed or
  the last component is symlink to null string.  The kernel lookup
  routine returns an error if such path are passed.
2005-01-30 22:37:32 +00:00
enami b2ed183e5b - Remove macros used only by old getcwd() implementation.
- Fix memory leak on error. (I guess the loop isn't necessary but
  it is different matter).
- Remove knowledge about old malloc implementation.
2005-01-23 01:00:51 +00:00
simonb f2cd0bb8b0 Remove the old userland version of getcwd(): it's been #ifdef'd out
since 1999 when we switched to a (faster) system call based getcwd(),
and as shown recently has had some buffer size problems anyway (although
they have since been fixed).
2005-01-06 23:43:32 +00:00
christos 59f1050586 Fix handling of memory allocation. From OpenBSD. 2005-01-06 00:07:41 +00:00
agc eb7c1594f1 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22280, verified by myself.
2003-08-07 16:42:00 +00:00
itojun 2e48312004 be more pedantic to strlcpy/strcat errors 2003-08-03 04:35:50 +00:00
itojun 785d6ef678 use strlcat for safety 2003-08-03 04:14:00 +00:00
itojun d6220d9ca5 fix off-by-one error in realpath() 2003-08-03 04:12:01 +00:00
itojun 233424cdc2 make sure to bound string operation by strlcpy
(there are bunch of "strcpy is safe" comments, i think we should change them
to strlcpy as much as possible)
2002-11-17 20:49:33 +00:00
itojun 9134efabd0 use strlcpy where it is more appropriate. 2002-11-17 01:51:24 +00:00
provos 6875b78ca7 readlink(2) does not NUL-terminate, use with sizeof (buf-1).
from deraadt@openbsd.org; approved thorpej.
2002-10-19 18:58:32 +00:00
groo 50d2b6a96f botched strncpy -> strlcpy
from xs@kittenz.org
2002-04-16 19:08:43 +00:00
mycroft 605490369c Delint.
Remove trailing ; from uses of __weak_alias().  The macro inserts this if
needed.
2000-01-22 22:19:07 +00:00
lukem d896261208 back out the #ifdef _DIAGNOSTIC argument checks; too many people complained.
_DIAGASSERT() is still retained.
1999-09-20 04:38:56 +00:00
lukem b48252f365 * use _DIAGASSERT() to check pointer arguments against NULL and file
descriptors against -1 (as appropriate).
* add actual checks which to detect stuff that would trigger_DIAGASSERT(),
  and attempt to return a sane error condition.
* knf some code
* remove some `register' decls.

the first two items result in the addition of code similar to the
following in various functions:

		_DIAGASSERT(path != NULL)
	#ifdef _DIAGNOSTIC
		if (path == NULL) {
			errno = EFAULT;
			return (-1);
		}
	#endif
1999-09-16 11:44:54 +00:00
fvdl 0536609b97 Keep track of the number of encountered symlinks and fail with ELOOP
if they exceed MAXSYMLINKS.
1999-08-10 13:03:11 +00:00
sommerfeld 508d2d0e9e Avoid infinite loop if pathname is longer than the maximum the kernel
is willing to return from getcwd().
(this can only happen in -current).
1999-07-11 18:01:46 +00:00
christos d3afd1cc44 make this compile under linux 1999-06-11 15:38:40 +00:00
christos c52c8cc0b1 int -> size_t problems, change do { } while (0) to for (;;) 1999-05-03 14:33:50 +00:00
sommerfe bb8c6c869a move __getcwd prototypes to libc-private header file.
XXX duplicate the prototype in getcwd regression test (which needs to
call the syscall directly for reasonably complete testing).
1999-03-26 22:23:57 +00:00
sommerfe 27a01cc18e Use __getcwd() system call in getcwd() unless OLD_GETCWD is defined 1999-03-26 04:04:13 +00:00
christos ccbb2cb989 port to svr4. 1998-11-06 19:43:23 +00:00
perry 98b9f211ee fix bcopy->memcpy with memcpy->memmove -- not strictly needed, but... 1998-08-26 00:38:39 +00:00
perry a843f0f8a5 bzero->memset, bcopy->memcpy, bcmp->memcmp 1998-08-10 02:43:08 +00:00
lukem 2b0e1bd9bd backout parts of the lite2 merge; it causes undesirable lossage:
* $PWD was used if it appeared ``correct''. this `enhancment' was
  not documented in getcwd(3), and caused problems for pwd(1) (which
  uses getcwd(3)), and in turn <bsd.obj.mk> (which uses pwd) when $PWD
  is set to the logical path instead of the real path (e.g, symlink
  /usr/src -> /z/NetBSD-current/src).
  [$PWD is set to the logical path by tcsh(1) with set symlinks=expand]
* as getcwd() without the $PWD code is just a wrapper to getcwd_physical(),
  rename the latter to the latter. hack realpath() to use the getcwd().

yet another case of `it was a good idea, but...'
1998-03-14 03:27:59 +00:00
perry 1ea84adf39 trivial changes to reduce lint complaints 1998-02-26 02:40:11 +00:00
perry 4146d58604 remove obsolete register declarations 1998-02-03 18:23:37 +00:00
perry 5769bb1db8 add some fixes to realpath() that were in the old realpath.c 1998-02-02 23:33:44 +00:00
perry 08b0946f73 merge/update to lite-2 1998-02-02 02:41:17 +00:00
jtc 43fa6fe319 If port provides __weak_alias(), provide an Standard C and POSIX pure
identifier namespace by renaming non standard functions and variables
such that they have a leading underscore.  The library will use those
names internally.  Weak aliases are used to provide the original names
to the API.

This is only the first part of this change.  It is most of the functions
which are implemented in C for all NetBSD ports.  Subsequent changes are
to add the same support to the remaining C files, to assembly files, and
to the automagically generated assembly source used for system calls.
When all of the above is done, ports with weak alias support should add
a definition for __weak_alias to <sys/cdefs.h>.
1997-07-21 14:06:24 +00:00
christos d177cac3ba Fix RCSID's
Fix gcc warnings.
1997-07-13 19:00:13 +00:00
jtc 915b76dd9f Don't cast void functions to void. 1995-06-16 07:05:27 +00:00
cgd b585e843ca update from Lite, with local changes. fix Ids, etc. 1995-02-27 04:12:15 +00:00
jtc 9c20f740a3 Declare rcsid strings so they are stored in text segment. 1993-08-26 00:43:03 +00:00
mycroft f23f94cb77 Add even more RCS frobs. 1993-07-30 08:21:41 +00:00
cgd 61f282557f initial import of 386bsd-0.1 sources 1993-03-21 09:45:37 +00:00