==============================================================================
 WKF (WALL's Kanji Filter) Ver 1.3.x
 Copyright (c) 1997-2005 졿Kouichi ABE (WALL) <kouichi@MysticWALL.COM>
==============================================================================

شѴ饤֥λȤ

 1. Ϥ

    ʸǤϡѴ饤֥λˡˤĤޤ
    󥹥ȡˡʤɤˤĤƤϡREADME ե

    Ѵ APIApplication Programing Interfaceˤϡ
    wkf ǻϤޤؿ̾Ȥ wkf.h Ƥޤ

    ǥեȤǤΥ󥹥ȡǤϡɬפʥإåեȥ饤֥ϡ

	/usr/local/include/wkf.h
	/usr/local/lib/libwkf.a
	/usr/local/lib/libwkf.so.1.3

    ˥󥹥ȡ뤵ޤ


 2. API 

    (1) ɽ

	void	wkfPrintGuessedKanjiCodeOfFile(FILE * fin, bool_t detail);

	ϥեΥեݥ fin ɽ detail 
	˼ޤfin λؤեδɤܸ EUC 
	ɽΰ detail  TRUE ξ硢ɸϤؤɽ
	"Japanese EUC" Ȥʤꡢdetail  FALSE ξϡɽ
	"euc-jp" Ȥʤޤ


    (2) ɤμưȽ

	kcode_t	wkfGuessKanjiCodeOfFile(FILE * fin);
	kcode_t	wkfGuessKanjiCodeOfString(char * str);

	ϥեΥեݥ fin 뤤ϡʸ str 
	ɤưȽ̤ kcode_t 줿֤ͤޤ
	֤ͤϡΤȤǤ

	KC_UNKNOWN	Ƚǽ
	KC_EUCorSJIS	ܸţգäեȣʣɣ
	KC_ASCII	ӣãɣ
	KC_JIS		ʣɣ
	KC_EUC		ܸţգ
	KC_SJIS		եȣʣɣ
	KC_BROKEN	ե뤬Ƥ
	KC_DATA		Хʥե


    (3) ɤѴƥեɤ߹Ѥǳ

	FILE *	wkfFileOpen(char * fname, kcode_t kout);
	int	wkfFileClose(FILE * fp);

	wkfFileOpen() Ǥϡե̾ fname Ѵ kout 
	ꤷƸƤӽФޤkout ǻǽͤϡ嵭 kcode_t 
	ΤȤǤͤȤƤϡեݥ󥿤֤ޤ
	Ԥ NULL ֤ޤ

	wkfFileClose() ϡwkfFileOpen() ǳեĤޤ
	wkfFileClose() ΰ fp ϡwkfFileOpen() Ǽե
	ݥ󥿤Ȥʤޤ


    (4) ɤѴƥե˽

	conv_t	wkfConvertKanjiCodeOfFile(kcode_t kin,  FILE * fin,
					  kcode_t kout, FILE * fout);

	wkfConvertKanjiCodeOfFile() ϡϴ kin ϥե
	եݥ finϴ kout ȽϥեΥե
	ݥ fout ˼ޤ

	ϥեδɤưȽ̤ˤϡkin Ȥ
	KC_UNKNOWN ꤷƤʾƱͤǤ

	ؿͤϡΤȤǤ

	CONV_ERR	Ѵ˼
	CONV_NO		Ѵʤ
	CONV_OK		Ѵ


    (5) ɤѴʸѤΥХåե֤

	conv_t	wkfConvertKanjiCodeOfString(kcode_t kin,  char * sin,
					    kcode_t kout, char * sout,
					    unsigned int size);

	wkfConvertKanjiCodeOfString() ϡϴ kin 
	ʸХåե sinϴ kout Ƚʸ
	Хåե soutʸХåե size ˼ޤ

	ʸδɤưȽ̤ˤϡkin Ȥ
	KC_UNKNOWN ꤷƤʾƱͤǤ

	ؿͤϡΤȤǤ

	CONV_ERR	Ѵ˼
	CONV_NO		Ѵʤ
	CONV_OK		Ѵ

	CONV_ERR ֤ϡѴʸǼ뤿ΥХåե
	  礭 size ᤮뤳Ȥͤޤ


    (6) ԥɤ

	void	wkfSetLineEndCode(lineend_t lineend);

	ϻβԥɤꤷޤ lineend ͤ
	Τ줫ꤷƤ

	LE_LF	0x0a		UNIX 
	LE_CR	0x0d		Macintosh 
	LE_CRLF	0x0d0x0a	MS-DOS/Windows 


    (7) 2byte ѿ 1byte ѿѴ

	void	wkfConvertZenkaku2ASCII(bool_t zen2ascii);

	ϻ''ʤɤ'A0'Ѵޤ
	 zen2ascii  TRUE ξϡ嵭Τ褦ѴԤޤ
	 zen2ascii  FALSE ξѴϹԤޤ


    ʲϡ1.3 ʹߤ˼줿ؿǤ

    (8) ʸ Base64 ǥ󥳡ɤʸѴ

	int	wkfEncodeBase64String(const String str, String rbuf,
				      size_t rsize);

	ʸ Base64 ǥ󥳡ɤ줿ʸѴޤ
	 str ѴʸꤷѴʸХåե
	rbufrbuf ΥȤư rsize ꤷޤ

	ͤϡ󥳡ɸʸХȿǤ
	顼ξϡ-1 ֤ޤ


    (9) Base64 ǥ󥳡ɤ줿ʸǥ

	int	wkfDecodeBase64String(const String str, String rbuf,
				      size_t rsize);

	Base64 ǥ󥳡ɤ줿ʸǥɤޤ
	 str ѴʸꤷѴʸХåե
	rbufrbuf ΥȤư rsize ꤷޤ

	ͤϡǥɸʸХȿǤ
	顼ξϡ-1 ֤ޤ


   (10) Base64 ǥ󥳡ɤ줿եǥ

	void	wkfDecodeBase64File(FILE * fin, FILE * fout);

	Base64 ǥ󥳡ɤ줿եǥɤơե˽Ϥޤ
	ϡϸեݥ󥿤Ƚեݥ󥿤Ǥ
	ͤϤޤ


   (11) ʸ Quoted-Printable ǥ󥳡ɤʸѴ

	int	wkfEncodeQuotedPrintableString(const String str, String rbuf,
					       size_t rsize);

	ʸ Quoted-Printable ǥ󥳡ɤ줿ʸѴޤ
	 str ѴʸꤷѴʸХåե
	rbufrbuf ΥȤư rsize ꤷޤ

	ͤϡ󥳡ɸʸХȿǤ
	顼ξϡ-1 ֤ޤ


   (12) Quoted-Printable ǥ󥳡ɤ줿ʸǥ

	int	wkfDecodeQuotedPrintableString(const String str, String rbuf,
					       size_t rsize);

	Quoted-Printable ǥ󥳡ɤ줿ʸǥɤޤ
	 str ѴʸꤷѴʸХåե
	rbufrbuf ΥȤư rsize ꤷޤ

	ͤϡǥɸʸХȿǤ
	顼ξϡ-1 ֤ޤ


   (13) Quoted-Printable ǥ󥳡ɤ줿եǥ

	void	wkfDecodeQuotedPrintableFile(FILE * fin, FILE * fout);

	Quoted-Printable ǥ󥳡ɤ줿եǥɤơ
	ե˽Ϥޤ
	ϡϸեݥ󥿤Ƚեݥ󥿤Ǥ
	ͤϤޤ


   (14) ʸ MIME 󥳡ɤʸѴ

	conv_t	wkfEncodeMimeString(const String str, String rbuf,
				    size_t rsize, kcode_t kout);

	ʸ Base64  MIME 󥳡ɤʸѴޤ
	 str ѴʸꤷѴʸХåե
	rbufrbuf ΥȤư rsize ꤷޤ

	kout ˤϥ󥳡δɤꤷޤ
	kout ͤϡKC_JIS, KC_EUC, KC_SJIS Τ줫Ǥ
	KC_UNKNOWN ꤷϡѴԤޤ

	ؿͤϡΤȤǤ

	CONV_ERR	ǥɤ˼
	CONV_NO		ǥɤʤ
	CONV_OK		ǥ


   (15) MIME 󥳡ɤ줿ʸǥ

	conv_t	wkfDecodeMimeString(const String str, String rbuf,
				    size_t rsize, kcode_t kout);

	MIME 󥳡ɤ줿ʸ=?ISO-2022-JP?B?......?= Τ褦ʸ
	ǥɤޤƱˡꤷɤѴޤ

	 str ѴʸꤷѴʸХåե
	rbufrbuf ΥȤư rsize ꤷޤ
	kout ˤϥǥɸδɤǤޤ
	kout ͤϡKC_UNKNOWN, KC_JIS, KC_EUC, KC_SJIS Τ줫Ǥ
	KC_UNKNOWN ꤷϡѴԤޤ

	ؿͤϡΤȤǤ

	CONV_ERR	ǥɤ˼
	CONV_NO		ǥɤʤ
	CONV_OK		ǥ

	CONV_ERR ֤ϡѴʸǼ뤿ΥХåե
	  礭 size ᤮뤳Ȥ䡢ưŪ˥ʤä礬
	  ͤޤ

	˲ǽʸ¤ǥɤޤΤǡȾüʸ󤬷̤Ȥ
	      ֤뤳Ȥ⤢ޤ


   (16) ʸ:XX:XX Τ褦ʡ16ʿɽʸѴ

	conv_t	wkfStringToHexString(const String str, String rbuf,
				     size_t rsize);

	ʸ Samba ʤɤѤ HEX ʸѴޤ
	㤨Сֹפϡ:8d:4e:88:eaפˤʤޤ

	 str ѴʸꤷѴʸХåե
	rbufrbuf ΥȤư rsize ꤷޤ

	ؿͤϡΤȤǤ

	CONV_ERR	Ѵ˼
	CONV_NO		Ѵʤ
	CONV_OK		Ѵ

	CONV_ERR ֤ϡѴʸǼ뤿ΥХåե
	  礭 size ᤮뤳Ȥ䡢ưŪ˥ʤä礬
	  ͤޤ


   (17) MIME 󥳡ɤ줿ʸ:XX:XX Τ褦ʡ16ʿɽʸѴ

	conv_t	wkfMimeStringToHexString(const String str, String rbuf,
					 size_t rsize);

	(12) ƱǤMIME 󥳡ɤ줿ʸˤȤޤ
	 str ѴʸꤷѴʸХåե
	rbufrbuf ΥȤư rsize ꤷޤ

	ؿͤϡΤȤǤ

	CONV_ERR	Ѵ˼
	CONV_NO		Ѵʤ
	CONV_OK		Ѵ

	CONV_ERR ֤ϡѴʸǼ뤿ΥХåե
	  礭 size ᤮뤳Ȥ䡢ưŪ˥ʤä礬
	  ͤޤ


   (18) ʸޤ֤

	conv_t	wkfFoldString(const String str, size_t flen,
			      String rbuf, size_t rsize, kcode_t kout);

	ʸꤷĹޤ֤ޤ
	μǤޤ֤ȸڤäƤޤ

	 str ʸꤷflen ޤ֤ʸĹrbuf ޤ֤줿
	ʸХåեrbuf ΥȤư rsize ꤷޤ
	kout ˤϥǥɸδɤǤޤ
	kout ͤϡKC_UNKNOWN, KC_JIS, KC_EUC, KC_SJIS Τ줫Ǥ

	ؿͤϡΤȤǤ

	CONV_ERR	ǥɤ˼
	CONV_NO		ǥɤʤ
	CONV_OK		ǥ


   (19) Escaped URI ʸǥ

	conv_t	wkfDecodeEscapedURIString(const String str, String rbuf,
					  size_t rsize, kcode_t kout);

	Escaped URI ʸ%A4%AB%A4%EB Τ褦ʸ
	ǥɤޤƱˡꤷɤѴޤ

	 str ѴʸꤷѴʸХåե
	rbufrbuf ΥȤư rsize ꤷޤ
	kout ˤϥǥɸδɤǤޤ
	kout ͤϡKC_UNKNOWN, KC_JIS, KC_EUC, KC_SJIS Τ줫Ǥ
	KC_UNKNOWN ꤷϡѴԤޤ

	ؿͤϡΤȤǤ

	CONV_ERR	ǥɤ˼
	CONV_NO		ǥɤʤ
	CONV_OK		ǥ

	CONV_ERR ֤ϡѴʸɤ Unicode 
	  ǽޤ
	  ޤѴʸǼ뤿ΥХåե礭 size 
	  ᤮뤳Ȥ䡢ưŪ˥ʤä礬ͤޤ


 3. ˡ

     C ץȤ߹ϡwkf.h 򥤥󥯥롼ɤ
    wkf 饤֥libwkf.aˤ󥯤Ǥ

    ŪʻȤϡɤ˼ΰԤ񤭡

	#include <wkf.h>

    ѥ wkf 饤֥󥯤ޤ


    㤨СñʴȽ̥ץξϡΤ褦
    ɤˤʤޤե̾ϡguess.c Ȥޤ

	#include <stdio.h>
	#include <wkf.h>

	int
	main(argc, argv)
		int	argc;
		char	**argv;
	{
	  FILE *	fin;

	  if (argc > 1) {
	    fin = fopen(*++argv, "r");
	    if (fin == NULL) {
	      perror("fopen");
	      exit(1);
	    }
	  }
	  else {
	    fin = stdin;
	  }
	
	  wkfPrintGuessedKanjiCodeOfFile(fin, FALSE);

	  fclose(fin);

	  return 0;
	}

    嵭ΥɤΥѥϼΤ褦ˤޤ
    '%' ϥץץȤǤ

	% gcc -o guess -I/usr/local/include -L/usr/local/lib guess.c -lwkf

    ѥλˡϡΤ褦ˤʤޤ

	% guess API

	% cat API | ./guess


