chdir.c 897 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include <u.h>
  2. #include <libc.h>
  3. void check(int, char*);
  4. void checkDir(int, char *);
  5. void rmdir(char *);
  6. void clean();
  7. void
  8. main(){
  9. check(chdir("/tmp"), "/tmp");
  10. checkDir(create("A", OREAD, DMDIR | 0777), "A");
  11. check(chdir("A"), "A");
  12. checkDir(create("B", OREAD, DMDIR | 0777), "B");
  13. checkDir(create("C", OREAD, DMDIR | 0777), "C");
  14. check(chdir("B"), "B");
  15. check(chdir(".."), "..");
  16. remove("B");
  17. check(chdir("C"), "C");
  18. check(chdir(".."), "..");
  19. remove("C");
  20. check(chdir(".."), "..");
  21. remove("A");
  22. print("PASS\n");
  23. exits("PASS");
  24. }
  25. void
  26. check(int r, char *d){
  27. if(r<0){
  28. print("chdir(\"%s\") Err: '%r'\n", d);
  29. clean();
  30. print("FAIL\n");
  31. exits("FAIL");
  32. }
  33. }
  34. void
  35. checkDir(int r, char *d){
  36. if(r<0){
  37. print("Error creating dir '%s'\n", d);
  38. clean();
  39. print("FAIL\n");
  40. exits("FAIL");
  41. }
  42. }
  43. void
  44. clean() {
  45. chdir("/tmp");
  46. remove("A/B");
  47. remove("A/C");
  48. remove("A");
  49. }