]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - stdio-common/psiginfo.c
hurd: Fix getxattr/listxattr returning ERANGE
[thirdparty/glibc.git] / stdio-common / psiginfo.c
index a10780d05b436c2f917483d674dcc72a54cbd915..ee38d4e0a11ed01772f43abb070f2f9690121104 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2024 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    Lesser General Public License for more details.
 
    You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
 
+#include <array_length.h>
 #include <errno.h>
 #include <libintl.h>
 #include <signal.h>
 #include <not-cancel.h>
 
 
-/* Defined in sys_siglist.c.  */
-extern const char *const _sys_siglist[];
-extern const char *const _sys_siglist_internal[] attribute_hidden;
-
-
 #define MF(l) MF1 (l)
 #define MF1(l) str_##l
 #define C(s1, s2) C1 (s1, s2)
@@ -66,7 +61,7 @@ void
 psiginfo (const siginfo_t *pinfo, const char *s)
 {
   char buf[512];
-  FILE *fp = fmemopen (buf, sizeof (buf), "w");
+  FILE *fp = __fmemopen (buf, sizeof (buf), "w");
   if (fp == NULL)
     {
       const char *colon;
@@ -85,7 +80,7 @@ psiginfo (const siginfo_t *pinfo, const char *s)
 
   const char *desc;
   if (pinfo->si_signo >= 0 && pinfo->si_signo < NSIG
-      && ((desc = INTUSE(_sys_siglist)[pinfo->si_signo]) != NULL
+      && ((desc = __sys_siglist[pinfo->si_signo]) != NULL
 #ifdef SIGRTMIN
          || (pinfo->si_signo >= SIGRTMIN && pinfo->si_signo < SIGRTMAX)
 #endif
@@ -122,7 +117,7 @@ psiginfo (const siginfo_t *pinfo, const char *s)
        case sig:                                                             \
          base = C(codestrs_, sig).str;                                       \
          offarr = C (codes_, sig);                                           \
-         offarr_len = sizeof (C (codes_, sig)) / sizeof (C (codes_, sig)[0]);\
+         offarr_len = array_length (C (codes_, sig));                        \
          break
 
          H (SIGILL);
@@ -205,5 +200,5 @@ Signal generated by the completion of an I/O request");
 
   fclose (fp);
 
-  write_not_cancel (STDERR_FILENO, buf, strlen (buf));
+  __write_nocancel (STDERR_FILENO, buf, strlen (buf));
 }