Annotation of embedaddon/libiconv/srclib/raise.c, revision 1.1.1.1
1.1 misho 1: /* Provide a non-threads replacement for the POSIX raise function.
2:
3: Copyright (C) 2002-2003, 2005-2006, 2009-2019 Free Software Foundation, Inc.
4:
5: This program is free software: you can redistribute it and/or modify
6: it under the terms of the GNU General Public License as published by
7: the Free Software Foundation; either version 3 of the License, or
8: (at your option) any later version.
9:
10: This program is distributed in the hope that it will be useful,
11: but WITHOUT ANY WARRANTY; without even the implied warranty of
12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: GNU General Public License for more details.
14:
15: You should have received a copy of the GNU General Public License
16: along with this program. If not, see <https://www.gnu.org/licenses/>. */
17:
18: /* written by Jim Meyering and Bruno Haible */
19:
20: #include <config.h>
21:
22: /* Specification. */
23: #include <signal.h>
24:
25: #if HAVE_RAISE
26: /* Native Windows platform. */
27:
28: # include <errno.h>
29:
30: # if HAVE_MSVC_INVALID_PARAMETER_HANDLER
31: # include "msvc-inval.h"
32: # endif
33:
34: # if HAVE_MSVC_INVALID_PARAMETER_HANDLER
35: /* Forward declaration. */
36: static int raise_nothrow (int sig);
37: # else
38: # define raise_nothrow raise
39: # endif
40:
41: #else
42: /* An old Unix platform. */
43:
44: # include <unistd.h>
45:
46: #endif
47:
48: int
49: raise (int sig)
50: #undef raise
51: {
52: #if GNULIB_defined_signal_blocking && GNULIB_defined_SIGPIPE
53: if (sig == SIGPIPE)
54: return _gl_raise_SIGPIPE ();
55: #endif
56:
57: #if HAVE_RAISE
58: return raise_nothrow (sig);
59: #else
60: return kill (getpid (), sig);
61: #endif
62: }
63:
64: #if HAVE_RAISE && HAVE_MSVC_INVALID_PARAMETER_HANDLER
65: static int
66: raise_nothrow (int sig)
67: {
68: int result;
69:
70: TRY_MSVC_INVAL
71: {
72: result = raise (sig);
73: }
74: CATCH_MSVC_INVAL
75: {
76: result = -1;
77: errno = EINVAL;
78: }
79: DONE_MSVC_INVAL;
80:
81: return result;
82: }
83: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>