Fix installation of locales-all
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Fri, 26 Jan 2018 22:35:29 +0000 (22:35 +0000)
committerAurelien Jarno <aurel32@debian.org>
Fri, 26 Jan 2018 22:35:29 +0000 (22:35 +0000)
Dirty hack to fix installation of locales-all: instead of just locking the
archive extension (which is not supported on hurd-i386), lock it all.

Gbp-Pq: Topic hurd-i386
Gbp-Pq: Name tg-locarchive.diff

locale/programs/locarchive.c

index f67b7b8d99525aa6165d2210f8d3b603e8663ddb..8937f8c400c214769ab3a8f05aa970350d293d15 100644 (file)
@@ -453,7 +453,16 @@ enlarge_archive (struct locarhandle *ah, const struct locarhead *head)
     }
 
   /* Lock the new file.  */
+#ifdef __GNU__
+  struct flock fl;
+  fl.l_whence = SEEK_SET;
+  fl.l_start = 0;
+  fl.l_len = 0;
+  fl.l_type = F_WRLCK;
+  if (fcntl(fd, F_SETLKW, &fl) != 0)
+#else
   if (lockf64 (fd, F_LOCK, total) != 0)
+#endif
     {
       int errval = errno;
       unlink (fname);
@@ -613,7 +622,16 @@ open_archive (struct locarhandle *ah, bool readonly)
        error (EXIT_FAILURE, errno, _("cannot stat locale archive \"%s\""),
               archivefname);
 
+#ifdef __GNU__
+      struct flock fl;
+      fl.l_whence = SEEK_SET;
+      fl.l_start = 0;
+      fl.l_len = 0;
+      fl.l_type = F_WRLCK;
+      if (!readonly && fcntl(fd, F_SETLKW, &fl) == -1)
+#else
       if (!readonly && lockf64 (fd, F_LOCK, sizeof (struct locarhead)) == -1)
+#endif
        {
          close (fd);