Fix installation of locales-all
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Fri, 20 Sep 2019 19:39:03 +0000 (20:39 +0100)
committerAurelien Jarno <aurel32@debian.org>
Fri, 20 Sep 2019 19:39:03 +0000 (20:39 +0100)
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 e6310b18beee8dd2a6d505fedfecbc8df7ec4400..e646889d1daccd8750103053edc93828a8ccc8ff 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);