From acbce2643ea1e4c79d3d8acdf37cfd7329a2f12e Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Thu, 30 Apr 2020 16:35:07 +0200 Subject: Add libskrift_open_font_at MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- Makefile | 1 + common.h | 1 + libskrift.h | 3 +++ libskrift_open_font_at.c | 18 ++++++++++++++++++ 4 files changed, 23 insertions(+) create mode 100644 libskrift_open_font_at.c diff --git a/Makefile b/Makefile index 85769d0..1481734 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,7 @@ OBJ =\ libskrift_merge_glyphs.o\ libskrift_millimeters_to_pixels.o\ libskrift_open_font.o\ + libskrift_open_font_at.o\ libskrift_open_font_fd.o\ libskrift_open_font_file.o\ libskrift_open_font_mem.o\ diff --git a/common.h b/common.h index 79f5507..dc9bcbd 100644 --- a/common.h +++ b/common.h @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include diff --git a/libskrift.h b/libskrift.h index 57eb4d1..cbfe9df 100644 --- a/libskrift.h +++ b/libskrift.h @@ -232,6 +232,9 @@ int libskrift_open_font_mem(LIBSKRIFT_FONT **, const void *, size_t); _LIBSKRIFT_GCC_ONLY(__attribute__((__nonnull__))) int libskrift_open_font_fd(LIBSKRIFT_FONT **, int); +_LIBSKRIFT_GCC_ONLY(__attribute__((__nonnull__))) +int libskrift_open_font_at(LIBSKRIFT_FONT **, int, const char *); + _LIBSKRIFT_GCC_ONLY(__attribute__((__nonnull__))) int libskrift_open_font(LIBSKRIFT_FONT **, FILE *); diff --git a/libskrift_open_font_at.c b/libskrift_open_font_at.c new file mode 100644 index 0000000..2927dea --- /dev/null +++ b/libskrift_open_font_at.c @@ -0,0 +1,18 @@ +/* See LICENSE file for copyright and license details. */ +#include "common.h" + +int +libskrift_open_font_at(LIBSKRIFT_FONT **fontp, int dirfd, const char *path) +{ + int fd, ret; + if (!*path) { + return libskrift_open_font_fd(fontp, dirfd); + } else { + fd = openat(dirfd, path, O_RDONLY); + if (fd < 0) + return -1; + ret = libskrift_open_font_fd(fontp, fd); + close(fd); + return ret; + } +} -- cgit v1.2.3-70-g09d2