projects
/
YACASL2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
comet2のプロンプトを(comet2 monitor)に変更
[YACASL2.git]
/
src
/
monitor.c
diff --git
a/src/monitor.c
b/src/monitor.c
index
9fe71f5
..
89ad918
100644
(file)
--- a/
src/monitor.c
+++ b/
src/monitor.c
@@
-5,6
+5,11
@@
*/
static BPSLIST *bps[BPSTABSIZE];
*/
static BPSLIST *bps[BPSTABSIZE];
+/**
+ * @brief comet2monitorのプロンプト
+ */
+static char *monitor_prompt = "(comet2 monitor)";
+
unsigned adrhash(WORD adr)
{
HKEY *key[1];
unsigned adrhash(WORD adr)
{
HKEY *key[1];
@@
-132,7
+137,7
@@
MONARGS *monargstok(const char *str)
}
sepp = r + strcspn(r, " ");
sepc = *sepp;
}
sepp = r + strcspn(r, " ");
sepc = *sepp;
-
*sepp = '\0'
;
+
strcpy(sepp, "")
;
args->argv[++(args->argc)-1] = strdup_chk(q, "args.argv[]");
q = r = sepp + 1;
} while(sepc == ' ');
args->argv[++(args->argc)-1] = strdup_chk(q, "args.argv[]");
q = r = sepp + 1;
} while(sepc == ' ');
@@
-146,7
+151,7
@@
MONCMDLINE *monlinetok(const char *line)
long l;
MONCMDLINE *moncmdl = NULL;
long l;
MONCMDLINE *moncmdl = NULL;
- if(
*line == '\n' || *line == '\0
') {
+ if(
!line[0] || line[0] == '\n
') {
return NULL;
}
p = tokens = strdup_chk(line, "tokens");
return NULL;
}
p = tokens = strdup_chk(line, "tokens");
@@
-224,26
+229,27
@@
void mon_break(int argc, char *argv[])
void mon_dump(int argc, char *argv[])
{
void mon_dump(int argc, char *argv[])
{
- int i = 0;
+ int i = 0
, j
;
WORD start = 0, end = 0xFFFF;
if(argc > 0 && stracmp(argv[0], 2, (char* []){"a", "auto"})) {
execmode.dump = true;
WORD start = 0, end = 0xFFFF;
if(argc > 0 && stracmp(argv[0], 2, (char* []){"a", "auto"})) {
execmode.dump = true;
+ i++;
} else if(argc > 0 && stracmp(argv[0], 2, (char* []){"no", "noauto"})) {
execmode.dump = false;
} else if(argc > 0 && stracmp(argv[0], 2, (char* []){"no", "noauto"})) {
execmode.dump = false;
- } else {
- if(argc > 0) {
- start = nh2word(argv[0]);
- if(argc > 1) {
- end = nh2word(argv[1]);
- }
+ i++;
+ }
+ if(argc > i) {
+ start = execmode.dump_start = nh2word(argv[i++]);
+ if(argc > i) {
+ end = execmode.dump_end = nh2word(argv[i++]);
}
dumpmemory(start, end);
}
dumpmemory(start, end);
- if(argc >
2
) {
- for(
i = 2; i < argc; i
++) {
- if(
i > 2
) {
+ if(argc >
i
) {
+ for(
j = i; i < argc; j
++) {
+ if(
j > i
) {
fprintf(stderr, " ");
}
fprintf(stderr, " ");
}
- fprintf(stderr, "%s", argv[
i+1
]);
+ fprintf(stderr, "%s", argv[
j
]);
}
fprintf(stderr, ": ignored.\n");
}
}
fprintf(stderr, ": ignored.\n");
}
@@
-340,16
+346,21
@@
void free_moncmdline(MONCMDLINE *moncmdl)
void monitor()
{
void monitor()
{
- char *buf, *p;
+ char *buf = NULL;
+ int i;
MONCMDLINE *moncmdl;
MONCMDTYPE cmdtype = MONREPEAT;
do {
MONCMDLINE *moncmdl;
MONCMDTYPE cmdtype = MONREPEAT;
do {
- fprintf(stdout, "
- "
);
+ fprintf(stdout, "
%s ", monitor_prompt
);
buf = malloc_chk(MONINSIZE + 1, "monitor.buf");
fgets(buf, MONINSIZE, stdin);
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);
}
if((moncmdl = monlinetok(buf)) != NULL) {
cmdtype = monitorcmd(moncmdl->cmd, moncmdl->args);