예제 #1
0
파일: t_vnops.c 프로젝트: 2asoft/freebsd
static void
lstat_symlink(const atf_tc_t *tc, const char *mp)
{
	const char *src, *dst;
	int res;
	struct stat st;

	USES_SYMLINKS;

	if (FSTYPE_V7FS(tc))
		atf_tc_expect_fail("PR kern/48864");

	FSTEST_ENTER();

	src = "source";
	dst = "destination";

	res = rump_sys_symlink(src, dst);
	ATF_REQUIRE(res != -1);
	res = rump_sys_lstat(dst, &st);
	ATF_REQUIRE(res != -1);

	ATF_CHECK(S_ISLNK(st.st_mode) != 0);
	ATF_CHECK(st.st_size == (off_t)strlen(src));

	FSTEST_EXIT();
}
예제 #2
0
static void
symlink_root(const atf_tc_t *tc, const char *mp)
{

	USES_SYMLINKS;

	RL(rump_sys_chdir(mp));
	RL(rump_sys_symlink("/", "foo"));
	RL(rump_sys_chdir("foo"));
}
예제 #3
0
static void
symlink_zerolen(const atf_tc_t *tc, const char *mp)
{

	USES_SYMLINKS;

	RL(rump_sys_chdir(mp));

	RL(rump_sys_symlink("", "afile"));
	RL(rump_sys_chdir("/"));
}
예제 #4
0
파일: t_vnops.c 프로젝트: 2asoft/freebsd
/*
 * Test creating a symlink whose length is "len" bytes, not including
 * the terminating NUL.
 */
static void
symlink_len(const atf_tc_t *tc, const char *mp, size_t len)
{
	char *buf;
	int r;

	USES_SYMLINKS;

	RL(rump_sys_chdir(mp));

	buf = malloc(len + 1);
	ATF_REQUIRE(buf);
	memset(buf, 'a', len);
	buf[len] = '\0';
	r = rump_sys_symlink(buf, "afile");
	if (r == -1) {
		ATF_REQUIRE_ERRNO(ENAMETOOLONG, r);
	} else {
		RL(rump_sys_unlink("afile"));
	}
	free(buf);

	RL(rump_sys_chdir("/"));
}