docs/82508: misleading man page for basename/dirname
Giorgos Keramidas
keramida at freebsd.org
Thu Jun 23 13:00:28 UTC 2005
The following reply was made to PR docs/82508; it has been noted by GNATS.
From: Giorgos Keramidas <keramida at freebsd.org>
To: Vlad Skvortsov <vss at high.net.ru>
Cc: bug-followup at freebsd.org
Subject: Re: docs/82508: misleading man page for basename/dirname
Date: Thu, 23 Jun 2005 15:55:52 +0300
On 2005-06-22 02:51, Vlad Skvortsov <vss at high.net.ru> wrote:
> The man pages for both basename(3) and dirname(3) state that the
> functions return pointers to the internal _static_ storage. However,
> those functions actually perform malloc() call to allocate storage on
> the first invocation. Thus, the memory pointer returned is actually a
> pointer to internal but dynamically allocated storage.
>
> I don't know whether this violates standard or not, but the
> documentation is misleading.
The term 'static' here is a warning that these functions are not thread-safe.
It does NOT mean that the ``bname'' object that is internal to basename() is
actually an array declared as:
char bname[MAXPATHLEN];
It merely means that multiple invocations of the function from concurrent
threads may clobber each other's data, so some form of locking should be used
around calls to basename() from threaded applications or the function should
be avoided altogether.
More information about the freebsd-doc
mailing list