diff options
| author | Moritz <moritz.weichert@t-online.de> | 2017-11-30 15:00:36 +0100 | 
|---|---|---|
| committer | Moritz <moritz.weichert@t-online.de> | 2017-11-30 18:01:13 +0100 | 
| commit | cef6d7549131cfee7cd60ada0388a2766335c70a (patch) | |
| tree | 6a6278ee1b8ad6a38d16471d07202f67a776353c /backend | |
| parent | 5d7eb438d9dde68ce185daf977a0c27a1398bbc9 (diff) | |
| download | wlroots-cef6d7549131cfee7cd60ada0388a2766335c70a.tar.xz | |
Moved os-compatibility and added header
* Moved os-compatibility.c to util
* Added header under util
* Removed static since it isn't needed (i think so)
* Adjusted meson.build to include lib_wlr
Improved some codestyle
* Added guard to os-compatibility.h
* Fixed typo in include statment
Adjusted Guard
* Changed guard to _WLR_UTIL_OS_COMPATIBILITY
Diffstat (limited to 'backend')
| -rw-r--r-- | backend/meson.build | 1 | ||||
| -rw-r--r-- | backend/wayland/os-compatibility.c | 153 | 
2 files changed, 0 insertions, 154 deletions
| diff --git a/backend/meson.build b/backend/meson.build index 5ed7b227..c9d47317 100644 --- a/backend/meson.build +++ b/backend/meson.build @@ -21,7 +21,6 @@ backend_files = files(  	'wayland/output.c',  	'wayland/registry.c',  	'wayland/wl_seat.c', -	'wayland/os-compatibility.c',  	'x11/backend.c',  ) diff --git a/backend/wayland/os-compatibility.c b/backend/wayland/os-compatibility.c deleted file mode 100644 index cbd7988d..00000000 --- a/backend/wayland/os-compatibility.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright © 2012 Collabora, Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#define _XOPEN_SOURCE 700 -#include <sys/types.h> -#include <sys/socket.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <string.h> -#include <stdlib.h> - -int -os_fd_set_cloexec(int fd) -{ -	long flags; - -	if (fd == -1) -		return -1; - -	flags = fcntl(fd, F_GETFD); -	if (flags == -1) -		return -1; - -	if (fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1) -		return -1; - -	return 0; -} - -static int -set_cloexec_or_close(int fd) -{ -	if (os_fd_set_cloexec(fd) != 0) { -		close(fd); -		return -1; -	} -	return fd; -} - -static int -create_tmpfile_cloexec(char *tmpname) -{ -	int fd; - -#ifdef HAVE_MKOSTEMP -	fd = mkostemp(tmpname, O_CLOEXEC); -	if (fd >= 0) -		unlink(tmpname); -#else -	fd = mkstemp(tmpname); -	if (fd >= 0) { -		fd = set_cloexec_or_close(fd); -		unlink(tmpname); -	} -#endif - -	return fd; -} - -/* - * Create a new, unique, anonymous file of the given size, and - * return the file descriptor for it. The file descriptor is set - * CLOEXEC. The file is immediately suitable for mmap()'ing - * the given size at offset zero. - * - * The file should not have a permanent backing store like a disk, - * but may have if XDG_RUNTIME_DIR is not properly implemented in OS. - * - * The file name is deleted from the file system. - * - * The file is suitable for buffer sharing between processes by - * transmitting the file descriptor over Unix sockets using the - * SCM_RIGHTS methods. - * - * If the C library implements posix_fallocate(), it is used to - * guarantee that disk space is available for the file at the - * given size. If disk space is insufficient, errno is set to ENOSPC. - * If posix_fallocate() is not supported, program may receive - * SIGBUS on accessing mmap()'ed file contents instead. - */ -int -os_create_anonymous_file(off_t size) -{ -	static const char template[] = "/wlroots-shared-XXXXXX"; -	const char *path; -	char *name; -	int fd; -	int ret; - -	path = getenv("XDG_RUNTIME_DIR"); -	if (!path) { -		errno = ENOENT; -		return -1; -	} - -	name = malloc(strlen(path) + sizeof(template)); -	if (!name) -		return -1; - -	strcpy(name, path); -	strcat(name, template); - -	fd = create_tmpfile_cloexec(name); - -	free(name); - -	if (fd < 0) -		return -1; - -#ifdef HAVE_POSIX_FALLOCATE -	do { -		ret = posix_fallocate(fd, 0, size); -	} while (ret == EINTR); -	if (ret != 0) { -		close(fd); -		errno = ret; -		return -1; -	} -#else -	do { -		ret = ftruncate(fd, size); -	} while (ret < 0 && errno == EINTR); -	if (ret < 0) { -		close(fd); -		return -1; -	} -#endif - -	return fd; -} | 
