[457] in bugtraq
Re: 8lgm's SCO "at" hole
daemon@ATHENA.MIT.EDU (Karl Strickland)
Sat Dec 10 09:54:42 1994
From: Karl Strickland <karl@bagpuss.demon.co.uk>
To: Casper Dik <casper@fwi.uva.nl>
Date: Sat, 10 Dec 1994 13:51:29 +0000 (GMT)
Cc: bugtraq@fc.net
In-Reply-To: <199412101322.AA12568@mail.fwi.uva.nl> from "Casper Dik" at Dec 10, 94 02:22:16 pm
>
>
> >AFAIK, getcwd(3) always calls /bin/pwd; but getwd(2) is a system call.
> >getcwd() is only provided for backwards compatibility; i suppose all new
> >code should be using getwd(2).
>
>
> Neither of the calls is a system call on any system that I'm aware of.
You're quite right - I stand corrected..
> Getcwd(3) is the thing POSIX wants you to use.
> Getwd() is to getcwd() what gets() is to fgets() [ well, almost ].
>
> When chosing between: getwd(char *buf) and getcwd(char *buf, size_t size_of_buf)
> the choice should be obvious.
I'm not so sure its as obvious as the choice between gets() & fgets().
eg: from SunOS 4.1.x getcwd() man page:
BUGS
Since this function uses popen() to create a pipe to the pwd
command, it is slower than getwd() and gives poorer error
diagnostics. getcwd() is provided only for compatibility
with other UNIX operating systems.
So - for me at least - getwd() would be the obvious choice here. getwd()
isnt quite as bad as gets() - at least there is an upper bound on getwd()
(according to the documentation anyway, obviously not seen the src) of
MAXPATHLEN bytes.
> In SunOS 4.1.x, getcwd() does call /bin/pwd.
> In Solaris 2.x, getcwd() use /etc/mnttab and some tree traversal
> to find the current directory. getwd is relegated to libucb.so and
> just calls getcwd(buf, MAXPATHLEN);
Whats getwd() in Solaris 2.x? Does it just do getcwd(pathname, MAXPATHLEN) ?
Cheers
------------------------------------------+-----------------------------------
Mailed using ELM on FreeBSD | Karl Strickland
PGP 2.3a Public Key Available. | Internet: karl@bagpuss.demon.co.uk
|