Comment 12 for bug 27952

Revision history for this message
Debian Bug Importer (debzilla) wrote :

Message-Id: <email address hidden>
Date: Mon, 09 Jan 2006 10:18:13 -0500
From: Matthias Clasen <email address hidden>
To: <email address hidden>
Subject:

--=-cZaZ+yaIEggWEBtcfLKc
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Ah, got it now. Does this look more complete ?

--=-cZaZ+yaIEggWEBtcfLKc
Content-Disposition: attachment; filename=ImageMagick-6.2.5-format-string-again.patch
Content-Type: text/x-patch; name=ImageMagick-6.2.5-format-string-again.patch; charset=UTF-8
Content-Transfer-Encoding: 7bit

--- ImageMagick-6.2.5/magick/image.c.format-string-again 2005-10-22 12:17:39.000000000 -0400
+++ ImageMagick-6.2.5/magick/image.c 2006-01-09 10:09:33.000000000 -0500
@@ -2861,8 +2861,16 @@
             char
               format[MaxTextExtent];

+ /* Extract first numeric format specifier */
             (void) CopyMagickString(format,p,MaxTextExtent);
+ if (q-p+1 < MaxTextExtent)
+ format[q-p+1]='\0';
+ /* Expand format */
             (void) FormatMagickString(p,MaxTextExtent,format,image_info->scene);
+ /* Copy rest of string verbatim without further expansion */
+ (void) ConcatenateMagickString(filename,
+ image_info->filename+(q-filename)+1,
+ MaxTextExtent);
             break;
           }
       }
--- ImageMagick-6.2.5/magick/blob.c.format-string-again 2005-09-28 15:00:17.000000000 -0400
+++ ImageMagick-6.2.5/magick/blob.c 2006-01-09 10:09:33.000000000 -0500
@@ -2135,8 +2135,17 @@
             char
               format[MaxTextExtent];

+ /* Extract first numeric format specifier */
             (void) CopyMagickString(format,p,MaxTextExtent);
+ if (q-p+1 < MaxTextExtent)
+ format[q-p+1]='\0';
+ /* Expand format */
             (void) FormatMagickString(p,MaxTextExtent,format,image->scene);
+ /* Copy rest of string verbatim without further expansion */
+ (void) ConcatenateMagickString(filename,
+ image_info->filename+(q-filename)+1,
+ MaxTextExtent);
+
             break;
           }
       }
--- ImageMagick-6.2.5/magick/animate.c.format-string-again 2005-10-23 22:15:16.000000000 -0400
+++ ImageMagick-6.2.5/magick/animate.c 2006-01-09 10:15:17.000000000 -0500
@@ -606,8 +606,33 @@
               /*
                 Form filename for multi-part images.
               */
- (void) FormatMagickString(filename,MaxTextExtent,
- image_info->filename,scene);
+ (void) CopyMagickString(filename,image->filename,MaxTextExtent);
+ for (p=strchr(filename,'%'); p != (char *) NULL; p=strchr(p+1,'%'))
+ {
+ char
+ *q;
+
+ q=p+1;
+ if (*q == '0')
+ (void) strtol(q,&q,10);
+ if ((*q == '%') || (*q == 'd') || (*q == 'o') || (*q == 'x'))
+ {
+ char
+ format[MaxTextExtent];
+
+ /* Extract first numeric format specifier */
+ (void) CopyMagickString(format,p,MaxTextExtent);
+ if (q-p+1 < MaxTextExtent)
+ format[q-p+1]='\0';
+ /* Expand format */
+ (void) FormatMagickString(p,MaxTextExtent,format,image->scene);
+ /* Copy rest of string verbatim without further expansion */
+ (void) ConcatenateMagickString(filename,
+ image_info->filename+(q-filename)+1,
+ MaxTextExtent);
+ break;
+ }
+ }
               if (LocaleCompare(filename,image_info->filename) == 0)
                 (void) FormatMagickString(filename,MaxTextExtent,"%s[%lu]",
                   image_info->filename,scene);

--=-cZaZ+yaIEggWEBtcfLKc--