Subject: bug#7099: closed (Re: bug#7099: mbsalign.c old c compiler complains about variables defined inside code)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 01 Oct 2010 13:31:02 +0000

Your bug report

#7099: mbsalign.c old c compiler complains about variables defined inside code

which was filed against the coreutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
7099: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7099
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#7099: mbsalign.c old c compiler complains about variables defined inside code
From: Pádraig Brady <[email-masked]>
To: Suhan Andrei <[email-masked]>
Cc: [email-masked]
Date: Fri, 01 Oct 2010 14:32:42 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

On 24/09/10 22:38, Pádraig Brady wrote:
> On 24/09/10 21:15, Suhan Andrei wrote:
>> Hi
>>
>> Just wanted to let you know there are some errors when using old compiler 
>> (
>> gcc -v
>> Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs
>> gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
>> )
>>
>>
>> Tere are 2 variables defined inside blocks of code that triggers old c compiler 
>> to spill errors.
>> I used code from coreutils-8.5.tar.gz 
>> I moved declaration at the start of code and all compiled ok.
> 
> Eep, I'll fix that up, as we want to keep stuff under gl/
> C89 conformant, as it may be moved to gnulib at some stage.

I'll push the attached soon.

cheers,
Pádraig.
commit 013ed013129cf3197686ab83ed4761f82302c916
Author: Pádraig Brady <[email-masked]>
Date:   Fri Oct 1 14:28:18 2010 +0100

    maint: tweak the mbsalign module to be C89 compatible
    
    This module may be moved to gnulib at some stage.
    
    * gl/lib/mbsalign.c (mbsalign): Declare variables at start of scope
    (ambsalign): Likewise
    * gl/lib/mbsalign.h: Remove trailing comma from enum

diff --git a/gl/lib/mbsalign.c b/gl/lib/mbsalign.c
index b92fe8f..117e4bf 100644
--- a/gl/lib/mbsalign.c
+++ b/gl/lib/mbsalign.c
@@ -217,7 +217,7 @@ mbsalign_unibyte:
   /* Write as much NUL terminated output to DEST as possible.  */
   if (dest_size != 0)
     {
-      size_t start_spaces, end_spaces;
+      size_t start_spaces, end_spaces, space_left;
       char *dest_end = dest + dest_size - 1;
 
       switch (align)
@@ -238,7 +238,7 @@ mbsalign_unibyte:
         }
 
       dest = mbs_align_pad (dest, dest_end, start_spaces);
-      size_t space_left = dest_end - dest;
+      space_left = dest_end - dest;
       dest = mempcpy (dest, str_to_print, MIN (n_used_bytes, space_left));
       mbs_align_pad (dest, dest_end, end_spaces);
     }
@@ -265,8 +265,9 @@ ambsalign (const char *src, size_t *width, mbs_align_t align, int flags)
 
   while (req >= size)
     {
+      char *nbuf;
       size = req + 1;           /* Space for NUL.  */
-      char *nbuf = realloc (buf, size);
+      nbuf = realloc (buf, size);
       if (nbuf == NULL)
         {
           free (buf);
diff --git a/gl/lib/mbsalign.h b/gl/lib/mbsalign.h
index 41bd490..96e81e7 100644
--- a/gl/lib/mbsalign.h
+++ b/gl/lib/mbsalign.h
@@ -21,7 +21,7 @@ typedef enum { MBS_ALIGN_LEFT, MBS_ALIGN_RIGHT, MBS_ALIGN_CENTER } mbs_align_t;
 enum {
   /* Use unibyte mode for invalid multibyte strings or
      or when heap memory is exhausted.  */
-  MBA_UNIBYTE_FALLBACK = 0x0001,
+  MBA_UNIBYTE_FALLBACK = 0x0001
 
 #if 0 /* Other possible options.  */
   /* Skip invalid multibyte chars rather than failing  */

Subject: mbsalign.c old c compiler complains about variables defined inside code
From: Suhan Andrei <[email-masked]>
To: [email-masked]
Date: Fri, 24 Sep 2010 13:15:08 -0700 (PDT)
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi

Just wanted to let you know there are some errors when using old compiler 
(
gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
)

Tere are 2 variables defined inside blocks of code that triggers old c compiler 
to spill errors.
I used code from coreutils-8.5.tar.gz 
I moved declaration at the start of code and all compiled ok.

Andrei.