4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
25 * Copyright (c) 2014, Joyent, Inc. All rights reserved.
28 /* Copyright (c) 1988 AT&T */
29 /* All Rights Reserved */
35 #include <sys/types.h>
38 typedef struct signame
{
43 static signame_t signames
[] = {
66 { "WINCH", SIGWINCH
},
75 { "VTALRM", SIGVTALRM
},
79 { "WAITING", SIGWAITING
},
81 { "FREEZE", SIGFREEZE
},
83 { "CANCEL", SIGCANCEL
},
89 { "RTMIN", _SIGRTMIN
},
90 { "RTMIN+1", _SIGRTMIN
+1 },
91 { "RTMIN+2", _SIGRTMIN
+2 },
92 { "RTMIN+3", _SIGRTMIN
+3 },
93 { "RTMIN+4", _SIGRTMIN
+4 },
94 { "RTMIN+5", _SIGRTMIN
+5 },
95 { "RTMIN+6", _SIGRTMIN
+6 },
96 { "RTMIN+7", _SIGRTMIN
+7 },
97 { "RTMIN+8", _SIGRTMIN
+8 },
98 { "RTMIN+9", _SIGRTMIN
+9 },
99 { "RTMIN+10", _SIGRTMIN
+10 },
100 { "RTMIN+11", _SIGRTMIN
+11 },
101 { "RTMIN+12", _SIGRTMIN
+12 },
102 { "RTMIN+13", _SIGRTMIN
+13 },
103 { "RTMIN+14", _SIGRTMIN
+14 },
104 { "RTMIN+15", _SIGRTMIN
+15 },
105 { "RTMAX-15", _SIGRTMAX
-15 },
106 { "RTMAX-14", _SIGRTMAX
-14 },
107 { "RTMAX-13", _SIGRTMAX
-13 },
108 { "RTMAX-12", _SIGRTMAX
-12 },
109 { "RTMAX-11", _SIGRTMAX
-11 },
110 { "RTMAX-10", _SIGRTMAX
-10 },
111 { "RTMAX-9", _SIGRTMAX
-9 },
112 { "RTMAX-8", _SIGRTMAX
-8 },
113 { "RTMAX-7", _SIGRTMAX
-7 },
114 { "RTMAX-6", _SIGRTMAX
-6 },
115 { "RTMAX-5", _SIGRTMAX
-5 },
116 { "RTMAX-4", _SIGRTMAX
-4 },
117 { "RTMAX-3", _SIGRTMAX
-3 },
118 { "RTMAX-2", _SIGRTMAX
-2 },
119 { "RTMAX-1", _SIGRTMAX
-1 },
120 { "RTMAX", _SIGRTMAX
},
123 #define SIGCNT (sizeof (signames) / sizeof (struct signame))
125 static int str2long(const char *, long *);
128 str2long(const char *p
, long *val
)
132 int saved_errno
= errno
;
135 *val
= strtol(p
, &q
, 10);
137 error
= ((errno
!= 0 || q
== p
|| *q
!= '\0') ? -1 : 0);
144 str2sig(const char *s
, int *sigp
)
146 const struct signame
*sp
;
148 if (*s
>= '0' && *s
<= '9') {
151 if (str2long(s
, &val
) == -1)
154 for (sp
= signames
; sp
< &signames
[SIGCNT
]; sp
++) {
155 if (sp
->signum
== val
) {
162 for (sp
= signames
; sp
< &signames
[SIGCNT
]; sp
++) {
163 if (strcmp(sp
->sigstr
, s
) == 0) {
173 sig2str(int i
, char *s
)
175 const struct signame
*sp
;
177 for (sp
= signames
; sp
< &signames
[SIGCNT
]; sp
++) {
178 if (sp
->signum
== i
) {
179 (void) strcpy(s
, sp
->sigstr
);