X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=src%2Fmonitor.c;h=d02a435307f72df714823a86bcfcd3e08507f6b7;hp=30893b66e1f294c90a2fb0cca6e47ea3b9532167;hb=8808be96beb5502d13c0cd957b9fc3cec72ac6e3;hpb=ea0991b89b1bfe8e1bfa33a2ffec979e702a06dc diff --git a/src/monitor.c b/src/monitor.c index 30893b6..d02a435 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -370,10 +370,23 @@ void free_moncmdline(MONCMDLINE *moncmdl) } } +int monquit() +{ + int stat = 0; + shutdown(); + freebps(); + free_cmdtable(HASH_CMDTYPE); + free_cmdtable(HASH_CODE); + if(cerr->num > 0) { + stat = 1; + } + freecerr(); + return stat; +} + void monitor() { char *buf = NULL; - int i; MONCMDLINE *moncmdl; MONCMDTYPE cmdtype = MONREPEAT; @@ -385,20 +398,14 @@ void monitor() if(!buf[0]) { cmdtype = MONQUIT; } - if((i = strcspn(buf, "\n")) > 0 || buf[0] == '\n') { - buf[i] = '\0'; - } + strip_end(buf); /* 文字列末尾の改行と空白を削除 */ if((moncmdl = monlinetok(buf)) != NULL) { cmdtype = monitorcmd(moncmdl->cmd, moncmdl->args); free_moncmdline(moncmdl); } FREE(buf); if(cmdtype == MONQUIT) { - shutdown(); - freebps(); - free_cmdtable(HASH_CMDTYPE); - freecerr(); - exit(0); + exit(monquit()); } } while(cmdtype == MONREPEAT); }