terror.c - plan9port - [fork] Plan 9 from user space | |
git clone git://src.adamsgaard.dk/plan9port | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
terror.c (2232B) | |
--- | |
1 #include "sam.h" | |
2 | |
3 static char *emsg[]={ | |
4 /* error_s */ | |
5 "can't open", | |
6 "can't create", | |
7 "not in menu:", | |
8 "changes to", | |
9 "I/O error:", | |
10 "can't write while changing:", | |
11 /* error_c */ | |
12 "unknown command", | |
13 "no operand for", | |
14 "bad delimiter", | |
15 /* error */ | |
16 "can't fork", | |
17 "interrupt", | |
18 "address", | |
19 "search", | |
20 "pattern", | |
21 "newline expected", | |
22 "blank expected", | |
23 "pattern expected", | |
24 "can't nest X or Y", | |
25 "unmatched `}'", | |
26 "command takes no address", | |
27 "addresses overlap", | |
28 "substitution", | |
29 "& match too long", | |
30 "bad \\ in rhs", | |
31 "address range", | |
32 "changes not in sequence", | |
33 "addresses out of order", | |
34 "no file name", | |
35 "unmatched `('", | |
36 "unmatched `)'", | |
37 "malformed `[]'", | |
38 "malformed regexp", | |
39 "reg. exp. list overflow", | |
40 "plan 9 command", | |
41 "can't pipe", | |
42 "no current file", | |
43 "string too long", | |
44 "changed files", | |
45 "empty string", | |
46 "file search", | |
47 "non-unique match for \"\"", | |
48 "tag match too long", | |
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" | |
54 }; | |
55 static char *wmsg[]={ | |
56 /* warn_s */ | |
57 "duplicate file name", | |
58 "no such file", | |
59 "write might change good version of", | |
60 /* warn_S */ | |
61 "files might be aliased", | |
62 /* warn */ | |
63 "null characters elided", | |
64 "can't run pwd", | |
65 "last char not newline", | |
66 "exit status not 0" | |
67 }; | |
68 | |
69 void | |
70 error(Err s) | |
71 { | |
72 char buf[512]; | |
73 | |
74 sprint(buf, "?%s", emsg[s]); | |
75 hiccough(buf); | |
76 } | |
77 | |
78 void | |
79 error_s(Err s, char *a) | |
80 { | |
81 char buf[512]; | |
82 | |
83 sprint(buf, "?%s \"%s\"", emsg[s], a); | |
84 hiccough(buf); | |
85 } | |
86 | |
87 void | |
88 error_r(Err s, char *a) | |
89 { | |
90 char buf[512]; | |
91 | |
92 sprint(buf, "?%s \"%s\": %r", emsg[s], a); | |
93 hiccough(buf); | |
94 } | |
95 | |
96 void | |
97 error_c(Err s, int c) | |
98 { | |
99 char buf[512]; | |
100 | |
101 sprint(buf, "?%s `%C'", emsg[s], c); | |
102 hiccough(buf); | |
103 } | |
104 | |
105 void | |
106 warn(Warn s) | |
107 { | |
108 dprint("?warning: %s\n", wmsg[s]); | |
109 } | |
110 | |
111 void | |
112 warn_S(Warn s, String *a) | |
113 { | |
114 print_s(wmsg[s], a); | |
115 } | |
116 | |
117 void | |
118 warn_SS(Warn s, String *a, String *b) | |
119 { | |
120 print_ss(wmsg[s], a, b); | |
121 } | |
122 | |
123 void | |
124 warn_s(Warn s, char *a) | |
125 { | |
126 dprint("?warning: %s `%s'\n", wmsg[s], a); | |
127 } | |
128 | |
129 void | |
130 termwrite(char *s) | |
131 { | |
132 String *p; | |
133 | |
134 if(downloaded){ | |
135 p = tmpcstr(s); | |
136 if(cmd) | |
137 loginsert(cmd, cmdpt, p->s, p->n); | |
138 else | |
139 Strinsert(&cmdstr, p, cmdstr.n); | |
140 cmdptadv += p->n; | |
141 freetmpstr(p); | |
142 }else | |
143 Write(2, s, strlen(s)); | |
144 } |