X-Git-Url: http://git.sourceforge.jp/view?p=nkf%2Fnkf.git;a=blobdiff_plain;f=nkf32dll.c;h=0ec2a63f2f7e414043ef59053ef3c9be67609242;hp=a3e8b89b90416162849aac9bf9cda75c260d496a;hb=3d7632c2b1b9730b26ee1bbaefdb8903375d801f;hpb=2ecc4cd5f9941cc27cb4e389660f493b6440fca0;ds=sidebyside diff --git a/nkf32dll.c b/nkf32dll.c index a3e8b89..0ec2a63 100644 --- a/nkf32dll.c +++ b/nkf32dll.c @@ -4,11 +4,11 @@ /*WIN32DLL*/ /* ‚±‚¿‚ç‚̃o[ƒWƒ‡ƒ“‚àXV‚µ‚Ä‚­‚¾‚³‚¢B */ -#define NKF_VERSIONW L"2.0.8" +#define NKF_VERSIONW L"2.1.1" /* NKF_VERSION ‚̃ƒCƒh•¶Žš */ -#define DLL_VERSION "2.0.8.0 1" +#define DLL_VERSION "2.1.1.0 2" /* DLL‚ª•Ô‚· */ -#define DLL_VERSIONW L"2.0.8.0 1" +#define DLL_VERSIONW L"2.1.1.0 2" /* DLL‚ª•Ô‚· DLL_VERSION ‚̃ƒCƒh•¶Žš */ /* nkf32.dll main */ @@ -127,8 +127,8 @@ int std_getc(f) FILE *f; { - if (std_gc_ndx){ - return std_gc_buf[--std_gc_ndx]; + if (!nkf_buf_empty_p(nkf_state->std_gc_buf)) { + return nkf_buf_pop(nkf_state->std_gc_buf); } else { if ( std_getc_mode == 1 ) { return getc(f); @@ -320,27 +320,38 @@ BOOL WINAPI GetNkfVersionSafeW(LPWSTR verStr,DWORD nBufferLength /*in TCHARs*/,L #endif /*UNICODESUPPORT*/ } +static LPSTR optStr0 = NULL; + int CALLBACK SetNkfOption(LPSTR optStr) { LPSTR p; + int len; if ( *optStr == '-' ) { - reinit(); - options(optStr); + len = strlen(optStr) + 1; + p = realloc(optStr0,len); + strcpy(p,optStr); } else { - p = malloc(strlen(optStr) + 2); - if ( p == NULL ) return -1; + len = strlen(optStr) + 2; + p = realloc(optStr0,len); *p = '-'; strcpy(p + 1,optStr); - reinit(); - options(p); - free(p); } + optStr0 = p; return 0; } +void options0(void) +{ + reinit(); + if ( optStr0 != NULL ) { + options(optStr0); + } +} + void CALLBACK NkfConvert(LPSTR outStr, LPCSTR inStr) { + options0(); std_putc_mode = 2; cout = outStr; noutmax = -1; @@ -355,6 +366,7 @@ void CALLBACK NkfConvert(LPSTR outStr, LPCSTR inStr) BOOL WINAPI NkfConvertSafe(LPSTR outStr,DWORD nOutBufferLength /*in Bytes*/,LPDWORD lpBytesReturned /*in Bytes*/, LPCSTR inStr,DWORD nInBufferLength /*in Bytes*/){ if ( inStr == NULL ) return FALSE; + options0(); std_putc_mode = 6; cout = outStr; noutmax = nOutBufferLength; @@ -378,7 +390,6 @@ void CALLBACK ToHankaku(LPSTR inStr) p = malloc(len); if ( p == NULL ) return; memcpy(p,inStr,len); - reinit(); options("-ZSs"); NkfConvert(inStr,p); free(p); @@ -386,34 +397,29 @@ void CALLBACK ToHankaku(LPSTR inStr) BOOL WINAPI ToHankakuSafe(LPSTR outStr,DWORD nOutBufferLength /*in Bytes*/,LPDWORD lpBytesReturned /*in Bytes*/,LPCSTR inStr,DWORD nInBufferLength /*in Bytes*/) { - reinit(); options("-ZSs"); return NkfConvertSafe(outStr,nOutBufferLength,lpBytesReturned,inStr,nInBufferLength); } void CALLBACK ToZenkakuKana(LPSTR outStr, LPCSTR inStr) { - reinit(); options("-Ss"); NkfConvert(outStr, inStr); } BOOL WINAPI ToZenkakuKanaSafe(LPSTR outStr,DWORD nOutBufferLength /*in Bytes*/,LPDWORD lpBytesReturned /*in Bytes*/,LPCSTR inStr,DWORD nInBufferLength /*in Bytes*/) { - reinit(); options("-Ss"); return NkfConvertSafe(outStr,nOutBufferLength,lpBytesReturned,inStr,nInBufferLength); } void CALLBACK EncodeSubject(LPSTR outStr ,LPCSTR inStr){ - reinit(); options("-jM"); NkfConvert(outStr, inStr); } BOOL WINAPI EncodeSubjectSafe(LPSTR outStr,DWORD nOutBufferLength /*in Bytes*/,LPDWORD lpBytesReturned /*in Bytes*/,LPCSTR inStr,DWORD nInBufferLength /*in Bytes*/) { - reinit(); options("-jM"); return NkfConvertSafe(outStr,nOutBufferLength,lpBytesReturned,inStr,nInBufferLength); } @@ -452,6 +458,7 @@ void CALLBACK NkfFileConvert1(LPCSTR fName) DWORD len; BOOL sts; + options0(); len = GetTempPath(sizeof d,d); tempdname = malloc(len + 1); if ( tempdname == NULL ) return; @@ -493,6 +500,7 @@ BOOL WINAPI NkfFileConvert1SafeA(LPCSTR fName,DWORD nBufferLength /*in TCHARs*/) BOOL ret; LPCSTR p; + options0(); ret = FALSE; p = fName; for ( ;; ) { @@ -545,6 +553,7 @@ BOOL WINAPI NkfFileConvert1SafeW(LPCWSTR fName,DWORD nBufferLength /*in TCHARs*/ BOOL ret; LPCWSTR p; + options0(); ret = FALSE; p = fName; for ( ;; ) { @@ -593,6 +602,7 @@ void CALLBACK NkfFileConvert2(LPCSTR fInName,LPCSTR fOutName) { FILE *fin; + options0(); if ((fin = fopen(fInName, "rb")) == NULL) return; if((fout=fopen(fOutName, "wb")) == NULL) { fclose(fin); @@ -619,6 +629,7 @@ BOOL WINAPI NkfFileConvert2SafeA(LPCSTR fInName,DWORD fInBufferLength /*in TCHAR BOOL ret; LPCSTR p; + options0(); ret = FALSE; p = fInName; for ( ;; ) { @@ -661,6 +672,7 @@ BOOL WINAPI NkfFileConvert2SafeW(LPCWSTR fInName,DWORD fInBufferLength /*in TCHA BOOL ret; LPCWSTR p; + options0(); ret = FALSE; p = fInName; for ( ;; ) {