commit - e33c70bc72fa4af9d2261ed6d864bd13b8af9be5
commit + 38c10d1abcab399ce3735ccf54672a5b6787165e
blob - c6dc5930b3f53cb925fd1ad304242ab0de49922c
blob + 0ba726a4db9fce68352e2f3abdeae12de9700386
--- include/thread.h
+++ include/thread.h
#define yield threadyield
/*
+ * I am tired of making this mistake.
+ */
+#define exits do_not_call_exits_in_threaded_programs
+#define _exits do_not_call__exits_in_threaded_programs
+
+
+
+/*
* signals
*/
void threadnotify(int(*f)(void*,char*), int);
blob - 0f0a1a6622eb96bebb3a84d07c054bb3b0ac338e
blob + cc4336b373b578984604234a4711f34ddb99c3ea
--- src/cmd/9p.c
+++ src/cmd/9p.c
fprint(2, " stat name\n");
// fprint(2, " ls name\n");
fprint(2, "without -a, name elem/path means /path on server unix!$ns/elem\n");
- exits("usage");
+ threadexitsall("usage");
}
void xread(int, char**);
write(1, buf, n);
if(n < 0)
sysfatal("read error: %r");
- exits(0);
+ threadexitsall(0);
}
void
write(1, buf, n);
if(n < 0)
sysfatal("read error: %r");
- exits(0);
+ threadexitsall(0);
}
void
}
if(n < 0)
sysfatal("read error: %r");
- exits(0);
+ threadexitsall(0);
}
void
sysfatal("write error: %r");
if(n < 0)
sysfatal("read error: %r");
- exits(0);
+ threadexitsall(0);
}
void
fmtinstall('D', dirfmt);
fmtinstall('M', dirmodefmt);
print("%D\n", d);
- exits(0);
+ threadexitsall(0);
}
blob - 7ff30ef8aa6b57ca693394b50797cc3b49a0c336
blob + c15c1560455da4b426c228490727fd562811e510
--- src/cmd/9pserve.c
+++ src/cmd/9pserve.c
{
fprint(2, "usage: 9pserve [-lv] address\n");
fprint(2, "\treads/writes 9P messages on stdin/stdout\n");
- exits("usage");
+ threadexitsall("usage");
}
uchar vbuf[128];
blob - 257b87ba9d2d8bc393b63af3954326fce89fb2f2
blob + 31c9f28900c07d1b16f8bb8e0db3846139c5ba3f
--- src/cmd/9term/9term.c
+++ src/cmd/9term/9term.c
*/
s = setecho(sfd, 0);
if(write(rcfd, buf, n) < 0)
- exits(0);
+ threadexitsall(0);
if(s)
setecho(sfd, s);
}
blob - 917aefc1e9c6a2eeaef686fb74daf95098612c98
blob + b969180c19ab2f429ce719805efe92e30e863bfa
--- src/cmd/acme/acme.c
+++ src/cmd/acme/acme.c
default:
Usage:
fprint(2, "usage: acme -a -c ncol -f fontname -F fixedwidthfontname -l loadfile -W winsize\n");
- exits("usage");
+ threadexitsall("usage");
}ARGEND
fontnames[0] = estrdup(fontnames[0]);
/*
if(geninitdraw(nil, derror, fontnames[0], "acme", nil, Refnone) < 0){
fprint(2, "acme: can't open display: %r\n");
- exits("geninitdraw");
+ threadexitsall("geninitdraw");
}
*/
if(initdraw(derror, fontnames[0], "acme") < 0){
fprint(2, "acme: can't open display: %r\n");
- exits("initdraw");
+ threadexitsall("initdraw");
}
d = display;
chansetname(cwarn, "cwarn");
if(cwait==nil || ccommand==nil || ckill==nil || cxfidalloc==nil || cxfidfree==nil || cerr==nil || cexit==nil || cwarn==nil){
fprint(2, "acme: can't create initial channels: %r\n");
- exits("channels");
+ threadexitsall("channels");
}
mousectl = initmouse(nil, screen);
if(mousectl == nil){
fprint(2, "acme: can't initialize mouse: %r\n");
- exits("mouse");
+ threadexitsall("mouse");
}
mouse = &mousectl->m;
keyboardctl = initkeyboard(nil);
if(keyboardctl == nil){
fprint(2, "acme: can't initialize keyboard: %r\n");
- exits("keyboard");
+ threadexitsall("keyboard");
}
mainpid = getpid();
startplumbing();
blob - 456f663dca1bd4b083134ab912fb880649a80aaf
blob + 428cf90f397f529455c3e6a4be72b4634c156239
--- src/cmd/import.c
+++ src/cmd/import.c
usage(void)
{
fprint(2, "usage: %s [-df] [-s service] [-n remote-ns] [-p remote-prog] remote-system\n", argv0);
- exits("usage");
+ threadexitsall("usage");
}
void
blob - 761310b9429dc648495523a5c0cb246c143060e2
blob + 8065e9abf8d4675d800fa678b12350ed94f43b42
--- src/cmd/vac/vac.c
+++ src/cmd/vac/vac.c
usage(void)
{
fprint(2, "usage: %s [-amqsv] [-h host] [-d vacfile] [-b blocksize] [-i name] [-e exclude] [-f vacfile] file ... \n", argv0);
- exits("usage");
+ threadexitsall("usage");
}
void
blob - bd36de8ed2e295711ade0ce305a4bbbf3b3ea050
blob + 51050345c0e144ef6d59749be1449198ba47fd21
--- src/cmd/vac/vacfs.c
+++ src/cmd/vac/vacfs.c
usage(void)
{
fprint(2, "usage: %s [-sd] [-h host] [-c ncache] [-m mountpoint] vacfile\n", argv0);
- exits("usage");
+ threadexitsall("usage");
}
char*