Update lintian overrides
[alioth/cvs.git] / lib / pagealign_alloc.c
index 28e8209..3962463 100644 (file)
 #include "xalloc.h"
 #include "gettext.h"
 
+#if HAVE_MMAP && !defined(HAVE_MAP_ANONYMOUS)
+#include <stdio.h>
+#endif
+
 #define _(str) gettext (str)
 
 #if HAVE_MMAP
@@ -132,6 +136,7 @@ pagealign_alloc (size_t size)
   const int fd = -1;
   const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
 # else /* !HAVE_MAP_ANONYMOUS */
+  static int beenhere = 0;
   static int fd = -1;  /* Only open /dev/zero once in order to avoid limiting
                          the amount of memory we may allocate based on the
                          number of open file descriptors.  */
@@ -140,7 +145,20 @@ pagealign_alloc (size_t size)
     {
       fd = open ("/dev/zero", O_RDONLY, 0666);
       if (fd < 0)
-       error (EXIT_FAILURE, errno, _("Failed to open /dev/zero for read"));
+       {
+         if (!beenhere)
+           {
+             beenhere = 1;
+             error (EXIT_FAILURE, errno, _("Failed to open /dev/zero for read"));
+           }
+         else
+           {
+             fprintf (stderr, "Fatal in pagealign: %s\n",
+                       _("Failed to open /dev/zero for read"));
+             fflush (stderr);
+             _exit (EXIT_FAILURE);
+           }
+       }
     }
 # endif /* HAVE_MAP_ANONYMOUS */
   ret = mmap (NULL, size, PROT_READ | PROT_WRITE, flags, fd, 0);