10 "can't write while changing:",
26 "command takes no address",
32 "changes not in sequence",
33 "addresses out of order",
39 "reg. exp. list overflow",
47 "non-unique match for \"\"",
49 "too many subexpressions",
50 "temporary file too large",
51 "file is append-only",
52 "no destination for plumb message",
53 "internal read error in buffer load",
57 "duplicate file name",
59 "write might change good version of",
61 "files might be aliased",
63 "null characters elided",
65 "last char not newline",
74 sprint(buf, "?%s", emsg[s]);
79 error_s(Err s, char *a)
83 sprint(buf, "?%s \"%s\"", emsg[s], a);
88 error_r(Err s, char *a)
92 sprint(buf, "?%s \"%s\": %r", emsg[s], a);
101 sprint(buf, "?%s `%C'", emsg[s], c);
108 dprint("?warning: %s\n", wmsg[s]);
112 warn_S(Warn s, String *a)
118 warn_SS(Warn s, String *a, String *b)
120 print_ss(wmsg[s], a, b);
124 warn_s(Warn s, char *a)
126 dprint("?warning: %s `%s'\n", wmsg[s], a);
137 loginsert(cmd, cmdpt, p->s, p->n);
139 Strinsert(&cmdstr, p, cmdstr.n);
143 Write(2, s, strlen(s));