Home » FreeBSD » Migrate to FreeBSD 9.1-RELEASE (ImageMagick 6.4) (Tag: )

古い ports のスケルトンを最新の OS 環境で make install する場合、必ずしもコンパイルが終了するとは限りません。OS 側 /usr/include/ 下で関数名が微妙に変更されている場合も該当します。

ImageMagick 6.4.9 を FreeBSD 9.1-RELEASE に展開する必要があり、移行前同様 2009 年頃のスケルトンを用いましたが、zlib.h, zconf.h の変更でつまづきました。

9.1-RELEASE 向けに ImageMagick/magick/blob.c を修正した際のメモです。

--- ./work/ImageMagick-6.4.9-3/magick/blob.c    2009-02-11 02:43:17.000000000 +0900
+++ /usr/appli/conf.dna15/blob.c                2013-08-30 12:23:24.000000000 +0900
@@ -88,6 +88,22 @@
 /*
   Typedef declarations.
 */
+typedef union FileInfo
+{
+  FILE
+    *file;
+
+#if defined(MAGICKCORE_ZLIB_DELEGATE)
+  gzFile
+    gzfile;
+#endif
+
+#if defined(MAGICKCORE_BZLIB_DELEGATE)
+  BZFILE
+    *bzfile;
+#endif
+} FileInfo;
+
 struct _BlobInfo
 {
   size_t
@@ -113,8 +129,8 @@
   StreamType
     type;

-  FILE
-    *file;
+  FileInfo
+    file_info;

   struct stat
     properties;
@@ -182,7 +198,7 @@
   blob_info->quantum=(size_t) MagickMaxBufferExtent;
   blob_info->offset=0;
   blob_info->type=BlobStream;
-  blob_info->file=(FILE *) NULL;
+  blob_info->file_info.file=(FILE *) NULL;
   blob_info->data=(unsigned char *) blob;
   blob_info->mapped=MagickFalse;
 }
@@ -425,7 +441,7 @@
   clone_info->status=blob_info->status;
   clone_info->temporary=blob_info->temporary;
   clone_info->type=blob_info->type;
-  clone_info->file=blob_info->file;
+  clone_info->file_info.file=blob_info->file_info.file;
   clone_info->properties=blob_info->properties;
   clone_info->stream=blob_info->stream;
   clone_info->data=blob_info->data;
@@ -488,20 +504,20 @@
     case StandardStream:
     case PipeStream:
     {
-      status=ferror(image->blob->file);
+      status=ferror(image->blob->file_info.file);
       break;
     }
     case ZipStream:
     {
 #if defined(MAGICKCORE_ZLIB_DELEGATE)
-      (void) gzerror(image->blob->file,&status);
+      (void) gzerror(image->blob->file_info.gzfile,&status);
 #endif
       break;
     }
     case BZipStream:
     {
 #if defined(MAGICKCORE_BZLIB_DELEGATE)
-      (void) BZ2_bzerror((BZFILE *) image->blob->file,&status);
+      (void) BZ2_bzerror((BZFILE *) image->blob->file_info.file,&status);
 #endif
       break;
     }
@@ -517,27 +533,27 @@
     case FileStream:
     case StandardStream:
     {
-      status=fclose(image->blob->file);
+      status=fclose(image->blob->file_info.file);
       break;
     }
     case PipeStream:
     {
 #if defined(MAGICKCORE_HAVE_POPEN)
-      status=pclose(image->blob->file);
+      status=pclose(image->blob->file_info.file);
 #endif
       break;
     }
     case ZipStream:
     {
 #if defined(MAGICKCORE_ZLIB_DELEGATE)
-      status=gzclose(image->blob->file);
+      status=gzclose(image->blob->file_info.gzfile);
 #endif
       break;
     }
     case BZipStream:
     {
 #if defined(MAGICKCORE_BZLIB_DELEGATE)
-      BZ2_bzclose((BZFILE *) image->blob->file);
+      BZ2_bzclose((BZFILE *) image->blob->file_info.bzfile);
 #endif
       break;
     }
@@ -639,7 +655,7 @@
   blob_info->eof=MagickFalse;
   blob_info->exempt=MagickFalse;
   blob_info->type=UndefinedStream;
-  blob_info->file=(FILE *) NULL;
+  blob_info->file_info.file=(FILE *) NULL;
   data=blob_info->data;
   blob_info->data=(unsigned char *) NULL;
   blob_info->stream=(StreamHandler) NULL;
@@ -685,7 +701,7 @@
     case StandardStream:
     case PipeStream:
     {
-      image->blob->eof=feof(image->blob->file) != 0 ? MagickTrue : MagickFalse;
+      image->blob->eof=feof(image->blob->file_info.file) != 0 ? MagickTrue : MagickFalse;
       break;
     }
     case ZipStream:
@@ -700,7 +716,7 @@
         status;

       status=0;
-      (void) BZ2_bzerror((BZFILE *) image->blob->file,&status);
+      (void) BZ2_bzerror((BZFILE *) image->blob->file_info.file,&status);
       image->blob->eof=status == BZ_UNEXPECTED_EOF ? MagickTrue : MagickFalse;
 #endif
       break;
@@ -1049,7 +1065,7 @@
 {
   assert(image != (const Image *) NULL);
   assert(image->signature == MagickSignature);
-  return(image->blob->file);
+  return(image->blob->file_info.file);
 }

 /*
@@ -1162,7 +1178,7 @@
     }
     case FileStream:
     {
-      if (fstat(fileno(image->blob->file),&image->blob->properties) == 0)
+      if (fstat(fileno(image->blob->file_info.file),&image->blob->properties) == 0)
         length=(MagickSizeType) image->blob->properties.st_size;
       break;
     }
@@ -1178,7 +1194,7 @@
 #if defined(__WINDOWS__)
       if (GetPathAttributes(image->filename,&image->blob->properties) != MagickFalse)
 #else
-      if (fstat(fileno(image->blob->file),&image->blob->properties) == 0)
+      if (fstat(fileno(image->blob->file_info.file),&image->blob->properties) == 0)
 #endif
         length=(MagickSizeType) image->blob->properties.st_size;
 #endif
@@ -1190,7 +1206,7 @@
 #if defined(__WINDOWS__)
       if (GetPathAttributes(image->filename,&image->blob->properties) != MagickFalse)
 #else
-      if (fstat(fileno(image->blob->file),&image->blob->properties) == 0)
+      if (fstat(fileno(image->blob->file_info.file),&image->blob->properties) == 0)
 #endif
         length=(MagickSizeType) image->blob->properties.st_size;
 #endif
@@ -2200,10 +2216,10 @@
   if ((LocaleCompare(filename,"-") == 0) ||
       ((*filename == '\0') && (image_info->file == (FILE *) NULL)))
     {
-      image->blob->file=(*type == 'r') ? stdin : stdout;
+      image->blob->file_info.file=(*type == 'r') ? stdin : stdout;
 #if defined(__WINDOWS__)
       if (strchr(type,'b') != (char *) NULL)
-        setmode(_fileno(image->blob->file),_O_BINARY);
+        setmode(_fileno(image->blob->file_info.file),_O_BINARY);
 #endif
       image->blob->type=StandardStream;
       image->blob->exempt=MagickTrue;
@@ -2216,10 +2232,10 @@

       *mode=(*type);
       mode[1]='\0';
-      image->blob->file=fdopen(atoi(filename+3),mode);
+      image->blob->file_info.file=fdopen(atoi(filename+3),mode);
 #if defined(__WINDOWS__)
       if (strchr(type,'b') != (char *) NULL)
-        setmode(_fileno(image->blob->file),_O_BINARY);
+        setmode(_fileno(image->blob->file_info.file),_O_BINARY);
 #endif
       image->blob->type=StandardStream;
       image->blob->exempt=MagickTrue;
@@ -2240,8 +2256,8 @@
 #endif
       *mode=(*type);
       mode[1]='\0';
-      image->blob->file=(FILE *) popen(filename+1,mode);
-      if (image->blob->file == (FILE *) NULL)
+      image->blob->file_info.file=(FILE *) popen(filename+1,mode);
+      if (image->blob->file_info.file == (FILE *) NULL)
         {
           ThrowFileException(exception,BlobError,"UnableToOpenBlob",filename);
           return(MagickFalse);
@@ -2255,8 +2271,8 @@
 #if defined(S_ISFIFO)
   if ((status == MagickTrue) && S_ISFIFO(image->blob->properties.st_mode))
     {
-      image->blob->file=(FILE *) OpenMagickStream(filename,type);
-      if (image->blob->file == (FILE *) NULL)
+      image->blob->file_info.file=(FILE *) OpenMagickStream(filename,type);
+      if (image->blob->file_info.file == (FILE *) NULL)
         {
           ThrowFileException(exception,BlobError,"UnableToOpenBlob",filename);
           return(MagickFalse);
@@ -2308,8 +2324,8 @@
       ((strlen(filename) > 5) &&
        (LocaleCompare(filename+strlen(filename)-5,".svgz") == 0)))
     {
-      image->blob->file=(FILE *) gzopen(filename,type);
-      if (image->blob->file != (FILE *) NULL)
+      image->blob->file_info.file=(FILE *) gzopen(filename,type);
+      if (image->blob->file_info.file != (FILE *) NULL)
         image->blob->type=ZipStream;
     }
   else
@@ -2318,26 +2334,26 @@
     if ((strlen(filename) > 4) &&
         (LocaleCompare(filename+strlen(filename)-4,".bz2") == 0))
       {
-        image->blob->file=(FILE *) BZ2_bzopen(filename,type);
-        if (image->blob->file != (FILE *) NULL)
+        image->blob->file_info.file=(FILE *) BZ2_bzopen(filename,type);
+        if (image->blob->file_info.file != (FILE *) NULL)
           image->blob->type=BZipStream;
       }
     else
 #endif
       if (image_info->file != (FILE *) NULL)
         {
-          image->blob->file=image_info->file;
+          image->blob->file_info.file=image_info->file;
           image->blob->type=FileStream;
           image->blob->exempt=MagickTrue;
         }
       else
         {
-          image->blob->file=(FILE *) OpenMagickStream(filename,type);
-          if (image->blob->file != (FILE *) NULL)
+          image->blob->file_info.file=(FILE *) OpenMagickStream(filename,type);
+          if (image->blob->file_info.file != (FILE *) NULL)
             {
               image->blob->type=FileStream;
 #if defined(MAGICKCORE_HAVE_SETVBUF)
-              (void) setvbuf(image->blob->file,(char *) NULL,(int) _IOFBF,
+              (void) setvbuf(image->blob->file_info.file,(char *) NULL,(int) _IOFBF,
                 16384);
 #endif
               if (*type == 'r')
@@ -2349,26 +2365,26 @@
                     magick[3];

                   (void) ResetMagickMemory(magick,0,sizeof(magick));
-                  count=fread(magick,1,sizeof(magick),image->blob->file);
-                  (void) rewind(image->blob->file);
+                  count=fread(magick,1,sizeof(magick),image->blob->file_info.file);
+                  (void) rewind(image->blob->file_info.file);
                   (void) LogMagickEvent(BlobEvent,GetMagickModule(),
                      "  read %ld magic header bytes",(long) count);
 #if defined(MAGICKCORE_ZLIB_DELEGATE)
                   if (((int) magick[0] == 0x1F) && ((int) magick[1] == 0x8B) &&
                       ((int) magick[2] == 0x08))
                     {
-                      (void) fclose(image->blob->file);
-                      image->blob->file=(FILE *) gzopen(filename,type);
-                      if (image->blob->file != (FILE *) NULL)
+                      (void) fclose(image->blob->file_info.file);
+                      image->blob->file_info.file=(FILE *) gzopen(filename,type);
+                      if (image->blob->file_info.file != (FILE *) NULL)
                         image->blob->type=ZipStream;
                      }
 #endif
 #if defined(MAGICKCORE_BZLIB_DELEGATE)
                   if (strncmp((char *) magick,"BZh",3) == 0)
                     {
-                      (void) fclose(image->blob->file);
-                      image->blob->file=(FILE *) BZ2_bzopen(filename,type);
-                      if (image->blob->file != (FILE *) NULL)
+                      (void) fclose(image->blob->file_info.file);
+                      image->blob->file_info.file=(FILE *) BZ2_bzopen(filename,type);
+                      if (image->blob->file_info.file != (FILE *) NULL)
                         image->blob->type=BZipStream;
                     }
 #endif
@@ -2401,7 +2417,7 @@
               *blob;

             length=(size_t) properties->st_size;
-            blob=MapBlob(fileno(image->blob->file),ReadMode,0,length);
+            blob=MapBlob(fileno(image->blob->file_info.file),ReadMode,0,length);
             if (blob != (void *) NULL)
               {
                 /*
@@ -2411,8 +2427,8 @@
                   image->blob->exempt=MagickFalse;
                 else
                   {
-                    (void) fclose(image->blob->file);
-                    image->blob->file=(FILE *) NULL;
+                    (void) fclose(image->blob->file_info.file);
+                    image->blob->file_info.file=(FILE *) NULL;
                   }
                 AttachBlob(image->blob,blob,length);
                 image->blob->mapped=MagickTrue;
@@ -2578,12 +2594,12 @@
       {
         default:
         {
-          count=(ssize_t) fread(q,1,length,image->blob->file);
+          count=(ssize_t) fread(q,1,length,image->blob->file_info.file);
           break;
         }
         case 2:
         {
-          c=getc(image->blob->file);
+          c=getc(image->blob->file_info.file);
           if (c == EOF)
             break;
           *q++=(unsigned char) c;
@@ -2591,7 +2607,7 @@
         }
         case 1:
         {
-          c=getc(image->blob->file);
+          c=getc(image->blob->file_info.file);
           if (c == EOF)
             break;
           *q++=(unsigned char) c;
@@ -2609,12 +2625,12 @@
       {
         default:
         {
-          count=(ssize_t) gzread(image->blob->file,q,(unsigned int) length);
+          count=(ssize_t) gzread(image->blob->file_info.gzfile,q,(unsigned int) length);
           break;
         }
         case 2:
         {
-          c=gzgetc(image->blob->file);
+          c=gzgetc(image->blob->file_info.gzfile);
           if (c == EOF)
             break;
           *q++=(unsigned char) c;
@@ -2622,7 +2638,7 @@
         }
         case 1:
         {
-          c=gzgetc(image->blob->file);
+          c=gzgetc(image->blob->file_info.gzfile);
           if (c == EOF)
             break;
           *q++=(unsigned char) c;
@@ -2637,7 +2653,7 @@
     case BZipStream:
     {
 #if defined(MAGICKCORE_BZLIB_DELEGATE)
-      count=(ssize_t) BZ2_bzread((BZFILE *) image->blob->file,q,(int) length);
+      count=(ssize_t) BZ2_bzread((BZFILE *) image->blob->file_info.bzfile,q,(int) length);
 #endif
       break;
     }
@@ -3300,7 +3316,7 @@
       break;
     case FileStream:
     {
-      if (fseek(image->blob->file,offset,whence) < 0)
+      if (fseek(image->blob->file_info.file,offset,whence) < 0)
         return(-1);
       image->blob->offset=TellBlob(image);
       break;
@@ -3310,7 +3326,7 @@
     case ZipStream:
     {
 #if defined(MAGICKCORE_ZLIB_DELEGATE)
-      if (gzseek(image->blob->file,(off_t) offset,whence) < 0)
+      if (gzseek(image->blob->file_info.gzfile,(off_t) offset,whence) < 0)
         return(-1);
 #endif
       image->blob->offset=TellBlob(image);
@@ -3461,7 +3477,7 @@
           offset;

         offset=TellBlob(image);
-        status=posix_fallocate(fileno(image->blob->file),(off_t) offset,
+        status=posix_fallocate(fileno(image->blob->file_info.file),(off_t) offset,
           (off_t) (extent-offset));
         if (status != 0)
           return(MagickFalse);
@@ -3481,7 +3497,7 @@
     {
       if (image->blob->mapped != MagickFalse)
         {
-          if (image->blob->file == (FILE *) NULL)
+          if (image->blob->file_info.file == (FILE *) NULL)
             return(MagickFalse);
           (void) UnmapBlob(image->blob->data,image->blob->length);
 #if !defined(MAGICKCORE_POSIX_FALLOCATE)
@@ -3495,12 +3511,12 @@
               offset;

             offset=TellBlob(image);
-            status=posix_fallocate(fileno(image->blob->file),(off_t) offset,
+            status=posix_fallocate(fileno(image->blob->file_info.file),(off_t) offset,
               (off_t) (extent-offset));
             if (status != 0)
               return(MagickFalse);
           }
-          image->blob->data=(unsigned char*) MapBlob(fileno(image->blob->file),
+          image->blob->data=(unsigned char*) MapBlob(fileno(image->blob->file_info.file),
             WriteMode,0,(size_t) extent);
           image->blob->extent=(size_t) extent;
           image->blob->length=(size_t) extent;
@@ -3568,20 +3584,20 @@
     case StandardStream:
     case PipeStream:
     {
-      status=fflush(image->blob->file);
+      status=fflush(image->blob->file_info.file);
       break;
     }
     case ZipStream:
     {
 #if defined(MAGICKCORE_ZLIB_DELEGATE)
-      status=gzflush(image->blob->file,Z_SYNC_FLUSH);
+      status=gzflush(image->blob->file_info.gzfile,Z_SYNC_FLUSH);
 #endif
       break;
     }
     case BZipStream:
     {
 #if defined(MAGICKCORE_BZLIB_DELEGATE)
-      status=BZ2_bzflush((BZFILE *) image->blob->file);
+      status=BZ2_bzflush((BZFILE *) image->blob->file_info.file);
 #endif
       break;
     }
@@ -3639,7 +3655,7 @@
       break;
     case FileStream:
     {
-      offset=ftell(image->blob->file);
+      offset=ftell(image->blob->file_info.file);
       break;
     }
     case StandardStream:
@@ -3648,7 +3664,7 @@
     case ZipStream:
     {
 #if defined(MAGICKCORE_ZLIB_DELEGATE)
-      offset=(MagickOffsetType) gztell(image->blob->file);
+      offset=(MagickOffsetType) gztell(image->blob->file_info.gzfile);
 #endif
       break;
     }
@@ -3766,19 +3782,19 @@
         default:
         {
           count=(ssize_t) fwrite((const char *) data,1,length,
-            image->blob->file);
+            image->blob->file_info.file);
           break;
         }
         case 2:
         {
-          c=putc((int) *p++,image->blob->file);
+          c=putc((int) *p++,image->blob->file_info.file);
           if (c == EOF)
             break;
           count++;
         }
         case 1:
         {
-          c=putc((int) *p++,image->blob->file);
+          c=putc((int) *p++,image->blob->file_info.file);
           if (c == EOF)
             break;
           count++;
@@ -3795,20 +3811,20 @@
       {
         default:
         {
-          count=(ssize_t) gzwrite(image->blob->file,(void *) data,
+          count=(ssize_t) gzwrite(image->blob->file_info.gzfile,(void *) data,
             (unsigned int) length);
           break;
         }
         case 2:
         {
-          c=gzputc(image->blob->file,(int) *p++);
+          c=gzputc(image->blob->file_info.gzfile,(int) *p++);
           if (c == EOF)
             break;
           count++;
         }
         case 1:
         {
-          c=gzputc(image->blob->file,(int) *p++);
+          c=gzputc(image->blob->file_info.gzfile,(int) *p++);
           if (c == EOF)
             break;
           count++;
@@ -3822,7 +3838,7 @@
     case BZipStream:
     {
 #if defined(MAGICKCORE_BZLIB_DELEGATE)
-      count=(ssize_t) BZ2_bzwrite((BZFILE *) image->blob->file,(void *) data,
+      count=(ssize_t) BZ2_bzwrite((BZFILE *) image->blob->file_info.file,(void *) data,
         (int) length);
 #endif
       break;

Random Select

飲み比べ ビアぐらすセット
年末年始の休暇に、ようやく先日いただいた贈り物をゆっくり試すことが出来ました。ビール好きと知っての心遣いだと思いますが、想い起こせば 20 代前半はビールはほぼ飲みませんでした。ダイニングバーでカクテ
しょうぶ沼公園 (2)
8 ヶ月ぶりの沖縄旅行の翌週は、自宅近所の しょうぶ沼公園 を散策しました。ちょうど しょうぶまつり が開催されていた時期で、今までも開催自体は知っていましたが訪れたことはありませんでした。お祭り広場
Herb
アルバイトを含めても、20 年近く仕事をしてきて、一兵卒でいる期間より何らかの管理職を兼務している期間の方が大分長い中で考えていることの 1 つに、"上司をうまく利用する" という
らーめん 並 (きゃべつ) + トッピング (ほうれん草増) + ぎょうざ
横浜らーめん武蔵家 (きゃべつ + もやし) の続きです。写真は 12/08 の自宅近所の東綾瀬公園 (景色 (東綾瀬公園)) です。12 月に入ってもまだ銀杏の紅葉が多く見られますが、この後 4 日
おにぎり屋 (わかめごはん・胡麻さけ)
コンビニのお弁当・総菜は断然セブンイレブン派です。こと、お弁当とおにぎりはセブンイレブン以外は論外くらいに感じていました。ただし、おつまみ系は別です。サークル K サンクスの焼きとり は、他のコンビニ
瀬底ビーチ (4)
瀬底島 (No. 1 – 172 号線散策) の続きです。前日程の雨ではありませんが小雨がパラつくこともあるこの日に、折角ですから瀬底ビーチをのぞいてみることにしました。悪天候のため営業は
Herb
私自身はこれまで仕事の選択は、やりたいことありきで探すか、習得目的があって選択して来ましたが、特別やりたいことがなく今の仕事をしている方も多いでしょう。または、プライベートで趣味や習い事等特に打ち込め
濃厚特製つけ麺 + 大盛り (1)
めん徳二代目つじ田 (濃厚豚崩しつけ麺) から1 ヶ月程空いて、前回気になっていた "濃厚特製つけ麺" を試しました。今回は、店内一番奥の席に案内され、お店の提案する食べ方と黒七味
中華せいろ (上)
オフィスのある御茶ノ水・神田エリアは、カレーやラーメンの激戦区ですが、銀座にも私用で月に 2, 3 回は必ず訪れています。ランチ時であれば大抵 いさば (日本一美味しいサバの塩焼き) に入ってしまいま
ハッシュ・ド・ビーフ 材料
ここ最近は年末年始の長期休暇の度に作っています。2012 – 2013 年にかけても作って味わいました。facebook では是非食べたいと好評でしたし、いつか本当に食べていただきたいです
Valid HTML5 Valid CSS3 Another HTML Lint