Mercurial > emacs
annotate msdos/sigaction.c @ 109911:3ec7871b5633
* whitespace.el (whitespace-color-off): Remove post-command-hook locally.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sun, 08 Aug 2010 22:23:35 -0400 |
parents | fa41f74280f5 |
children | ef719132ddfa |
rev | line source |
---|---|
75760
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
1 /* sigaction.c |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
2 * |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
3 * Copyright (C) 1995 DJ Delorie |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
4 * |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
5 * (See the README file in this directory for the copyright and license |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
6 * history of this file.) |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
7 * |
94790
fa41f74280f5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
78311
diff
changeset
|
8 * This file is free software: you can redistribute it and/or modify |
75760
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
9 * it under the terms of the GNU General Public License as published by |
94790
fa41f74280f5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
78311
diff
changeset
|
10 * the Free Software Foundation, either version 3 of the License, or |
fa41f74280f5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
78311
diff
changeset
|
11 * (at your option) any later version. |
75760
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
12 * |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
13 * This file is distributed in the hope that it will be useful, |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
16 * GNU General Public License for more details. |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
17 * |
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
18 * You should have received a copy of the GNU General Public License |
94790
fa41f74280f5
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
78311
diff
changeset
|
19 * along with this file. If not, see <http://www.gnu.org/licenses/>. |
75760
60ed74508594
Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents:
52401
diff
changeset
|
20 */ |
25856 | 21 #include <signal.h> |
22 #include <errno.h> | |
23 | |
24 int | |
25 sigaction(int _sig, const struct sigaction *_act, struct sigaction *_oact) | |
26 { | |
27 int retval = 0; | |
28 | |
29 if (_oact) | |
30 { | |
31 void (*installed_sig)(int) = signal (_sig, SIG_IGN); | |
32 | |
33 /* FIXME */ | |
34 if (installed_sig == SIG_ERR) | |
35 { | |
36 retval = -1; | |
37 errno = EINVAL; | |
38 } | |
39 else | |
40 signal (_sig, installed_sig); | |
41 _oact->sa_handler = installed_sig; | |
42 retval = sigemptyset (&_oact->sa_mask); | |
43 _oact->sa_flags = 0; | |
44 } | |
45 if (_act) | |
46 { | |
47 if (signal (_sig, _act->sa_handler) == SIG_ERR) | |
48 { | |
49 retval = -1; | |
50 errno = EINVAL; | |
51 } | |
52 } | |
53 return 0; | |
54 } | |
55 | |
56 | |
57 | |
52401 | 58 /* arch-tag: 39526405-3d3a-44fe-af28-82a515e0c8e8 |
59 (do not change this comment) */ |