コード例 #1
0
ファイル: test-lchown.c プロジェクト: MikeMarcin/gnulib
int
main (void)
{
  /* Remove any leftovers from a previous partial run.  */
  ignore_value (system ("rm -rf " BASE "*"));

  return test_lchown (lchown, true);
}
コード例 #2
0
ファイル: test-fchownat.c プロジェクト: ajnelson/gnulib
int
main (int argc _GL_UNUSED, char *argv[])
{
  int result1; /* Skip because of no chown/symlink support.  */
  int result2; /* Skip because of no lchown support.  */

  set_program_name (argv[0]);

  /* Clean up any trash from prior testsuite runs.  */
  ignore_value (system ("rm -rf " BASE "*"));

  /* Test behaviour for invalid file descriptors.  */
  {
    errno = 0;
    ASSERT (fchownat (-1, "foo", getuid (), getgid (), 0) == -1);
    ASSERT (errno == EBADF);
  }
  {
    close (99);
    errno = 0;
    ASSERT (fchownat (99, "foo", getuid (), getgid (), 0) == -1);
    ASSERT (errno == EBADF);
  }

  /* Basic tests.  */
  result1 = test_chown (do_chown, true);
  result2 = test_lchown (do_lchown, result1 == 0);
  dfd = open (".", O_RDONLY);
  ASSERT (0 <= dfd);
  ASSERT (test_chown (do_chown, false) == result1);
  ASSERT (test_lchown (do_lchown, false) == result2);
  /* We expect 0/0, 0/77, or 77/77, but not 77/0.  */
  ASSERT (result1 <= result2);
  ASSERT (close (dfd) == 0);

  /* FIXME - add additional tests of dfd not at current directory.  */
  return result1 | result2;
}