ssize_t safe_pread_exact(int fd, void *b, size_t c, off_t off)
{
	int ret = safe_pread(fd, b, c, off);
	if (ret < 0)
		return ret;
	if (ret != (int)c)
		return -EDOM;
	return 0;
}
Exemple #2
0
ssize_t safe_pread_exact(int fd, void *buf, size_t count, off_t offset)
{
	ssize_t ret = safe_pread(fd, buf, count, offset);
	if (ret < 0)
		return ret;
	if ((size_t)ret != count)
		return -EDOM;
	return 0;
}
ssize_t simple_io_read_whole_file_zt(const char *fname, char *buf, int sz)
{
	ssize_t res;
	int fd = open(fname, O_RDONLY);
	if (fd < 0) {
		int err = errno;
		return -err;
	}
	memset(buf, 0, sz);
	if (sz == 0)
		return 0;
	res = safe_pread(fd, buf, sz - 1, 0);
	if (res < 0) {
		close(fd);
		return res;
	}
	close(fd);
	return res;
}