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  */