nvr.c 669 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "all.h"
  2. #include "mem.h"
  3. #include "io.h"
  4. #include "ureg.h"
  5. #include "dosfs.h"
  6. static Dosfile file;
  7. static int opened;
  8. char nvrfile[128] = "plan9.nvr";
  9. static void
  10. nvopen(void)
  11. {
  12. int s;
  13. Dosfile *fp;
  14. if(opened)
  15. return;
  16. opened = 1;
  17. s = spllo();
  18. fp = dosopen(&dos, nvrfile, &file);
  19. splx(s);
  20. if(fp == 0)
  21. panic("can't open %s\n", nvrfile);
  22. }
  23. int
  24. nvread(int offset, void *a, int n)
  25. {
  26. int r, s;
  27. nvopen();
  28. s = spllo();
  29. file.offset = offset;
  30. r = dosread(&file, a, n);
  31. splx(s);
  32. return r;
  33. }
  34. int
  35. nvwrite(int offset, void *a, int n)
  36. {
  37. int r, s;
  38. nvopen();
  39. s = spllo();
  40. file.offset = offset;
  41. r = doswrite(&file, a, n);
  42. splx(s);
  43. return r;
  44. }