newlib-2.4.0: wide character strings
git-svn-id: svn://kolibrios.org@6557 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
256
contrib/sdk/sources/newlib/libc/string/strsignal.c
Normal file
256
contrib/sdk/sources/newlib/libc/string/strsignal.c
Normal file
@@ -0,0 +1,256 @@
|
||||
/*
|
||||
FUNCTION
|
||||
<<strsignal>>---convert signal number to string
|
||||
|
||||
INDEX
|
||||
strsignal
|
||||
|
||||
ANSI_SYNOPSIS
|
||||
#include <string.h>
|
||||
char *strsignal(int <[signal]>);
|
||||
|
||||
TRAD_SYNOPSIS
|
||||
#include <string.h>
|
||||
char *strsignal(<[signal]>)
|
||||
int <[signal]>;
|
||||
|
||||
DESCRIPTION
|
||||
<<strsignal>> converts the signal number <[signal]> into a
|
||||
string. If <[signal]> is not a known signal number, the result
|
||||
will be of the form "Unknown signal NN" where NN is the <[signal]>
|
||||
is a decimal number.
|
||||
|
||||
RETURNS
|
||||
This function returns a pointer to a string. Your application must
|
||||
not modify that string.
|
||||
|
||||
PORTABILITY
|
||||
POSIX.1-2008 C requires <<strsignal>>, but does not specify the strings used
|
||||
for each signal number.
|
||||
|
||||
<<strsignal>> requires no supporting OS subroutines.
|
||||
|
||||
QUICKREF
|
||||
strsignal pure
|
||||
*/
|
||||
|
||||
/*
|
||||
* Written by Joel Sherrill <joel.sherrill@OARcorp.com>.
|
||||
*
|
||||
* COPYRIGHT (c) 2010.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose without fee is hereby granted, provided that this entire notice
|
||||
* is included in all copies of any software which is or includes a copy
|
||||
* or modification of this software.
|
||||
*
|
||||
* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
|
||||
* WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION
|
||||
* OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS
|
||||
* SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <reent.h>
|
||||
|
||||
char *
|
||||
_DEFUN (strsignal, (signal),
|
||||
int signal)
|
||||
{
|
||||
char *buffer;
|
||||
struct _reent *ptr;
|
||||
|
||||
ptr = _REENT;
|
||||
|
||||
_REENT_CHECK_SIGNAL_BUF(ptr);
|
||||
buffer = _REENT_SIGNAL_BUF(ptr);
|
||||
|
||||
#if defined(SIGRTMIN) && defined(SIGRTMAX)
|
||||
if ((signal >= SIGRTMIN) || (signal <= SIGRTMAX)) {
|
||||
siprintf (buffer, "Real-time signal %d", signal - SIGRTMIN);
|
||||
return buffer;
|
||||
}
|
||||
#endif
|
||||
|
||||
switch (signal) {
|
||||
#ifdef SIGHUP
|
||||
case SIGHUP:
|
||||
buffer = "Hangup";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGINT
|
||||
case SIGINT:
|
||||
buffer = "Interrupt";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGQUIT
|
||||
case SIGQUIT:
|
||||
buffer = "Quit";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGILL
|
||||
case SIGILL:
|
||||
buffer = "Illegal instruction";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGTRAP
|
||||
case SIGTRAP:
|
||||
buffer = "Trace/breakpoint trap";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGIOT
|
||||
#if defined(SIGABRT) && (SIGIOT != SIGABRT)
|
||||
case SIGABRT:
|
||||
#endif
|
||||
case SIGIOT:
|
||||
buffer = "IOT trap";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGEMT
|
||||
case SIGEMT:
|
||||
buffer = "EMT trap";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGFPE
|
||||
case SIGFPE:
|
||||
buffer = "Floating point exception";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGKILL
|
||||
case SIGKILL:
|
||||
buffer = "Killed";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGBUS
|
||||
case SIGBUS:
|
||||
buffer = "Bus error";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGSEGV
|
||||
case SIGSEGV:
|
||||
buffer = "Segmentation fault";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGSYS
|
||||
case SIGSYS:
|
||||
buffer = "Bad system call";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGPIPE
|
||||
case SIGPIPE:
|
||||
buffer = "Broken pipe";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGALRM
|
||||
case SIGALRM:
|
||||
buffer = "Alarm clock";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGTERM
|
||||
case SIGTERM:
|
||||
buffer = "Terminated";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGURG
|
||||
case SIGURG:
|
||||
buffer = "Urgent I/O condition";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGSTOP
|
||||
case SIGSTOP:
|
||||
buffer = "Stopped (signal)";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGTSTP
|
||||
case SIGTSTP:
|
||||
buffer = "Stopped";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGCONT
|
||||
case SIGCONT:
|
||||
buffer = "Continued";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGCHLD
|
||||
#if defined(SIGCLD) && (SIGCHLD != SIGCLD)
|
||||
case SIGCLD:
|
||||
#endif
|
||||
case SIGCHLD:
|
||||
buffer = "Child exited";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGTTIN
|
||||
case SIGTTIN:
|
||||
buffer = "Stopped (tty input)";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGTTOUT
|
||||
case SIGTTOUT:
|
||||
buffer = "Stopped (tty output)";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGIO
|
||||
#if defined(SIGPOLL) && (SIGIO != SIGPOLL)
|
||||
case SIGPOLL:
|
||||
#endif
|
||||
case SIGIO:
|
||||
buffer = "I/O possible";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGWINCH
|
||||
case SIGWINCH:
|
||||
buffer = "Window changed";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGUSR1
|
||||
case SIGUSR1:
|
||||
buffer = "User defined signal 1";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGUSR2
|
||||
case SIGUSR2:
|
||||
buffer = "User defined signal 2";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGPWR
|
||||
case SIGPWR:
|
||||
buffer = "Power Failure";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGXCPU
|
||||
case SIGXCPU:
|
||||
buffer = "CPU time limit exceeded";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGXFSZ
|
||||
case SIGXFSZ:
|
||||
buffer = "File size limit exceeded";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGVTALRM
|
||||
case SIGVTALRM :
|
||||
buffer = "Virtual timer expired";
|
||||
break;
|
||||
#endif
|
||||
#ifdef SIGPROF
|
||||
case SIGPROF:
|
||||
buffer = "Profiling timer expired";
|
||||
break;
|
||||
#endif
|
||||
#if defined(SIGLOST) && SIGLOST != SIGPWR
|
||||
case SIGLOST:
|
||||
buffer = "Resource lost";
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
siprintf (buffer, "Unknown signal %d", signal);
|
||||
break;
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
Reference in New Issue
Block a user