Date: Thu, 23 Jun 2005 13:00:28 GMT From: Giorgos Keramidas <keramida@freebsd.org> To: freebsd-doc@FreeBSD.org Subject: Re: docs/82508: misleading man page for basename/dirname Message-ID: <200506231300.j5ND0SZv076955@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR docs/82508; it has been noted by GNATS. From: Giorgos Keramidas <keramida@freebsd.org> To: Vlad Skvortsov <vss@high.net.ru> Cc: bug-followup@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@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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200506231300.j5ND0SZv076955>