Mercurial > emacs
annotate msdos/sigaction.c @ 95948:d55ec23f052d
*** empty log message ***
| author | Glenn Morris <rgm@gnu.org> |
|---|---|
| date | Sun, 15 Jun 2008 02:53:17 +0000 |
| 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) */ |
