GraphicsMagick: magick/magic.c: Add a Magic description field. T...

GraphicsMagick Commits <[email protected]> Mon, 03 Feb 2025 15:22:23 -0600
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.51249.1738617763.8001.graphicsmagick-commit@lists.sourceforge.net>
changeset d1810a5bf3a3 in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=d1810a5bf3a3
summary: magick/magic.c: Add a Magic description field. Trace magic.

diffstat:

 ChangeLog                              |    7 +
 VisualMagick/installer/inc/version.isx |    4 +-
 magick/magic.c                         |  237 +++++++++++++++++---------------
 magick/version.h                       |    4 +-
 www/ChangeLog.html                     |    9 +
 5 files changed, 143 insertions(+), 118 deletions(-)

diffs (318 lines):

diff -r 339ea5233db0 -r d1810a5bf3a3 ChangeLog
--- a/ChangeLog	Wed Jan 29 15:19:59 2025 -0600
+++ b/ChangeLog	Mon Feb 03 15:19:48 2025 -0600
@@ -1,3 +1,10 @@
+2025-02-03  Bob Friesenhahn  <[email protected]>
+
+	* magick/magic.c: Add a Magic description field in order to help
+	identify and document format variants based on header magic.
+	(GetMagickFileFormat): Trace the format description at Coder
+	level.
+
 2025-01-29  Bob Friesenhahn  <[email protected]>
 
 	* coders/png.c (WriteOnePNGImage): Ignore exessively short ICM
diff -r 339ea5233db0 -r d1810a5bf3a3 VisualMagick/installer/inc/version.isx
--- a/VisualMagick/installer/inc/version.isx	Wed Jan 29 15:19:59 2025 -0600
+++ b/VisualMagick/installer/inc/version.isx	Mon Feb 03 15:19:48 2025 -0600
@@ -10,5 +10,5 @@
 
 #define public MagickPackageName "GraphicsMagick"
 #define public MagickPackageVersion "1.4"
-#define public MagickPackageVersionAddendum ".020250129"
-#define public MagickPackageReleaseDate "snapshot-20250129"
+#define public MagickPackageVersionAddendum ".020250203"
+#define public MagickPackageReleaseDate "snapshot-20250203"
diff -r 339ea5233db0 -r d1810a5bf3a3 magick/magic.c
--- a/magick/magic.c	Wed Jan 29 15:19:59 2025 -0600
+++ b/magick/magic.c	Mon Feb 03 15:19:48 2025 -0600
@@ -52,125 +52,128 @@
   const unsigned char
     * const magic;
 
+  const char
+    * description;
+
   unsigned short
     length,
     offset;
 }
 StaticMagic[] =
 {
-#define MAGIC(name,offset,magic) {name,(const unsigned char * const)magic,sizeof(magic)-1,offset}
-  MAGIC("WEBP", 8, "WEBP"),
-  MAGIC("AVIF", 4, "ftypavif"), /* HEIF: AV1 image */
-  MAGIC("AVIF", 4, "ftypavis"), /* HEIF: AV1 image sequence */
-  /* MAGIC("AVI", 0, "RIFF"), */
-  MAGIC("8BIMWTEXT", 0, "8\000B\000I\000M\000#"),
-  MAGIC("8BIMTEXT", 0, "8BIM#"),
-  MAGIC("8BIM", 0, "8BIM"),
-  MAGIC("BMP", 0, "BA"),
-  MAGIC("BMP", 0, "BM"),
-  MAGIC("BMP", 0, "CI"),
-  MAGIC("BMP", 0, "CP"),
-  MAGIC("BMP", 0, "IC"),
-  MAGIC("BMP", 0, "PI"),
-  MAGIC("CALS", 21, "version: MIL-STD-1840"),
-  MAGIC("CALS", 0, "srcdocid:"),
-  MAGIC("CALS", 9, "srcdocid:"),
-  MAGIC("CALS", 8, "rorient:"),
-  MAGIC("CGM", 0, "BEGMF"),
-  MAGIC("CIN", 0, "\200\052\137\327"),
-  MAGIC("DCM", 128, "DICM"),
-  MAGIC("DCX", 0, "\261\150\336\72"),
-  MAGIC("DIB", 0, "\050\000"),
-  MAGIC("DOT", 0, "digraph"),
-  MAGIC("DPX", 0, "SDPX"),
-  MAGIC("DPX", 0, "XPDS"),
-  MAGIC("EMF", 40, "\040\105\115\106\000\000\001\000"),
-  MAGIC("EPT", 0, "\305\320\323\306"),
-  MAGIC("FAX", 0, "DFAX"),
-  MAGIC("FIG", 0, "#FIG"),
-  MAGIC("FITS", 0, "IT0"),
-  MAGIC("FITS", 0, "SIMPLE"),
-  MAGIC("FPX", 0, "\320\317\021\340"),
-  MAGIC("GIF", 0, "GIF8"),
-  MAGIC("HEIC", 4, "ftypheic"), /* HEIF: A regular heif image */
-  MAGIC("HEIC", 4, "ftypheix"), /* HEIF: Extended range (>8 bit) image */
-  MAGIC("HEIF", 4, "ftyphevc"), /* HEIF: Image sequence */
-  MAGIC("HEIF", 4, "ftypheim"), /* HEIF: Image sequence */
-  MAGIC("HEIF", 4, "ftypheis"), /* HEIF: Scalable image */
-  MAGIC("HEIF", 4, "ftyphevm"), /* HEIF: Multiview sequence */
-  MAGIC("HEIF", 4, "ftyphevs"), /* HEIF: Scalable sequence*/
-  MAGIC("HEIC", 4, "ftypmif1"), /* HEIF: Nokia alpha_ image */
-  MAGIC("HEIC", 4, "ftypmsf1"), /* HEIF: Nokia animation image */
-  MAGIC("HDF", 1, "HDF"),
-  MAGIC("HPGL", 0, "IN;"),
-  MAGIC("HTML", 1, "HTML"),
-  MAGIC("HTML", 1, "html"),
-  MAGIC("ILBM", 8, "ILBM"),
-  MAGIC("IPTCWTEXT", 0, "\062\000#\000\060\000=\000\042\000&\000#\000\060\000;\000&\000#\000\062\000;\000\042\000"),
-  MAGIC("IPTCTEXT", 0, "2#0=\042&#0;&#2;\042"),
-  MAGIC("IPTC", 0, "\034\002"),
-  MAGIC("JNG", 0, "\213JNG\r\n\032\n"),
-  MAGIC("JPEG", 0, "\377\330\377"),
-  MAGIC("JPC", 0, "\377\117"),
-  MAGIC("JP2", 4, "\152\120\040\040\015"),
-  MAGIC("JXL", 0, "\xff\x0a"),
-  MAGIC("JXL", 0, "\x00\x00\x00\x0c\x4a\x58\x4c\x20\x0d\x0a\x87\x0a"),
-  MAGIC("MAT", 0, "MATLAB 5.0 MAT-file,"),
-  MAGIC("MIFF", 0, "Id=ImageMagick"),
-  MAGIC("MIFF", 0, "id=ImageMagick"),
-  MAGIC("MNG", 0, "\212MNG\r\n\032\n"),
-  MAGIC("MPC", 0, "id=MagickCache"),
-  MAGIC("MPEG", 0, "\000\000\001\263"),
-  MAGIC("PCD", 2048, "PCD_"),
-  MAGIC("PCL", 0, "\033E\033"),
-  MAGIC("PCX", 0, "\012\002"),
-  MAGIC("PCX", 0, "\012\005"),
-  MAGIC("PDB", 60, "vIMGView"),
-  MAGIC("PDF", 0, "%PDF-"),
-  MAGIC("PFA", 0, "%!PS-AdobeFont-1.0"),
-  MAGIC("PFB", 6, "%!PS-AdobeFont-1.0"),
-  MAGIC("PGX", 0, "PG ML"),
-  MAGIC("PGX", 0, "PG LM"),
-  MAGIC("PICT", 522, "\000\021\002\377\014\000"),
-  MAGIC("PNG", 0, "\211PNG\r\n\032\n"),
-  MAGIC("PBM", 0, "P1"),
-  MAGIC("PGM", 0, "P2"),
-  MAGIC("PPM", 0, "P3"),
-  MAGIC("PBM", 0, "P4"),
-  MAGIC("PGM", 0, "P5"),
-  MAGIC("PPM", 0, "P6"),
-  MAGIC("P7", 0, "P7 332"), /* XV Thumbnail */
-  MAGIC("PAM", 0, "P7"), /* Should be listed after "P7 332" */
-  MAGIC("PS", 0, "%!"),
-  MAGIC("PS", 0, "\004%!"),
-  MAGIC("PS", 0, "\305\320\323\306"),
-  MAGIC("PSD", 0, "8BPS"),
-  MAGIC("PWP", 0, "SFW95"),
-  MAGIC("RAD", 0, "#?RADIANCE"),
-  MAGIC("RAD", 0, "VIEW= "),
-  MAGIC("RLE", 0, "\122\314"),
-  MAGIC("SCT", 0, "CT"),
-  MAGIC("SFW", 0, "SFW94"),
-  MAGIC("SGI", 0, "\001\332"),
-  MAGIC("SUN", 0, "\131\246\152\225"),
-  MAGIC("SVG", 1, "?XML"),
-  MAGIC("SVG", 1, "?xml"),
-  MAGIC("TIFF", 0, "\115\115\000\052"),
-  MAGIC("TIFF", 0, "\111\111\052\000"),
-  MAGIC("TOPOL", 0, "                    "),
-  MAGIC("BIGTIFF", 0, "\115\115\000\053\000\010\000\000"),
-  MAGIC("BIGTIFF", 0, "\111\111\053\000\010\000\000\000"),
-  MAGIC("VICAR", 0, "LBLSIZE"),
-  MAGIC("VICAR", 0, "NJPL1I"),
-  MAGIC("VIFF", 0, "\253\001"),
-  MAGIC("WMF", 0, "\327\315\306\232"),
-  MAGIC("WMF", 0, "\001\000\011\000"),
-  MAGIC("WPG", 0, "\377WPC"),
-  MAGIC("XBM", 0, "#define"),
-  MAGIC("XCF", 0, "gimp xcf"),
-  MAGIC("XPM", 1, "* XPM *"),
-  MAGIC("XWD", 4, "\007\000\000"),
-  MAGIC("XWD", 5, "\000\000\007")
+#define MAGIC(name,description,offset,magic) {name,(const unsigned char * const)magic,description, sizeof(magic)-1,offset}
+  MAGIC("WEBP", "WebP Image Format", 8, "WEBP"),
+  MAGIC("AVIF", "HEIF AV1 image", 4, "ftypavif"),
+  MAGIC("AVIF", "HEIF AV1 image sequence", 4, "ftypavis"),
+  /* MAGIC("AVI", "", 0, "RIFF"), */
+  MAGIC("8BIMWTEXT", "Photoshop resource wide text format", 0, "8\000B\000I\000M\000#"),
+  MAGIC("8BIMTEXT", "Photoshop resource text format", 0, "8BIM#"),
+  MAGIC("8BIM", "Photoshop resource format", 0, "8BIM"),
+  MAGIC("BMP", "BMP BA", 0, "BA"),
+  MAGIC("BMP", "BMP BM", 0, "BM"),
+  MAGIC("BMP", "BMP CI", 0, "CI"),
+  MAGIC("BMP", "BMP CP", 0, "CP"),
+  MAGIC("BMP", "BMP IC", 0, "IC"),
+  MAGIC("BMP", "BMP PI", 0, "PI"),
+  MAGIC("CALS", "Continuous Acquisition and Life-cycle Support Type 1 image", 21, "version: MIL-STD-1840"),
+  MAGIC("CALS", "Continuous Acquisition and Life-cycle Support Type 1 image", 0, "srcdocid:"),
+  MAGIC("CALS", "Continuous Acquisition and Life-cycle Support Type 1 image", 9, "srcdocid:"),
+  MAGIC("CALS", "Continuous Acquisition and Life-cycle Support Type 1 image", 8, "rorient:"),
+  MAGIC("CGM", "Computer Graphics Metaformat", 0, "BEGMF"),
+  MAGIC("CIN", "Cineon Image File", 0, "\200\052\137\327"),
+  MAGIC("DCM", "DICOM", 128, "DICM"),
+  MAGIC("DCX", "ZSoft IBM PC multi-page Paintbrush", 0, "\261\150\336\72"),
+  MAGIC("DIB", "Microsoft DIB", 0, "\050\000"),
+  MAGIC("DOT", "Graphviz DOT", 0, "digraph"),
+  MAGIC("DPX", "SMPTE 268M-2003 (DPX 2.0)", 0, "SDPX"),
+  MAGIC("DPX", "SMPTE 268M-2003 (DPX 2.0)", 0, "XPDS"),
+  MAGIC("EMF", "Microsoft EMF", 40, "\040\105\115\106\000\000\001\000"),
+  MAGIC("EPT", "Adobe Encapsulated PostScript with MS-DOS TIFF preview", 0, "\305\320\323\306"),
+  MAGIC("FAX", "Group 3 FAX", 0, "DFAX"),
+  MAGIC("FIG", "Xfig", 0, "#FIG"),
+  MAGIC("FITS", "Flexible Image Transport System", 0, "IT0"),
+  MAGIC("FITS", "Flexible Image Transport System", 0, "SIMPLE"),
+  MAGIC("FPX", "FlashPIX", 0, "\320\317\021\340"),
+  MAGIC("GIF", "CompuServe graphics interchange format", 0, "GIF8"),
+  MAGIC("HEIC", "HEIF - A regular heif image", 4, "ftypheic"),
+  MAGIC("HEIC", "HEIF - Extended range (>8 bit) image", 4, "ftypheix"),
+  MAGIC("HEIF", "HEIF - Image sequence", 4, "ftyphevc"),
+  MAGIC("HEIF", "HEIF - Image sequence", 4, "ftypheim"),
+  MAGIC("HEIF", "HEIF - Scalable image", 4, "ftypheis"),
+  MAGIC("HEIF", "HEIF - Multiview sequence", 4, "ftyphevm"),
+  MAGIC("HEIF", "HEIF - Scalable sequence", 4, "ftyphevs"),
+  MAGIC("HEIC", "HEIF - Nokia alpha image", 4, "ftypmif1"),
+  MAGIC("HEIC", "HEIF - Nokia animation image", 4, "ftypmsf1"),
+  MAGIC("HDF", "Heirarchical Data Format", 1, "HDF"),
+  MAGIC("HPGL", "HP Graphics Language", 0, "IN;"),
+  MAGIC("HTML", "Hypertext Markup Language", 1, "HTML"),
+  MAGIC("HTML", "Hypertext Markup Language", 1, "html"),
+  MAGIC("ILBM", "", 8, "ILBM"),
+  MAGIC("IPTCWTEXT", "IPTC Newsphoto wide text format", 0, "\062\000#\000\060\000=\000\042\000&\000#\000\060\000;\000&\000#\000\062\000;\000\042\000"),
+  MAGIC("IPTCTEXT", "IPTC Newsphoto text format", 0, "2#0=\042&#0;&#2;\042"),
+  MAGIC("IPTC", "IPTC Newsphoto", 0, "\034\002"),
+  MAGIC("JNG", "JPEG Network Graphics", 0, "\213JNG\r\n\032\n"),
+  MAGIC("JPEG", "Joint Photographic Experts Group JFIF format", 0, "\377\330\377"),
+  MAGIC("JPC", "JPEG-2000 Code Stream Syntax", 0, "\377\117"),
+  MAGIC("JP2", "JPEG-2000 JP2 File Format", 4, "\152\120\040\040\015"),
+  MAGIC("JXL", "JPEG XL Image Format", 0, "\xff\x0a"),
+  MAGIC("JXL", "JPEG XL Image Format", 0, "\x00\x00\x00\x0c\x4a\x58\x4c\x20\x0d\x0a\x87\x0a"),
+  MAGIC("MAT", "MATLAB Level 4.0-7.0 image format", 0, "MATLAB 5.0 MAT-file,"),
+  MAGIC("MIFF", "Magick Image File Format", 0, "Id=ImageMagick"),
+  MAGIC("MIFF", "Magick Image File Format", 0, "id=ImageMagick"),
+  MAGIC("MNG", "Multiple-image Network Graphics", 0, "\212MNG\r\n\032\n"),
+  MAGIC("MPC", "Magick Persistent Cache image format", 0, "id=MagickCache"),
+  MAGIC("MPEG", "MPEG Video Stream", 0, "\000\000\001\263"),
+  MAGIC("PCD", "Adobe Photo CD", 2048, "PCD_"),
+  MAGIC("PCL", "HP Page Control Language", 0, "\033E\033"),
+  MAGIC("PCX", "ZSoft IBM PC Paintbrush", 0, "\012\002"),
+  MAGIC("PCX", "ZSoft IBM PC Paintbrush", 0, "\012\005"),
+  MAGIC("PDB", "Palm Database ImageViewer Format", 60, "vIMGView"),
+  MAGIC("PDF", "Portable Document Format", 0, "%PDF-"),
+  MAGIC("PFA", "Postscript Type 1 font (ASCII)", 0, "%!PS-AdobeFont-1.0"),
+  MAGIC("PFB", "Postscript Type 1 font (binary)", 6, "%!PS-AdobeFont-1.0"),
+  MAGIC("PGX", "JPEG-2000 VM Format (ML)", 0, "PG ML"),
+  MAGIC("PGX", "JPEG-2000 VM Format (LM)", 0, "PG LM"),
+  MAGIC("PICT", "Apple Macintosh QuickDraw/PICT", 522, "\000\021\002\377\014\000"),
+  MAGIC("PNG", "Portable Network Graphics", 0, "\211PNG\r\n\032\n"),
+  MAGIC("PBM", "Portable bitmap file format (text)", 0, "P1"),
+  MAGIC("PGM", "Portable graymap file format (text)", 0, "P2"),
+  MAGIC("PPM", "Portable pixmap file format (text)", 0, "P3"),
+  MAGIC("PBM", "Portable bitmap file format (binary)", 0, "P4"),
+  MAGIC("PGM", "Portable graymap file format (binary)", 0, "P5"),
+  MAGIC("PPM", "Portable pixmap file format (binary)", 0, "P6"),
+  MAGIC("P7", "XV Thumbnail (P7 332)", 0, "P7 332"), /* XV Thumbnail */
+  MAGIC("PAM", "XV Thumbnail (P7)", 0, "P7"), /* Should be listed after "P7 332" */
+  MAGIC("PS", "Adobe Postscript", 0, "%!"),
+  MAGIC("PS", "Adobe Postscript", 0, "\004%!"),
+  MAGIC("PS", "Adobe Postscript", 0, "\305\320\323\306"),
+  MAGIC("PSD", "Photoshop PSD", 0, "8BPS"),
+  MAGIC("PWP", "Seattle Film Works", 0, "SFW95"),
+  MAGIC("RAD", "Radiance", 0, "#?RADIANCE"),
+  MAGIC("RAD", "Radiance", 0, "VIEW= "),
+  MAGIC("RLE", "Utah Run length encoded image", 0, "\122\314"),
+  MAGIC("SCT", "Scitex HandShake", 0, "CT"),
+  MAGIC("SFW", "Seattle Film Work", 0, "SFW94"),
+  MAGIC("SGI", "Irix RGB image", 0, "\001\332"),
+  MAGIC("SUN", "SUN Rasterfile", 0, "\131\246\152\225"),
+  MAGIC("SVG", "Scalable Vector Graphics", 1, "?XML"),
+  MAGIC("SVG", "Scalable Vector Graphics", 1, "?xml"),
+  MAGIC("TIFF", "Tagged Image File Format", 0, "\115\115\000\052"),
+  MAGIC("TIFF", "Tagged Image File Format", 0, "\111\111\052\000"),
+  MAGIC("TOPOL", "TopoL X Image", 0, "                    "),
+  MAGIC("BIGTIFF", "Tagged Image File Format (64 bit)", 0, "\115\115\000\053\000\010\000\000"),
+  MAGIC("BIGTIFF", "Tagged Image File Format (64 bit)", 0, "\111\111\053\000\010\000\000\000"),
+  MAGIC("VICAR", "VICAR rasterfile format (LBLSIZE)", 0, "LBLSIZE"),
+  MAGIC("VICAR", "VICAR rasterfile format (NJPL1I)", 0, "NJPL1I"),
+  MAGIC("VIFF","Khoros Visualization image",  0, "\253\001"),
+  MAGIC("WMF", "Windows Meta File", 0, "\327\315\306\232"),
+  MAGIC("WMF", "Windows Meta File", 0, "\001\000\011\000"),
+  MAGIC("WPG", "Word Perfect Graphics", 0, "\377WPC"),
+  MAGIC("XBM", "X Windows system bitmap", 0, "#define"),
+  MAGIC("XCF", "GIMP XCF", 0, "gimp xcf"),
+  MAGIC("XPM", "X Windows system pixmap", 1, "* XPM *"),
+  MAGIC("XWD", "X Windows system window dump", 4, "\007\000\000"),
+  MAGIC("XWD", "X Windows system window dump", 5, "\000\000\007")
 };
 
 /*
@@ -271,7 +274,13 @@
                           StaticMagic[i].length) == 0))
                 {
                   if (strlcpy(format,StaticMagic[i].name,format_length) < format_length)
-                    status=MagickPass;
+                    {
+                      (void) LogMagickEvent(CoderEvent,GetMagickModule(),
+                                            "Magick: %s (\"%s\")",
+                                            StaticMagic[i].name,
+                                            StaticMagic[i].description);
+                      status=MagickPass;
+                    }
                   break;
                 }
             }
diff -r 339ea5233db0 -r d1810a5bf3a3 magick/version.h
--- a/magick/version.h	Wed Jan 29 15:19:59 2025 -0600
+++ b/magick/version.h	Mon Feb 03 15:19:48 2025 -0600
@@ -38,8 +38,8 @@
 #define MagickLibVersion  0x282502
 #define MagickLibVersionText  "1.4"
 #define MagickLibVersionNumber 28,25,2
-#define MagickChangeDate   "20250129"
-#define MagickReleaseDate  "snapshot-20250129"
+#define MagickChangeDate   "20250203"
+#define MagickReleaseDate  "snapshot-20250203"
 
 /*
   The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines
diff -r 339ea5233db0 -r d1810a5bf3a3 www/ChangeLog.html
--- a/www/ChangeLog.html	Wed Jan 29 15:19:59 2025 -0600
+++ b/www/ChangeLog.html	Mon Feb 03 15:19:48 2025 -0600
@@ -38,6 +38,15 @@
 
 <main id="graphicsmagick-changelog">
 <h1 class="title">GraphicsMagick ChangeLog</h1>
+<p>2025-02-03  Bob Friesenhahn  &lt;<a class="reference external" href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#64;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
+<blockquote>
+<ul class="simple">
+<li><p>magick/magic.c: Add a Magic description field in order to help
+identify and document format variants based on header magic.
+(GetMagickFileFormat): Trace the format description at Coder
+level.</p></li>
+</ul>
+</blockquote>
 <p>2025-01-29  Bob Friesenhahn  &lt;<a class="reference external" href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#64;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
 <blockquote>
 <ul class="simple">