X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Ffs-handle.c;h=ff081235cb8d6d2c3ecebf505963ec02fcf9d40d;hp=e90f06d325487f4322b220e041f91d094745cfe6;hb=ab5be9fa2eb5ba9600a82cd18fd3cfcbac69169a;hpb=f5ea02416c656bba136e742788f2d5ae12b98278 diff --git a/src/common/fs-handle.c b/src/common/fs-handle.c index e90f06d32..ff081235c 100644 --- a/src/common/fs-handle.c +++ b/src/common/fs-handle.c @@ -1,22 +1,13 @@ /* - * Copyright (C) 2020 - Jérémie Galarneau + * Copyright (C) 2020 Jérémie Galarneau * - * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation; version 2.1 of the License. + * SPDX-License-Identifier: LGPL-2.1-only * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this library; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include #include +#include +#include LTTNG_HIDDEN int fs_handle_get_fd(struct fs_handle *handle) @@ -41,3 +32,71 @@ int fs_handle_close(struct fs_handle *handle) { return handle->close(handle); } + +LTTNG_HIDDEN +ssize_t fs_handle_read(struct fs_handle *handle, void *buf, size_t count) +{ + ssize_t ret; + const int fd = fs_handle_get_fd(handle); + + if (fd < 0) { + ret = -1; + goto end; + } + + ret = lttng_read(fd, buf, count); + fs_handle_put_fd(handle); +end: + return ret; +} + +LTTNG_HIDDEN +ssize_t fs_handle_write(struct fs_handle *handle, const void *buf, size_t count) +{ + ssize_t ret; + const int fd = fs_handle_get_fd(handle); + + if (fd < 0) { + ret = -1; + goto end; + } + + ret = lttng_write(fd, buf, count); + fs_handle_put_fd(handle); +end: + return ret; +} + +LTTNG_HIDDEN +int fs_handle_truncate(struct fs_handle *handle, off_t offset) +{ + int ret; + const int fd = fs_handle_get_fd(handle); + + if (fd < 0) { + ret = -1; + goto end; + } + + ret = ftruncate(fd, offset); + fs_handle_put_fd(handle); +end: + return ret; +} + +LTTNG_HIDDEN +int fs_handle_seek(struct fs_handle *handle, off_t offset, int whence) +{ + int ret; + const int fd = fs_handle_get_fd(handle); + + if (fd < 0) { + ret = -1; + goto end; + } + + ret = lseek(fd, offset, whence); + fs_handle_put_fd(handle); +end: + return ret; +}