]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/sam/error.c
9bootfat: rename open() to fileinit and make it static as its really a internal funct...
[plan9front.git] / sys / src / cmd / sam / error.c
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",
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                 free(p);
142         }else
143                 Write(2, s, strlen(s));
144 }