wdir.c 876 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include <u.h>
  2. #include <libc.h>
  3. #include <bio.h>
  4. #include <String.h>
  5. #include <thread.h>
  6. #include "wiki.h"
  7. /* open, create relative to wiki dir */
  8. char *wikidir;
  9. static char*
  10. wname(char *s)
  11. {
  12. char *t;
  13. t = emalloc(strlen(wikidir)+1+strlen(s)+1);
  14. strcpy(t, wikidir);
  15. strcat(t, "/");
  16. strcat(t, s);
  17. return t;
  18. }
  19. int
  20. wopen(char *fn, int mode)
  21. {
  22. int rv;
  23. fn = wname(fn);
  24. rv = open(fn, mode);
  25. free(fn);
  26. return rv;
  27. }
  28. int
  29. wcreate(char *fn, int mode, long perm)
  30. {
  31. int rv;
  32. fn = wname(fn);
  33. rv = create(fn, mode, perm);
  34. free(fn);
  35. return rv;
  36. }
  37. Biobuf*
  38. wBopen(char *fn, int mode)
  39. {
  40. Biobuf *rv;
  41. fn = wname(fn);
  42. rv = Bopen(fn, mode);
  43. free(fn);
  44. return rv;
  45. }
  46. int
  47. waccess(char *fn, int mode)
  48. {
  49. int rv;
  50. fn = wname(fn);
  51. rv = access(fn, mode);
  52. free(fn);
  53. return rv;
  54. }
  55. Dir*
  56. wdirstat(char *fn)
  57. {
  58. Dir *d;
  59. fn = wname(fn);
  60. d = dirstat(fn);
  61. free(fn);
  62. return d;
  63. }