diff -cNr kakasi-2.2.5/README.lib kakasi-2.2.5w-lib3/README.lib
*** kakasi-2.2.5/README.lib	Thu Jan  1 09:00:00 1970
--- kakasi-2.2.5w-lib3/README.lib	Mon Apr 12 18:14:27 1999
***************
*** 0 ****
--- 1,80 ----
+ kakasi-2.2.5w-lib3.diff$B$K$D$$$F(B
+ 
+ 1999/04/12
+ $BLn<s5.;L(B <knok@daionet.gr.jp>
+ 
+ $B!&L\E*(B
+ 
+ $B$3$l$^$G!"(BC$B$d(Bperl$B$J$I$+$i(BKAKASI$B$r;H$&$?$a$K$O!"<B9T%U%!%$%k$NF~=PNO$r(B
+ $BMxMQ$9$kJ}K!$7$+$"$j$^$;$s$G$7$?!#$=$N$?$a!"<B9T;~$N%Q%U%)!<%^%s%9$d;H(B
+ $B$$>!<j$K>/!9Fq$,$"$j$^$7$?!#(B
+ $B$3$N%Q%C%A$O!"(BKAKASI$B$r%i%$%V%i%j2=$7!"$h$j4*J[$KMxMQ$G$-!"$+$D%Q%U%)!<(B
+ $B%^%s%9$r8~>e$5$;$k$3$H$rL\E*$K:n@.$7$^$7$?!#(B
+ 
+ $B!&:n@.J}K!(B
+ 
+ $B%i%$%V%i%j$N:n@.$KEv$?$C$F$O!"C^GH%$%s%?!<%M%C%H%/%i%V$N9b66M5?.$5$s$,(B
+ $B:n@.$5$l$?%*%j%8%J%k$N(BKAKASI-2.2.5$B$N%=!<%9$H!"5~ETBg3X$NGO>lH%$5$s$,:n(B
+ $B@.$5$l$?(BKAKASI-2.2.5$BMQ$o$+$A=q$-%Q%C%A$,I,MW$G$9!#(B
+ 
+ KAKASI-2.2.5$B$N%=!<%9$rE83+$7!"$o$+$A=q$-%Q%C%A$rEv$F$?>e$G!"%G%#%l%/%H(B
+ $B%j(Bkakasi-2.2.5$B>e$G(B
+ 
+ $ patch -p1 < kakasi-2.2.5w-lib3.diff
+ 
+ $B$H<B9T$7!"%Q%C%A$rE,MQ$7$F2<$5$$!#$"$H$O!"DL>o$N(Bmake$B<j=g$HF1$8$G$9!#(B
+ 
+ $B0J2<$N4D6-$GF0:n$r3NG'$7$F$$$^$9!#(B
+ Linux 2.0.36 + gcc 2.7.2.3 + binutils 2.9.1 + glibc 2.0.7t + wcsmbs4.1
+ 
+ $B!&%$%s%9%H!<%k(B
+ 
+ $BA3$k$Y$-%f!<%68"8B$G!"(Blibkakasi.a, libkakasi.so, libkakasi.h$B$rE,Ev$J%G%#(B
+ $B%l%/%H%j$K%3%T!<$7$F2<$5$$!#(B
+ 
+ ($BCm(B) `make install'$B$G$O%$%s%9%H!<%k$5$l$^$;$s!#(B
+ 
+ $B!&;H$$J}(B
+ 
+ $B<!$N(B3$B$D$N4X?t$,MxMQ$G$-$^$9!#(B
+ 
+ int kakasi_getopt_argv(int, char **)
+ 
+ $B=i4|2=$r9T$$$^$9!#(Bkakasi$B$r5/F0$9$k$H$-$HF1$80z?t$r;XDj$7$F2<$5$$!#0J2<(B
+ $B$NNc$G$O(B`kakasi -w'$B$r<B9T$7$?$N$HF1$8@_Dj$G=i4|2=$5$l$^$9!#(B
+ 
+ char *argv[] = {"kakasi", -w"};
+ getopt_argv(2, argv);
+ 
+ $B=i4|2=$K@.8y$9$l$P(B0$B$r!"<:GT$9$l$P(B1$B$rJV$7$^$9!#(B
+ 
+ char *kakasi_do(char *)
+ 
+ $B=hM}$r9T$$$^$9!#0z?t$K$O!"=hM}$NBP>]$H$J$kJ8;zNs$X$N%]%$%s%?$rEO$7$^$9!#(B
+ $B=hM}7k2L$O!"J8;zNs$X$N%]%$%s%?$H$7$FJV$5$l$^$9!#JV$5$l$?%]%$%s%?$O!"(B
+ do_kakasi$BFbIt$G(Bmalloc$B$5$l$?%a%b%jNN0h$G$9!#ITMW$K$J$C$?;~E@$G(Bfree$B$9$k(B
+ $BI,MW$,$"$j$^$9!#(B
+ 
+ int kakasi_close_kanwadict()
+ 
+ KAKASI$B$,%G%U%)%k%H$G;HMQ$9$k<-=q$r%/%m!<%:$7$^$9!#(Bgetopt_argv$B$rJ#?t2s(B
+ $B8F$S=P$9>l9g$K$O!"$=$NA0$K$+$J$i$:$3$N4X?t$r8F$P$J$/$F$O$J$j$^$;$s!#(B
+ $B=hM}$K@.8y$7$?>l9g$O(B0$B$r!"<:GT$7$?>l9g$O(B1$B$rJV$7$^$9!#(B
+ 
+ $B!&Cx:n8"$K$D$$$F(B
+ 
+ Copyright 1999 NOKUBI Takatsugu <knok@daionet.gr.jp>
+ 
+ $B$3$N%i%$%V%i%j$O(BKAKASI$B$+$iGI@8$7$?$b$N$J$N$G!"(BKAKASI$B$HF1$8$/(BGPL$B$N85$G(B
+ $B$N:FG[IU!"2~JQ$,G'$a$i$l$F$$$^$9!#>\:Y$K$D$$$F$O!"(BKAKASI$B$N%=!<%9$K4^$^(B
+ $B$l$k(BCOPYING$B$H$$$&%U%!%$%k$r;2>H$7$F2<$5$$!#(B
+ 
+ $B!&LH@U(B
+ 
+ $B$3$N%i%$%V%i%j$OL5J]>Z$G$9!#$3$N%i%$%V%i%j$rMxMQ$9$k$3$H$K$h$C$FH/@8$9(B
+ $B$k$$$+$J$k;vBV$K$D$$$F!":n<T$O0l@Z$N@UG$$rIi$$$^$;$s!#(B
+ 
+ $B!&<U<-(B
+ 
+ KAKASI$B$N%*%j%8%J%k$N:n<T$G$"$k9b66M5?.$5$s!"$o$+$A=q$-%Q%C%A$N:n<T$G$"(B
+ $B$kGO>lH%$5$s$K46<U$7$^$9!#(B
diff -cNr kakasi-2.2.5/src/ChangeLog.lib kakasi-2.2.5w-lib3/src/ChangeLog.lib
*** kakasi-2.2.5/src/ChangeLog.lib	Thu Jan  1 09:00:00 1970
--- kakasi-2.2.5w-lib3/src/ChangeLog.lib	Mon Apr 12 18:09:45 1999
***************
*** 0 ****
--- 1,40 ----
+ kakasi-2.2.5w-lib3.diff$B$G$NJQ99E@(B		1999/04/12
+ kakasi.c
+ 	kakasi_getopt_argv$B$K$$$/$D$+$NJQ?t$N=i4|2==hM}$rDI2C(B
+ 	($B%l%]!<%H$7$F$/$@$5$C$?9-@%$5$s$"$j$,$H$&$4$6$$$^$9(B)
+ 
+ kakasi-2.2.5w-lib2.diff$B$G$NJQ99E@(B		1999/03/04
+ dict.c, kakasi.c, kanjiio.c
+ 	$B%^%/%m$r(BPERLMOD$B$+$i(BLIBRARY$B$KJQ99(B
+ kakasi.c
+ 	$B%^%/%m(BLIBRARY$B$,Dj5A$5$l$F$$$k>l9g$K!"(B
+ 	$B!&(Bmain$B4X?t$r(Bgetopt_argv, do_kakasi$B$N(B2$B$D$N4X?t$KJ,CG(B
+ 	$B!&4X?t(Bclose_kanwadict$B$rDj5A(B
+ 	$B$9$k$h$&JQ99(B
+ Makefile
+ 	make all$B;~$K!"(Blibkakasi.a, libkakasi.so$B$b:n@.$9$k$h$&JQ99(B
+ 
+ kakasi-2.2.5w-lib1.diff$B$G$NJQ99E@(B		1999/01/11
+ 
+ dict.c
+ 	$B%^%/%m(BPERLMOD$B$,Dj5A$5$l$F$$$k>l9g$K!"(B
+ 	$B!&JQ?t(Bkanwadict$B$rHs(Bstatic$B$K$9$k(B
+ 	$B!&(Bkanwadict$B$N=i4|2=$r$9$k(B
+ 	$B$h$&$KJQ99(B
+ 
+ kakasi-2.2.5w-lib.diff$B$G$NJQ99E@(B		1999/01/08
+ 
+ Makefile
+ 	libkakasi.a$B$r:n@.$9$k%?!<%2%C%H$r@_Dj(B
+ kakasi.c
+ 	$B%^%/%m(BPERLMOD$B$,Dj5A$5$l$F$$$k>l9g$K!"(B
+ 	$B!&3F4X?t$NDj5A$rHs(Bstatic$B$K$9$k(B
+ 	$B!&(Bmain$B4X?t$rDj5A$7$J$$(B
+ 	$B$h$&$KJQ99(B
+ kanjiio.c
+ 	$BF~=PNO$rI8=`F~=PNO$G$O$J$/J8;zNs$KBP$7$F9T$&$h$&JQ99(B
+ 	$B!&4X?t(Bsetcharbuffer$B$N:n@.(B
+ 		$B$3$N4X?t$N0z?t$K;XDj$7$?NN0h$+$iF~NO(B
+ 	$B!&4X?t(Bgetpbstr$B$N:n@.(B
+ 		$BFbIt$N%P%C%U%!$K=PNO$5$l$?7k2L$r$3$N4X?t$G<hF@(B
+ 	$B$3$l$i$NJQ99$O!"%^%/%m(BPERLMOD$B$rDj5A$9$k$3$H$GM-8z$K$J$k(B
diff -cNr kakasi-2.2.5/src/Makefile kakasi-2.2.5w-lib3/src/Makefile
*** kakasi-2.2.5/src/Makefile	Mon Jan 11 16:57:10 1999
--- kakasi-2.2.5w-lib3/src/Makefile	Mon Apr 12 18:04:01 1999
***************
*** 24,29 ****
--- 24,39 ----
  # Revision 2.0  92/07/18  15:17:12  takahasi
  # 
  
+ # Modified by NOKUBI Takatsugu <knok@daionet.gr.jp>
+ #
+ # 1999/03/04
+ #	Rename PERLMOD macro to LIBRARY
+ # 1999/01/08
+ #	The following files ware modified.
+ #	Makefile
+ # 	kakasi.c
+ #	kanjiio.c
+ 
  # Please assign next values.
  
  # Directories of Dictionary and Utilities installed 
***************
*** 33,47 ****
  CC=cc
  OPTIONS=-O -DWAKATIGAKI
  
  BINDIR=$(PREFIX)/bin
  LIBDIR=$(PREFIX)/lib/kakasi
  
  CFLAGS= $(OPTIONS) \
         -DITAIJIDICT=\"$(LIBDIR)/itaijidict\" \
         -DKANWADICT=\"$(LIBDIR)/kanwadict\"
  
  SOURCES= kakasi.c a2.c j2.c g2.c k2.c E2.c H2.c K2.c J2.c dict.c itaiji.c kanjiio.c 78_83.c
! OBJECTS= kakasi.o a2.o j2.o g2.o k2.o E2.o H2.o K2.o J2.o dict.o itaiji.o kanjiio.o 78_83.o
  
  KSOURCES= mkkanwa.c dict.c itaiji.c
  KOBJECTS= mkkanwa.o dict.o itaiji.o
--- 43,62 ----
  CC=cc
  OPTIONS=-O -DWAKATIGAKI
  
+ # Archiver command
+ AR = ar
+ AROPTS = cr
+ 
  BINDIR=$(PREFIX)/bin
  LIBDIR=$(PREFIX)/lib/kakasi
  
  CFLAGS= $(OPTIONS) \
         -DITAIJIDICT=\"$(LIBDIR)/itaijidict\" \
         -DKANWADICT=\"$(LIBDIR)/kanwadict\"
+ CFLAGSLIB = -DLIBRARY
  
  SOURCES= kakasi.c a2.c j2.c g2.c k2.c E2.c H2.c K2.c J2.c dict.c itaiji.c kanjiio.c 78_83.c
! OBJECTS= kakasi.o a2.o j2.o g2.o k2.o E2.o H2.o K2.o J2.o dict.o itaiji.o kanjiio.o 78_83.o 
  
  KSOURCES= mkkanwa.c dict.c itaiji.c
  KOBJECTS= mkkanwa.o dict.o itaiji.o
***************
*** 50,58 ****
  RDOBJECTS= rdic-conv.o conv-util.o
  WXOBJECTS= wx2-conv.o conv-util.o
  
  STDDICTS=itaijidict
  
! all: kakasi mkkanwa atoc-conv rdic-conv wx2-conv
  
  kakasi: $(OBJECTS)
  	$(CC) $(CFLAGS) -o $@ $(OBJECTS)
--- 65,81 ----
  RDOBJECTS= rdic-conv.o conv-util.o
  WXOBJECTS= wx2-conv.o conv-util.o
  
+ LIBOBJECTS = libkakasi.o a2.o j2.o g2.o k2.o E2.o H2.o K2.o J2.o libdict.o itaiji.o libkanjiio.o 78_83.o
+ 
  STDDICTS=itaijidict
  
! all: kakasi mkkanwa atoc-conv rdic-conv wx2-conv libkakasi.a libkakasi.so
! 
! libkakasi.a: $(LIBOBJECTS)
! 	$(AR) $(AROPTS) libkakasi.a $(LIBOBJECTS)
! 
! libkakasi.so: $(LIBOBJECTS)
! 	$(LD) -shared -soname libkakasi.so.2 -o libkakasi.so $(LIBOBJECTS) -lc
  
  kakasi: $(OBJECTS)
  	$(CC) $(CFLAGS) -o $@ $(OBJECTS)
***************
*** 78,84 ****
  	./mkkanwa $(LIBDIR)/kanwadict kakasidict
  
  clean: 
! 	rm -rf $(OBJECTS) *~ kakasi mkkanwa atoc-conv rdic-conv wx2-conv
  
  kakasi.o: kakasi.c kakasi.h
  a2.o: a2.c kakasi.h
--- 101,108 ----
  	./mkkanwa $(LIBDIR)/kanwadict kakasidict
  
  clean: 
! 	rm -rf *.o *~ kakasi mkkanwa atoc-conv rdic-conv wx2-conv \
! 	libkakasi.a libkakasi.so
  
  kakasi.o: kakasi.c kakasi.h
  a2.o: a2.c kakasi.h
***************
*** 98,100 ****
--- 122,133 ----
  rdic-conv.o: rdic-conv.c
  wx2-conv.o: wx2-conv.c
  conv-util.o: conv-util.c
+ 
+ libkakasi.o: kakasi.c kakasi.h
+ 	$(CC) $(CFLAGS) $(CFLAGSLIB) -c -o libkakasi.o kakasi.c
+ 
+ libkanjiio.o: kanjiio.c kakasi.h
+ 	$(CC) $(CFLAGS) $(CFLAGSLIB) -c -o libkanjiio.o kanjiio.c
+ 
+ libdict.o: dict.c kakasi.h J2.h
+ 	$(CC) $(CFLAGS) $(CFLAGSLIB) -c -o libdict.o dict.c
diff -cNr kakasi-2.2.5/src/dict.c kakasi-2.2.5w-lib3/src/dict.c
*** kakasi-2.2.5/src/dict.c	Mon Jun 20 09:05:23 1994
--- kakasi-2.2.5w-lib3/src/dict.c	Mon Apr 12 18:04:01 1999
***************
*** 25,30 ****
--- 25,37 ----
   * Revision 2.0  92/07/18  12:07:05  takahasi
   * 
  */
+ /*
+   Modified by NOKUBI Takatsugu <knok@daionet.gr.jp>
+   1999/03/04
+       Rename PERLMOD macro to LIBRARY
+   1999/01/11
+       Add PERLMOD macro.
+ */
  #include <stdio.h>
  #include <ctype.h>
  #include <string.h>
***************
*** 241,247 ****
--- 248,258 ----
  /* kanwa の initialize をする。実際には先頭部分を kanwa に読み込み,
     kanwa_load を clear する。*/
  
+ #ifdef LIBRARY
+ FILE *kanwadict = NULL;
+ #else
  static FILE *kanwadict;
+ #endif
  
  void init_kanwa()
  {
diff -cNr kakasi-2.2.5/src/kakasi.c kakasi-2.2.5w-lib3/src/kakasi.c
*** kakasi-2.2.5/src/kakasi.c	Mon Jan 11 16:57:10 1999
--- kakasi-2.2.5w-lib3/src/kakasi.c	Mon Apr 12 18:08:19 1999
***************
*** 24,34 ****
--- 24,46 ----
   * 
   * Revision 2.0  92/07/18  15:17:12  takahasi
  */
+ /*
+   Modified by NOKUBI Takatsugu <knok@daionet.gr.jp>
+   1999/04/12
+      Add initialize routine for some valuables to funtion kakasi_getopt_argv.
+   1999/03/04
+      Rename PERLMOD macro to LIBRARY
+   1999/01/08
+       Add PERLMOD macro.
+ */
  
  static char RCS_ID[] = "@(#) $Header: kakasi.c,v 2.2 92/08/02 takahasi Exp $ written by H. Takahashi";
  
  #include <stdio.h>
  #include "kakasi.h"
+ #ifdef LIBRARY
+ #include "libkakasi.h"
+ #endif
  
  #define KAKASIBUF 256
  
***************
*** 49,57 ****
--- 61,79 ----
  char cr_eat_string[KAKASIBUF];
  Character n[KAKASIBUF];
  
+ #ifdef LIBRARY
+ extern FILE *kanwadict;
+ static int (*proc[8])()={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
+ /* ASCII, JISROMAN, KATAKANA, GRAPHIC, 全角記号, 全角カナ, 全角かな, 漢字 */
+ #endif
+ 
  extern input_term_type, output_term_type;
  
+ #ifdef LIBRARY
+ void digest_start_copy(c, r)
+ #else
  static void digest_start_copy(c, r)
+ #endif
       Character *c;
       Character *r;
  {
***************
*** 64,77 ****
--- 86,107 ----
      }
  }
  
+ #ifdef LIBRARY
+ void put_separator()
+ #else
  static void put_separator()
+ #endif
  {
      if (bunkatu_mode)
  	if (separator_out == 1)
  	    separator_out = 2;
  }
  
+ #ifdef LIBRARY
+ void putchars(results)
+ #else
  static void putchars(results)
+ #endif
       Character *results;
  {
      while(results->c1 != '\0') {
***************
*** 80,86 ****
--- 110,120 ----
      }
  }
  
+ #ifdef LIBRARY
+ void digest_out(c, ret)
+ #else
  static void digest_out(c, ret)
+ #endif
       Character *c;
       int ret;
  {
***************
*** 122,128 ****
--- 156,166 ----
      if (flush_mode) fflush(stdout);
  }
  
+ #ifdef LIBRARY
+ int digest(c, clen, r, rlen, type, proc)
+ #else
  static int digest(c, clen, r, rlen, type, proc)
+ #endif
       Character *c;
       int clen;
       Character *r;
***************
*** 183,189 ****
--- 221,231 ----
      return rlen - ret;
  }
  
+ #ifdef LIBRARY
+ void digest_shift(c, s)
+ #else
  static void digest_shift(c, s)
+ #endif
       Character *c;
       int s;
  {
***************
*** 199,212 ****
--- 241,275 ----
      }
  }
  
+ #ifndef LIBRARY
  int main(argc, argv)
       int argc;
       char **argv;
+ #else
+ int kakasi_getopt_argv(argc, argv)
+      int argc;
+      char **argv;
+ #endif
  {
+ #ifdef LIBRARY
+   int retval = 0;
+ #endif
+ #ifndef LIBRARY
      Character c[KAKASIBUF], r[KAKASIBUF];
      int clen, ptype, pctype;
      static int (*proc[8])()={NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
      /* ASCII, JISROMAN, KATAKANA, GRAPHIC, 全角記号, 全角カナ, 全角かな, 漢字 */
+ #endif
+ 
+ #ifdef LIBRARY
+     int i;
+     /* Initialize some valuables. */
+     for (i = 0; i < 8; i ++) {
+       proc[i] = NULL;
+     }
+     romaji_type = 0;
+     heiki_mode = 0;
+ #endif
  
      while(--argc > 0) {
  	++ argv;
***************
*** 333,338 ****
--- 396,402 ----
  #endif /* WAKATIGAKI */
  	  case '?':
  	  default:
+ #ifndef LIBRARY
  	    fprintf(stderr, "%s\n", RCS_ID);
  	    fprintf(stderr, "\n");
  	    fprintf(stderr, "Usage: kakasi -a[jE] -j[aE] -g[ajE] -k[ajKH] -E[aj] -K[ajkH] -H[ajkK] -J[ajkKH]\n");
***************
*** 357,362 ****
--- 421,429 ----
  	    fprintf(stderr, "       -w: wakatigaki mode (added by H. Baba, Sun Jul  7 16:52:40 JST 1996)\n");
  #endif /* WAKATIGAKI */
  	    exit(1);
+ #else /* LIBRARY */
+ 	    retval = 1;
+ #endif
  	}
      }
  
***************
*** 370,375 ****
--- 437,456 ----
  	    add_jisyo(*(argv ++));
      }
  
+ #ifdef LIBRARY
+     return retval;
+ }
+ 
+ char *kakasi_do(str)
+      char *str;
+ {
+     Character c[KAKASIBUF], r[KAKASIBUF];
+     int clen, ptype, pctype;
+     char *ret;
+ 
+     setcharbuffer(str);
+ #endif
+ 
      pctype = OTHER;
      separator_out = 0;
      for(;;) {
***************
*** 439,447 ****
--- 520,548 ----
  		break;
  	      default:
  		putkanji(c); digest_shift(c, 1); -- clen;
+ #ifndef LIBRARY
  		if (flush_mode) fflush(stdout);
+ #endif
  	    }
  	}
      }
+ #ifndef LIBRARY
      return 0;
+ #else /* LIBRARY */
+     ret = getpbstr();
+ #endif
  }
+ 
+ #ifdef LIBRARY
+ 
+ int kakasi_close_kanwadict()
+ {
+   if (kanwadict != NULL) {
+     fclose(kanwadict);
+     kanwadict = NULL;
+     return 0;
+   }
+   return 1;
+ }
+ 
+ #endif /* LIBRARY */
diff -cNr kakasi-2.2.5/src/kanjiio.c kakasi-2.2.5w-lib3/src/kanjiio.c
*** kakasi-2.2.5/src/kanjiio.c	Mon Jun 20 09:05:20 1994
--- kakasi-2.2.5w-lib3/src/kanjiio.c	Mon Apr 12 18:04:01 1999
***************
*** 25,30 ****
--- 25,37 ----
   * Revision 2.0  92/07/18  15:38:40  takahasi
   * 
  */
+ /*
+   Modified by NOKUBI Takatsugu
+   1999/03/04
+        Rename PERLMOD macro to LIBRARY
+   1999/01/08
+        Add PERLMOD macro.
+  */
  #include <stdio.h>
  #include <string.h>
  #include "kakasi.h"
***************
*** 41,46 ****
--- 48,57 ----
  int output_GR = SETG3;
  int output_G[5] = {ASCII, KATAKANA, KATAKANA, JIS83, SJKANA};
  
+ #ifdef LIBRARY
+ unsigned char *getcharbuffer;
+ #endif /* LIBRARY */
+ 
  /* 1 文字バッファ */
  
  static Character kanji_buf={OTHER, 0, 0};
***************
*** 60,69 ****
--- 71,182 ----
  static unsigned char input_stack[1024];
  static input_stack_depth = 0;
  
+ #ifdef LIBRARY
+ 
+ int pbuf_error = 0;
+ 
+ #define PBSTRSIZE (4096)
+ #ifdef putchar
+ #undef putchar
+ #endif
+ #define putchar(x) putcharpbuf(x)
+ 
+ typedef struct pbuf_t {
+   char *str;
+   long size;
+   struct pbuf_t *next;
+ } pbuf;
+ 
+ pbuf pcbuf = {
+   NULL, -1, NULL
+ };
+ 
+ void setcharbuffer(s)
+      unsigned char *s;
+ {
+   getcharbuffer = s;
+ }
+ 
+ void putcharpbuf(c)
+      int c;
+ {
+   pbuf *pb = &pcbuf;
+   while (pb->size == PBSTRSIZE)
+     pb = pb->next;
+   if (pb->size < 0) {
+     pbuf *npb;
+     if ((pb->str = (char *) malloc(PBSTRSIZE)) == NULL) {
+       pbuf_error = 1;
+       return;
+     }
+     pb->size = 0;
+     if ((npb = (void *) malloc(sizeof(pbuf))) == NULL) {
+       pbuf_error = 1;
+       return;
+     }
+     npb->str = NULL;
+     npb->size = -1;
+     npb->next = NULL;
+     pb->next = npb;
+   }
+   pb->str[pb->size] = (char) c;
+   pb->size ++;
+ }
+ 
+ char *getpbstr() {
+   char *ret, *tmp;
+   long tsize = 0;
+   pbuf *pb = &pcbuf;
+   while (pb->next != NULL) {
+     tsize += pb->size;
+     pb = pb->next;
+   }
+   if (tsize <= 0)
+     return NULL;
+   pb = &pcbuf;
+   tmp = ret = (char *) malloc(tsize + 1);
+   if (ret == NULL)
+     return NULL;
+   while (pb->next != NULL) {
+     bcopy(pb->str, tmp, pb->size);
+     tmp += pb->size;
+     pb = pb->next;
+   }
+   ret[tsize] = '\0';
+   pb = &pcbuf;
+   free(pb->str);
+   pb = pb->next;
+   if (pb->next != NULL) {
+     pbuf *opb = pb;
+     pb = pb->next;
+     while (pb != NULL) {
+       free(opb->str);
+       free(opb);
+       opb = pb;
+       pb = pb->next;
+     }
+   } else {
+     free(pb);
+   }
+   pcbuf.str = NULL;
+   pcbuf.size = -1;
+   pcbuf.next = NULL;
+   return ret;
+ }
+ 
+ #endif /* LIBRARY */
+ 
  static int get1byte()
  {
      if (input_stack_depth == 0)
+ #ifdef LIBRARY
+       {
+       if (*getcharbuffer == '\0') return EOF;
+       return (int) *getcharbuffer ++;
+       }
+ #else
  	return getchar();
+ #endif /* LIBRARY */
      else
  	return input_stack[-- input_stack_depth];
  }
diff -cNr kakasi-2.2.5/src/libkakasi.h kakasi-2.2.5w-lib3/src/libkakasi.h
*** kakasi-2.2.5/src/libkakasi.h	Thu Jan  1 09:00:00 1970
--- kakasi-2.2.5w-lib3/src/libkakasi.h	Mon Apr 12 18:04:01 1999
***************
*** 0 ****
--- 1,33 ----
+ /*
+  * libkakasi.h
+  * Copyright (C) 1999
+  * NOKUBI Takatsugu <knok@daionet.gr.jp>
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+  * the Free Software Foundation; either versions 2, or (at your option)
+  * any later version.
+  *
+  * This program is distributed in the hope that it will be useful
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with KAKASI, see the file COPYING.  If not, write to the Free
+  * Software Foundation Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+  */
+ 
+ void digest_start_copy();
+ void put_separator();
+ void putchars();
+ void digest_out();
+ int digest();
+ void digest_shift();
+ 
+ void setcharbuffer();
+ char *getpbstr();
+ 
+ int kakasi_getopt_argv(int, char **);
+ char *kakasi_do(char *);
+ int kakasi_close_kanwadict();
