Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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
}