filetree.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <u.h>
  2. #include <libc.h>
  3. #define NUM_FILES 10
  4. #define NUM_DIRS 10
  5. char* dir;
  6. void
  7. main(int argc, char **argv){
  8. char dirname[1024];
  9. char filename[1024];
  10. int i,k;
  11. if (argc < 2){
  12. print("Please specify a directory\n");
  13. print("FAIL\n");
  14. exits("FAIL");
  15. }
  16. dir = argv[1];
  17. for (k = 0; k < NUM_DIRS; k++){
  18. sprint(dirname, "%s/dir%d", dir, k);
  19. print("creating dir %s\n", dirname);
  20. int fd = create(dirname, OREAD, DMDIR | 0777);
  21. if (fd < 0) {
  22. print("FAIL could not create dir %s %r\n", filename);
  23. exits("FAIL");
  24. }
  25. for (i = 0; i < NUM_FILES; i++){
  26. sprint(filename, "%s/dir%d/file%d", dir, k, i);
  27. print("creating %s\n", filename);
  28. int fd = create(filename, OWRITE, 0777);
  29. if (fd < 0) {
  30. print("FAIL could not open file %s %r\n", filename);
  31. exits("FAIL");
  32. }
  33. close(fd);
  34. }
  35. }
  36. for (k = 0; k < NUM_DIRS; k++){
  37. sprint(dirname, "%s/dir%d", dir, k);
  38. for (i = 0; i < NUM_FILES; i++){
  39. sprint(filename, "%s/dir%d/file%d", dir, k, i);
  40. print("removing %s\n", filename);
  41. if (remove(filename) < 0){
  42. print("FAIL unable to remove file\n");
  43. exits("FAIL");
  44. }
  45. }
  46. print("removing %s\n", dirname);
  47. if (remove(dirname) < 0){
  48. print("FAIL unable to remove directory\n");
  49. exits("FAIL");
  50. }
  51. print("removed %s\n", dirname);
  52. }
  53. print("PASS\n");
  54. exits("PASS");
  55. }