HEX
Server: Apache
System: Windows NT MAGNETO-ARM 10.0 build 22000 (Windows 10) AMD64
User: Michel (0)
PHP: 7.4.7
Disabled: NONE
Upload Files
File: C:/strawberry/licenses/libfontconfig/fontconfig-2.13.1.diff
diff -r -u --strip-trailing-cr fontconfig-2.13.1.original/conf.d/Makefile.am fontconfig-2.13.1/conf.d/Makefile.am
--- fontconfig-2.13.1.original/conf.d/Makefile.am	2019-05-22 02:13:14.873420300 +0200
+++ fontconfig-2.13.1/conf.d/Makefile.am	2019-05-22 02:13:09.258559300 +0200
@@ -95,9 +95,9 @@
 	@(echo cd $(DESTDIR)$(configdir);			\
 	  cd $(DESTDIR)$(configdir);				\
 	  for i in $(CONF_LINKS); do				\
-	    echo $(RM) $$i";" ln -s $(templatedir)/$$i .;	\
+	    echo $(RM) $$i";" ln -s $(DESTDIR)$(templatedir)/$$i .;	\
 	    $(RM) $$i;						\
-	    ln -s $(templatedir)/$$i .;				\
+	    ln -s $(DESTDIR)$(templatedir)/$$i .;				\
 	  done)
 uninstall-local:
 	@(echo cd $(DESTDIR)$(configdir);			\
diff -r -u --strip-trailing-cr fontconfig-2.13.1.original/m4/pkg.m4 fontconfig-2.13.1/m4/pkg.m4
--- fontconfig-2.13.1.original/m4/pkg.m4	2019-05-22 02:14:51.118586100 +0200
+++ fontconfig-2.13.1/m4/pkg.m4	2019-05-22 02:13:09.883520000 +0200
@@ -111,8 +111,8 @@
 pkg_failed=no
 AC_MSG_CHECKING([for $1])
 
-_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
-_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+_PKG_CONFIG([$1][_CFLAGS], [cflags --dont-define-prefix], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs --dont-define-prefix], [$2])
 
 m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
 and $1[]_LIBS to avoid the need to call pkg-config.
@@ -207,7 +207,7 @@
 [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
 AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
 
-_PKG_CONFIG([$1], [variable="][$3]["], [$2])
+_PKG_CONFIG([$1], [variable="][$3][" --dont-define-prefix], [$2])
 AS_VAR_COPY([$1], [pkg_cv_][$1])
 
 AS_VAR_IF([$1], [""], [$5], [$4])dnl
diff -r -u --strip-trailing-cr fontconfig-2.13.1.original/test/test-migration.c fontconfig-2.13.1/test/test-migration.c
--- fontconfig-2.13.1.original/test/test-migration.c	2019-05-22 02:15:02.608443100 +0200
+++ fontconfig-2.13.1/test/test-migration.c	2019-05-22 02:13:09.758513300 +0200
@@ -31,6 +31,9 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <dirent.h>
+#ifdef _WIN32
+#define mkdir(path,mode) _mkdir(path)
+#endif
 #ifndef HAVE_STRUCT_DIRENT_D_TYPE
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -51,6 +54,231 @@
 }
 #endif
 
+#if defined(_WIN32)
+#include <time.h>
+#include <math.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <windows.h>
+#include <accctrl.h>
+#include <aclapi.h>
+
+static PSECURITY_DESCRIPTOR
+create_sd (int permissions)
+{
+  PSECURITY_DESCRIPTOR pSD = NULL;
+  int i;
+  int j;
+  EXPLICIT_ACCESS ea[3];
+  PSID sids[3] = { NULL, NULL, NULL };
+  WELL_KNOWN_SID_TYPE sidtypes[3] = { WinCreatorOwnerSid, WinCreatorGroupSid, WinWorldSid };
+  int ea_len = 0;
+  DWORD dwRes, dwDisposition;
+  PACL pACL = NULL;
+
+  /* Initialize a security descriptor. */
+  pSD = (PSECURITY_DESCRIPTOR) LocalAlloc (LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH); 
+  if (NULL == pSD) 
+  { 
+    errno = ENOMEM;
+    return NULL;
+  }
+
+  if (!InitializeSecurityDescriptor (pSD, SECURITY_DESCRIPTOR_REVISION))
+  {  
+    LocalFree (pSD);
+    errno = EIO;
+    return NULL;
+  }
+
+  for (i = 0; i < 3; i++)
+  {
+    BOOL b;
+    DWORD bytes;
+    int imasked = permissions & (07 << (2 - i));
+    if (!imasked)
+      continue;
+
+    bytes = SECURITY_MAX_SID_SIZE;
+    sids[ea_len] = (PSID) LocalAlloc (LMEM_FIXED, bytes);
+    if (NULL == sids[ea_len])
+    { 
+      errno = ENOMEM;
+      LocalFree (pSD);
+      for (j = 0; j < ea_len; j++)
+      {
+        if (sids[j] != NULL)
+        {
+          LocalFree (sids[j]);
+          sids[j] = NULL;
+        }
+      }
+      return NULL;
+    }
+
+    b = CreateWellKnownSid (sidtypes[i], NULL, sids[ea_len], &bytes);
+    if (!b)
+    {
+      errno = EINVAL;
+      LocalFree (pSD);
+      for (j = 0; j < ea_len; j++)
+      {
+        if (sids[j] != NULL)
+        {
+          LocalFree (sids[j]);
+          sids[j] = NULL;
+        }
+      }
+      return NULL;
+    }
+
+    /* Initialize an EXPLICIT_ACCESS structure for an ACE. */
+    ZeroMemory (&ea[ea_len], sizeof(EXPLICIT_ACCESS));
+    bytes = 0;
+    if (01 & imasked)
+      bytes = bytes | GENERIC_READ;
+    if (02 & imasked)
+      bytes = bytes | GENERIC_WRITE;
+    if (04 & imasked)
+      bytes = bytes | GENERIC_EXECUTE;
+    ea[ea_len].grfAccessPermissions = bytes;
+    ea[ea_len].grfAccessMode = SET_ACCESS;
+    ea[ea_len].grfInheritance= NO_INHERITANCE;
+    ea[ea_len].Trustee.TrusteeForm = TRUSTEE_IS_SID;
+    ea[ea_len].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP;
+    ea[ea_len].Trustee.ptstrName  = (LPTSTR) sids[ea_len];
+    ea_len = ea_len + 1;
+  }
+
+  /* Create a new ACL that contains the new ACEs. */
+  dwRes = SetEntriesInAcl (ea_len, ea, NULL, &pACL);
+  if (ERROR_SUCCESS != dwRes) 
+  {
+    errno = EIO;
+    LocalFree (pSD);
+    for (j = 0; j < ea_len; j++)
+    {
+      if (sids[j] != NULL)
+      {
+        LocalFree (sids[j]);
+        sids[j] = NULL;
+      }
+    }
+    return NULL;
+  }
+
+  for (j = 0; j < ea_len; j++)
+  {
+    if (sids[j] != NULL)
+    {
+      LocalFree (sids[j]);
+      sids[j] = NULL;
+    }
+  }
+
+  /* Add the ACL to the security descriptor. */
+  if (!SetSecurityDescriptorDacl (pSD,
+          TRUE,     // bDaclPresent flag
+          pACL,
+          FALSE))   // not a default DACL
+  {
+    errno = EIO;
+    LocalFree (pSD);
+    LocalFree (pACL);
+    return NULL;
+  } 
+
+  return pSD;
+}
+
+static void
+free_sd (PSECURITY_DESCRIPTOR sd)
+{
+  BOOL b, present, defaulted;
+  PACL pACL = NULL;
+  present = FALSE;
+  b = GetSecurityDescriptorDacl (sd, &present, &pACL, &defaulted);
+  if (b && present && !defaulted && pACL)
+    LocalFree (pACL);
+  LocalFree (sd);
+}
+
+static void
+randtemplate (char *template, size_t l)
+{
+  int i;
+  for (i = l - 6; i < l; i++)
+  {
+    int r = rand ();
+    if ((r / (RAND_MAX + 1)) > ((RAND_MAX + 1) / 2))
+      template[i] = 'A' + (double) rand () / (RAND_MAX + 1) * ('Z' - 'A');
+    else
+      template[i] = 'a' + (double) rand () / (RAND_MAX + 1) * ('z' - 'a');
+  }
+}
+
+static char *
+mkdtemp (char *template)
+{
+  int i;
+  size_t l;
+  BOOL b;
+  SECURITY_ATTRIBUTES sa;
+  
+  if (template == NULL)
+  {
+    errno = EINVAL;
+    return NULL;
+  }
+  l = strlen (template);
+  if (l < 6 || strcmp (&template[l - 6], "XXXXXX") != 0)
+  {
+    errno = EINVAL;
+    return NULL;
+  }
+  srand(time (NULL));
+  sa.nLength = sizeof (sa);
+  sa.lpSecurityDescriptor = create_sd (0700);
+  sa.bInheritHandle = FALSE;
+  do
+  {
+    randtemplate (template, l);
+    SetLastError (0);
+    b = CreateDirectoryA (template, &sa);
+  } while (!b && GetLastError () == ERROR_ALREADY_EXISTS);
+  free_sd (sa.lpSecurityDescriptor);
+  if (!b)
+  {
+    errno = EIO;
+    return NULL;
+  }
+  else
+  {
+    errno = 0;
+    return template;
+  }
+}
+
+static int
+setenv (const char *var, const char *val, int ovr)
+{
+  BOOL b;
+  char c[2];
+  if (!ovr)
+  {
+    DWORD d;
+    d = GetEnvironmentVariableA (var, c, 2);
+    if (0 != d && GetLastError () != ERROR_ENVVAR_NOT_FOUND)
+      return;
+  }
+  b = SetEnvironmentVariableA (var, val);
+  if (b)
+    return 0;
+  return 1;
+}
+#endif
+
 FcBool
 mkdir_p(const char *dir)
 {