Paul Eggert <[EMAIL PROTECTED]> wrote: > Jim Meyering <[EMAIL PROTECTED]> writes: > >> mode = (sizeof (mode_t) < sizeof (int) >> ? va_arg (ap, int) >> : va_arg (ap, mode_t)); <<<============ line 43 >> >> IMHO, adding casts here just to avoid that warning would be >> counterproductive. > > I agree. But would it turn your stomach to rewrite it this way? > (I assume this would silence the warning.) In general I don't like > this kind of rewrite, but in this particular case it might be OK. > > if (sizeof (mode_t) < sizeof (int)) > mode = va_arg (ap, int); > else > mode = va_arg (ap, mode_t);
Nice work-around. Ok for me to push this in your name? >From 1b71c50d5a227649f1bcc11cf79e2be7ef68fff8 Mon Sep 17 00:00:00 2001 From: Paul Eggert <[EMAIL PROTECTED]> Date: Thu, 16 Oct 2008 21:48:54 +0200 Subject: [PATCH] open-safer.c: avoid 'signed and unsigned in conditional...' warning * lib/open-safer.c (open_safer): Use an "if/else" statement in place of the ternary operator. Reported by Reuben Thomas <[EMAIL PROTECTED]>. --- ChangeLog | 6 ++++++ lib/open-safer.c | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0394202..5bd8819 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-10-16 Paul Eggert <[EMAIL PROTECTED]> + + open-safer.c: avoid 'signed and unsigned in conditional...' warning + * lib/open-safer.c (open_safer): Use an "if/else" statement in place + of the ternary operator. Reported by Reuben Thomas <[EMAIL PROTECTED]>. + 2008-10-16 Jim Meyering <[EMAIL PROTECTED]> openat-die.c: avoid 'no previous prototype' warning diff --git a/lib/open-safer.c b/lib/open-safer.c index ce493d5..15bf6a6 100644 --- a/lib/open-safer.c +++ b/lib/open-safer.c @@ -1,6 +1,6 @@ /* Invoke open, but avoid some glitches. - Copyright (C) 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -38,9 +38,10 @@ open_safer (char const *file, int flags, ...) /* Assume mode_t promotes to int if and only if it is smaller. This assumption isn't guaranteed by the C standard, but we don't know of any real-world counterexamples. */ - mode = (sizeof (mode_t) < sizeof (int) - ? va_arg (ap, int) - : va_arg (ap, mode_t)); + if (sizeof (mode_t) < sizeof (int)) + mode = va_arg (ap, int); + else + mode = va_arg (ap, mode_t); va_end (ap); } -- 1.6.0.2.532.g84ed4c