OSDN Git Service

v2.1.5
[nkf/nkf.git] / nkf32dll.c
index 9fa272e..799dfd7 100644 (file)
@@ -4,11 +4,11 @@
 
 /*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.9"
+#define NKF_VERSIONW L"2.1.5"
 /* NKF_VERSION \82Ì\83\8f\83C\83h\95\8e\9a */
-#define DLL_VERSION   "2.0.9.0 0"
+#define DLL_VERSION   "2.1.5.0 2"
 /* DLL\82ª\95Ô\82· */
-#define DLL_VERSIONW L"2.0.9.0 0"
+#define DLL_VERSIONW L"2.1.5.0 2"
 /* DLL\82ª\95Ô\82· DLL_VERSION \82Ì\83\8f\83C\83h\95\8e\9a */
 
 /* nkf32.dll main */
@@ -128,7 +128,7 @@ std_getc(f)
 FILE *f;
 {
     if (!nkf_buf_empty_p(nkf_state->std_gc_buf)) {
-       >        return nkf_buf_pop(nkf_state->std_gc_buf);
+        return nkf_buf_pop(nkf_state->std_gc_buf);
     } else {
         if ( std_getc_mode == 1 ) {
             return getc(f);
@@ -341,11 +341,58 @@ int CALLBACK SetNkfOption(LPSTR optStr)
     return 0;
 }
 
+int findspace(const char* str)
+{
+       int find_n = 0;
+       while (*str != 0) {
+               if (*str == ' ') {
+                       find_n++;
+               }
+               str++;
+       }
+       return find_n;
+}
+// \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·
+void callOptions()
+{
+       char *work = strdup(optStr0);
+       int len = strlen(optStr0);
+       for (int i = 0; i < len; i++) {
+               if (work[i] == ' ') {
+                       work[i] = '\0';
+               }
+       }
+       int i = 0;
+       while (i < len)
+       {
+               // \95\8e\9a\82ð\92T\82·
+               if (work[i] != '\0') {
+                       // options \8cÄ\82Ñ\8fo\82µ
+                       options(&work[i]);
+
+                       // \95\8e\9a\82Ì\8fI\92[\82ð\92T\82·
+                       while (work[i] != '\0' && i < len) {
+                               i++;
+                       }
+               }
+               else {
+                       i++;
+               }
+       }
+       free(work);
+}
+
 void options0(void)
 {
     reinit();
     if ( optStr0 != NULL ) {
-        options(optStr0);
+               // 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·
+               if (findspace(optStr0) > 0) {
+                       callOptions();
+               }
+               else {
+                       options(optStr0);
+               }
     }
 }
 
@@ -458,6 +505,7 @@ void CALLBACK NkfFileConvert1(LPCSTR fName)
     DWORD len;
     BOOL sts;
 
+    options0();
     len = GetTempPath(sizeof d,d);
     tempdname = malloc(len + 1);
     if ( tempdname == NULL ) return;
@@ -499,6 +547,7 @@ BOOL WINAPI NkfFileConvert1SafeA(LPCSTR fName,DWORD nBufferLength /*in TCHARs*/)
     BOOL ret;
     LPCSTR p;
 
+    options0();
     ret = FALSE;
     p = fName;
     for ( ;; ) {
@@ -551,6 +600,7 @@ BOOL WINAPI NkfFileConvert1SafeW(LPCWSTR fName,DWORD nBufferLength /*in TCHARs*/
     BOOL ret;
     LPCWSTR p;
 
+    options0();
     ret = FALSE;
     p = fName;
     for ( ;; ) {
@@ -599,6 +649,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);
@@ -625,6 +676,7 @@ BOOL WINAPI NkfFileConvert2SafeA(LPCSTR fInName,DWORD fInBufferLength /*in TCHAR
     BOOL ret;
     LPCSTR p;
 
+    options0();
     ret = FALSE;
     p = fInName;
     for ( ;; ) {
@@ -667,6 +719,7 @@ BOOL WINAPI NkfFileConvert2SafeW(LPCWSTR fInName,DWORD fInBufferLength /*in TCHA
     BOOL ret;
     LPCWSTR p;
 
+    options0();
     ret = FALSE;
     p = fInName;
     for ( ;; ) {