From: j8takagi <j8takagi@nifty.com>
Date: Tue, 12 Feb 2019 08:54:06 +0000 (+0900)
Subject: comet2monitorの修正
X-Git-Tag: v0.5p3~1
X-Git-Url: https://j8takagi.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8521d91eea4d77630d668ad269dc0634f4a426ff;p=YACASL2.git

comet2monitorの修正
---

diff --git a/monitor/help.monitor b/monitor/help.monitor
new file mode 100644
index 0000000..a7b15f7
--- /dev/null
+++ b/monitor/help.monitor
@@ -0,0 +1,2 @@
+?
+
diff --git a/monitor/load.monitor b/monitor/load.monitor
new file mode 100644
index 0000000..656211a
--- /dev/null
+++ b/monitor/load.monitor
@@ -0,0 +1,2 @@
+l as/sample/sum_10.o
+d
diff --git a/monitor/quit.monitor b/monitor/quit.monitor
new file mode 100644
index 0000000..bca70f3
--- /dev/null
+++ b/monitor/quit.monitor
@@ -0,0 +1 @@
+q
diff --git a/src/monitor.c b/src/monitor.c
index a921e8d..a799f7c 100644
--- a/src/monitor.c
+++ b/src/monitor.c
@@ -340,7 +340,8 @@ void free_moncmdline(MONCMDLINE *moncmdl)
 
 void monitor()
 {
-    char *buf, *p;
+    char *buf = NULL;
+    int i;
     MONCMDLINE *moncmdl;
     MONCMDTYPE cmdtype = MONREPEAT;
 
@@ -348,21 +349,24 @@ void monitor()
         fprintf(stdout, "- ");
         buf = malloc_chk(MONINSIZE + 1, "monitor.buf");
         fgets(buf, MONINSIZE, stdin);
-        if((p = strchr(buf, '\n')) != NULL) {
-            p = '\0';
+        fprintf(stdout, "%s", buf);
+        if(!buf[0]) {
+            cmdtype = MONQUIT;
+        }
+        if((i = strcspn(buf, "\n")) > 0 || buf[0] == '\n') {
+            buf[i] = '\0';
         }
         if((moncmdl = monlinetok(buf)) != NULL) {
             cmdtype = monitorcmd(moncmdl->cmd, moncmdl->args);
             free_moncmdline(moncmdl);
         }
-        if(!buf[0] || cmdtype == MONQUIT) {
-            FREE(buf);
+        FREE(buf);
+        if(cmdtype == MONQUIT) {
             shutdown();
             freebps();
             free_cmdtable(HASH_CODE);
             freecerr();
             exit(0);
         }
-        FREE(buf);
     } while(cmdtype == MONREPEAT);
 }