All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Javier Martín" <lordhabbit@gmail.com>
To: The development of GRUB 2 <grub-devel@gnu.org>
Subject: Re: [PATCH] r1986 broke FAT detection
Date: Tue, 10 Feb 2009 12:44:14 +0100	[thread overview]
Message-ID: <1234266254.7325.12.camel@localhost> (raw)
In-Reply-To: <1234259444.3416.8.camel@fz.local>

[-- Attachment #1: Type: text/plain, Size: 1945 bytes --]

El mar, 10-02-2009 a las 10:50 +0100, Felix Zielcke escribió:
> Am Dienstag, den 10.02.2009, 01:19 +0100 schrieb Javier Martín:
> > At r1985, "sudo ./grub-probe -t fs -d /dev/fd0" outputs "fat" with a
> > freshly-formatted VFAT floppy in the drive. At r1986, it spits "error:
> > unknown filesystem". The cause is this error, repeated three times:
> > 
> > if (! grub_strncmp(something, "FAT12", 5))
> >   goto fail;
> > 
> > Strncmp does not return a boolean result (i.e. matches or doesn't), but
> > an _integer_ that is supposed to establish a comparison order between
> > strings. Thus, a return value of 0 is actually a match. See why I insist
> > on treating semantic-ints different than semantic-bools even though the
> > language does not? The correction is obvious (a patch is attached):
> 
> Thanks for your patch. Commited.
> 
You're welcome. I see that nevertheless the "0 != " comparisons were
substituted for standard C int-to-bool-conversion-based comparisons.
Maybe people should know the signature _and_ semantic contract of
strncmp, but frequently they don't (I had to look it up in the
handbook), and while the code that was committed may look like an
"obvious error" to a wanderer (because, of course, comparison functions
should return a semantic-bool, shouldn't they?), the version with the
explicit "0 != " checks at least looks like it was written like that _on
purpose_ (and the actual binary cost should be zero with any sensible
compiler), thus making future developers on bug-fixing quests at least
scratch their heads before proposing the change to the "if (!strncmp)"
error. So, keeping the coding style consistent is important, but I think
a balance with readability is in order. Thus, you are the maintainers
and you know what you're doing, but I think it's not worth to keep the
coding style so strict as to become confusing.


-- Lazy Oblivious, Rational Disaster -- Habbit

[-- Attachment #2: Esta parte del mensaje está firmada digitalmente --]
[-- Type: application/pgp-signature, Size: 835 bytes --]

  reply	other threads:[~2009-02-10 11:44 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-10  0:19 [PATCH] r1986 broke FAT detection Javier Martín
2009-02-10  9:50 ` Felix Zielcke
2009-02-10 11:44   ` Javier Martín [this message]
2009-02-21 13:13     ` Robert Millan
2009-02-22 14:08       ` Javier Martín

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=1234266254.7325.12.camel@localhost \
    --to=lordhabbit@gmail.com \
    --cc=grub-devel@gnu.org \
    /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.