1 /* nkf32.dll nfk32dll.c */
2 /* e-mail:tkaneto@nifty.com */
3 /* URL: http://www1.ttcn.ne.jp/~kaneto */
6 /*
\82±
\82¿
\82ç
\82Ì
\83o
\81[
\83W
\83\87\83\93\82à
\8dX
\90V
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B */
7 #define NKF_VERSIONW L"2.1.4"
8 /* NKF_VERSION
\82Ì
\83\8f\83C
\83h
\95¶
\8e\9a */
9 #define DLL_VERSION "2.1.4.0 2"
11 #define DLL_VERSIONW L"2.1.4.0 2"
12 /* DLL
\82ª
\95Ô
\82· DLL_VERSION
\82Ì
\83\8f\83C
\83h
\95¶
\8e\9a */
19 #ifdef DLLDBG /* DLLDBG @@*/
22 void dumpn(unsigned char *buff,unsigned n)
31 printf("%02x ",*buff++);
43 void mkfile(char *f,char *p);
50 char *guessbuffA = NULL;
52 wchar_t *guessbuffW = NULL;
53 UINT guessCodePage = CP_OEMCP;
54 DWORD guessdwFlags = MB_PRECOMPOSED;
56 wchar_t *tounicode(const char *p)
58 static wchar_t buff[GUESS];
61 sts = MultiByteToWideChar(guessCodePage,guessdwFlags,p,-1,buff,sizeof(buff) / sizeof(wchar_t));
68 #endif /*UNICODESUPPORT*/
74 int dllprintf(FILE *fp,char *fmt,...)
79 if ( uret != FALSE && ulen >= 1 && fmt != NULL && *fmt != 0 ) {
81 sts = _vsnprintf(ubuff,ulen - 1,fmt,argp);
93 /** Network Kanji Filter. (PDS Version)
94 ************************************************************************
95 ** Copyright (C) 1987, Fujitsu LTD. (Itaru ICHIKAWA)
96 **
\98A
\97\8d\90æ
\81F
\81i
\8a\94\81j
\95x
\8em
\92Ê
\8c¤
\8b\86\8f\8a\81@
\83\
\83t
\83g
\82R
\8c¤
\81@
\8es
\90ì
\81@
\8e\8a
97 **
\81iE-Mail Address: ichikawa@flab.fujitsu.co.jp
\81j
98 ** Copyright (C) 1996,1998
100 **
\98A
\97\8d\90æ
\81F
\97®
\8b\85\91å
\8aw
\8fî
\95ñ
\8dH
\8aw
\89È
\89Í
\96ì
\90^
\8e¡ mime/X0208 support
101 **
\81iE-Mail Address: kono@ie.u-ryukyu.ac.jp
\81j
102 **
\98A
\97\8d\90æ
\81F COW for DOS & Win16 & Win32 & OS/2
103 **
\81iE-Mail Address: GHG00637@niftyserve.or.p
\81j
105 **
\82±
\82Ì
\83\
\81[
\83X
\82Ì
\82¢
\82©
\82È
\82é
\95¡
\8eÊ
\81C
\89ü
\95Ï
\81C
\8fC
\90³
\82à
\8b\96\91ø
\82µ
\82Ü
\82·
\81B
\82½
\82¾
\82µ
\81A
106 **
\82»
\82Ì
\8dÛ
\82É
\82Í
\81A
\92N
\82ª
\8dv
\8c£
\82µ
\82½
\82ð
\8e¦
\82·
\82±
\82Ì
\95\94\95ª
\82ð
\8ec
\82·
\82±
\82Æ
\81B
107 **
\8dÄ
\94z
\95z
\82â
\8eG
\8e\8f\82Ì
\95t
\98^
\82È
\82Ç
\82Ì
\96â
\82¢
\8d\87\82í
\82¹
\82à
\95K
\97v
\82 \82è
\82Ü
\82¹
\82ñ
\81B
108 **
\89c
\97\98\97\98\97p
\82à
\8fã
\8bL
\82É
\94½
\82µ
\82È
\82¢
\94Í
\88Í
\82Å
\8b\96\89Â
\82µ
\82Ü
\82·
\81B
109 **
\83o
\83C
\83i
\83\8a\82Ì
\94z
\95z
\82Ì
\8dÛ
\82É
\82Íversion message
\82ð
\95Û
\91¶
\82·
\82é
\82±
\82Æ
\82ð
\8fð
\8c\8f\82Æ
\82µ
\82Ü
\82·
\81B
110 **
\82±
\82Ì
\83v
\83\8d\83O
\83\89\83\80\82É
\82Â
\82¢
\82Ä
\82Í
\93Á
\82É
\89½
\82Ì
\95Û
\8fØ
\82à
\82µ
\82È
\82¢
\81A
\88«
\82µ
\82©
\82ç
\82¸
\81B
112 ** Everyone is permitted to do anything on this program
113 ** including copying, modifying, improving,
114 ** as long as you don't try to pretend that you wrote it.
115 ** i.e., the above copyright notice has to appear in all copies.
116 ** Binary distribution requires original version messages.
117 ** You don't have to ask before copying, redistribution or publishing.
118 ** THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE.
119 ***********************************************************************/
121 static const unsigned char *cin = NULL;
123 static int ninmax = -1;
124 static int std_getc_mode = 1;
130 if (!nkf_buf_empty_p(nkf_state->std_gc_buf)) {
131 return nkf_buf_pop(nkf_state->std_gc_buf);
133 if ( std_getc_mode == 1 ) {
136 if ( std_getc_mode == 2 && cin != NULL ) {
138 if ( nin >= ninmax ) {
156 static FILE *fout = NULL;
157 static unsigned char *cout = NULL;
158 static int nout = -1;
159 static int noutmax = -1;
160 static int std_putc_mode = 1;
168 if ( (std_putc_mode & 1) && fout != NULL ) {
171 if ( (std_putc_mode & 4) && nout != -1 ) {
172 if ( noutmax >= 0 && nout >= noutmax ) std_putc_mode &= ~2;
175 if ( (std_putc_mode & 2) && cout != NULL ) {
182 print_guessed_code (filename)
185 const char *codename = get_guessed_code();
186 if (filename != NULL) {
187 guessbuffA = realloc(guessbuffA,(strlen(filename) + GUESS + 1) * sizeof (char) );
188 sprintf(guessbuffA,"%s:%s", filename,codename);
190 guessbuffA = realloc(guessbuffA,(GUESS + 1) * sizeof (char) );
191 sprintf(guessbuffA,"%s", codename);
195 #ifdef UNICODESUPPORT
197 print_guessed_codeW (filename)
200 const char *codename = get_guessed_code();
202 if (filename != NULL) {
203 size = (wcslen(filename) + GUESS + 1) * sizeof (wchar_t);
204 guessbuffW = realloc(guessbuffW, size);
205 _snwprintf(guessbuffW, size, L"%s:%s", filename, tounicode(codename));
207 size = (GUESS + 1) * sizeof (wchar_t);
208 guessbuffW = realloc(guessbuffW, size);
209 _snwprintf(guessbuffW, size, L"%s", tounicode(codename));
212 #endif /*UNICODESUPPORT*/
215 **
\83p
\83b
\83`
\90§
\8dì
\8eÒ
216 ** void@merope.pleiades.or.jp (Kusakabe Youichi)
217 ** NIDE Naoyuki <nide@ics.nara-wu.ac.jp>
218 ** ohta@src.ricoh.co.jp (Junn Ohta)
219 ** inouet@strl.nhk.or.jp (Tomoyuki Inoue)
220 ** kiri@pulser.win.or.jp (Tetsuaki Kiriyama)
221 ** Kimihiko Sato <sato@sail.t.u-tokyo.ac.jp>
222 ** a_kuroe@kuroe.aoba.yokohama.jp (Akihiko Kuroe)
223 ** kono@ie.u-ryukyu.ac.jp (Shinji Kono)
224 ** GHG00637@nifty-serve.or.jp (COW)
244 #ifdef UNICODESUPPORT
249 #endif /*UNICODESUPPORT*/
252 #ifndef DLLDBG /* DLLDBG @@*/
253 int WINAPI DllEntryPoint(HINSTANCE hinst,unsigned long reason,void* lpReserved)
257 #endif /* DLLDBG @@*/
259 static LPSTR nkfverA = NKF_VERSION;
260 static LPSTR dllverA = DLL_VERSION;
261 #ifdef UNICODESUPPORT
262 static LPWSTR nkfverW = NKF_VERSIONW;
263 static LPWSTR dllverW = DLL_VERSIONW;
264 #endif /*UNICODESUPPORT*/
266 BOOL scp(LPSTR s,LPSTR t,DWORD n)
269 if ( (*s = *t) == 0 ) return TRUE;
280 #ifdef UNICODESUPPORT
281 BOOL wscp(LPWSTR s,LPWSTR t,DWORD n)
284 if ( (*s = *t) == 0 ) return TRUE;
294 #endif /*UNICODESUPPORT*/
296 void CALLBACK GetNkfVersion(LPSTR verStr){
297 strcpy(verStr,dllverA);
300 BOOL WINAPI GetNkfVersionSafeA(LPSTR verStr,DWORD nBufferLength /*in TCHARs*/,LPDWORD lpTCHARsReturned /*in TCHARs*/)
302 *lpTCHARsReturned = strlen(dllverA) + 1;
303 if ( verStr == NULL || nBufferLength == 0 ) return FALSE;
304 return scp(verStr,dllverA,nBufferLength);
307 BOOL WINAPI GetNkfVersionSafeW(LPWSTR verStr,DWORD nBufferLength /*in TCHARs*/,LPDWORD lpTCHARsReturned /*in TCHARs*/)
309 #ifdef UNICODESUPPORT
310 *lpTCHARsReturned = wcslen(dllverW) + 1;
311 if ( verStr == NULL || nBufferLength == 0 ) return FALSE;
312 wcsncpy(verStr,dllverW,nBufferLength);
313 if ( wcslen(dllverW) >= nBufferLength ) {
314 *(verStr + nBufferLength - 1) = 0;
318 #else /*UNICODESUPPORT*/
320 #endif /*UNICODESUPPORT*/
323 static LPSTR optStr0 = NULL;
325 int CALLBACK SetNkfOption(LPSTR optStr)
330 if ( *optStr == '-' ) {
331 len = strlen(optStr) + 1;
332 p = realloc(optStr0,len);
335 len = strlen(optStr) + 2;
336 p = realloc(optStr0,len);
338 strcpy(p + 1,optStr);
344 int findspace(const char* str)
355 //
\83I
\83v
\83V
\83\87\83\93\82ª
\8bó
\94\92\82Å
\8bæ
\90Ø
\82ç
\82ê
\82Ä
\82¢
\82é
\8fê
\8d\87\82É options
\82ð
\95¡
\90\94\8cÄ
\82Ñ
\8fo
\82·
358 char *work = strdup(optStr0);
359 int len = strlen(optStr0);
360 for (int i = 0; i < len; i++) {
361 if (work[i] == ' ') {
368 //
\95¶
\8e\9a\82ð
\92T
\82·
369 if (work[i] != '\0') {
370 // options
\8cÄ
\82Ñ
\8fo
\82µ
373 //
\95¶
\8e\9a\82Ì
\8fI
\92[
\82ð
\92T
\82·
374 while (work[i] != '\0' && i < len) {
388 if ( optStr0 != NULL ) {
389 // option
\82Ì
\92\86\82É
\8bó
\94\92\82ª
\82 \82Á
\82½
\8fê
\8d\87 options
\82ð
\95ª
\8a\84\82µ
\82Ä
\8cÄ
\82Ñ
\8fo
\82·
390 if (findspace(optStr0) > 0) {
399 void CALLBACK NkfConvert(LPSTR outStr, LPCSTR inStr)
414 BOOL WINAPI NkfConvertSafe(LPSTR outStr,DWORD nOutBufferLength /*in Bytes*/,LPDWORD lpBytesReturned /*in Bytes*/, LPCSTR inStr,DWORD nInBufferLength /*in Bytes*/){
415 if ( inStr == NULL ) return FALSE;
419 noutmax = nOutBufferLength;
423 ninmax = nInBufferLength;
426 *lpBytesReturned = nout;
427 if ( nout < noutmax ) *cout = 0;
431 void CALLBACK ToHankaku(LPSTR inStr)
436 len = strlen(inStr) + 1;
438 if ( p == NULL ) return;
445 BOOL WINAPI ToHankakuSafe(LPSTR outStr,DWORD nOutBufferLength /*in Bytes*/,LPDWORD lpBytesReturned /*in Bytes*/,LPCSTR inStr,DWORD nInBufferLength /*in Bytes*/)
448 return NkfConvertSafe(outStr,nOutBufferLength,lpBytesReturned,inStr,nInBufferLength);
451 void CALLBACK ToZenkakuKana(LPSTR outStr, LPCSTR inStr)
454 NkfConvert(outStr, inStr);
457 BOOL WINAPI ToZenkakuKanaSafe(LPSTR outStr,DWORD nOutBufferLength /*in Bytes*/,LPDWORD lpBytesReturned /*in Bytes*/,LPCSTR inStr,DWORD nInBufferLength /*in Bytes*/)
460 return NkfConvertSafe(outStr,nOutBufferLength,lpBytesReturned,inStr,nInBufferLength);
463 void CALLBACK EncodeSubject(LPSTR outStr ,LPCSTR inStr){
465 NkfConvert(outStr, inStr);
468 BOOL WINAPI EncodeSubjectSafe(LPSTR outStr,DWORD nOutBufferLength /*in Bytes*/,LPDWORD lpBytesReturned /*in Bytes*/,LPCSTR inStr,DWORD nInBufferLength /*in Bytes*/)
471 return NkfConvertSafe(outStr,nOutBufferLength,lpBytesReturned,inStr,nInBufferLength);
475 void CALLBACK ToMime(LPSTR outStr ,LPCSTR inStr)
477 EncodeSubject(outStr,inStr);
482 int CALLBACK NkfGetKanjiCode(VOID)
485 /* if(iconv == s_iconv)iCode=0; */ /* 0:
\83V
\83t
\83gJIS */
486 if(iconv == w_iconv)iCode=3; /* UTF-8 */
487 else if(iconv == w_iconv16){
488 if(input_endian == ENDIAN_BIG)iCode=5; /* 5:UTF-16BE */
489 else iCode=4; /* 4:UTF-16LE */
490 }else if(iconv == e_iconv){
491 if(estab_f == FALSE)iCode=2; /* 2:ISO-2022-JP */
492 else iCode=1; /* 1:EUC */
496 #endif /*GETKANJICODE*/
499 void CALLBACK NkfFileConvert1(LPCSTR fName)
503 char tempfname[MAX_PATH];
509 len = GetTempPath(sizeof d,d);
510 tempdname = malloc(len + 1);
511 if ( tempdname == NULL ) return;
512 len = GetTempPath(len + 1,tempdname);
513 sts = GetTempFileName(tempdname,"NKF",0,tempfname);
515 sts = CopyFileA(fName,tempfname,FALSE);
517 if ((fin = fopen(tempfname, "rb")) != NULL) {
518 if ((fout = fopen(fName, "wb")) != NULL) {
532 DeleteFile(tempfname);
537 #endif /*FILECONVERT1*/
539 BOOL WINAPI NkfFileConvert1SafeA(LPCSTR fName,DWORD nBufferLength /*in TCHARs*/)
543 char tempfname[MAX_PATH];
554 if ( nBufferLength == 0 ) return ret;
555 if ( *p == 0 ) break;
559 if ( chmod(fName,_S_IREAD | _S_IWRITE) == -1 ) return ret;
560 len = GetTempPath(sizeof d,d);
561 tempdname = malloc(len + 1);
562 if ( tempdname == NULL ) return FALSE;
563 len = GetTempPath(len + 1,tempdname);
564 sts = GetTempFileName(tempdname,"NKF",0,tempfname);
566 sts = CopyFileA(fName,tempfname,FALSE);
568 if ((fin = fopen(tempfname, "rb")) != NULL) {
569 if ((fout = fopen(fName, "wb")) != NULL) {
584 DeleteFileA(tempfname);
591 BOOL WINAPI NkfFileConvert1SafeW(LPCWSTR fName,DWORD nBufferLength /*in TCHARs*/)
593 #ifdef UNICODESUPPORT
596 wchar_t tempfname[MAX_PATH];
607 if ( nBufferLength == 0 ) return ret;
608 if ( *p == 0 ) break;
612 if ( _wchmod(fName,_S_IREAD | _S_IWRITE) == -1 ) return ret;
613 len = GetTempPathW(sizeof d / sizeof(WCHAR),d);
614 tempdname = malloc((len + 1) * sizeof(WCHAR));
615 if ( tempdname == NULL ) return FALSE;
616 len = GetTempPathW(len + 1,tempdname);
617 sts = GetTempFileNameW(tempdname,L"NKF",0,tempfname);
619 sts = CopyFileW(fName,tempfname,FALSE);
621 if ((fin = _wfopen(tempfname,L"rb")) != NULL) {
622 if ((fout = _wfopen(fName,L"wb")) != NULL) {
637 DeleteFileW(tempfname);
642 #else /*UNICODESUPPORT*/
644 #endif /*UNICODESUPPORT*/
648 void CALLBACK NkfFileConvert2(LPCSTR fInName,LPCSTR fOutName)
653 if ((fin = fopen(fInName, "rb")) == NULL) return;
654 if((fout=fopen(fOutName, "wb")) == NULL) {
670 #endif /*FILECONVERT2*/
672 BOOL WINAPI NkfFileConvert2SafeA(LPCSTR fInName,DWORD fInBufferLength /*in TCHARs*/,LPCSTR fOutName,DWORD fOutBufferLength /*in TCHARs*/)
683 if ( fInBufferLength == 0 ) return ret;
684 if ( *p == 0 ) break;
690 if ( fOutBufferLength == 0 ) return ret;
691 if ( *p == 0 ) break;
695 if ((fin = fopen(fInName, "rb")) != NULL) {
696 if((fout=fopen(fOutName, "wb")) != NULL) {
714 BOOL WINAPI NkfFileConvert2SafeW(LPCWSTR fInName,DWORD fInBufferLength /*in TCHARs*/,LPCWSTR fOutName,DWORD fOutBufferLength /*in TCHARs*/)
716 #ifdef UNICODESUPPORT
726 if ( fInBufferLength == 0 ) return ret;
727 if ( *p == 0 ) break;
733 if ( fOutBufferLength == 0 ) return ret;
734 if ( *p == 0 ) break;
738 if ( (fin = _wfopen(fInName,L"rb")) != NULL) {
739 if( (fout = _wfopen(fOutName,L"wb")) != NULL) {
755 #else /*UNICODESUPPORT*/
757 #endif /*UNICODESUPPORT*/
760 BOOL WINAPI GetNkfGuessA(LPSTR outStr,DWORD nBufferLength /*in TCHARs*/,LPDWORD lpTCHARsReturned /*in TCHARs*/)
762 if ( outStr == NULL || nBufferLength == 0 ) return FALSE;
763 print_guessed_code(NULL);
764 *lpTCHARsReturned = strlen(guessbuffA) + 1;
765 return scp(outStr,guessbuffA,nBufferLength);
768 BOOL WINAPI GetNkfGuessW(LPWSTR outStr,DWORD nBufferLength /*in TCHARs*/,LPDWORD lpTCHARsReturned /*in TCHARs*/)
770 #ifdef UNICODESUPPORT
771 if ( outStr == NULL || nBufferLength == 0 ) return FALSE;
772 print_guessed_codeW(NULL);
773 *lpTCHARsReturned = wcslen(guessbuffW) + 1;
774 return wscp(outStr,guessbuffW,nBufferLength);
775 #else /*UNICODESUPPORT*/
777 #endif /*UNICODESUPPORT*/
786 } NkfSupportFunctions = {
787 sizeof(NkfSupportFunctions),
791 1 /* nkf32103a.lzh uminchu 1.03 */
792 /* | 2 */ /* nkf32dll.zip 0.91 */
793 #if defined(TOMIME) && defined(GETKANJICODE) && defined(FILECONVERT1) && defined(FILECONVERT2)
794 | 4 /* nkf32204.zip Kaneto 2.0.4.0 */
797 #ifdef UNICODESUPPORT
799 #endif /*UNICODESUPPORT*/
803 BOOL WINAPI GetNkfSupportFunctions(void *outStr,DWORD nBufferLength /*in Bytes*/,LPDWORD lpBytesReturned /*in Bytes*/)
805 *lpBytesReturned = sizeof NkfSupportFunctions;
806 if ( outStr == NULL || nBufferLength == 0 ) return FALSE;
807 NkfSupportFunctions.copyrightA = COPY_RIGHT;
808 memcpy(outStr,&NkfSupportFunctions,sizeof NkfSupportFunctions > nBufferLength ? nBufferLength : sizeof NkfSupportFunctions);
812 BOOL WINAPI NkfUsage(LPSTR outStr,DWORD nBufferLength /*in Bytes*/,LPDWORD lpBytesReturned /*in Bytes*/)
815 ulen = nBufferLength;
818 if ( uret == TRUE ) {
819 *lpBytesReturned = nBufferLength - ulen;
824 /* nkf32.dll main end */
826 #ifdef DLLDBG /* DLLDBG @@*/
828 unsigned char buff[65536];
829 unsigned char buff2[65536];
830 unsigned char buff3[65536];
831 unsigned char buff4[65536];
832 char *code[] = {"
\83V
\83t
\83gJIS","EUC","ISO-2022-JP","UTF-8","UTF-16LE","UTF-16BE"};
838 void mimeencode(unsigned char *buff2)
840 memset(buff,0,sizeof buff);
841 EncodeSubject(buff,buff2);
842 printf("EncodeSubject(%s)=%s\n",buff2,buff);
843 memset(buff,0,sizeof buff);
845 printf("ToMime(%s)=%s\n",buff2,buff);
846 memset(buff,0,sizeof buff);
847 sts = EncodeSubjectSafe(buff,sizeof buff,&len,buff2,strlen(buff2));
848 printf("EncodeSubjectSafe(%s)=%d len=%d '%s'\n",buff,sts,len,buff);
849 dumpn(buff2,strlen(buff2));
853 void convert(char *arg,unsigned char *buff2)
855 sts = SetNkfOption(arg);
856 printf("SetNkfOption(%s)=%d\n",arg,sts);
857 memset(buff,0,sizeof buff);
858 NkfConvert(buff,buff2);
859 printf("NkfConvert(%s)=%s\n",buff2,buff);
860 n = NkfGetKanjiCode();
861 printf("NkfGetKanjiCode()=%d\n",n);
862 sts = SetNkfOption(arg);
863 printf("SetNkfOption(%s)=%d\n",arg,sts);
864 memset(buff,0,sizeof buff);
865 sts = NkfConvertSafe(buff,sizeof buff,&len,buff2,strlen(buff2));
866 printf("NkfConvertSafe(%s)=%d len=%d '%s'\n",buff2,sts,len,buff);
867 dumpn(buff2,strlen(buff2));
869 n = NkfGetKanjiCode();
870 printf("NkfGetKanjiCode()=%d\n",n);
873 void guess(unsigned char *buff2)
877 sts = SetNkfOption(g);
878 printf("SetNkfOption(%s)=%d\n",g,sts);
879 memset(buff,0,sizeof buff);
880 NkfConvert(buff,buff2);
881 printf("NkfConvert(%s)=%s\n",buff2,buff);
882 dumpn(buff2,strlen(buff2));
883 n = NkfGetKanjiCode();
884 printf("NkfGetKanjiCode()=%d %s\n",n,code[n]);
885 memset(buff,0,sizeof buff);
886 sts = GetNkfGuessA(buff,sizeof buff,&len);
887 printf("GetNkfGuessA()=%d len=%d '%s'\n",sts,len,buff);
889 memset(buff,0,sizeof buff);
890 sts = GetNkfGuessW((LPWSTR)buff,sizeof buff / sizeof(WCHAR),&len);
891 printf("GetNkfGuessW()=%d len=%d\n",sts,len);
892 dumpn(buff,len * sizeof(WCHAR));
901 if ( fp == NULL ) return;
902 n = fread(buff,1,sizeof buff,fp);
904 printf("dumpf(%s,%d)\n",f,n);
908 void mkfile(char *f,char *p)
913 if ( fp == NULL ) return;
919 void file(char *arg2,char *arg3,unsigned char *buf)
921 sts = SetNkfOption(arg2);
922 printf("SetNkfOption(%s)=%d\n",arg2,sts);
924 NkfFileConvert1(arg3);
925 printf("NkfFileConvert1(%s)\n",arg3);
927 sts = SetNkfOption(arg2);
928 printf("SetNkfOption(%s)=%d\n",arg2,sts);
930 sts = NkfFileConvert1SafeA(arg3,strlen(arg3) + 1);
931 printf("NkfFileConvert1SafeA(%s)=%d\n",arg3,sts);
933 sts = SetNkfOption(arg2);
934 printf("SetNkfOption(%s)=%d\n",arg2,sts);
936 sts = MultiByteToWideChar(CP_OEMCP,MB_PRECOMPOSED,arg3,-1,(wchar_t *)buff,sizeof(buff) / sizeof(wchar_t));
937 printf("MultiByteToWideChar(%s)=%d\n",arg3,sts);
938 dumpn(buff,(wcslen((wchar_t *)buff) + 1) * sizeof(wchar_t));
939 sts = NkfFileConvert1SafeW((wchar_t *)buff,sizeof buff / sizeof(wchar_t) /*wcslen((wchar_t *)buff) + 1*/);
940 printf("NkfFileConvert1SafeW()=%d\n",sts);
944 void file2(char *arg2,char *arg3,char *arg4,unsigned char *buf)
946 sts = SetNkfOption(arg2);
947 printf("SetNkfOption(%s)=%d\n",arg2,sts);
949 NkfFileConvert2(arg3,arg4);
950 printf("NkfFileConvert1(%s,%s)\n",arg3,arg4);
953 sts = SetNkfOption(arg2);
954 printf("SetNkfOption(%s)=%d\n",arg2,sts);
956 sts = NkfFileConvert2SafeA(arg3,strlen(arg3) + 1,arg4,strlen(arg4) + 1);
957 printf("NkfFileConvert2SafeA(%s,%s)=%d\n",arg3,arg4,sts);
960 sts = SetNkfOption(arg2);
961 printf("SetNkfOption(%s)=%d\n",arg2,sts);
963 sts = MultiByteToWideChar(CP_OEMCP,MB_PRECOMPOSED,arg3,-1,(wchar_t *)buff,sizeof(buff) / sizeof(wchar_t));
964 printf("MultiByteToWideChar(%s)=%d\n",arg3,sts);
965 dumpn(buff,(wcslen((wchar_t *)buff) + 1) * sizeof(wchar_t));
966 sts = MultiByteToWideChar(CP_OEMCP,MB_PRECOMPOSED,arg4,-1,(wchar_t *)buff4,sizeof(buff4) / sizeof(wchar_t));
967 printf("MultiByteToWideChar(%s)=%d\n",arg4,sts);
968 dumpn(buff4,(wcslen((wchar_t *)buff4) + 1) * sizeof(wchar_t));
969 sts = NkfFileConvert2SafeW((wchar_t *)buff,sizeof buff / sizeof(wchar_t) ,(wchar_t *)buff4,sizeof buff4 / sizeof(wchar_t));
970 printf("NkfFileConvert2SafeW()=%d\n",sts);
975 int main(int argc,char **argv)
977 struct NKFSUPPORTFUNCTIONS fnc;
979 if ( argc < 2 ) return 0;
980 switch ( *argv[1] ) {
982 memset(buff,0,sizeof buff);
984 printf("GetNkfVersion() '%s'\n",buff);
985 sts = GetNkfVersionSafeA(buff,sizeof buff,&len);
986 printf("GetNkfVersionSafeA()=%d len=%d '%s'\n",sts,len,buff);
987 sts = GetNkfVersionSafeW((LPWSTR)buff,sizeof buff / sizeof(WCHAR),&len);
988 printf("GetNkfVersionSafeW()=%d len=%d\n",sts,len);
989 dumpn(buff,len * sizeof(WCHAR));
990 sts = GetNkfSupportFunctions(&fnc,sizeof fnc,&len);
991 printf("GetNkfSupportFunctions()=%d len=%d\n",sts,len);
992 printf("size=%d\n",fnc.size);
993 printf("copyrightA='%s'\n",fnc.copyrightA);
994 printf("versionA='%s'\n",fnc.versionA);
995 printf("dateA='%s'\n",fnc.dateA);
996 printf("functions=%d %x\n",fnc.functions,fnc.functions);
999 if ( argc < 3 ) return 0;
1000 mimeencode(argv[2]);
1003 if ( argc < 2 ) return 0;
1008 if ( argc < 4 ) return 0;
1009 convert(argv[2],argv[3]);
1012 if ( argc < 3 ) return 0;
1014 convert(argv[2],buff2);
1017 if ( argc < 3 ) return 0;
1021 if ( argc < 2 ) return 0;
1026 if ( argc < 5 ) return 0;
1027 file(argv[2],argv[3],argv[4]);
1030 if ( argc < 4 ) return 0;
1032 file(argv[2],argv[3],buff3);
1035 if ( argc < 6 ) return 0;
1036 file2(argv[2],argv[3],argv[4],argv[5]);
1039 if ( argc < 5 ) return 0;
1041 file2(argv[2],argv[3],argv[4],buff3);
1044 sts = NkfUsage(buff,sizeof buff,&len);
1045 printf("strlen(buff)=%d\n",strlen(buff));
1046 printf("NkfUsage()=%d len=%d \n%s",sts,len,buff);
1052 #endif /* DLLDBG @@*/