diff options
| author | rsc <rsc> | 2007-08-22 02:21:22 +0000 | 
|---|---|---|
| committer | rsc <rsc> | 2007-08-22 02:21:22 +0000 | 
| commit | c88bf235fe2e5df91d0f486c3a5fc5a5a2e273da (patch) | |
| tree | 4548e820ce956a0e125b8c757bd44067f62008e8 | |
| parent | bd39955ecc4848d79fc361cfba51cd74b37b94de (diff) | |
| download | xv6-labs-c88bf235fe2e5df91d0f486c3a5fc5a5a2e273da.tar.gz xv6-labs-c88bf235fe2e5df91d0f486c3a5fc5a5a2e273da.tar.bz2 xv6-labs-c88bf235fe2e5df91d0f486c3a5fc5a5a2e273da.zip | |
check unlink of non-empty directory
| -rw-r--r-- | usertests.c | 32 | 
1 files changed, 27 insertions, 5 deletions
| diff --git a/usertests.c b/usertests.c index 399d6b2..740b81d 100644 --- a/usertests.c +++ b/usertests.c @@ -782,6 +782,11 @@ subdir(void)    }    write(fd, "ff", 2);    close(fd); +   +  if(unlink("dd") >= 0){ +    printf(1, "unlink dd (non-empty dir) succeeded!\n"); +    exit(); +  }    if(mkdir("/dd/dd") != 0){      printf(1, "subdir mkdir dd/dd failed\n"); @@ -817,6 +822,10 @@ subdir(void)      printf(1, "unlink dd/dd/ff failed\n");      exit();    } +  if(open("dd/dd/ff", O_RDONLY) >= 0){ +    printf(1, "open (unlinked) dd/dd/ff succeeded\n"); +    exit(); +  }    if(chdir("dd") != 0){      printf(1, "chdir dd failed\n"); @@ -826,6 +835,10 @@ subdir(void)      printf(1, "chdir dd/../../dd failed\n");      exit();    } +  if(chdir("dd/../../../dd") != 0){ +    printf(1, "chdir dd/../../dd failed\n"); +    exit(); +  }    if(chdir("./..") != 0){      printf(1, "chdir ./.. failed\n");      exit(); @@ -842,8 +855,8 @@ subdir(void)    }    close(fd); -  if(open("dd/dd/ff", 0) >= 0){ -    printf(1, "open dd/dd/ff succeeded!\n"); +  if(open("dd/dd/ff", O_RDONLY) >= 0){ +    printf(1, "open (unlinked) dd/dd/ff succeeded!\n");      exit();    } @@ -916,9 +929,18 @@ subdir(void)      printf(1, "unlink dd/ff failed\n");      exit();    } - -  // unlink dd/dd -  // unlink dd +  if(unlink("dd") == 0){ +    printf(1, "unlink non-empty dd succeeded!\n"); +    exit(); +  } +  if(unlink("dd/dd") < 0){ +    printf(1, "unlink dd/dd failed\n"); +    exit(); +  } +  if(unlink("dd") < 0){ +    printf(1, "unlink dd failed\n"); +    exit(); +  }    printf(1, "subdir ok\n");  } | 
