Add FcReadLink to wrap up readlink impl.

This commit is contained in:
Akira TAGOH 2018-01-04 20:23:16 +09:00
parent 767e3aa7c5
commit 3642d71724
3 changed files with 26 additions and 2 deletions

View File

@ -2218,7 +2218,7 @@ FcConfigRealFilename (FcConfig *config,
if (n) if (n)
{ {
char buf[PATH_MAX]; FcChar8 buf[PATH_MAX];
ssize_t len; ssize_t len;
if (sysroot) if (sysroot)
@ -2227,7 +2227,7 @@ FcConfigRealFilename (FcConfig *config,
nn = FcStrdup (n); nn = FcStrdup (n);
FcStrFree (n); FcStrFree (n);
if ((len = readlink ((const char *) nn, buf, sizeof (buf) - 1)) != -1) if ((len = FcReadLink (nn, buf, sizeof (buf) - 1)) != -1)
{ {
buf[len] = 0; buf[len] = 0;
FcStrFree (nn); FcStrFree (nn);

View File

@ -37,6 +37,9 @@
#if HAVE_FCNTL_H #if HAVE_FCNTL_H
#include <fcntl.h> #include <fcntl.h>
#endif #endif
#if HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <stdarg.h> #include <stdarg.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@ -256,6 +259,22 @@ FcMakeDirectory (const FcChar8 *dir)
return ret; return ret;
} }
ssize_t
FcReadLink (const FcChar8 *pathname,
FcChar8 *buf,
size_t bufsiz)
{
#ifdef HAVE_READLINK
return readlink ((const char *) pathname, (char *)buf, bufsiz);
#else
/* XXX: this function is only used for FcConfigRealFilename() so far
* and returning -1 as an error still just works.
*/
errno = ENOSYS;
return -1;
#endif
}
#define __fccompat__ #define __fccompat__
#include "fcaliastail.h" #include "fcaliastail.h"
#undef __fccompat__ #undef __fccompat__

View File

@ -822,6 +822,11 @@ FcRandom (void);
FcPrivate FcBool FcPrivate FcBool
FcMakeDirectory (const FcChar8 *dir); FcMakeDirectory (const FcChar8 *dir);
FcPrivate ssize_t
FcReadLink (const FcChar8 *pathname,
FcChar8 *buf,
size_t bufsiz);
/* fcdbg.c */ /* fcdbg.c */
FcPrivate void FcPrivate void