utils.c 676 B

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