Blame


1 fd04aace 2003-11-23 devnull #include <u.h>
2 f9355efb 2003-11-24 devnull #define NOPLAN9DEFINES
3 fd04aace 2003-11-23 devnull #include <libc.h>
4 fd04aace 2003-11-23 devnull
5 d2c4ee9e 2003-11-24 devnull #include <signal.h>
6 fd04aace 2003-11-23 devnull
7 d2c4ee9e 2003-11-24 devnull
8 fd04aace 2003-11-23 devnull extern int _p9strsig(char*);
9 fd04aace 2003-11-23 devnull
10 fd04aace 2003-11-23 devnull int
11 fd04aace 2003-11-23 devnull postnote(int who, int pid, char *msg)
12 fd04aace 2003-11-23 devnull {
13 fd04aace 2003-11-23 devnull int sig;
14 fd04aace 2003-11-23 devnull
15 fd04aace 2003-11-23 devnull sig = _p9strsig(msg);
16 fd04aace 2003-11-23 devnull if(sig == 0){
17 fd04aace 2003-11-23 devnull werrstr("unknown note");
18 fd04aace 2003-11-23 devnull return -1;
19 fd04aace 2003-11-23 devnull }
20 fd04aace 2003-11-23 devnull
21 fd04aace 2003-11-23 devnull switch(who){
22 fd04aace 2003-11-23 devnull default:
23 fd04aace 2003-11-23 devnull werrstr("bad who in postnote");
24 fd04aace 2003-11-23 devnull return -1;
25 fd04aace 2003-11-23 devnull case PNPROC:
26 fd04aace 2003-11-23 devnull return kill(pid, sig);
27 fd04aace 2003-11-23 devnull case PNGROUP:
28 fd04aace 2003-11-23 devnull if((pid = getpgid(pid)) < 0)
29 fd04aace 2003-11-23 devnull return -1;
30 fd04aace 2003-11-23 devnull return killpg(pid, sig);
31 fd04aace 2003-11-23 devnull }
32 fd04aace 2003-11-23 devnull }
33 fd04aace 2003-11-23 devnull
34 fd04aace 2003-11-23 devnull