X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=src%2Fmonitor.c;h=69da1657087ac0a31158a6a6ec6eb5667ae0a582;hp=89ad9186ba0704f7b1f72b762dc62c0fc50f646a;hb=1474b863964dc39064d70b7204a2c60ec9bffe50;hpb=e8b475a846a6c819b5f7b4afbca67aa072294349;ds=sidebyside diff --git a/src/monitor.c b/src/monitor.c index 89ad918..69da165 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -123,25 +123,22 @@ void freebps() MONARGS *monargstok(const char *str) { MONARGS *args = malloc_chk(sizeof(MONARGS), "args"); - char *p, *q, *r, *sepp; /* pは文字列全体の先頭位置、qはトークンの先頭位置、rは文字の位置 */ - int sepc = ' '; + char *tok, *p, sepc = ' '; + int i = 0; args->argc = 0; - if(str == NULL) { + if(!str || !str[0]) { return args; } - p = q = r = strdup_chk(str, "argstok.p"); + tok = p = strdup_chk(str, "argstok.p"); do { - while(*q == ' ' || *q == '\t'){ - q = ++r; - } - sepp = r + strcspn(r, " "); - sepc = *sepp; - strcpy(sepp, ""); - args->argv[++(args->argc)-1] = strdup_chk(q, "args.argv[]"); - q = r = sepp + 1; + i = strcspn(p, " "); + sepc = p[i]; + args->argv[(args->argc)++] = strndup_chk(p, i, "args->argv[]"); + p += i + 1; + i = 0; } while(sepc == ' '); - FREE(p); + FREE(tok); return args; } @@ -275,7 +272,7 @@ MONCMDTYPE monitorcmd(char *cmd, MONARGS *args) } else if(stracmp(cmd, 2, (char* []){"d", "dump"})) { mon_dump(args->argc, args->argv); } else if(stracmp(cmd, 2, (char* []){"l", "load"})) { - loadassemble(args->argv[0], nh2word(args->argv[1])); + execptr->end = loadassemble(args->argv[0], nh2word(args->argv[1])); } else if(stracmp(cmd, 2, (char* []){"n", "next"})) { execmode.step = true; cmdtype = MONNEXT;