1 #include <u.h>
2 #include <libc.h>
3 #include "cec.h"
4
5 static int fd = -1;
6 extern char *svc;
7
8 void
rawon(void)9 rawon(void)
10 {
11 if(svc)
12 return;
13 if((fd = open("/dev/consctl", OWRITE)) == -1 ||
14 write(fd, "rawon", 5) != 5)
15 fprint(2, "Can't make console raw\n");
16 }
17
18 void
rawoff(void)19 rawoff(void)
20 {
21 if(svc)
22 return;
23 close(fd);
24 }
25
26 enum {
27 Perline = 16,
28 Perch = 3,
29 };
30
31 char line[Perch*Perline+1];
32
33 static void
format(uchar * buf,int n,int t)34 format(uchar *buf, int n, int t)
35 {
36 int i, r;
37
38 for(i = 0; i < n; i++){
39 r = (i + t) % Perline;
40 if(r == 0 && i + t > 0)
41 fprint(2, "%s\n", line);
42 sprint(line + r*Perch, "%.2x ", buf[i]);
43 }
44 }
45
46 void
dump(uchar * p,int n)47 dump(uchar *p, int n)
48 {
49 format(p, n, 0);
50 if(n % 16 > 0)
51 print("%s\n", line);
52 }
53