lkml.org 
[lkml]   [2011]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] linux/string.h: Introduce streq macro.
    On Wed, Apr 27, 2011 at 01:07:59PM -0400, Steven Rostedt wrote:
    > On Wed, 2011-04-27 at 17:46 +0100, Al Viro wrote:
    > > On Tue, Apr 26, 2011 at 03:49:49PM -0300, Thiago Farina wrote:
    > > > This macro is arguably more readable than its variants:
    > > > - !strcmp(a, b)
    > > > - strcmp(a, b) == 0
    > >
    > > Strongly NACKed. As far as I'm concerned, it's in the same shitbucket as
    > > bcopy(3), bzero(3) et.al. Use idiomatic C; extensions of that kind are
    > > *bad*, since new developers have to learn them.
    >
    > What developer has to really learn streq()? I mean it is pretty obvious
    > to what it does, as suppose to what bzero and bcopy do. A quick google
    > on "streq" brings up lots of matches of people who already do this.

    I would. Coming from BSD background, b* bunch is normal and familiar for
    me. Your streq()... Nope. I can use google, but I'd have to stop and
    actually do that (and if you bothered to do the same, you would've found
    official POSIX manpages for bcopy(3) and friends, complete with
    "
    Issue 5

    Moved from X/OPEN UNIX extension to BASE.

    Issue 6

    This function is marked LEGACY.
    "
    in "CHANGE HISTORY" section. These are fairly common BSDisms, and if you
    grep through drivers/staging you'll find more than one instance in there;
    all are deletion fodder).

    That's the whole fucking _point_; adding random extensions to the language
    leads to the place where Pascal and LISP are and it's not pretty. Each
    might make sense taken separately (hell, bzero(3) would prevent real, honest
    to Cthulhu bugs - it's memset(p, 0, n) and we had memset-with-swapped-arguments
    bugs fairly often and yes, in our tree most of memset() callers do pass '\0'
    as the second argument). Pile enough of those together and you've got yourself
    a dialect only you understand. _Bad_ idea, since the next thing that happens
    is different dialects in different parts of tree. And the end of non-incestous
    code review and fixes. I've seen it first-hand (OK, second - I had enough
    sense to stay out of that particular clusterfuck) on Algol 68 codebase. I
    *really*, *really* do not want to see anything similar ever again. Especially
    on projects I can't just piss upon and walk away from. The fact that in C
    you *can* extend the language that way doesn't make it a good idea.

    While we are at it, strcmp() is, indeed, a part of the language. See
    section 7.21.4.2 in C99.


    \
     
     \ /
      Last update: 2011-04-27 23:49    [W:0.228 / U:0.148 seconds]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean