comet2monitorの修正
authorj8takagi <j8takagi@nifty.com>
Tue, 12 Feb 2019 08:54:06 +0000 (17:54 +0900)
committerj8takagi <j8takagi@nifty.com>
Tue, 12 Feb 2019 08:54:06 +0000 (17:54 +0900)
monitor/help.monitor [new file with mode: 0644]
monitor/load.monitor [new file with mode: 0644]
monitor/quit.monitor [new file with mode: 0644]
src/monitor.c

diff --git a/monitor/help.monitor b/monitor/help.monitor
new file mode 100644 (file)
index 0000000..a7b15f7
--- /dev/null
@@ -0,0 +1,2 @@
+?
+
diff --git a/monitor/load.monitor b/monitor/load.monitor
new file mode 100644 (file)
index 0000000..656211a
--- /dev/null
@@ -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 (file)
index 0000000..bca70f3
--- /dev/null
@@ -0,0 +1 @@
+q
index a921e8d..a799f7c 100644 (file)
@@ -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);
 }