Ah, got it now. Does this look more complete ?
--- 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);