LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File cloexec.patch of Package fontconfig (Project openSUSE:Factory)

Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
@@ -58,7 +58,9 @@ dnl ====================================
 
 AC_CONFIG_HEADERS(config.h)
 
-AC_PROG_CC
+AC_PROG_CC_STDC
+AC_USE_SYSTEM_EXTENSIONS
+AC_SYS_LARGEFILE
 AC_PROG_INSTALL
 AC_PROG_LN_S
 AC_LIBTOOL_WIN32_DLL
@@ -135,7 +137,7 @@ AC_TYPE_PID_T
 # Checks for library functions.
 AC_FUNC_VPRINTF
 AC_FUNC_MMAP
-AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48 random_r rand_r regcomp regerror regexec regfree posix_fadvise fstatvfs fstatfs])
+AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp mkostemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48 random_r rand_r regcomp regerror regexec regfree posix_fadvise fstatvfs fstatfs])
 
 #
 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
Index: src/fcatomic.c
===================================================================
--- src/fcatomic.c.orig
+++ src/fcatomic.c
@@ -109,10 +109,14 @@ FcAtomicLock (FcAtomic *atomic)
 
     strcpy ((char *) atomic->tmp, (char *) atomic->file);
     strcat ((char *) atomic->tmp, TMP_NAME);
+#ifdef HAVE_MKOSTEMP
+    fd = mkostemp ((char *) atomic->tmp, O_CLOEXEC);
+#else
     fd = mkstemp ((char *) atomic->tmp);
+#endif
     if (fd < 0)
 	return FcFalse;
-    f = fdopen (fd, "w");
+    f = fdopen (fd, "we");
     if (!f)
     {
     	close (fd);
Index: src/fccache.c
===================================================================
--- src/fccache.c.orig
+++ src/fccache.c
@@ -150,7 +150,7 @@ FcDirCacheOpenFile (const FcChar8 *cache
     if (FcStat (cache_file, file_stat) < 0)
         return -1;
 #endif
-    fd = open((char *) cache_file, O_RDONLY | O_BINARY);
+    fd = open((char *) cache_file, O_RDONLY | O_BINARY | O_CLOEXEC);
     if (fd < 0)
 	return fd;
 #ifndef _WIN32
@@ -904,7 +904,7 @@ FcDirCacheWrite (FcCache *cache, FcConfi
     if (!FcAtomicLock (atomic))
 	goto bail3;
 
-    fd = open((char *)FcAtomicNewFile (atomic), O_RDWR | O_CREAT | O_BINARY, 0666);
+    fd = open((char *)FcAtomicNewFile (atomic), O_RDWR | O_CREAT | O_BINARY | O_CLOEXEC, 0666);
     if (fd == -1)
 	goto bail4;