]> granicus.if.org Git - imagemagick/blobdiff - magick/mime.c
(no commit message)
[imagemagick] / magick / mime.c
index 4f945a6612e0c8b5f336c0d48a2757a5c418a8e9..2fbc461355e2fd3b7f72f5aa568d9754032cad5d 100644 (file)
@@ -15,7 +15,7 @@
 %                                 July 2000                                   %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2009 ImageMagick Studio LLC, a non-profit organization      %
+%  Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization      %
 %  dedicated to making software imaging solutions freely available.           %
 %                                                                             %
 %  You may not use this file except in compliance with the License.  You may  %
@@ -70,7 +70,7 @@ struct _MimeInfo
     *description,
     *pattern;
 
-  long
+  ssize_t
     priority;
 
   MagickOffsetType
@@ -82,7 +82,7 @@ struct _MimeInfo
   DataType
     data_type;
 
-  long
+  ssize_t
     mask,
     value;
 
@@ -98,7 +98,7 @@ struct _MimeInfo
   MagickBooleanType
     stealth;
 
-  unsigned long
+  size_t
     signature;
 };
 \f
@@ -168,21 +168,21 @@ MagickExport const MimeInfo *GetMimeInfo(const char *filename,
   EndianType
     endian;
 
-  long
-    value;
-
   register const MimeInfo
     *p;
 
   register const unsigned char
     *q;
 
-  register long
+  register ssize_t
     i;
 
-  unsigned long
+  size_t
     lsb_first;
 
+  ssize_t
+    value;
+
   assert(exception != (ExceptionInfo *) NULL);
   if ((mime_list == (LinkedListInfo *) NULL) ||
       (instantiate_mime == MagickFalse))
@@ -200,7 +200,7 @@ MagickExport const MimeInfo *GetMimeInfo(const char *filename,
   */
   mime_info=(const MimeInfo *) NULL;
   lsb_first=1;
-  (void) LockSemaphoreInfo(mime_semaphore);
+  LockSemaphoreInfo(mime_semaphore);
   ResetLinkedListIterator(mime_list);
   p=(const MimeInfo *) GetNextValueInLinkedList(mime_list);
   while (p != (const MimeInfo *) NULL)
@@ -226,7 +226,7 @@ MagickExport const MimeInfo *GetMimeInfo(const char *filename,
         if ((size_t) (p->offset+4) > length)
           break;
         q=magic+p->offset;
-        value=(*q++);
+        value=(ssize_t) (*q++);
         if (p->mask == 0)
           {
             if (p->value == value)
@@ -249,12 +249,12 @@ MagickExport const MimeInfo *GetMimeInfo(const char *filename,
           endian=(*(char *) &lsb_first) == 1 ? LSBEndian : MSBEndian;
         if (endian == LSBEndian)
           {
-            value=(*q++);
+            value=(ssize_t) (*q++);
             value|=(*q++) << 8;
           }
         else
           {
-            value=(*q++) << 8;
+            value=(ssize_t) (*q++) << 8;
             value|=(*q++);
           }
         if (p->mask == 0)
@@ -279,14 +279,14 @@ MagickExport const MimeInfo *GetMimeInfo(const char *filename,
           endian=(*(char *) &lsb_first) == 1 ? LSBEndian : MSBEndian;
         if (endian == LSBEndian)
           {
-            value=(*q++);
+            value=(ssize_t) (*q++);
             value|=(*q++) << 8;
             value|=(*q++) << 16;
             value|=(*q++) << 24;
           }
         else
           {
-            value=(*q++) << 24;
+            value=(ssize_t) (*q++) << 24;
             value|=(*q++) << 16;
             value|=(*q++) << 8;
             value|=(*q++);
@@ -306,7 +306,7 @@ MagickExport const MimeInfo *GetMimeInfo(const char *filename,
       case StringData:
       default:
       {
-        for (i=0; i <= (long) p->extent; i++)
+        for (i=0; i <= (ssize_t) p->extent; i++)
         {
           if ((size_t) (p->offset+i+p->length) > length)
             break;
@@ -324,7 +324,7 @@ MagickExport const MimeInfo *GetMimeInfo(const char *filename,
   if (p != (const MimeInfo *) NULL)
     (void) InsertValueInLinkedList(mime_list,0,
       RemoveElementByValueFromLinkedList(mime_list,p));
-  (void) UnlockSemaphoreInfo(mime_semaphore);
+  UnlockSemaphoreInfo(mime_semaphore);
   return(mime_info);
 }
 \f
@@ -345,7 +345,7 @@ MagickExport const MimeInfo *GetMimeInfo(const char *filename,
 %  The magic of the GetMimeInfoList function is:
 %
 %      const MimeInfo **GetMimeInfoList(const char *pattern,
-%        unsigned long *number_aliases,ExceptionInfo *exception)
+%        size_t *number_aliases,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -380,7 +380,7 @@ static int MimeInfoCompare(const void *x,const void *y)
 #endif
 
 MagickExport const MimeInfo **GetMimeInfoList(const char *pattern,
-  unsigned long *number_aliases,ExceptionInfo *exception)
+  size_t *number_aliases,ExceptionInfo *exception)
 {
   const MimeInfo
     **aliases;
@@ -388,7 +388,7 @@ MagickExport const MimeInfo **GetMimeInfoList(const char *pattern,
   register const MimeInfo
     *p;
 
-  register long
+  register ssize_t
     i;
 
   /*
@@ -396,7 +396,7 @@ MagickExport const MimeInfo **GetMimeInfoList(const char *pattern,
   */
   assert(pattern != (char *) NULL);
   (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",pattern);
-  assert(number_aliases != (unsigned long *) NULL);
+  assert(number_aliases != (size_t *) NULL);
   *number_aliases=0;
   p=GetMimeInfo((char *) NULL,(unsigned char *) "*",0,exception);
   if (p == (const MimeInfo *) NULL)
@@ -408,7 +408,7 @@ MagickExport const MimeInfo **GetMimeInfoList(const char *pattern,
   /*
     Generate mime list.
   */
-  (void) LockSemaphoreInfo(mime_semaphore);
+  LockSemaphoreInfo(mime_semaphore);
   ResetLinkedListIterator(mime_list);
   p=(const MimeInfo *) GetNextValueInLinkedList(mime_list);
   for (i=0; p != (const MimeInfo *) NULL; )
@@ -418,10 +418,10 @@ MagickExport const MimeInfo **GetMimeInfoList(const char *pattern,
       aliases[i++]=p;
     p=(const MimeInfo *) GetNextValueInLinkedList(mime_list);
   }
-  (void) UnlockSemaphoreInfo(mime_semaphore);
+  UnlockSemaphoreInfo(mime_semaphore);
   qsort((void *) aliases,(size_t) i,sizeof(*aliases),MimeInfoCompare);
   aliases[i]=(MimeInfo *) NULL;
-  *number_aliases=(unsigned long) i;
+  *number_aliases=(size_t) i;
   return(aliases);
 }
 \f
@@ -441,7 +441,7 @@ MagickExport const MimeInfo **GetMimeInfoList(const char *pattern,
 %
 %  The format of the GetMimeList function is:
 %
-%      char **GetMimeList(const char *pattern,unsigned long *number_aliases,
+%      char **GetMimeList(const char *pattern,size_t *number_aliases,
 %        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
@@ -475,7 +475,7 @@ static int MimeCompare(const void *x,const void *y)
 #endif
 
 MagickExport char **GetMimeList(const char *pattern,
-  unsigned long *number_aliases,ExceptionInfo *exception)
+  size_t *number_aliases,ExceptionInfo *exception)
 {
   char
     **aliases;
@@ -483,7 +483,7 @@ MagickExport char **GetMimeList(const char *pattern,
   register const MimeInfo
     *p;
 
-  register long
+  register ssize_t
     i;
 
   /*
@@ -491,7 +491,7 @@ MagickExport char **GetMimeList(const char *pattern,
   */
   assert(pattern != (char *) NULL);
   (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",pattern);
-  assert(number_aliases != (unsigned long *) NULL);
+  assert(number_aliases != (size_t *) NULL);
   *number_aliases=0;
   p=GetMimeInfo((char *) NULL,(unsigned char *) "*",0,exception);
   if (p == (const MimeInfo *) NULL)
@@ -500,7 +500,7 @@ MagickExport char **GetMimeList(const char *pattern,
     GetNumberOfElementsInLinkedList(mime_list)+1UL,sizeof(*aliases));
   if (aliases == (char **) NULL)
     return((char **) NULL);
-  (void) LockSemaphoreInfo(mime_semaphore);
+  LockSemaphoreInfo(mime_semaphore);
   ResetLinkedListIterator(mime_list);
   p=(const MimeInfo *) GetNextValueInLinkedList(mime_list);
   for (i=0; p != (const MimeInfo *) NULL; )
@@ -510,10 +510,10 @@ MagickExport char **GetMimeList(const char *pattern,
       aliases[i++]=ConstantString(p->type);
     p=(const MimeInfo *) GetNextValueInLinkedList(mime_list);
   }
-  (void) UnlockSemaphoreInfo(mime_semaphore);
+  UnlockSemaphoreInfo(mime_semaphore);
   qsort((void *) aliases,(size_t) i,sizeof(*aliases),MimeCompare);
   aliases[i]=(char *) NULL;
-  *number_aliases=(unsigned long) i;
+  *number_aliases=(size_t) i;
   return(aliases);
 }
 \f
@@ -606,14 +606,14 @@ static MagickBooleanType InitializeMimeList(ExceptionInfo *exception)
     {
       if (mime_semaphore == (SemaphoreInfo *) NULL)
         AcquireSemaphoreInfo(&mime_semaphore);
-      (void) LockSemaphoreInfo(mime_semaphore);
+      LockSemaphoreInfo(mime_semaphore);
       if ((mime_list == (LinkedListInfo *) NULL) &&
           (instantiate_mime == MagickFalse))
         {
           (void) LoadMimeLists(MimeFilename,exception);
           instantiate_mime=MagickTrue;
         }
-      (void) UnlockSemaphoreInfo(mime_semaphore);
+      UnlockSemaphoreInfo(mime_semaphore);
     }
   return(mime_list != (LinkedListInfo *) NULL ? MagickTrue : MagickFalse);
 }
@@ -650,15 +650,15 @@ MagickExport MagickBooleanType ListMimeInfo(FILE *file,ExceptionInfo *exception)
   const MimeInfo
     **mime_info;
 
-  long
-    j;
-
-  register long
+  register ssize_t
     i;
 
-  unsigned long
+  size_t
     number_aliases;
 
+  ssize_t
+    j;
+
   if (file == (const FILE *) NULL)
     file=stdout;
   mime_info=GetMimeInfoList("*",&number_aliases,exception);
@@ -666,7 +666,7 @@ MagickExport MagickBooleanType ListMimeInfo(FILE *file,ExceptionInfo *exception)
     return(MagickFalse);
   j=0;
   path=(const char *) NULL;
-  for (i=0; i < (long) number_aliases; i++)
+  for (i=0; i < (ssize_t) number_aliases; i++)
   {
     if (mime_info[i]->stealth != MagickFalse)
       continue;
@@ -674,27 +674,28 @@ MagickExport MagickBooleanType ListMimeInfo(FILE *file,ExceptionInfo *exception)
         (strcasecmp(path,mime_info[i]->path) != 0))
       {
         if (mime_info[i]->path != (char *) NULL)
-          (void) fprintf(file,"\nPath: %s\n\n",mime_info[i]->path);
-        (void) fprintf(file,"Type                   Description\n");
-        (void) fprintf(file,"-------------------------------------------------"
+          (void) FormatLocaleFile(file,"\nPath: %s\n\n",mime_info[i]->path);
+        (void) FormatLocaleFile(file,"Type                   Description\n");
+        (void) FormatLocaleFile(file,
+          "-------------------------------------------------"
           "------------------------------\n");
       }
     path=mime_info[i]->path;
-    (void) fprintf(file,"%s",mime_info[i]->type);
+    (void) FormatLocaleFile(file,"%s",mime_info[i]->type);
     if (strlen(mime_info[i]->type) <= 25)
       {
-        for (j=(long) strlen(mime_info[i]->type); j <= 27; j++)
-          (void) fprintf(file," ");
+        for (j=(ssize_t) strlen(mime_info[i]->type); j <= 27; j++)
+          (void) FormatLocaleFile(file," ");
       }
     else
       {
-        (void) fprintf(file,"\n");
+        (void) FormatLocaleFile(file,"\n");
         for (j=0; j <= 27; j++)
-          (void) fprintf(file," ");
+          (void) FormatLocaleFile(file," ");
       }
     if (mime_info[i]->description != (char *) NULL)
-      (void) fprintf(file,"%s",mime_info[i]->description);
-    (void) fprintf(file,"\n");
+      (void) FormatLocaleFile(file,"%s",mime_info[i]->description);
+    (void) FormatLocaleFile(file,"\n");
   }
   (void) fflush(file);
   mime_info=(const MimeInfo **) RelinquishMagickMemory((void *) mime_info);
@@ -718,7 +719,7 @@ MagickExport MagickBooleanType ListMimeInfo(FILE *file,ExceptionInfo *exception)
 %  The format of the LoadMimeList method is:
 %
 %      MagickBooleanType LoadMimeList(const char *xml,const char *filename,
-%        const unsigned long depth,ExceptionInfo *exception)
+%        const size_t depth,ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -732,7 +733,7 @@ MagickExport MagickBooleanType ListMimeInfo(FILE *file,ExceptionInfo *exception)
 %
 */
 static MagickBooleanType LoadMimeList(const char *xml,const char *filename,
-  const unsigned long depth,ExceptionInfo *exception)
+  const size_t depth,ExceptionInfo *exception)
 {
   const char
     *attribute;
@@ -822,14 +823,14 @@ static MagickBooleanType LoadMimeList(const char *xml,const char *filename,
     mime_info->signature=MagickSignature;
     attribute=GetXMLTreeAttribute(mime,"data-type");
     if (attribute != (const char *) NULL)
-      mime_info->data_type=(DataType) ParseMagickOption(MagickDataTypeOptions,
+      mime_info->data_type=(DataType) ParseCommandOption(MagickDataTypeOptions,
         MagickTrue,attribute);
     attribute=GetXMLTreeAttribute(mime,"description");
     if (attribute != (const char *) NULL)
       mime_info->description=ConstantString(attribute);
     attribute=GetXMLTreeAttribute(mime,"endian");
     if (attribute != (const char *) NULL)
-      mime_info->endian=(EndianType) ParseMagickOption(MagickEndianOptions,
+      mime_info->endian=(EndianType) ParseCommandOption(MagickEndianOptions,
         MagickTrue,attribute);
     attribute=GetXMLTreeAttribute(mime,"magic");
     if (attribute != (const char *) NULL)
@@ -886,11 +887,12 @@ static MagickBooleanType LoadMimeList(const char *xml,const char *filename,
         }
         token=DestroyString(token);
         if (mime_info->data_type != StringData)
-          mime_info->value=strtol((char *) mime_info->magic,(char **) NULL,0);
+          mime_info->value=(ssize_t) strtoul((char *) mime_info->magic,
+            (char **) NULL,0);
       }
     attribute=GetXMLTreeAttribute(mime,"mask");
     if (attribute != (const char *) NULL)
-      mime_info->mask=strtol(attribute,(char **) NULL,0);
+      mime_info->mask=(ssize_t) strtoul(attribute,(char **) NULL,0);
     attribute=GetXMLTreeAttribute(mime,"offset");
     if (attribute != (const char *) NULL)
       {
@@ -906,7 +908,7 @@ static MagickBooleanType LoadMimeList(const char *xml,const char *filename,
       mime_info->pattern=ConstantString(attribute);
     attribute=GetXMLTreeAttribute(mime,"priority");
     if (attribute != (const char *) NULL)
-      mime_info->priority=strtol(attribute,(char **) NULL,0);
+      mime_info->priority=(ssize_t) strtol(attribute,(char **) NULL,0);
     attribute=GetXMLTreeAttribute(mime,"stealth");
     if (attribute != (const char *) NULL)
       mime_info->stealth=IsMagickTrue(attribute);
@@ -1020,14 +1022,14 @@ MagickExport char *MagickToMime(const char *magick)
   ExceptionInfo
     *exception;
 
-  (void) FormatMagickString(filename,MaxTextExtent,"file.%s",magick);
+  (void) FormatLocaleString(filename,MaxTextExtent,"file.%s",magick);
   LocaleLower(filename);
   exception=AcquireExceptionInfo();
   mime_info=GetMimeInfo(filename,(unsigned char *) " ",1,exception);
   exception=DestroyExceptionInfo(exception);
   if (mime_info != (const MimeInfo *) NULL)
     return(ConstantString(GetMimeType(mime_info)));
-  (void) FormatMagickString(media,MaxTextExtent,"image/x-%s",magick);
+  (void) FormatLocaleString(media,MaxTextExtent,"image/x-%s",magick);
   LocaleLower(media+8);
   return(ConstantString(media));
 }
@@ -1052,8 +1054,7 @@ MagickExport char *MagickToMime(const char *magick)
 */
 MagickExport MagickBooleanType MimeComponentGenesis(void)
 {
-  assert(mime_semaphore == (SemaphoreInfo *) NULL);
-  mime_semaphore=AllocateSemaphoreInfo();
+  AcquireSemaphoreInfo(&mime_semaphore);
   return(MagickTrue);
 }
 \f
@@ -1100,10 +1101,10 @@ MagickExport void MimeComponentTerminus(void)
 {
   if (mime_semaphore == (SemaphoreInfo *) NULL)
     AcquireSemaphoreInfo(&mime_semaphore);
-  (void) LockSemaphoreInfo(mime_semaphore);
+  LockSemaphoreInfo(mime_semaphore);
   if (mime_list != (LinkedListInfo *) NULL)
     mime_list=DestroyLinkedList(mime_list,DestroyMimeElement);
   instantiate_mime=MagickFalse;
-  (void) UnlockSemaphoreInfo(mime_semaphore);
+  UnlockSemaphoreInfo(mime_semaphore);
   DestroySemaphoreInfo(&mime_semaphore);
 }