]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/cmd/timepic.c
fix filetype detecton by suffix so that multiple dots dont confuse it. (thanks kvik)
[plan9front.git] / sys / src / cmd / timepic.c
index 18deb55aa528b40f8e5151aab0f8c1d76f166e1b..f73f19adb0242865e0a08f17071b1aaabf102e44 100644 (file)
@@ -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();