emx を使った 32bit 版 gn では、Unix 版と同様 mimekit(旧称
mimehead) を用いたヘッダ部の encode/decode が可能となります。
ここでは OS/2 gn で MIME を利用する場合に、通常の方法と比べ
て異なる点について解説して行きます。説明は docs.jp/mime と対
比させて行います。
まず前提として、emx 版の gn を作る環境が準備できていることを
仮定します。つまり emx/gcc 及び付随するツール群(詳しくは
emx のインストールガイドを参照してください), gnu make, gnu
patch がインストールされているものとします。
また作成したライブラリのテストを行う場合には、sort, uniq,
grepが必要になります。これは emx と同じ手段で gnututil.zip
として手に入れることができると思います。
>(2)mimekit1.6.tar.gz を展開します。
このあと Makefile を書替える必要があります。オリジナルの
Makefile に対するパッチを最後に添付してあるので、これを
patch に食わせて下さい。
>(3)mimekit を make し、できあがった libmimekit.a を /usr/lib などに
> 置きます。
libmimekit.a はemx の使用する環境変数 LIBRARY_PATH で指定した
ディレクトリに置いて下さい。
>(4)configur 実行時に
> OPTCFLAGS として、-DMIME を
> OPTLIBS として、-lmimekit を指定します。
emx ではライブラリの指定が Unix と異なります。Unix ではライブラ
リファイルは libXXXXX.a というファイル名を持ち、リンク時にオ
プションとして -lXXXXX を指定しますが、emx の場合はファイル
名そのもの (.a を取ったもの) を使います。従って OPTLIBS に指
定するのは、
-llibmimekit
となります。
>(5)make
> make install
>
>以上で、ヘッダ部分に MIME が使用できる gn ができあがります。
お疲れ様でした。
>(6).gnrc に以下の行を追加します。
> MIME_HEAD ON
> ニュースサーバ毎に使用/不使用を切替えたい時は、
> .gnrc-NNTPSERVER を使用します。
ここは同じです。
なお「そこまでするか普通」という意見もあるでしょうが、
mimekit に同梱されているパフォーマンス測定用のプログラム
bench も OS/2 対応にしました。パッチは本文の最後に添付してあ
ります。
#このパッチは mimekit1.1 用です。1.6 にはあたらないかも知れません
文責 菊池 彰 (kiku@yamato.ibm.co.jp)
*** orig/Makefile Fri Dec 01 23:55:06 1995
--- Makefile Fri Aug 16 15:49:34 1996
***************
*** 49,58 ****
codeconv.o JIS.o html.o file.o \
syslog.o
! ALL = toMime fromMime enMime deMime test.out bench
! CC = cc
! CFLAGS = -O
RM = rm -f
RANLIB = `./mkranlib`
TAR = tar
--- 49,58 ----
codeconv.o JIS.o html.o file.o \
syslog.o
! ALL = toMime.exe fromMime.exe enMime.exe deMime.exe test.out bench.exe
! CC = gcc
! CFLAGS = -O -DOS2
RM = rm -f
RANLIB = `./mkranlib`
TAR = tar
***************
*** 65,92 ****
$(LIBMKIT): Makefile $(OBJS)
$(RM) $(LIBMKIT)
! ar rc $(LIBMKIT) $(OBJS)
! $(RANLIB) $(LIBMKIT)
! enMime: mmhencode.c $(LIBMKIT)
! $(CC) $(PROF) -o enMime -DENMIME mmhencode.c $(LIBMKIT)
! deMime: mmhencode.c $(LIBMKIT)
! $(CC) $(PROF) -o deMime -DDEMIME mmhencode.c $(LIBMKIT)
! fromMime: mmhencode.c $(LIBMKIT)
! $(CC) $(PROF) -o fromMime -DMIME2LOCAL mmhencode.c $(LIBMKIT)
! toMime: mmhencode.c $(LIBMKIT)
! $(CC) $(PROF) -o toMime -DLOCAL2MIME mmhencode.c $(LIBMKIT)
! TEST = ./enMimetest.out
! cat test.out
! bench: bench.o $(LIBMKIT)
! $(CC) $(PROF) -o bench bench.o $(LIBMKIT)
tar: $(TARFILE)
$(TARFILE): $(FILES)
--- 65,92 ----
$(LIBMKIT): Makefile $(OBJS)
$(RM) $(LIBMKIT)
! ar rsc $(LIBMKIT) $(OBJS)
! # $(RANLIB) $(LIBMKIT)
! enMime.exe: mmhencode.c $(LIBMKIT)
! $(CC) $(PROF) -o enMime.exe -DENMIME mmhencode.c $(LIBMKIT)
! deMime.exe: mmhencode.c $(LIBMKIT)
! $(CC) $(PROF) -o deMime.exe -DDEMIME mmhencode.c $(LIBMKIT)
! fromMime.exe: mmhencode.c $(LIBMKIT)
! $(CC) $(PROF) -o fromMime.exe -DMIME2LOCAL mmhencode.c $(LIBMKIT)
! toMime.exe: mmhencode.c $(LIBMKIT)
! $(CC) $(PROF) -o toMime.exe -DLOCAL2MIME mmhencode.c $(LIBMKIT)
! TEST = enMime test.out
! test.out: Makefile sample fromMime.exe toMime.exe
! $(TEST)
! type test.out
! bench.exe: bench.o $(LIBMKIT)
! $(CC) $(PROF) -o bench.exe bench.o $(LIBMKIT)
tar: $(TARFILE)
$(TARFILE): $(FILES)
***************
*** 93,107 ****
$(TAR) cfh $(TARFILE) $(FILES)
files:; ls -d $(FILES)
! Clean:; $(RM) $(OBJS) $(LIBMKIT) toMime fromMime $(SHAREFILES)
! clean:; $(RM) $(OBJS) $(LIBMKIT) toMime fromMime \
! enMime deMime bench.o test.out
!
! install: fromMime toMime $(LIBMKIT)
! install -o bin -g bin -m 755 fromMime $(INSTDIR)
! install -o bin -g bin -m 755 toMime $(INSTDIR)
! install -o root -g staff -m 644 $(LIBMKIT) $(INSTDIR)
! $(RANLIB) $(INSTDIR)/$(LIBMKIT)
config.h:; ln -s $(MMDIR)/config.h .
codes.c:; ln -s $(MMDIR)/metamail/codes.c .
--- 93,107 ----
$(TAR) cfh $(TARFILE) $(FILES)
files:; ls -d $(FILES)
! Clean:; $(RM) $(OBJS) $(LIBMKIT) toMime.exe fromMime.exe $(SHAREFILES)
! clean:; $(RM) $(OBJS) $(LIBMKIT) toMime.exe fromMime.exe \
! enMime.exe deMime.exe bench.o test.out
!
! install: fromMime.exe toMime.exe $(LIBMKIT)
! copy fromMime.exe $(INSTDIR)
! copy toMime.exe $(INSTDIR)
! copy $(LIBMKIT) $(INSTDIR)
! # $(RANLIB) $(INSTDIR)/$(LIBMKIT)
config.h:; ln -s $(MMDIR)/config.h .
codes.c:; ln -s $(MMDIR)/metamail/codes.c .
*** orig/bench.c Sat Oct 28 10:06:38 1995
--- bench.c Fri Aug 16 15:44:10 1996
***************
*** 1,7 ****
--- 1,11 ----
#include
int LOOPCOUNT = 1000;
+ #ifdef OS2
+ static char external[128] = "fromMime.exe";
+ #else
static char external[128] = "fromMime";
+ #endif
#define DUMMY 1
#define LINKED 2
***************
*** 108,117 ****
--- 112,123 ----
if( (cpid = fork()) == 0 ){
close(to[1]); close(0); dup(to[0]); close(to[0]);
close(from[0]);close(1); dup(from[1]);close(from[1]);
+ #ifndef OS2
if( strncmp("exec ",command,5) != 0 ){
sprintf(commandx,"exec %s",command);
command = commandx;
}
+ #endif
system(command);
exit(0);
}else{
(C) kiku@yamato.ibm.co.jp (Akira Kikuchi)
Aug.27,1996
Copyright (C) yamasita@omronsoft.co.jp
May.30,1997
著作権は放棄しません。ただし、営利目的以外の使用/配布に制限は設けません。
オムロン ソフトウェア 技術開発部
山下 康成
yamasita@omronsoft.co.jp