Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Sep 2010 20:48:03 +0100
From:      Rui Paulo <rpaulo@FreeBSD.org>
To:        Gavin Atkinson <gavin@FreeBSD.org>
Cc:        svn-src-stable@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, svn-src-stable-8@FreeBSD.org
Subject:   Re: svn commit: r213002 - in stable/8: include lib/libc/gen
Message-ID:  <4461F6BE-707F-40D4-93F0-6661332A38C6@FreeBSD.org>
In-Reply-To: <1285180346.65489.3.camel@buffy.york.ac.uk>
References:  <201009221800.o8MI0Ze3038214@svn.freebsd.org> <1285180346.65489.3.camel@buffy.york.ac.uk>

next in thread | previous in thread | raw e-mail | index | archive | help

On 22 Sep 2010, at 19:32, Gavin Atkinson wrote:

> On Wed, 2010-09-22 at 18:00 +0000, Rui Paulo wrote:
>> Author: rpaulo
>> Date: Wed Sep 22 18:00:34 2010
>> New Revision: 213002
>> URL: http://svn.freebsd.org/changeset/base/213002
>> 
>> Log:
>>  MFC r197804 (rwatson):
>>    Add basename_r(3) to complement basename(3).  basename_r(3) which accepts
>>    a caller-allocated buffer of at least MAXPATHLEN, rather than using a
>>    global buffer.
>> 
>>  Note about semantics: while this interface is not POSIXy, there's
>>  another major platform that uses it (Android) and the semantics between
>>  the two platforms are pretty much the same.
> 
> Are you sure?
> 
> Ours (just introduced):
> 
>    char * basename_r(path, bname)
> 
> Android (from [1]):
> 
>    int    basename_r(const char* path, char*  buffer, size_t  bufflen)
> 
> The semantics seem very different.  Ours allocates a buffer, on Android
> you pass in a buffer, for a start.

Hmm, I only looked at the function body... It seems that the best way to overcome this is to just add a len parameter. The return value can also be changed.

P.S.: Our basename_r() performs no allocation. You were probably looking at basename().

Regards,
--
Rui Paulo





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4461F6BE-707F-40D4-93F0-6661332A38C6>