|
|
1.1 root 1: #include "u.h"
2: #include "../port/lib.h"
3: #include "mem.h"
4: #include "dat.h"
5: #include "fns.h"
6: #include "../port/error.h"
7:
8: /*
9: * reboot stream module definition
10: */
11: static void rebootopen(Queue*, Stream*);
12: static void rebootiput(Queue*, Block*);
13: static void rebootoput(Queue*, Block*);
14: static void rebootreset(void);
15: Qinfo rebootinfo =
16: {
17: rebootiput,
18: rebootoput,
19: rebootopen,
20: 0,
21: "reboot",
22: 0
23: };
24:
25: void
26: strebootlink(void)
27: {
28: newqinfo(&rebootinfo);
29: }
30:
31: static void
32: rebootopen(Queue *q, Stream *s)
33: {
34: USED(q);
35: USED(s);
36: if(strcmp(u->p->user, eve) != 0)
37: error(Eperm);
38: }
39:
40: void
41: rebootoput(Queue *q, Block *bp)
42: {
43: PUTNEXT(q, bp);
44: }
45:
46: static void
47: rebootiput(Queue *q, Block *bp)
48: {
49: if(bp->type == M_HANGUP){
50: print("lost connection to fs, rebooting");
51: exit(0);
52: }
53: PUTNEXT(q, bp);
54: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.