/* Test of sigdescr_np() function. Copyright (C) 2020-2023 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . */ #include /* Specification. */ #include #include "signature.h" SIGNATURE_CHECK (sigdescr_np, const char *, (int)); #include #include "macros.h" int main (void) { /* Signals specified by ISO C. */ ASSERT (strcmp (sigdescr_np (SIGABRT), "Aborted") == 0); ASSERT (strcmp (sigdescr_np (SIGFPE), "Floating point exception") == 0 || strcmp (sigdescr_np (SIGFPE), "Arithmetic exception") == 0); ASSERT (strcmp (sigdescr_np (SIGILL), "Illegal instruction") == 0); ASSERT (strcmp (sigdescr_np (SIGINT), "Interrupt") == 0); ASSERT (strcmp (sigdescr_np (SIGSEGV), "Segmentation fault") == 0); ASSERT (strcmp (sigdescr_np (SIGTERM), "Terminated") == 0); /* Signals specified by POSIX. */ #ifdef SIGALRM ASSERT (strcmp (sigdescr_np (SIGALRM), "Alarm clock") == 0); #endif #ifdef SIGBUS ASSERT (strcmp (sigdescr_np (SIGBUS), "Bus error") == 0); #endif #ifdef SIGCHLD ASSERT (strcmp (sigdescr_np (SIGCHLD), "Child exited") == 0 /* glibc */ || strcmp (sigdescr_np (SIGCHLD), "Child stopped or exited") == 0); #endif #ifdef SIGCONT ASSERT (strcmp (sigdescr_np (SIGCONT), "Continued") == 0); #endif #ifdef SIGHUP ASSERT (strcmp (sigdescr_np (SIGHUP), "Hangup") == 0); #endif #ifdef SIGKILL ASSERT (strcmp (sigdescr_np (SIGKILL), "Killed") == 0); #endif #ifdef SIGPIPE ASSERT (strcmp (sigdescr_np (SIGPIPE), "Broken pipe") == 0); #endif #ifdef SIGQUIT ASSERT (strcmp (sigdescr_np (SIGQUIT), "Quit") == 0); #endif #ifdef SIGSTOP ASSERT (strcmp (sigdescr_np (SIGSTOP), "Stopped (signal)") == 0); #endif #ifdef SIGTSTP ASSERT (strcmp (sigdescr_np (SIGTSTP), "Stopped") == 0); #endif #ifdef SIGTTIN ASSERT (strcmp (sigdescr_np (SIGTTIN), "Stopped (tty input)") == 0); #endif #ifdef SIGTTOU ASSERT (strcmp (sigdescr_np (SIGTTOU), "Stopped (tty output)") == 0); #endif #ifdef SIGUSR1 ASSERT (strcmp (sigdescr_np (SIGUSR1), "User defined signal 1") == 0); #endif #ifdef SIGUSR2 ASSERT (strcmp (sigdescr_np (SIGUSR2), "User defined signal 2") == 0); #endif #ifdef SIGPOLL ASSERT (strcmp (sigdescr_np (SIGPOLL), "I/O possible") == 0); #endif #ifdef SIGPROF ASSERT (strcmp (sigdescr_np (SIGPROF), "Profiling timer expired") == 0); #endif #ifdef SIGSYS ASSERT (strcmp (sigdescr_np (SIGSYS), "Bad system call") == 0); #endif #ifdef SIGTRAP ASSERT (strcmp (sigdescr_np (SIGTRAP), "Trace/breakpoint trap") == 0); #endif #ifdef SIGURG ASSERT (strcmp (sigdescr_np (SIGURG), "Urgent I/O condition") == 0); #endif #ifdef SIGVTALRM ASSERT (strcmp (sigdescr_np (SIGVTALRM), "Virtual timer expired") == 0); #endif #ifdef SIGXCPU ASSERT (strcmp (sigdescr_np (SIGXCPU), "CPU time limit exceeded") == 0); #endif #ifdef SIGXFSZ ASSERT (strcmp (sigdescr_np (SIGXFSZ), "File size limit exceeded") == 0); #endif /* Other signals on other systems. */ /* native Windows */ #ifdef SIGBREAK ASSERT (strcmp (sigdescr_np (SIGBREAK), "Ctrl-Break") == 0); #endif /* IRIX */ #ifdef SIGCKPT ASSERT (strcmp (sigdescr_np (SIGCKPT), "Checkpoint") == 0); #endif /* AIX */ #ifdef SIGCPUFAIL ASSERT (strcmp (sigdescr_np (SIGCPUFAIL), "CPU going down") == 0); #endif /* AIX */ #ifdef SIGDANGER ASSERT (strcmp (sigdescr_np (SIGDANGER), "Swap space nearly exhausted") == 0); #endif /* Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, AIX, IRIX, Cygwin, mingw */ #ifdef SIGEMT ASSERT (strcmp (sigdescr_np (SIGEMT), "Instruction emulation needed") == 0); #endif /* Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix */ #if defined SIGINFO && SIGINFO != SIGPWR ASSERT (strcmp (sigdescr_np (SIGINFO), "Information request") == 0); #endif /* AIX */ #ifdef SIGKAP ASSERT (strcmp (sigdescr_np (SIGKAP), "Keep Alive Poll") == 0); #endif /* Haiku */ #ifdef SIGKILLTHR ASSERT (strcmp (sigdescr_np (SIGKILLTHR), "Kill thread") == 0); #endif /* Minix */ #ifdef SIGKMEM ASSERT (strcmp (sigdescr_np (SIGKMEM), "Kernel memory request") == 0); #endif /* Minix */ #ifdef SIGKMESS ASSERT (strcmp (sigdescr_np (SIGKMESS), "Kernel message") == 0); #endif /* Minix */ #ifdef SIGKSIG ASSERT (strcmp (sigdescr_np (SIGKSIG), "Kernel signal") == 0); #endif /* Minix */ #ifdef SIGKSIGSM ASSERT (strcmp (sigdescr_np (SIGKSIGSM), "Kernel signal for signal manager") == 0); #endif /* FreeBSD */ #ifdef SIGLIBRT ASSERT (strcmp (sigdescr_np (SIGLIBRT), "Real-time library interrupt") == 0); #endif /* AIX */ #ifdef SIGMIGRATE ASSERT (strcmp (sigdescr_np (SIGMIGRATE), "Process migration") == 0); #endif /* AIX */ #ifdef SIGMSG ASSERT (strcmp (sigdescr_np (SIGMSG), "Message in the ring") == 0); #endif /* AIX */ #ifdef SIGPRE ASSERT (strcmp (sigdescr_np (SIGPRE), "Programmed exception") == 0); #endif /* IRIX */ #ifdef SIGPTINTR ASSERT (strcmp (sigdescr_np (SIGPTINTR), "Pthread interrupt") == 0); #endif /* IRIX */ #ifdef SIGPTRESCHED ASSERT (strcmp (sigdescr_np (SIGPTRESCHED), "Pthread rescheduling") == 0); #endif /* Linux, NetBSD, Minix, AIX, IRIX, Cygwin */ #ifdef SIGPWR ASSERT (strcmp (sigdescr_np (SIGPWR), "Power failure") == 0); #endif /* AIX */ #ifdef SIGRECONFIG ASSERT (strcmp (sigdescr_np (SIGRECONFIG), "Dynamic logical partitioning changed") == 0); #endif /* AIX */ #ifdef SIGRECOVERY ASSERT (strcmp (sigdescr_np (SIGRECOVERY), "Kernel recovery") == 0); #endif /* IRIX */ #ifdef SIGRESTART ASSERT (strcmp (sigdescr_np (SIGRESTART), "Checkpoint restart") == 0); #endif /* AIX */ #ifdef SIGRETRACT ASSERT (strcmp (sigdescr_np (SIGRETRACT), "Retracting Keep Alive Poll") == 0); #endif /* AIX */ #ifdef SIGSAK ASSERT (strcmp (sigdescr_np (SIGSAK), "Secure Attention Key") == 0); #endif /* Minix */ #ifdef SIGSNDELAY ASSERT (strcmp (sigdescr_np (SIGSNDELAY), "Done sending message") == 0); #endif /* AIX */ #ifdef SIGSOUND ASSERT (strcmp (sigdescr_np (SIGSOUND), "Sound configuration changed") == 0); #endif /* Linux */ #ifdef SIGSTKFLT ASSERT (strcmp (sigdescr_np (SIGSTKFLT), "Stack fault") == 0); #endif /* AIX */ #ifdef SIGSYSERROR ASSERT (strcmp (sigdescr_np (SIGSYSERROR), "Kernel error") == 0); #endif /* AIX */ #ifdef SIGTALRM ASSERT (strcmp (sigdescr_np (SIGTALRM), "Thread alarm clock") == 0); #endif /* FreeBSD, OpenBSD */ #ifdef SIGTHR ASSERT (strcmp (sigdescr_np (SIGTHR), "Thread library interrupt") == 0); #endif /* IRIX */ #ifdef SIGUME ASSERT (strcmp (sigdescr_np (SIGUME), "Uncorrectable memory error") == 0); #endif /* AIX */ #ifdef SIGVIRT ASSERT (strcmp (sigdescr_np (SIGVIRT), "Virtual time alarm clock") == 0); #endif /* AIX */ #ifdef SIGWAITING ASSERT (strcmp (sigdescr_np (SIGWAITING), "Thread waiting") == 0); #endif /* Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, AIX, IRIX, Cygwin, Haiku */ #ifdef SIGWINCH ASSERT (strcmp (sigdescr_np (SIGWINCH), "Window changed") == 0 /* glibc */ || strcmp (sigdescr_np (SIGWINCH), "Window size changed") == 0); #endif ASSERT (sigdescr_np (-714) == NULL); return 0; }