|List:||Commits||« Previous MessageNext Message »|
|From:||Alexey Kopytov||Date:||October 1 2010 11:24am|
|Subject:||Re: bzr commit into mysql-5.1-bugteam branch (Alexey.Kopytov:3514)|
|View as plain text|
On 01.10.10 12:04, Tor Didriksen wrote: > On Thu, Sep 30, 2010 at 2:36 PM, Sergei Golubchik<serg@stripped> wrote: > >> Hi, Davi! >> >> On Sep 30, Davi Arnaut wrote: >>> On 9/30/10 8:33 AM, Tor Didriksen wrote: >>>> On Fri, Sep 24, 2010 at 11:20 AM, Alexey Kopytov >>>>>> >>>>>> I personally think of bzero() as a convenient alias for the > most >>>>>> commonly used form of memset(). In other words, even if > bzero() >>>>>> did not exist, it should have been created. And we actually do >>>>>> something like that in m_string.h: >>>>>> >>>>>> #if !defined(bzero)&& !defined(HAVE_BZERO) >>>>>> # define bzero(A,B) memset((A),0,(B)) >>>>>> #endif >>>> >>>> Time for another update of the style guide I guess, >>>> we shouldn't be recommending functions which are deprecated. >>> >>> Definitely. bzero is a officially deprecated function and we never >>> actually use it because it depends on some BSD defines that we never >>> set. >> >> So, Kaamos is right after all :) >> >> Coding style does not recommend a deprecated function, furthermore this >> deprecated function was never used. bzero() is just a convenience macro, >> and should be fine as such. The fact that libc has deprecated a function >> does not apply to MySQL internal macro that happen to have the same >> name :) >> > > no ?? > > #if !defined(bzero)&& !defined(HAVE_BZERO) > # define bzero(A,B) memset((A),0,(B)) > #endif > > configure/cmake will define HAVE_BZERO > and we end up calling the deprecated function in the C library > > -- didrik > Yes, we do use bzero(), at least on Linux, Solaris and Mac OS X, since we include both string.h (which defines bzero() only when __USE_BSD is defined) and strings.h (which seems to define bzero() on complementary to __USE_BSD conditions). But then again, http://www.opengroup.org/onlinepubs/000095399/functions/bzero.html : "For maximum portability, it is recommended to replace the function call to bzero() as follows: #define bzero(b,len) (memset((b), '\0', (len)), (void) 0) " Which is what we do in m_string.h when bzero() is unavailable. "For maximum portability". Does that mean we comply with POSIX? Or, why should we care about the legacy status of bzero() at all? /Alexey.