From 84114f06650ba3db950532b1d0cd1d7e18b4b6be Mon Sep 17 00:00:00 2001 From: rsc Date: Mon, 19 Apr 2004 19:30:50 +0000 Subject: debugger --- src/cmd/db/input.c | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 src/cmd/db/input.c (limited to 'src/cmd/db/input.c') diff --git a/src/cmd/db/input.c b/src/cmd/db/input.c new file mode 100644 index 00000000..8cd091b0 --- /dev/null +++ b/src/cmd/db/input.c @@ -0,0 +1,169 @@ +/* + * + * debugger + * + */ + +#include "defs.h" +#include "fns.h" + +Rune line[LINSIZ]; +extern int infile; +Rune *lp; +int peekc,lastc = EOR; +int eof; + +/* input routines */ + +int +eol(int c) +{ + return(c==EOR || c==';'); +} + +int +rdc(void) +{ + do { + readchar(); + } while (lastc==SPC || lastc==TB); + return(lastc); +} + +void +reread(void) +{ + peekc = lastc; +} + +void +clrinp(void) +{ + flush(); + lp = 0; + peekc = 0; +} + +int +readrune(int fd, Rune *r) +{ + char buf[UTFmax]; + int i; + + for(i=0; i: ... + * + * we handle this case specially because we have to look ahead + * at the token after the colon to decide if it is a file reference + * or a colon-command with a symbol name prefix. + */ + +int +isfileref(void) +{ + Rune *cp; + + for (cp = lp-1; *cp && !strchr(CMD_VERBS, *cp); cp++) + if (*cp == '\\' && cp[1]) /* escape next char */ + cp++; + if (*cp && cp > lp-1) { + while (*cp == ' ' || *cp == '\t') + cp++; + if (*cp++ == ':') { + while (*cp == ' ' || *cp == '\t') + cp++; + if (isdigit(*cp)) + return 1; + } + } + return 0; +} -- cgit v1.2.3