threads / patch / 27187

patchrun-command.c: Fix unused variables warning with gcc 4.6

Subject: [PATCH] run-command.c: Fix unused variables warning with gcc 4.6

## tl;dr

5 messages between Apr 26, 2011 and Apr 27, 2011. Diffs are folded; open one to read it.

replies: 4people: 4as markdown or json

Michael Schubert· Apr 26, 2011, 12:28 UTC · lore

As of gcc 4.6 -Wall includes -Wunused-but-set-variable. Remove all unused variables to prevent those warnings.

Signed-off-by: Michael Schubert <mschub@elegosoft.com>
---
 run-command.c |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)
Show changes to run-command.c +4 −6
diff --git a/run-command.c b/run-command.c
index f91e446..6e0be54 100644
--- a/run-command.c
+++ b/run-command.c
@@ -67,21 +67,19 @@ static int child_notifier = -1;

 static void notify_parent(void)
 {
-	ssize_t unused;
-	unused = write(child_notifier, "", 1);
+	write(child_notifier, "", 1);
 }

 static NORETURN void die_child(const char *err, va_list params)
 {
 	char msg[4096];
-	ssize_t unused;
 	int len = vsnprintf(msg, sizeof(msg), err, params);
 	if (len > sizeof(msg))
 		len = sizeof(msg);

-	unused = write(child_err, "fatal: ", 7);
-	unused = write(child_err, msg, len);
-	unused = write(child_err, "\n", 1);
+	write(child_err, "fatal: ", 7);
+	write(child_err, msg, len);
+	write(child_err, "\n", 1);
 	exit(128);
 }
 #endif
-- 
1.7.4.4
Michael J Gruber· Apr 26, 2011, 13:13 UTC · re: Michael Schubert · lore

Re: [PATCH] run-command.c: Fix unused variables warning with gcc 4.6

Michael Schubert venit, vidit, dixit 26.04.2011 14:28:
Show 38 quoted lines
> As of gcc 4.6 -Wall includes -Wunused-but-set-variable. Remove all
> unused variables to prevent those warnings.
> 
> Signed-off-by: Michael Schubert <mschub@elegosoft.com>
> ---
>  run-command.c |   10 ++++------
>  1 files changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/run-command.c b/run-command.c
> index f91e446..6e0be54 100644
> --- a/run-command.c
> +++ b/run-command.c
> @@ -67,21 +67,19 @@ static int child_notifier = -1;
> 
>  static void notify_parent(void)
>  {
> -	ssize_t unused;
> -	unused = write(child_notifier, "", 1);
> +	write(child_notifier, "", 1);
>  }
> 
>  static NORETURN void die_child(const char *err, va_list params)
>  {
>  	char msg[4096];
> -	ssize_t unused;
>  	int len = vsnprintf(msg, sizeof(msg), err, params);
>  	if (len > sizeof(msg))
>  		len = sizeof(msg);
> 
> -	unused = write(child_err, "fatal: ", 7);
> -	unused = write(child_err, msg, len);
> -	unused = write(child_err, "\n", 1);
> +	write(child_err, "fatal: ", 7);
> +	write(child_err, msg, len);
> +	write(child_err, "\n", 1);
>  	exit(128);
>  }
>  #endif
git log -S"unused" origin/master run-command.c

shows that these dummies were introduced for a reason. How do you invalidate that?

Michael
Michael Schubert· Apr 26, 2011, 13:27 UTC · re: Michael J Gruber · lore

Re: [PATCH] run-command.c: Fix unused variables warning with gcc 4.6

On 04/26/2011 03:13 PM, Michael J Gruber wrote:
Show 44 quoted lines
> Michael Schubert venit, vidit, dixit 26.04.2011 14:28:
>> As of gcc 4.6 -Wall includes -Wunused-but-set-variable. Remove all
>> unused variables to prevent those warnings.
>>
>> Signed-off-by: Michael Schubert <mschub@elegosoft.com>
>> ---
>>  run-command.c |   10 ++++------
>>  1 files changed, 4 insertions(+), 6 deletions(-)
>>
>> diff --git a/run-command.c b/run-command.c
>> index f91e446..6e0be54 100644
>> --- a/run-command.c
>> +++ b/run-command.c
>> @@ -67,21 +67,19 @@ static int child_notifier = -1;
>>
>>  static void notify_parent(void)
>>  {
>> -	ssize_t unused;
>> -	unused = write(child_notifier, "", 1);
>> +	write(child_notifier, "", 1);
>>  }
>>
>>  static NORETURN void die_child(const char *err, va_list params)
>>  {
>>  	char msg[4096];
>> -	ssize_t unused;
>>  	int len = vsnprintf(msg, sizeof(msg), err, params);
>>  	if (len > sizeof(msg))
>>  		len = sizeof(msg);
>>
>> -	unused = write(child_err, "fatal: ", 7);
>> -	unused = write(child_err, msg, len);
>> -	unused = write(child_err, "\n", 1);
>> +	write(child_err, "fatal: ", 7);
>> +	write(child_err, msg, len);
>> +	write(child_err, "\n", 1);
>>  	exit(128);
>>  }
>>  #endif
> 
> git log -S"unused" origin/master run-command.c
> 
> shows that these dummies were introduced for a reason. How do you
> invalidate that?
Sorry, just missed that.
Andreas Ericsson· Apr 26, 2011, 13:45 UTC · re: Michael Schubert · lore

Re: [PATCH] run-command.c: Fix unused variables warning with gcc 4.6

On 04/26/2011 03:27 PM, Michael Schubert wrote:
Show 48 quoted lines
> On 04/26/2011 03:13 PM, Michael J Gruber wrote:
>> Michael Schubert venit, vidit, dixit 26.04.2011 14:28:
>>> As of gcc 4.6 -Wall includes -Wunused-but-set-variable. Remove all
>>> unused variables to prevent those warnings.
>>>
>>> Signed-off-by: Michael Schubert<mschub@elegosoft.com>
>>> ---
>>>   run-command.c |   10 ++++------
>>>   1 files changed, 4 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/run-command.c b/run-command.c
>>> index f91e446..6e0be54 100644
>>> --- a/run-command.c
>>> +++ b/run-command.c
>>> @@ -67,21 +67,19 @@ static int child_notifier = -1;
>>>
>>>   static void notify_parent(void)
>>>   {
>>> -	ssize_t unused;
>>> -	unused = write(child_notifier, "", 1);
>>> +	write(child_notifier, "", 1);
>>>   }
>>>
>>>   static NORETURN void die_child(const char *err, va_list params)
>>>   {
>>>   	char msg[4096];
>>> -	ssize_t unused;
>>>   	int len = vsnprintf(msg, sizeof(msg), err, params);
>>>   	if (len>  sizeof(msg))
>>>   		len = sizeof(msg);
>>>
>>> -	unused = write(child_err, "fatal: ", 7);
>>> -	unused = write(child_err, msg, len);
>>> -	unused = write(child_err, "\n", 1);
>>> +	write(child_err, "fatal: ", 7);
>>> +	write(child_err, msg, len);
>>> +	write(child_err, "\n", 1);
>>>   	exit(128);
>>>   }
>>>   #endif
>>
>> git log -S"unused" origin/master run-command.c
>>
>> shows that these dummies were introduced for a reason. How do you
>> invalidate that?
> 
> Sorry, just missed that.
> 

A better solution than reverting the prettifying commit ebec842773932e6f853acac70c80f84209b5f83e would be to rework it to use logical AND instead of logical OR, as the AND-chain won't short-circuit the statement chain early and prevent output from being printed when write() returns non-zero. When it *does* return zero, it's likely due to problems on the receiving ends, making further writing totally pointless anyway.

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.
Jonathan Nieder· Apr 27, 2011, 01:16 UTC · re: Michael Schubert · lore

Re: [PATCH] run-command.c: Fix unused variables warning with gcc 4.6

Hi Michael,
Michael Schubert wrote:
> As of gcc 4.6 -Wall includes -Wunused-but-set-variable. Remove all
> unused variables to prevent those warnings.

As the other Michael mentioned, this patch replaces one warning with another. You might like a111eb7 (run-command: handle short writes and EINTR in die_child, 2011-04-20, aka jn/run-command-error-failure in "pu"), which eliminates both.

Andreas, a patch on top to short-circuit away the later writes on error doesn't sound bad to me if you'd like, though it seems like a bit of an edge case.

Thanks, all. Jonathan

← back to recent threads