OSDN Git Service

Kernel#call_subprocess and Molecule#call_subprocess_async are modified so that the...
authortoshinagata1964 <toshinagata1964@a2be9bc6-48de-4e38-9406-05402d4bc13c>
Fri, 1 Nov 2013 10:54:26 +0000 (10:54 +0000)
committertoshinagata1964 <toshinagata1964@a2be9bc6-48de-4e38-9406-05402d4bc13c>
Fri, 1 Nov 2013 10:54:26 +0000 (10:54 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/molby/trunk@410 a2be9bc6-48de-4e38-9406-05402d4bc13c

MolLib/cmdtool_stubs.c
wxSources/MyApp.cpp
wxSources/MyApp.h

index 3ca0959..a1af57a 100644 (file)
@@ -161,7 +161,7 @@ MyAppCallback_getTextWithPrompt(const char *prompt, char *buf, int bufsize)
 }
 
 int
-MyAppCallback_callSubProcess(const char *cmdline, const char *procname, int (*callback)(void *), void *callback_data)
+MyAppCallback_callSubProcess(const char *cmdline, const char *procname, int (*callback)(void *), void *callback_data, FILE *output, FILE *errout)
 {
        return system(cmdline);
 }
index e0a4e49..18a532c 100755 (executable)
@@ -1225,7 +1225,7 @@ MyApp::OnEndProcess(wxProcessEvent &event)
 }
 
 int
-MyApp::CallSubProcess(const char *cmdline, const char *procname, int (*callback)(void *), void *callback_data)
+MyApp::CallSubProcess(const char *cmdline, const char *procname, int (*callback)(void *), void *callback_data, FILE *fpout, FILE *fperr)
 {
        int status = 0;
        int callback_result = 0;
@@ -1308,7 +1308,9 @@ MyApp::CallSubProcess(const char *cmdline, const char *procname, int (*callback)
                                                        memsize = len_total + 1;
                                                }
                                        }
-                               } else {
+                               } else if (fpout != NULL && fpout != (FILE *)1) {
+                                       fputs(buf, fpout);
+                               } else if (fpout == (FILE *)1) {
                                        MyAppCallback_setConsoleColor(0);
                                        MyAppCallback_showScriptMessage("%s", buf);
                                }
@@ -1323,9 +1325,13 @@ MyApp::CallSubProcess(const char *cmdline, const char *procname, int (*callback)
                                fprintf(fplog, "%s", buf);
                                fflush(fplog);
 #endif
-                               MyAppCallback_setConsoleColor(1);
-                               MyAppCallback_showScriptMessage("\n%s", buf);
-                               MyAppCallback_setConsoleColor(0); 
+                               if (fperr != NULL && fperr != (FILE *)1) {
+                                       fputs(buf, fperr);
+                               } else if (fpout == (FILE *)1) {
+                                       MyAppCallback_setConsoleColor(1);
+                                       MyAppCallback_showScriptMessage("\n%s", buf);
+                                       MyAppCallback_setConsoleColor(0); 
+                               }
                        }
                }
                if (++count == 100) {
@@ -1880,9 +1886,9 @@ void MyAppCallback_endUndoGrouping(void)
        }
 }
 
-int MyAppCallback_callSubProcess(const char *cmdline, const char *procname, int (*callback)(void *), void *callback_data)
+int MyAppCallback_callSubProcess(const char *cmdline, const char *procname, int (*callback)(void *), void *callback_data, FILE *output, FILE *errout)
 {
-       return wxGetApp().CallSubProcess(cmdline, procname, callback, callback_data);
+       return wxGetApp().CallSubProcess(cmdline, procname, callback, callback_data, output, errout);
 }
 
 void MyAppCallback_showConsoleWindow(void)
index 2c0fdb2..c0c7a99 100755 (executable)
@@ -174,7 +174,7 @@ class MyApp: public wxApp
        void OnImportAmberLib(wxCommandEvent &event);
 
        void OnEndProcess(wxProcessEvent &event);
-       int CallSubProcess(const char *cmdline, const char *procname, int (*callback)(void *) = NULL, void *callback_data = NULL);
+       int CallSubProcess(const char *cmdline, const char *procname, int (*callback)(void *) = NULL, void *callback_data = NULL, FILE *fpout = NULL, FILE *fperr = NULL);
 
        void OnActivate(wxActivateEvent &event);