Beispiel #1
0
static size_t read_file_to_memory(const char * filename, char ** buffer)
{
	size_t len;
	char * buf;
	int fd;

	if(!filename || !buffer)
		return 0;

	if(sandbox_file_exist(filename) != 0)
		return 0;

	fd = sandbox_file_open(filename);
	if(fd <= 0)
		return 0;

	len = sandbox_file_length(fd);
	if(len <= 0)
		return 0;

	buf = malloc(len + 1);
	if(!buf)
		return 0;
	memset(buf, 0, len + 1);

	sandbox_file_seek(fd, 0);
	sandbox_file_read(fd, buf, len);
	sandbox_file_close(fd);

	*buffer = buf;
	return len;
}
Beispiel #2
0
ssize_t sandbox_file_read_nonblock(int fd, void * buf, size_t count)
{
	ssize_t ret;
	int flags;

	flags = fcntl(fd, F_GETFL);
	if(flags == -1)
		return 0;

	if(fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1)
		return 0;

	ret = sandbox_file_read(fd, buf, count);

	if(fcntl(fd, F_SETFL, flags) == -1)
		return 0;

	return ret;
}