summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2015-09-29 20:49:28 +0200
committeraiju <devnull@localhost>2015-09-29 20:49:28 +0200
commita7b06e0fdd02355b2dc9ce2349afbd25bf8287a3 (patch)
tree63dbd22af61a8492f8fd13264141740a867b69a5 /sys
parentcde69a78225ee3b8c5e46ddb98ce4bd599d4f355 (diff)
timepic: string support
Diffstat (limited to 'sys')
-rw-r--r--sys/src/cmd/timepic.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/sys/src/cmd/timepic.c b/sys/src/cmd/timepic.c
index 18deb55aa..f73f19adb 100644
--- a/sys/src/cmd/timepic.c
+++ b/sys/src/cmd/timepic.c
@@ -55,6 +55,7 @@ enum {
SYM = -2,
NUM = -3,
EOF = -4,
+ STR = -5,
};
static int
@@ -71,6 +72,7 @@ Tfmt(Fmt *f)
case SYM: return fmtprint(f, "'%s'", sname);
case NUM: return fmtprint(f, "%g", sval);
case EOF: return fmtprint(f, "EOF");
+ case STR: return fmtprint(f, "%#q", sname);
default: return fmtprint(f, "%d", n);
}
}
@@ -210,6 +212,14 @@ lex(void)
*p = 0;
return SYM;
}
+ if(c == '\''){
+ for(p = sname; c = Bgetc(bp), c != '\'' || Bgetc(bp) == '\''; )
+ if(p < sname + sizeof(sname) - 1)
+ *p++ = c;
+ Bungetc(bp);
+ *p = 0;
+ return STR;
+ }
return c;
}
@@ -337,6 +347,9 @@ parseval(Event *e)
return VH;
e->data = smprint("%g", sval);
return VMULT;
+ case STR:
+ e->data = strdup(sname);
+ return VMULT;
default:
error(lineno, "unexpected %T", t);
return VZ;
@@ -651,6 +664,9 @@ diagram(char *l)
else
signal(s->name);
break;
+ case STR:
+ signal(sname);
+ break;
case CMD:
if(strcmp(sname, "TPE") == 0)
goto end;
@@ -714,6 +730,7 @@ main(int argc, char **argv)
int i;
fmtinstall('T', Tfmt);
+ quotefmtinstall();
ARGBEGIN {
default: usage();