All of lore.kernel.org
 help / color / mirror / Atom feed
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Thiago Farina <tfransosi@gmail.com>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] linux/string.h: Introduce streq macro.
Date: Wed, 27 Apr 2011 22:46:57 +0100	[thread overview]
Message-ID: <20110427214657.GE9487@ZenIV.linux.org.uk> (raw)
In-Reply-To: <1303924079.18763.70.camel@gandalf.stny.rr.com>

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.

  reply	other threads:[~2011-04-27 21:47 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-26 18:49 [PATCH] linux/string.h: Introduce streq macro Thiago Farina
2011-04-26 19:00 ` Steven Rostedt
2011-04-26 19:05 ` Alexey Dobriyan
2011-04-26 19:17   ` Steven Rostedt
2011-04-26 19:20     ` Alexey Dobriyan
2011-04-26 19:21       ` Thiago Farina
2011-04-26 19:37         ` Steven Rostedt
2011-04-26 19:45           ` Joe Perches
2011-04-26 19:47             ` Thiago Farina
2011-04-26 19:58               ` Steven Rostedt
2011-04-26 20:06                 ` Joe Perches
2011-04-27  8:29                 ` Miguel Ojeda
2011-04-27  8:42                   ` Geert Uytterhoeven
2011-04-27  8:49                     ` Miguel Ojeda
2011-04-27  9:04                       ` Pavel Vasilyev
2011-04-26 20:00               ` Steven Rostedt
2011-04-26 19:25       ` Steven Rostedt
2011-04-26 19:45 ` Thiago Farina
2011-04-26 19:54   ` Thiago Farina
2011-04-27 17:49   ` Steven Rostedt
2011-04-27 18:33     ` H. Peter Anvin
2011-04-27 18:51       ` Pekka Enberg
2011-04-27 19:16         ` Steven Rostedt
2011-04-27 19:26           ` Steven Rostedt
2011-04-27 19:38           ` Pekka Enberg
2011-04-27 20:04             ` Steven Rostedt
2011-04-27 20:24               ` H. Peter Anvin
2011-04-27 19:01       ` Steven Rostedt
2011-04-27 23:38       ` Ted Ts'o
2011-04-28  3:30       ` Rusty Russell
2011-04-26 20:27 ` Davidlohr Bueso
2011-04-26 20:33   ` Thiago Farina
2011-04-27  0:52 ` Ted Ts'o
2011-04-27  1:32   ` Steven Rostedt
2011-04-27  6:47   ` Christoph Hellwig
2011-04-27  8:47     ` gmack
2011-04-27 14:52       ` Ted Ts'o
2011-04-27 16:04         ` Alexey Dobriyan
2011-04-27 16:26           ` Steven Rostedt
2011-04-27  8:35 ` Mike Frysinger
2011-04-27 16:46 ` Al Viro
2011-04-27 17:07   ` Steven Rostedt
2011-04-27 21:46     ` Al Viro [this message]
2011-04-27 22:17       ` Thiago Farina
2011-04-27 22:38         ` Pavel Vasilyev
2011-04-27 22:45         ` Al Viro
2011-04-28  0:05       ` Steven Rostedt
2011-04-27 22:21     ` Thiago Farina

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110427214657.GE9487@ZenIV.linux.org.uk \
    --to=viro@zeniv.linux.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=tfransosi@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.