예제 #1
0
static void
check_blocks(void)
{
	unsigned int current_page;
	int do_seek = 1;
	char *buffer;

	buffer = xmalloc(pagesize);
	current_page = 0;
	while (current_page < PAGES) {

		ssize_t rc;

		if (do_seek && lseek(DEV,current_page*pagesize,SEEK_SET) !=
		    current_page*pagesize)
			errx(EXIT_FAILURE, _("seek failed in check_blocks"));

		rc = read(DEV, buffer, pagesize);
		do_seek = (rc < 0 || (size_t) rc != pagesize);
		if (do_seek)
			page_bad(current_page);
		current_page++;
	}
	printf(P_("%lu bad page\n", "%lu bad pages\n", badpages), badpages);
	free(buffer);
}
예제 #2
0
static void check_blocks(void)
{
	unsigned int current_page;
	int do_seek = 1;
	char *buffer;

	buffer = xmalloc(pagesize);
	current_page = 0;
	while (current_page < PAGES) {
		if (!check) {
			page_ok(current_page++);
			continue;
		}
		if (do_seek && lseek(DEV, current_page * pagesize, SEEK_SET) !=
			current_page * pagesize)
			bb_error_msg_and_die("seek failed in check_blocks");
		if ((do_seek = (pagesize != read(DEV, buffer, pagesize)))) {
			page_bad(current_page++);
			continue;
		}
		page_ok(current_page++);
	}
	if (badpages == 1)
		printf("one bad page\n");
	else if (badpages > 1)
		printf("%d bad pages\n", badpages);
}
예제 #3
0
static void check_blocks(struct mkswap_control *ctl)
{
	unsigned int current_page = 0;
	int do_seek = 1;
	char *buffer;

	assert(ctl);
	assert(ctl->fd > -1);

	buffer = xmalloc(ctl->pagesize);
	while (current_page < ctl->npages) {
		ssize_t rc;

		if (do_seek && lseek(ctl->fd, current_page * ctl->pagesize, SEEK_SET) !=
		    current_page * ctl->pagesize)
			errx(EXIT_FAILURE, _("seek failed in check_blocks"));

		rc = read(ctl->fd, buffer, ctl->pagesize);
		do_seek = (rc < 0 || rc != ctl->pagesize);
		if (do_seek)
			page_bad(ctl, current_page);
		current_page++;
	}
	printf(P_("%lu bad page\n", "%lu bad pages\n", ctl->nbadpages), ctl->nbadpages);
	free(buffer);
}
예제 #4
0
파일: mkswap.c 프로젝트: tcdog001/autelan
static void
check_blocks(void) {
	unsigned int current_page;
	int do_seek = 1;
	char *buffer;

	buffer = malloc(pagesize);
	if (!buffer)
		die(_("Out of memory"));
	current_page = 0;
	while (current_page < PAGES) {
		if (do_seek && lseek(DEV,current_page*pagesize,SEEK_SET) !=
		    current_page*pagesize)
			die(_("seek failed in check_blocks"));
		if ((do_seek = (pagesize != read(DEV, buffer, pagesize))))
			page_bad(current_page);
		current_page++;
	}
	if (badpages == 1)
		printf(_("one bad page\n"));
	else if (badpages > 1)
		printf(_("%lu bad pages\n"), badpages);
	free(buffer);
}