/* nkf32.dll nfk32dll.c */
-// e-mail:tkaneto@nifty.com
-// URL: http://www1.ttcn.ne.jp/~kaneto
+/* e-mail:tkaneto@nifty.com */
+/* URL: http://www1.ttcn.ne.jp/~kaneto */
/*WIN32DLL*/
/* \82±\82¿\82ç\82Ì\83o\81[\83W\83\87\83\93\82à\8dX\90V\82µ\82Ä\82\82¾\82³\82¢\81B */
-#define NKF_VERSIONW L"2.0.6"
+#define NKF_VERSIONW L"2.1.3"
/* NKF_VERSION \82Ì\83\8f\83C\83h\95¶\8e\9a */
-#define DLL_VERSION "2.0.6.0 1"
+#define DLL_VERSION "2.1.3.0 2"
/* DLL\82ª\95Ô\82· */
-#define DLL_VERSIONW L"2.0.6.0 1"
+#define DLL_VERSIONW L"2.1.3.0 2"
/* DLL\82ª\95Ô\82· DLL_VERSION \82Ì\83\8f\83C\83h\95¶\8e\9a */
/* nkf32.dll main */
UINT guessCodePage = CP_OEMCP;
DWORD guessdwFlags = MB_PRECOMPOSED;
-wchar_t *tounicode(char *p)
+wchar_t *tounicode(const char *p)
{
static wchar_t buff[GUESS];
int sts;
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);
return EOF;
}
-static FILE *fout = stdout;
+static FILE *fout = NULL;
static unsigned char *cout = NULL;
static int nout = -1;
static int noutmax = -1;
print_guessed_code (filename)
char *filename;
{
- char *codename = "BINARY";
- if (!is_inputcode_mixed) {
- if (strcmp(input_codename, "") == 0) {
- codename = "ASCII";
- } else {
- codename = input_codename;
- }
- }
+ const char *codename = get_guessed_code();
if (filename != NULL) {
guessbuffA = realloc(guessbuffA,(strlen(filename) + GUESS + 1) * sizeof (char) );
sprintf(guessbuffA,"%s:%s", filename,codename);
print_guessed_codeW (filename)
wchar_t *filename;
{
- char *codename = "BINARY";
- if (!is_inputcode_mixed) {
- if (strcmp(input_codename, "") == 0) {
- codename = "ASCII";
- } else {
- codename = input_codename;
- }
- }
+ const char *codename = get_guessed_code();
+ size_t size;
if (filename != NULL) {
- guessbuffW = realloc(guessbuffW,(wcslen(filename) + GUESS + 1) * sizeof (wchar_t) );
- swprintf(guessbuffW,L"%s:%s",filename,tounicode(codename));
+ size = (wcslen(filename) + GUESS + 1) * sizeof (wchar_t);
+ guessbuffW = realloc(guessbuffW, size);
+ _snwprintf(guessbuffW, size, L"%s:%s", filename, tounicode(codename));
} else {
- guessbuffW = realloc(guessbuffW,(GUESS + 1) * sizeof (wchar_t));
- swprintf(guessbuffW,L"%s",tounicode(codename));
+ size = (GUESS + 1) * sizeof (wchar_t);
+ guessbuffW = realloc(guessbuffW, size);
+ _snwprintf(guessbuffW, size, L"%s", tounicode(codename));
}
}
#endif /*UNICODESUPPORT*/
**
**/
-void
-reinitdll()
+void
+reinitdll(void)
{
cin = NULL;
nin = -1;
#endif /*UNICODESUPPORT*/
}
-int CALLBACK SetNkfOption(LPCSTR optStr)
+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;
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;
p = malloc(len);
if ( p == NULL ) return;
memcpy(p,inStr,len);
- reinit();
options("-ZSs");
NkfConvert(inStr,p);
free(p);
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);
}
int CALLBACK NkfGetKanjiCode(VOID)
{
int iCode=0;
- //if(iconv == s_iconv)iCode=0; /* 0:\83V\83t\83gJIS */
+ /* if(iconv == s_iconv)iCode=0; */ /* 0:\83V\83t\83gJIS */
if(iconv == w_iconv)iCode=3; /* UTF-8 */
else if(iconv == w_iconv16){
- if(utf16_mode == UTF16BE_INPUT)iCode=5; /* 5:UTF-16BE */
+ if(input_endian == ENDIAN_BIG)iCode=5; /* 5:UTF-16BE */
else iCode=4; /* 4:UTF-16LE */
}else if(iconv == e_iconv){
if(estab_f == FALSE)iCode=2; /* 2:ISO-2022-JP */
DWORD len;
BOOL sts;
+ options0();
len = GetTempPath(sizeof d,d);
tempdname = malloc(len + 1);
if ( tempdname == NULL ) return;
BOOL ret;
LPCSTR p;
+ options0();
ret = FALSE;
p = fName;
for ( ;; ) {
BOOL ret;
LPCWSTR p;
+ options0();
ret = FALSE;
p = fName;
for ( ;; ) {
{
FILE *fin;
+ options0();
if ((fin = fopen(fInName, "rb")) == NULL) return;
if((fout=fopen(fOutName, "wb")) == NULL) {
fclose(fin);
BOOL ret;
LPCSTR p;
+ options0();
ret = FALSE;
p = fInName;
for ( ;; ) {
BOOL ret;
LPCWSTR p;
+ options0();
ret = FALSE;
p = fInName;
for ( ;; ) {
{
*lpBytesReturned = sizeof NkfSupportFunctions;
if ( outStr == NULL || nBufferLength == 0 ) return FALSE;
- NkfSupportFunctions.copyrightA = CopyRight;
+ NkfSupportFunctions.copyrightA = COPY_RIGHT;
memcpy(outStr,&NkfSupportFunctions,sizeof NkfSupportFunctions > nBufferLength ? nBufferLength : sizeof NkfSupportFunctions);
return TRUE;
}