MagickCore 7.1.1
Convert, Edit, Or Compose Bitmap Images
Loading...
Searching...
No Matches
version.c
1/*
2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3% %
4% %
5% %
6% V V EEEEE RRRR SSSSS IIIII OOO N N %
7% V V E R R SS I O O NN N %
8% V V EEE RRRR SSS I O O N N N %
9% V V E R R SS I O O N NN %
10% V EEEEE R R SSSSS IIIII OOO N N %
11% %
12% %
13% MagickCore Version and Copyright Methods %
14% %
15% Software Design %
16% Cristy %
17% September 2002 %
18% %
19% %
20% Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization %
21% dedicated to making software imaging solutions freely available. %
22% %
23% You may not use this file except in compliance with the License. You may %
24% obtain a copy of the License at %
25% %
26% https://imagemagick.org/script/license.php %
27% %
28% Unless required by applicable law or agreed to in writing, software %
29% distributed under the License is distributed on an "AS IS" BASIS, %
30% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %
31% See the License for the specific language governing permissions and %
32% limitations under the License. %
33% %
34%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
35%
36%
37*/
38
39#include "MagickCore/studio.h"
40#include "MagickCore/configure.h"
41#include "MagickCore/exception.h"
42#include "MagickCore/exception-private.h"
43#include "MagickCore/linked-list.h"
44#include "MagickCore/locale_.h"
45#include "MagickCore/option.h"
46#include "MagickCore/pixel.h"
47#include "MagickCore/string_.h"
48#include "MagickCore/utility.h"
49#include "MagickCore/utility-private.h"
50#include "MagickCore/version.h"
51#include "MagickCore/version-private.h"
52
53/*
54 Define declarations.
55*/
56#define MagickURLFilename "index.html"
57
58/*
59%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
60% %
61% %
62% %
63% G e t M a g i c k C o p y r i g h t %
64% %
65% %
66% %
67%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
68%
69% GetMagickCopyright() returns the ImageMagick API copyright as a string.
70%
71% The format of the GetMagickCopyright method is:
72%
73% const char *GetMagickCopyright(void)
74%
75*/
76MagickExport const char *GetMagickCopyright(void)
77{
78 return(MagickCopyright);
79}
80
81/*
82%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
83% %
84% %
85% %
86% G e t M a g i c k D e l e g a t e s %
87% %
88% %
89% %
90%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
91%
92% GetMagickDelegates() returns the ImageMagick delegate libraries.
93%
94% The format of the GetMagickDelegates method is:
95%
96% const char *GetMagickDelegates(void)
97%
98% No parameters are required.
99%
100*/
101MagickExport const char *GetMagickDelegates(void)
102{
103 static const char
104 *delegates=""
105#if defined(MAGICKCORE_AUTOTRACE_DELEGATE)
106 " autotrace"
107#endif
108#if defined(MAGICKCORE_BZLIB_DELEGATE)
109 " bzlib"
110#endif
111#if defined(MAGICKCORE_CAIRO_DELEGATE)
112 " cairo"
113#endif
114#if defined(MAGICKCORE_DMR_DELEGATE)
115 " dmr"
116#endif
117#if defined(MAGICKCORE_DJVU_DELEGATE)
118 " djvu"
119#endif
120#if defined(MAGICKCORE_DPS_DELEGATE)
121 " dps"
122#endif
123#if defined(MAGICKCORE_EMF_DELEGATE)
124 " emf"
125#endif
126#if defined(MAGICKCORE_FFTW_DELEGATE)
127 " fftw"
128#endif
129#if defined(MAGICKCORE_FLIF_DELEGATE)
130 " flif"
131#endif
132#if defined(MAGICKCORE_FONTCONFIG_DELEGATE)
133 " fontconfig"
134#endif
135#if defined(MAGICKCORE_FPX_DELEGATE)
136 " fpx"
137#endif
138#if defined(MAGICKCORE_FREETYPE_DELEGATE)
139 " freetype"
140#endif
141#if defined(MAGICKCORE_GS_DELEGATE) || defined(MAGICKCORE_WINDOWS_SUPPORT)
142 " gslib"
143#endif
144#if defined(MAGICKCORE_GVC_DELEGATE)
145 " gvc"
146#endif
147#if defined(MAGICKCORE_HEIC_DELEGATE)
148 " heic"
149#endif
150#if defined(MAGICKCORE_JBIG_DELEGATE)
151 " jbig"
152#endif
153#if defined(MAGICKCORE_JPEG_DELEGATE) && defined(MAGICKCORE_PNG_DELEGATE)
154 " jng"
155#endif
156#if defined(MAGICKCORE_LIBOPENJP2_DELEGATE)
157 " jp2"
158#endif
159#if defined(MAGICKCORE_JPEG_DELEGATE)
160 " jpeg"
161#endif
162#if defined(MAGICKCORE_JXL_DELEGATE)
163 " jxl"
164#endif
165#if defined(MAGICKCORE_LCMS_DELEGATE)
166 " lcms"
167#endif
168#if defined(MAGICKCORE_LQR_DELEGATE)
169 " lqr"
170#endif
171#if defined(MAGICKCORE_LTDL_DELEGATE)
172 " ltdl"
173#endif
174#if defined(MAGICKCORE_LZMA_DELEGATE)
175 " lzma"
176#endif
177#if defined(MAGICKCORE_OPENEXR_DELEGATE)
178 " openexr"
179#endif
180#if defined(MAGICKCORE_PANGOCAIRO_DELEGATE)
181 " pangocairo"
182#endif
183#if defined(MAGICKCORE_PNG_DELEGATE)
184 " png"
185#endif
186#if defined(MAGICKCORE_DPS_DELEGATE) || defined(MAGICKCORE_GS_DELEGATE) || \
187 defined(MAGICKCORE_WINDOWS_SUPPORT)
188 " ps"
189#endif
190#if defined(MAGICKCORE_RAQM_DELEGATE)
191 " raqm"
192#endif
193#if defined(MAGICKCORE_RAW_R_DELEGATE)
194 " raw"
195#endif
196#if defined(MAGICKCORE_RSVG_DELEGATE)
197 " rsvg"
198#endif
199#if defined(MAGICKCORE_TIFF_DELEGATE)
200 " tiff"
201#endif
202#if defined(MAGICKCORE_WEBP_DELEGATE)
203 " webp"
204#endif
205#if defined(MAGICKCORE_WMF_DELEGATE) || defined (MAGICKCORE_WMFLITE_DELEGATE)
206 " wmf"
207#endif
208#if defined(MAGICKCORE_X11_DELEGATE)
209 " x"
210#endif
211#if defined(MAGICKCORE_XML_DELEGATE)
212 " xml"
213#endif
214#if defined(MAGICKCORE_ZIP_DELEGATE)
215 " zip"
216#endif
217#if defined(MAGICKCORE_ZLIB_DELEGATE)
218 " zlib"
219#endif
220#if defined(MAGICKCORE_ZSTD_DELEGATE)
221 " zstd"
222#endif
223 ;
224 if (*delegates == '\0')
225 return(delegates);
226 return(delegates+1);
227}
228
229/*
230%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
231% %
232% %
233% %
234% G e t M a g i c k F e a t u r e s %
235% %
236% %
237% %
238%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
239%
240% GetMagickFeatures() returns the ImageMagick features.
241%
242% The format of the GetMagickFeatures method is:
243%
244% const char *GetMagickFeatures(void)
245%
246% No parameters are required.
247%
248*/
249MagickExport const char *GetMagickFeatures(void)
250{
251 return ""
252#if defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DEBUG)
253 "Debug "
254#endif
255#if defined(MAGICKCORE_64BIT_CHANNEL_MASK_SUPPORT)
256 "Channel-masks(64-bit) "
257#endif
258#if defined(MAGICKCORE_CIPHER_SUPPORT)
259 "Cipher "
260#endif
261#if defined(MAGICKCORE_DPC_SUPPORT)
262 "DPC "
263#endif
264#if defined(MAGICKCORE_HDRI_SUPPORT)
265 "HDRI "
266#endif
267#if defined(MAGICKCORE_BUILD_MODULES) || defined(_DLL)
268 "Modules "
269#endif
270#if defined(MAGICKCORE_OPENCL_SUPPORT)
271 "OpenCL "
272#endif
273#if defined(MAGICKCORE_OPENMP_SUPPORT)
274 "OpenMP"
275#if _OPENMP == 199810
276 "(1.0) "
277#elif _OPENMP == 200203
278 "(2.0) "
279#elif _OPENMP == 200505
280 "(2.5) "
281#elif _OPENMP == 200805
282 "(3.0) "
283#elif _OPENMP == 201107
284 "(3.1) "
285#elif _OPENMP == 201307
286 "(4.0) "
287#elif _OPENMP == 201511
288 "(4.5) "
289#elif _OPENMP == 201811
290 "(5.0) "
291#else
292 " "
293#endif
294#endif
295#if defined(MAGICKCORE_HAVE_TCMALLOC)
296 "TCMalloc "
297#endif
298#if MAGICKCORE_ZERO_CONFIGURATION_SUPPORT
299 "Zero-configuration "
300#endif
301#if (MAGICKCORE_QUANTUM_DEPTH == 64)
302 "Q64 (experimental, not for production) "
303#endif
304 ;
305}
306
307/*
308%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
309% %
310% %
311% %
312% G e t M a g i c k H o m e U R L %
313% %
314% %
315% %
316%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
317%
318% GetMagickHomeURL() returns the ImageMagick home URL.
319%
320% The format of the GetMagickHomeURL method is:
321%
322% char *GetMagickHomeURL(void)
323%
324*/
325MagickExport char *GetMagickHomeURL(void)
326{
327 char
328 path[MagickPathExtent];
329
330 const char
331 *element;
332
334 *exception;
335
337 *paths;
338
339 exception=AcquireExceptionInfo();
340 paths=GetConfigurePaths(MagickURLFilename,exception);
341 exception=DestroyExceptionInfo(exception);
342 if (paths == (LinkedListInfo *) NULL)
343 return(ConstantString(MagickHomeURL));
344 element=(const char *) GetNextValueInLinkedList(paths);
345 while (element != (const char *) NULL)
346 {
347 (void) FormatLocaleString(path,MagickPathExtent,"%s%s%s",element,
348 DirectorySeparator,MagickURLFilename);
349 if (IsPathAccessible(path) != MagickFalse)
350 {
351 paths=DestroyLinkedList(paths,RelinquishMagickMemory);
352 return(ConstantString(path));
353 }
354 element=(const char *) GetNextValueInLinkedList(paths);
355 }
356 paths=DestroyLinkedList(paths,RelinquishMagickMemory);
357 return(ConstantString(MagickHomeURL));
358}
359
360/*
361%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
362% %
363% %
364% %
365% G e t M a g i c k L i c e n s e %
366% %
367% %
368% %
369%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
370%
371% GetMagickLicense() returns the ImageMagick API license as a string.
372%
373% The format of the GetMagickLicense method is:
374%
375% const char *GetMagickLicense(void)
376%
377*/
378MagickExport const char *GetMagickLicense(void)
379{
380 return(MagickAuthoritativeLicense);
381}
382
383/*
384%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
385% %
386% %
387% %
388% G e t M a g i c k P a c k a g e N a m e %
389% %
390% %
391% %
392%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
393%
394% GetMagickPackageName() returns the ImageMagick package name.
395%
396% The format of the GetMagickName method is:
397%
398% const char *GetMagickName(void)
399%
400% No parameters are required.
401%
402*/
403MagickExport const char *GetMagickPackageName(void)
404{
405 return(MagickPackageName);
406}
407
408/*
409%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
410% %
411% %
412% %
413% G e t M a g i c k Q u a n t u m D e p t h %
414% %
415% %
416% %
417%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
418%
419% GetMagickQuantumDepth() returns the ImageMagick quantum depth.
420%
421% The format of the GetMagickQuantumDepth method is:
422%
423% const char *GetMagickQuantumDepth(size_t *depth)
424%
425% A description of each parameter follows:
426%
427% o depth: the quantum depth is returned as a number.
428%
429*/
430MagickExport const char *GetMagickQuantumDepth(size_t *depth)
431{
432 if (depth != (size_t *) NULL)
433 *depth=(size_t) MAGICKCORE_QUANTUM_DEPTH;
434 return(MagickQuantumDepth);
435}
436
437/*
438%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
439% %
440% %
441% %
442% G e t M a g i c k Q u a n t u m R a n g e %
443% %
444% %
445% %
446%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
447%
448% GetMagickQuantumRange() returns the ImageMagick quantum range.
449%
450% The format of the GetMagickQuantumRange method is:
451%
452% const char *GetMagickQuantumRange(size_t *range)
453%
454% A description of each parameter follows:
455%
456% o range: the quantum range is returned as a number.
457%
458*/
459MagickExport const char *GetMagickQuantumRange(size_t *range)
460{
461 if (range != (size_t *) NULL)
462 *range=(size_t) QuantumRange;
463 return(MagickQuantumRange);
464}
465
466/*
467%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
468% %
469% %
470% %
471% G e t M a g i c k R e l e a s e D a t e %
472% %
473% %
474% %
475%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
476%
477% GetMagickReleaseDate() returns the ImageMagick release date.
478%
479% The format of the GetMagickReleaseDate method is:
480%
481% const char *GetMagickReleaseDate(void)
482%
483% No parameters are required.
484%
485*/
486MagickExport const char *GetMagickReleaseDate(void)
487{
488 return(MagickReleaseDate);
489}
490
491/*
492%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
493% %
494% %
495% %
496% G e t M a g i c k S i g n a t u r e %
497% %
498% %
499% %
500%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
501%
502% GetMagickSignature() returns a signature that uniquely encodes the
503% MagickCore library version, quantum depth, HDRI status, OS word size,
504% channel type, and endianness.
505%
506% The format of the GetMagickSignature method is:
507%
508% unsigned int GetMagickSignature(const StringInfo *nonce)
509%
510% A description of each parameter follows:
511%
512% o nonce: arbitrary data.
513%
514*/
515
516static unsigned int CRC32(const unsigned char *message,const size_t length)
517{
518 ssize_t
519 i;
520
521 static MagickBooleanType
522 crc_initial = MagickFalse;
523
524 static unsigned int
525 crc_xor[256];
526
527 unsigned int
528 crc;
529
530 /*
531 Generate a 32-bit cyclic redundancy check for the message.
532 */
533 if (crc_initial == MagickFalse)
534 {
535 unsigned int
536 j;
537
538 unsigned int
539 alpha;
540
541 for (j=0; j < 256; j++)
542 {
543 ssize_t
544 k;
545
546 alpha=j;
547 for (k=0; k < 8; k++)
548 alpha=(alpha & 0x01) ? (0xEDB88320 ^ (alpha >> 1)) : (alpha >> 1);
549 crc_xor[j]=alpha;
550 }
551 crc_initial=MagickTrue;
552 }
553 crc=0xFFFFFFFF;
554 for (i=0; i < (ssize_t) length; i++)
555 crc=crc_xor[(crc ^ message[i]) & 0xff] ^ (crc >> 8);
556 return(crc ^ 0xFFFFFFFF);
557}
558
559MagickExport unsigned int GetMagickSignature(const StringInfo *nonce)
560{
561 unsigned char
562 *p;
563
565 *version;
566
567 unsigned int
568 signature;
569
570 version=AcquireStringInfo(MagickPathExtent);
571 p=GetStringInfoDatum(version);
572 signature=MAGICKCORE_QUANTUM_DEPTH;
573 (void) memcpy(p,&signature,sizeof(signature));
574 p+=sizeof(signature);
575 signature=MAGICKCORE_HDRI_ENABLE;
576 (void) memcpy(p,&signature,sizeof(signature));
577 p+=sizeof(signature);
578 signature=MagickLibInterface;
579 (void) memcpy(p,&signature,sizeof(signature));
580 p+=sizeof(signature);
581 signature=1; /* endianness */
582 (void) memcpy(p,&signature,sizeof(signature));
583 p+=sizeof(signature);
584#if defined(MAGICKCORE_64BIT_CHANNEL_MASK_SUPPORT)
585 signature=sizeof(ChannelType);
586 (void) memcpy(p,&signature,sizeof(signature));
587 p+=sizeof(signature);
588#endif
589 SetStringInfoLength(version,(size_t) (p-GetStringInfoDatum(version)));
590 if (nonce != (const StringInfo *) NULL)
591 ConcatenateStringInfo(version,nonce);
592 signature=CRC32(GetStringInfoDatum(version),GetStringInfoLength(version));
593 version=DestroyStringInfo(version);
594 return(signature);
595}
596
597/*
598%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
599% %
600% %
601% %
602% G e t M a g i c k V e r s i o n %
603% %
604% %
605% %
606%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
607%
608% GetMagickVersion() returns the ImageMagick API version as a string and
609% as a number.
610%
611% The format of the GetMagickVersion method is:
612%
613% const char *GetMagickVersion(size_t *version)
614%
615% A description of each parameter follows:
616%
617% o version: the ImageMagick version is returned as a number.
618%
619*/
620MagickExport const char *GetMagickVersion(size_t *version)
621{
622 if (version != (size_t *) NULL)
623 *version=MagickLibVersion;
624 return(MagickVersion);
625}
626
627/*
628%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
629% %
630% %
631% %
632% L i s t M a g i c k V e r s i o n %
633% %
634% %
635% %
636%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
637%
638% ListMagickVersion() identifies the ImageMagick version by printing its
639% attributes to the file. Attributes include the copyright, features, and
640% delegates.
641%
642% The format of the ListMagickVersion method is:
643%
644% void ListMagickVersion(FILE *file)
645%
646% A description of each parameter follows:
647%
648% o file: the file, typically stdout.
649%
650*/
651MagickExport void ListMagickVersion(FILE *file)
652{
653 (void) FormatLocaleFile(file,"Version: %s\n",
654 GetMagickVersion((size_t *) NULL));;
655 (void) FormatLocaleFile(file,"Copyright: %s\n",GetMagickCopyright());
656 (void) FormatLocaleFile(file,"License: %s\n",GetMagickLicense());
657 (void) FormatLocaleFile(file,"Features: %s\n",GetMagickFeatures());
658 (void) FormatLocaleFile(file,"Delegates (built-in): %s\n",
659 GetMagickDelegates());
660#if defined(MAGICKCORE_MSC_VER)
661 (void) FormatLocaleFile(file,"Compiler: Visual Studio %d (%d)\n",
662 MAGICKCORE_MSC_VER,_MSC_FULL_VER);
663#elif defined(__GNUC__)
664 (void) FormatLocaleFile(file,"Compiler: gcc (%d.%d)\n",__GNUC__,
665 __GNUC_MINOR__);
666#elif defined(__clang__)
667 (void) FormatLocaleFile(file,"Compiler: clang (%d.%d.%d)\n",__clang_major__,
668 __clang_minor__,__clang_patchlevel__);
669#elif defined(__MINGW32_MAJOR_VERSION)
670 (void) FormatLocaleFile(file,"Compiler: MinGW (%d.%d)\n",
671 __MINGW32_MAJOR_VERSION,__MINGW32_MINOR_VERSION);
672#elif defined(__MINGW64_VERSION_MAJOR)
673 (void) FormatLocaleFile(file,"Compiler: MinGW-w64 (%d.%d)\n",
674 __MINGW64_VERSION_MAJOR ,__MINGW64_VERSION_MINOR);
675#endif
676 if (IsEventLogging() != MagickFalse)
677 {
678 (void) FormatLocaleFile(file,"Wizard attributes: ");
679 (void) FormatLocaleFile(file,"QuantumRange=%g; ",(double) QuantumRange);
680 (void) FormatLocaleFile(file,"QuantumScale=%.*g; ",GetMagickPrecision(),
681 (double) QuantumScale);
682 (void) FormatLocaleFile(file,"MagickEpsilon=%.*g; ",GetMagickPrecision(),
683 (double) MagickEpsilon);
684 (void) FormatLocaleFile(file,"MaxMap=%g; ",(double) MaxMap);
685 (void) FormatLocaleFile(file,"MagickPathExtent=%g; ",
686 (double) MagickPathExtent);
687 (void) FormatLocaleFile(file,"sizeof(Quantum)=%g; ",(double)
688 sizeof(Quantum));
689 (void) FormatLocaleFile(file,"sizeof(MagickSizeType)=%g; ",(double)
690 sizeof(MagickSizeType));
691 (void) FormatLocaleFile(file,"sizeof(MagickOffsetType)=%g",(double)
692 sizeof(MagickOffsetType));
693 }
694}