projects
/
YACASL2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
comet2monitorの修正
[YACASL2.git]
/
src
/
monitor.c
diff --git
a/src/monitor.c
b/src/monitor.c
index
a921e8d
..
a799f7c
100644
(file)
--- a/
src/monitor.c
+++ b/
src/monitor.c
@@
-340,7
+340,8
@@
void free_moncmdline(MONCMDLINE *moncmdl)
void monitor()
{
void monitor()
{
- char *buf, *p;
+ char *buf = NULL;
+ int i;
MONCMDLINE *moncmdl;
MONCMDTYPE cmdtype = MONREPEAT;
MONCMDLINE *moncmdl;
MONCMDTYPE cmdtype = MONREPEAT;
@@
-348,21
+349,24
@@
void monitor()
fprintf(stdout, "- ");
buf = malloc_chk(MONINSIZE + 1, "monitor.buf");
fgets(buf, MONINSIZE, stdin);
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((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);
}
shutdown();
freebps();
free_cmdtable(HASH_CODE);
freecerr();
exit(0);
}
- FREE(buf);
} while(cmdtype == MONREPEAT);
}
} while(cmdtype == MONREPEAT);
}