annotate src/sysdep.c @ 109965:aa6b00b4471c

Avoid clobbering primary selection when switching frames (Bug#6872). * lisp/mouse.el (mouse-yank-primary): Avoid setting primary when deactivating the mark (Bug#6872). * src/keyboard.c (command_loop_1): Don't set primary selection during handle-switch-frame (Bug#6872).
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 24 Aug 2010 11:48:14 -0400
parents 5f187a091415
children 09a7eef06018
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1 /* Interfaces to system-dependent kernel and library entries.
58518
1a5509ec45da (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56714
diff changeset
2 Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1999, 2000, 2001,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105959
diff changeset
3 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 79510
diff changeset
4 Free Software Foundation, Inc.
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 This file is part of GNU Emacs.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93895
diff changeset
8 GNU Emacs is free software: you can redistribute it and/or modify
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93895
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93895
diff changeset
11 (at your option) any later version.
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 GNU Emacs is distributed in the hope that it will be useful,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 GNU General Public License for more details.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
94963
8971ddf55736 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93895
diff changeset
19 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
42469
64341c22fb4c Include <config.h>.
Pavel Janík <Pavel@Janik.cz>
parents: 41969
diff changeset
21 #include <config.h>
103083
dcf1f34f1713 * sysdep.c: Include <ctype.h>.
Andreas Schwab <schwab@linux-m68k.org>
parents: 101646
diff changeset
22 #include <ctype.h>
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include <signal.h>
53901
d85f8f2e71f7 Move include stdio.h to same place as in other files.
Jan Djärv <jan.h.d@swipnet.se>
parents: 53715
diff changeset
24 #include <stdio.h>
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
25 #include <setjmp.h>
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
26 #ifdef HAVE_PWD_H
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
27 #include <pwd.h>
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
28 #include <grp.h>
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
29 #endif /* HAVE_PWD_H */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
30 #ifdef HAVE_LIMITS_H
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
31 #include <limits.h>
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
32 #endif /* HAVE_LIMITS_H */
29387
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
33 #ifdef HAVE_UNISTD_H
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
34 #include <unistd.h>
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
35 #endif
100566
91f7b663a0fd Include alloca.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100565
diff changeset
36
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 #include "lisp.h"
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
38 #include "sysselect.h"
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
39 #include "blockinput.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
41 #ifdef WINDOWSNT
27933
ea5807a5d84e [WINDOWSNT]: Use sys_read and sys_write to ensure correct line-ending
Jason Rumney <jasonr@gnu.org>
parents: 27922
diff changeset
42 #define read sys_read
ea5807a5d84e [WINDOWSNT]: Use sys_read and sys_write to ensure correct line-ending
Jason Rumney <jasonr@gnu.org>
parents: 27922
diff changeset
43 #define write sys_write
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
44 #include <windows.h>
31101
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
45 #ifndef NULL
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
46 #define NULL 0
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
47 #endif
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
48 #endif /* not WINDOWSNT */
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
49
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 #include <sys/types.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 #include <sys/stat.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 #include <errno.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53
29125
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
54 #ifdef HAVE_SETPGID
108235
9aa39b975b8a Remove BSD_PGRPS.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108234
diff changeset
55 #if !defined (USG)
29911
02b0c6c15f1c Undefine setpgrp before setting it.
Dave Love <fx@gnu.org>
parents: 29812
diff changeset
56 #undef setpgrp
29125
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
57 #define setpgrp setpgid
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
58 #endif
29150
0398ec3316c5 (setpgrp): Don't define if USG and BSD_PGRPS are not defined.
Gerd Moellmann <gerd@gnu.org>
parents: 29125
diff changeset
59 #endif
29125
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
60
16003
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
61 /* Get SI_SRPC_DOMAIN, if it is available. */
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
62 #ifdef HAVE_SYS_SYSTEMINFO_H
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
63 #include <sys/systeminfo.h>
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
64 #endif
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
65
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
66 #ifdef MSDOS /* Demacs 1.1.2 91/10/20 Manabu Higashida, MW Aug 1993 */
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
67 #include <dos.h>
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
68 #include "dosfns.h"
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
69 #include "msdos.h"
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
70 #include <sys/param.h>
14971
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
71 #endif
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
72
5533
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
73 #include <sys/file.h>
46922
ee04d07683ab [!VMS]: Include sys/files.h.
Richard M. Stallman <rms@gnu.org>
parents: 46653
diff changeset
74
48652
682129896be4 (fcntl.h): Test only HAVE_FCNTL_H.
Richard M. Stallman <rms@gnu.org>
parents: 48507
diff changeset
75 #ifdef HAVE_FCNTL_H
5533
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
76 #include <fcntl.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
77 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
79 #include "systty.h"
4640
1ae92cbb80ba Include syswait.h.
Richard M. Stallman <rms@gnu.org>
parents: 4438
diff changeset
80 #include "syswait.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
82 #ifdef HAVE_SYS_UTSNAME_H
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 #include <sys/utsname.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 #include <memory.h>
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
85 #endif /* HAVE_SYS_UTSNAME_H */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86
31101
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
87 #include "keyboard.h"
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
88 #include "frame.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 #include "window.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 #include "termhooks.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 #include "termchar.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 #include "termopts.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 #include "dispextern.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 #include "process.h"
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
95 #include "cm.h" /* for reset_sys_modes */
109663
a4c55c0d8da2 * src/sysdep.c: Move include term.h last of includes (Bug#6812).
Jan D <jan.h.d@swipnet.se>
parents: 109653
diff changeset
96 #ifdef HAVE_TERM_H
a4c55c0d8da2 * src/sysdep.c: Move include term.h last of includes (Bug#6812).
Jan D <jan.h.d@swipnet.se>
parents: 109653
diff changeset
97 /* Include this last. If it is ncurses header file, it adds a lot of
a4c55c0d8da2 * src/sysdep.c: Move include term.h last of includes (Bug#6812).
Jan D <jan.h.d@swipnet.se>
parents: 109653
diff changeset
98 defines that interfere with stuff in other headers. Someone responsible
a4c55c0d8da2 * src/sysdep.c: Move include term.h last of includes (Bug#6812).
Jan D <jan.h.d@swipnet.se>
parents: 109653
diff changeset
99 for ncurses messed up bigtime. See bug#6812. */
a4c55c0d8da2 * src/sysdep.c: Move include term.h last of includes (Bug#6812).
Jan D <jan.h.d@swipnet.se>
parents: 109653
diff changeset
100 #include <term.h>
a4c55c0d8da2 * src/sysdep.c: Move include term.h last of includes (Bug#6812).
Jan D <jan.h.d@swipnet.se>
parents: 109653
diff changeset
101 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
103 #ifdef WINDOWSNT
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
104 #include <direct.h>
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
105 /* In process.h which conflicts with the local copy. */
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
106 #define _P_WAIT 0
96348
ecd6143014da Remove unneeded -Defines in the compiler command line (MinGW and MSVC).
Juanma Barranquero <lekktu@gmail.com>
parents: 96309
diff changeset
107 int _cdecl _spawnlp (int, const char *, const char *, ...);
ecd6143014da Remove unneeded -Defines in the compiler command line (MinGW and MSVC).
Juanma Barranquero <lekktu@gmail.com>
parents: 96309
diff changeset
108 int _cdecl _getpid (void);
65418
b7f29d144468 [WINDOWSNT]: Add prototype for getwd.
Eli Zaretskii <eliz@gnu.org>
parents: 65410
diff changeset
109 extern char *getwd (char *);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
110 #endif
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
111
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
112 #include "syssignal.h"
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
113 #include "systime.h"
9239
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
114 #ifdef HAVE_UTIME_H
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
115 #include <utime.h>
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
116 #endif
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
117
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
118 #ifndef HAVE_UTIMES
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
119 #ifndef HAVE_STRUCT_UTIMBUF
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
120 /* We want to use utime rather than utimes, but we couldn't find the
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
121 structure declaration. We'll use the traditional one. */
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
122 struct utimbuf {
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
123 long actime;
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
124 long modtime;
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
125 };
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
126 #endif
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
127 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128
4952
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
129 /* LPASS8 is new in 4.3, and makes cbreak mode provide all 8 bits. */
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
130 #ifndef LPASS8
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
131 #define LPASS8 0
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
132 #endif
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
133
105959
ba3ffbd9c422 * process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105746
diff changeset
134 static const int baud_convert[] =
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 0, 50, 75, 110, 135, 150, 200, 300, 600, 1200,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 1800, 2400, 4800, 9600, 19200, 38400
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 };
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
140 int emacs_ospeed;
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
141
109100
2bc9a0c04c87 Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents: 108892
diff changeset
142 void croak (char *) NO_RETURN;
21769
07999a47f2ee (croak): Add forward declaration.
Richard M. Stallman <rms@gnu.org>
parents: 21532
diff changeset
143
29812
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
144 /* Temporary used by `sigblock' when defined in terms of signprocmask. */
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
145
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
146 SIGMASKTYPE sigprocmask_set;
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
147
65410
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
148
65657
c6e45e9a83bf * s/aix4-2.h (BROKEN_GET_CURRENT_DIR_NAME): Define
Dan Nicolaescu <dann@ics.uci.edu>
parents: 65580
diff changeset
149 #if !defined (HAVE_GET_CURRENT_DIR_NAME) || defined (BROKEN_GET_CURRENT_DIR_NAME)
65410
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
150
65418
b7f29d144468 [WINDOWSNT]: Add prototype for getwd.
Eli Zaretskii <eliz@gnu.org>
parents: 65410
diff changeset
151 /* Return the current working directory. Returns NULL on errors.
65410
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
152 Any other returned value must be freed with free. This is used
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
153 only when get_current_dir_name is not defined on the system. */
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
154 char*
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
155 get_current_dir_name (void)
65410
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
156 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
157 char *buf;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
158 char *pwd;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
159 struct stat dotstat, pwdstat;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
160 /* If PWD is accurate, use it instead of calling getwd. PWD is
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
161 sometimes a nicer name, and using it may avoid a fatal error if a
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
162 parent directory is searchable but not readable. */
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
163 if ((pwd = getenv ("PWD")) != 0
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
164 && (IS_DIRECTORY_SEP (*pwd) || (*pwd && IS_DEVICE_SEP (pwd[1])))
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
165 && stat (pwd, &pwdstat) == 0
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
166 && stat (".", &dotstat) == 0
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
167 && dotstat.st_ino == pwdstat.st_ino
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
168 && dotstat.st_dev == pwdstat.st_dev
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
169 #ifdef MAXPATHLEN
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
170 && strlen (pwd) < MAXPATHLEN
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
171 #endif
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
172 )
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
173 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
174 buf = (char *) malloc (strlen (pwd) + 1);
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
175 if (!buf)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
176 return NULL;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
177 strcpy (buf, pwd);
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
178 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
179 #ifdef HAVE_GETCWD
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
180 else
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
181 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
182 size_t buf_size = 1024;
65418
b7f29d144468 [WINDOWSNT]: Add prototype for getwd.
Eli Zaretskii <eliz@gnu.org>
parents: 65410
diff changeset
183 buf = (char *) malloc (buf_size);
65410
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
184 if (!buf)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
185 return NULL;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
186 for (;;)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
187 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
188 if (getcwd (buf, buf_size) == buf)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
189 break;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
190 if (errno != ERANGE)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
191 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
192 int tmp_errno = errno;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
193 free (buf);
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
194 errno = tmp_errno;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
195 return NULL;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
196 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
197 buf_size *= 2;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
198 buf = (char *) realloc (buf, buf_size);
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
199 if (!buf)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
200 return NULL;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
201 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
202 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
203 #else
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
204 else
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
205 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
206 /* We need MAXPATHLEN here. */
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
207 buf = (char *) malloc (MAXPATHLEN + 1);
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
208 if (!buf)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
209 return NULL;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
210 if (getwd (buf) == NULL)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
211 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
212 int tmp_errno = errno;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
213 free (buf);
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
214 errno = tmp_errno;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
215 return NULL;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
216 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
217 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
218 #endif
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
219 return buf;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
220 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
221 #endif
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
222
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
223
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
224 /* Discard pending input on all input descriptors. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
225
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
226 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
227 discard_tty_input (void)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 {
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
229 #ifndef WINDOWSNT
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
230 struct emacs_tty buf;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
235 #ifdef MSDOS /* Demacs 1.1.1 91/10/16 HIRANO Satoshi */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
236 while (dos_keyread () != -1)
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
237 ;
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
238 #else /* not MSDOS */
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
239 {
82989
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 82988
diff changeset
240 struct tty_display_info *tty;
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
241 for (tty = tty_list; tty; tty = tty->next)
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
242 {
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
243 if (tty->input) /* Is the device suspended? */
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
244 {
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
245 EMACS_GET_TTY (fileno (tty->input), &buf);
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
246 EMACS_SET_TTY (fileno (tty->input), &buf, 0);
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
247 }
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
248 }
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
249 }
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
250 #endif /* not MSDOS */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
251 #endif /* not WINDOWSNT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
253
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
254
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255 #ifdef SIGTSTP
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
256
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
257 /* Arrange for character C to be read as the next input from
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
258 the terminal.
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
259 XXX What if we have multiple ttys?
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
260 */
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
261
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
262 void
48507
00bcc92f4acf (stuff_char) [PROTOTYPES]: Provide ISO C arglist.
Dave Love <fx@gnu.org>
parents: 46952
diff changeset
263 stuff_char (char c)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264 {
83004
7900111db01c Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents: 82995
diff changeset
265 if (! FRAME_TERMCAP_P (SELECTED_FRAME ()))
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
266 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
267
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 /* Should perhaps error if in batch mode */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269 #ifdef TIOCSTI
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
270 ioctl (fileno (CURTTY()->input), TIOCSTI, &c);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271 #else /* no TIOCSTI */
5167
6ac5c999a7cc (init_baud_rate): Avoid referring to sg uninitialized.
Richard M. Stallman <rms@gnu.org>
parents: 5158
diff changeset
272 error ("Cannot stuff terminal input characters in this version of Unix");
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 #endif /* no TIOCSTI */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 #endif /* SIGTSTP */
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
277
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
278 void
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
279 init_baud_rate (int fd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 if (noninteractive)
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
282 emacs_ospeed = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 {
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
285 #ifdef DOS_NT
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
286 emacs_ospeed = 15;
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
287 #else /* not DOS_NT */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
288 struct termios sg;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
289
5167
6ac5c999a7cc (init_baud_rate): Avoid referring to sg uninitialized.
Richard M. Stallman <rms@gnu.org>
parents: 5158
diff changeset
290 sg.c_cflag = B9600;
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
291 tcgetattr (fd, &sg);
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
292 emacs_ospeed = cfgetospeed (&sg);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
293 #endif /* not DOS_NT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
295
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
296 baud_rate = (emacs_ospeed < sizeof baud_convert / sizeof baud_convert[0]
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
297 ? baud_convert[emacs_ospeed] : 9600);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 if (baud_rate == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 baud_rate = 1200;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
302
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 /*ARGSUSED*/
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
304 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
305 set_exclusive_use (int fd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 #ifdef FIOCLEX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 ioctl (fd, FIOCLEX, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 /* Ok to do nothing if this feature does not exist */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 }
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
312
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 int wait_debugging; /* Set nonzero to make following function work under dbx
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
315 (at least for bsd). */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 SIGTYPE
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
318 wait_for_termination_signal (void)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 {}
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320
109378
4e99d7aa7526 Remove more "#ifdef subprocesses".
Eli Zaretskii <eliz@gnu.org>
parents: 109315
diff changeset
321 #ifndef MSDOS
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 /* Wait for subprocess with process id `pid' to terminate and
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323 make sure it will get eliminated (not remain forever as a zombie) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
325 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
326 wait_for_termination (int pid)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 while (1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 {
96303
ddedcecb18ef * unexnext.c:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96099
diff changeset
330 #if defined (BSD_SYSTEM) || defined (HPUX)
2942
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
331 /* Note that kill returns -1 even if the process is just a zombie now.
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
332 But inevitably a SIGCHLD interrupt should be generated
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
333 and child_sig will do wait3 and make the process go away. */
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
334 /* There is some indication that there is a bug involved with
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
335 termination of subprocesses, perhaps involving a kernel bug too,
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
336 but no idea what it is. Just as a hunch we signal SIGCHLD to see
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
337 if that causes the problem to go away or get worse. */
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
338 sigsetmask (sigmask (SIGCHLD));
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
339 if (0 > kill (pid, 0))
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
340 {
2942
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
341 sigsetmask (SIGEMPTYMASK);
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
342 kill (getpid (), SIGCHLD);
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
343 break;
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
344 }
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
345 if (wait_debugging)
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
346 sleep (1);
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
347 else
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
348 sigpause (SIGEMPTYMASK);
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
349 #else /* not BSD_SYSTEM, and not HPUX version >= 6 */
108200
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
350 #ifdef WINDOWSNT
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
351 wait (0);
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
352 break;
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
353 #else /* not WINDOWSNT */
3301
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
354 sigblock (sigmask (SIGCHLD));
39374
54dd36cef0e2 (wait_for_termination) [POSIX_SIGNALS]: Terminate
Gerd Moellmann <gerd@gnu.org>
parents: 39363
diff changeset
355 errno = 0;
54dd36cef0e2 (wait_for_termination) [POSIX_SIGNALS]: Terminate
Gerd Moellmann <gerd@gnu.org>
parents: 39363
diff changeset
356 if (kill (pid, 0) == -1 && errno == ESRCH)
3301
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
357 {
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
358 sigunblock (sigmask (SIGCHLD));
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
359 break;
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
360 }
39363
50bf161d854c (wait_for_termination): Add a FIXME comment for the use of non-POSIX
Gerd Moellmann <gerd@gnu.org>
parents: 37219
diff changeset
361
44099
0400b67840ba (wait_for_termination): Use sigsuspend rather than sigpause.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43713
diff changeset
362 sigsuspend (&empty_mask);
108200
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
363 #endif /* not WINDOWSNT */
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
364 #endif /* not BSD_SYSTEM, and not HPUX version >= 6 */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 * flush any pending output
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 * (may flush input as well; it does not matter the way we use it)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
372
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
373 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
374 flush_pending_output (int channel)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 {
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
376 #ifndef DOS_NT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 /* If we try this, we get hit with SIGTTIN, because
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 the child's tty belongs to the child's pgrp. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 #ifdef TCFLSH
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381 ioctl (channel, TCFLSH, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 #ifdef TIOCFLUSH
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 int zero = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 /* 3rd arg should be ignored
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 but some 4.2 kernels actually want the address of an int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 and nonzero means something different. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 ioctl (channel, TIOCFLUSH, &zero);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 }
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
393
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 /* Set up the terminal at the other end of a pseudo-terminal that
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395 we will be controlling an inferior through.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 It should not echo or do line-editing, since that is done
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 in Emacs. No padding needed for insertion into an Emacs buffer. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
398
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
399 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
400 child_setup_tty (int out)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 {
109378
4e99d7aa7526 Remove more "#ifdef subprocesses".
Eli Zaretskii <eliz@gnu.org>
parents: 109315
diff changeset
402 #ifndef WINDOWSNT
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
403 struct emacs_tty s;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
404
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
405 EMACS_GET_TTY (out, &s);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
406 s.main.c_oflag |= OPOST; /* Enable output postprocessing */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
407 s.main.c_oflag &= ~ONLCR; /* Disable map of NL to CR-NL on output */
5967
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
408 #ifdef NLDLY
95063
b309a7cbf6e1 (child_setup_tty): Handle systems with NLDLY, without FFDLY.
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
409 /* http://lists.gnu.org/archive/html/emacs-devel/2008-05/msg00406.html
b309a7cbf6e1 (child_setup_tty): Handle systems with NLDLY, without FFDLY.
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
410 Some versions of GNU Hurd do not have FFDLY? */
b309a7cbf6e1 (child_setup_tty): Handle systems with NLDLY, without FFDLY.
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
411 #ifdef FFDLY
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
412 s.main.c_oflag &= ~(NLDLY|CRDLY|TABDLY|BSDLY|VTDLY|FFDLY);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
413 /* No output delays */
95063
b309a7cbf6e1 (child_setup_tty): Handle systems with NLDLY, without FFDLY.
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
414 #else
b309a7cbf6e1 (child_setup_tty): Handle systems with NLDLY, without FFDLY.
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
415 s.main.c_oflag &= ~(NLDLY|CRDLY|TABDLY|BSDLY|VTDLY);
b309a7cbf6e1 (child_setup_tty): Handle systems with NLDLY, without FFDLY.
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
416 /* No output delays */
b309a7cbf6e1 (child_setup_tty): Handle systems with NLDLY, without FFDLY.
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
417 #endif
5967
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
418 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
419 s.main.c_lflag &= ~ECHO; /* Disable echo */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
420 s.main.c_lflag |= ISIG; /* Enable signals */
5967
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
421 #ifdef IUCLC
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
422 s.main.c_iflag &= ~IUCLC; /* Disable downcasing on input. */
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
423 #endif
14390
d16ba81e278a (child_setup_tty): Turn off ISTRIP to pass 8bit. Turn off TAB3 so
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
424 #ifdef ISTRIP
d16ba81e278a (child_setup_tty): Turn off ISTRIP to pass 8bit. Turn off TAB3 so
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
425 s.main.c_iflag &= ~ISTRIP; /* don't strip 8th bit on input */
d16ba81e278a (child_setup_tty): Turn off ISTRIP to pass 8bit. Turn off TAB3 so
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
426 #endif
5972
ccb0f99750e3 (child_setup_tty): Typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 5967
diff changeset
427 #ifdef OLCUC
5967
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
428 s.main.c_oflag &= ~OLCUC; /* Disable upcasing on output. */
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
429 #endif
14390
d16ba81e278a (child_setup_tty): Turn off ISTRIP to pass 8bit. Turn off TAB3 so
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
430 s.main.c_oflag &= ~TAB3; /* Disable tab expansion */
4916
83db42883f64 (child_setup_tty): Make the pty handle 8-bit characters.
Richard M. Stallman <rms@gnu.org>
parents: 4772
diff changeset
431 s.main.c_cflag = (s.main.c_cflag & ~CSIZE) | CS8; /* Don't strip 8th bit */
10108
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
432 s.main.c_cc[VERASE] = CDISABLE; /* disable erase processing */
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
433 s.main.c_cc[VKILL] = CDISABLE; /* disable kill processing */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
434
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 #ifdef HPUX
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
436 s.main.c_cflag = (s.main.c_cflag & ~CBAUD) | B9600; /* baud rate sanity */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 #endif /* HPUX */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
438
56696
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
439 #ifdef SIGNALS_VIA_CHARACTERS
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
440 /* the QUIT and INTR character are used in process_send_signal
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
441 so set them here to something useful. */
56714
ba670a86ca95 (child_setup_tty, init_sys_modes): Use CDISABLE.
Kim F. Storm <storm@cua.dk>
parents: 56696
diff changeset
442 if (s.main.c_cc[VQUIT] == CDISABLE)
56696
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
443 s.main.c_cc[VQUIT] = '\\'&037; /* Control-\ */
56714
ba670a86ca95 (child_setup_tty, init_sys_modes): Use CDISABLE.
Kim F. Storm <storm@cua.dk>
parents: 56696
diff changeset
444 if (s.main.c_cc[VINTR] == CDISABLE)
56696
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
445 s.main.c_cc[VINTR] = 'C'&037; /* Control-C */
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
446 #endif /* not SIGNALS_VIA_CHARACTERS */
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
447
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 #ifdef AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 /* Also, PTY overloads NUL and BREAK.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450 don't ignore break, but don't signal either, so it looks like NUL. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
451 s.main.c_iflag &= ~IGNBRK;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
452 s.main.c_iflag &= ~BRKINT;
56696
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
453 /* rms: Formerly it set s.main.c_cc[VINTR] to 0377 here
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
454 unconditionally. Then a SIGNALS_VIA_CHARACTERS conditional
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
455 would force it to 0377. That looks like duplicated code. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
456 s.main.c_cflag = (s.main.c_cflag & ~CBAUD) | B9600; /* baud rate sanity */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 #endif /* AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458
109623
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
459 /* We originally enabled ICANON (and set VEOF to 04), and then had
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
460 proces.c send additional EOF chars to flush the output when faced
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
461 with long lines, but this leads to weird effects when the
107846
e8ea73860300 Try to solve the problem of spurious EOF chars in long lines of text
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107737
diff changeset
462 subprocess has disabled ICANON and ends up seeing those spurious
e8ea73860300 Try to solve the problem of spurious EOF chars in long lines of text
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107737
diff changeset
463 extra EOFs. So we don't send EOFs any more in
109623
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
464 process.c:send_process. First we tried to disable ICANON by
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
465 default, so if a subsprocess sets up ICANON, it's his problem (or
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
466 the Elisp package that talks to it) to deal with lines that are
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
467 too long. But this disables some features, such as the ability
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
468 to send EOF signals. So we re-enabled ICANON but there is no
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
469 more "send eof to flush" going on (which is wrong and unportable
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
470 in itself). The correct way to handle too much output is to
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
471 buffer what could not be written and then write it again when
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
472 select returns ok for writing. This has it own set of
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
473 problems. Write is now asynchronous, is that a problem? How much
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
474 do we buffer, and what do we do when that limit is reached? */
109612
b7ff82b433d8 Enable ICANON (Bug#6771). Any long line problem must be solved differently.
Jan D. <jan.h.d@swipnet.se>
parents: 109585
diff changeset
475
b7ff82b433d8 Enable ICANON (Bug#6771). Any long line problem must be solved differently.
Jan D. <jan.h.d@swipnet.se>
parents: 109585
diff changeset
476 s.main.c_lflag |= ICANON; /* Enable line editing and eof processing */
b7ff82b433d8 Enable ICANON (Bug#6771). Any long line problem must be solved differently.
Jan D. <jan.h.d@swipnet.se>
parents: 109585
diff changeset
477 s.main.c_cc[VEOF] = 'D'&037; /* Control-D */
109625
0447f8223078 Fix compilation error.
Nick Roberts <nickrob@snap.net.nz>
parents: 109623
diff changeset
478 #if 0 /* These settings only apply to non-ICANON mode. */
107846
e8ea73860300 Try to solve the problem of spurious EOF chars in long lines of text
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107737
diff changeset
479 s.main.c_cc[VMIN] = 1;
e8ea73860300 Try to solve the problem of spurious EOF chars in long lines of text
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107737
diff changeset
480 s.main.c_cc[VTIME] = 0;
109623
7b98612e8827 * src/sysdep.c (child_setup_tty): Comment-out left-over non-ICANON code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 109612
diff changeset
481 #endif
107846
e8ea73860300 Try to solve the problem of spurious EOF chars in long lines of text
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107737
diff changeset
482
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
483 EMACS_SET_TTY (out, &s, 0);
109378
4e99d7aa7526 Remove more "#ifdef subprocesses".
Eli Zaretskii <eliz@gnu.org>
parents: 109315
diff changeset
484 #endif /* not WINDOWSNT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
485 }
109378
4e99d7aa7526 Remove more "#ifdef subprocesses".
Eli Zaretskii <eliz@gnu.org>
parents: 109315
diff changeset
486 #endif /* MSDOS */
4e99d7aa7526 Remove more "#ifdef subprocesses".
Eli Zaretskii <eliz@gnu.org>
parents: 109315
diff changeset
487
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
488
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
489 /* Record a signal code and the handler for it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
490 struct save_signal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
491 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
492 int code;
109100
2bc9a0c04c87 Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents: 108892
diff changeset
493 SIGTYPE (*handler) (int);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 };
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495
109100
2bc9a0c04c87 Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents: 108892
diff changeset
496 static void save_signal_handlers (struct save_signal *);
2bc9a0c04c87 Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents: 108892
diff changeset
497 static void restore_signal_handlers (struct save_signal *);
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
498
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 /* Suspend the Emacs process; give terminal to its superior. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
501 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
502 sys_suspend (void)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 {
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
504 #if defined (SIGTSTP) && !defined (MSDOS)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505
3826
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
506 {
4958
8d58e388e71b (sys_suspend): Use EMACS_GETPGRP macro.
Richard M. Stallman <rms@gnu.org>
parents: 4952
diff changeset
507 int pgrp = EMACS_GETPGRP (0);
3826
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
508 EMACS_KILLPG (pgrp, SIGTSTP);
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
509 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 #else /* No SIGTSTP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 /* On a system where suspending is not implemented,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513 instead fork a subshell and let it talk directly to the terminal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 while we wait. */
6102
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
515 sys_subshell ();
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
516
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
517 #endif /* no SIGTSTP */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
518 }
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
519
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
520 /* Fork a subshell. */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
521
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
522 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
523 sys_subshell (void)
6102
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
524 {
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
525 #ifdef DOS_NT /* Demacs 1.1.2 91/10/20 Manabu Higashida */
6102
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
526 int st;
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
527 char oldwd[MAXPATHLEN+1]; /* Fixed length is safe on MSDOS. */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
528 #endif
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
529 int pid;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530 struct save_signal saved_handlers[5];
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
531 Lisp_Object dir;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
532 unsigned char *str = 0;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
533 int len;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
535 saved_handlers[0].code = SIGINT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
536 saved_handlers[1].code = SIGQUIT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
537 saved_handlers[2].code = SIGTERM;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
538 #ifdef SIGIO
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539 saved_handlers[3].code = SIGIO;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
540 saved_handlers[4].code = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
542 saved_handlers[3].code = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
545 /* Mentioning current_buffer->buffer would mean including buffer.h,
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
546 which somehow wedges the hp compiler. So instead... */
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
547
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
548 dir = intern ("default-directory");
9426
4dd2d351ea53 (sys_subshell): Use NILP macro directly, not its expansion. Previous code was
Karl Heuer <kwzh@gnu.org>
parents: 9279
diff changeset
549 if (NILP (Fboundp (dir)))
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
550 goto xyzzy;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
551 dir = Fsymbol_value (dir);
9110
c0eefdfd11f4 (sys_subshell): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9082
diff changeset
552 if (!STRINGP (dir))
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
553 goto xyzzy;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
554
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
555 dir = expand_and_dir_to_file (Funhandled_file_name_directory (dir), Qnil);
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46298
diff changeset
556 str = (unsigned char *) alloca (SCHARS (dir) + 2);
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46298
diff changeset
557 len = SCHARS (dir);
109165
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
558 memcpy (str, SDATA (dir), len);
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
559 if (str[len - 1] != '/') str[len++] = '/';
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
560 str[len] = 0;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
561 xyzzy:
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
562
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
563 #ifdef DOS_NT
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
564 pid = 0;
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
565 save_signal_handlers (saved_handlers);
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
566 synch_process_alive = 1;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
567 #else
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
568 pid = vfork ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569 if (pid == -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 error ("Can't spawn subshell");
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
571 #endif
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
572
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 if (pid == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574 {
109726
64732fa6188a Use const char* instead of char*.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109671
diff changeset
575 const char *sh = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
576
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
577 #ifdef DOS_NT /* MW, Aug 1993 */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
578 getwd (oldwd);
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
579 if (sh == 0)
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
580 sh = (char *) egetenv ("SUSPEND"); /* KFS, 1994-12-14 */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
581 #endif
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
582 if (sh == 0)
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
583 sh = (char *) egetenv ("SHELL");
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
584 if (sh == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
585 sh = "sh";
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
586
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
587 /* Use our buffer's default directory for the subshell. */
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
588 if (str)
22336
0af99a2dc706 (sys_subshell): Cast arg to chdir.
Karl Heuer <kwzh@gnu.org>
parents: 21843
diff changeset
589 chdir ((char *) str);
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
590
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
591 close_process_descs (); /* Close Emacs's pipes/ptys */
1203
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
592
7482
8193d122cf6e (sys_subshell): PRIO_PROCESS renamed to SET_EMACS_PRIORITY.
Richard M. Stallman <rms@gnu.org>
parents: 7326
diff changeset
593 #ifdef SET_EMACS_PRIORITY
1203
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
594 {
43713
f92c4d87863a Change defvar_int def and vars to use EMACS_INT instead of just int.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43708
diff changeset
595 extern EMACS_INT emacs_priority;
1203
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
596
7482
8193d122cf6e (sys_subshell): PRIO_PROCESS renamed to SET_EMACS_PRIORITY.
Richard M. Stallman <rms@gnu.org>
parents: 7326
diff changeset
597 if (emacs_priority < 0)
1203
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
598 nice (-emacs_priority);
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
599 }
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
600 #endif
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
601
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
602 #ifdef MSDOS /* Demacs 1.1.2 91/10/20 Manabu Higashida */
43706
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
603 {
43708
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
604 char *epwd = getenv ("PWD");
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
605 char old_pwd[MAXPATHLEN+1+4];
43706
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
606
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
607 /* If PWD is set, pass it with corrected value. */
43708
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
608 if (epwd)
43706
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
609 {
43708
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
610 strcpy (old_pwd, epwd);
43706
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
611 if (str[len - 1] == '/')
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
612 str[len - 1] = '\0';
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
613 setenv ("PWD", str, 1);
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
614 }
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
615 st = system (sh);
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
616 chdir (oldwd);
43708
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
617 if (epwd)
43706
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
618 putenv (old_pwd); /* restore previous value */
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
619 }
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
620 #else /* not MSDOS */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
621 #ifdef WINDOWSNT
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
622 /* Waits for process completion */
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
623 pid = _spawnlp (_P_WAIT, sh, sh, NULL);
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
624 chdir (oldwd);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
625 if (pid == -1)
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
626 write (1, "Can't execute subshell", 22);
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
627 #else /* not WINDOWSNT */
59937
89e653e08ed9 (sys_subshell): Properly terminate execlp argument list.
Andreas Schwab <schwab@suse.de>
parents: 58986
diff changeset
628 execlp (sh, sh, (char *) 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
629 write (1, "Can't execute subshell", 22);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
630 _exit (1);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
631 #endif /* not WINDOWSNT */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
632 #endif /* not MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
633 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
634
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
635 /* Do this now if we did not do it before. */
107733
84b961690802 Remove support for DJGPP v1.x (bug#5813).
Eli Zaretskii <eliz@gnu.org>
parents: 107722
diff changeset
636 #ifndef MSDOS
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
637 save_signal_handlers (saved_handlers);
2939
34492be68ced * sysdep.c (sys_suspend): Set synch_process_alive, so that
Jim Blandy <jimb@redhat.com>
parents: 2913
diff changeset
638 synch_process_alive = 1;
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
639 #endif
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
640
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
641 #ifndef DOS_NT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
642 wait_for_termination (pid);
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
643 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644 restore_signal_handlers (saved_handlers);
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
645 synch_process_alive = 0;
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32236
diff changeset
646 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
647
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
648 static void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
649 save_signal_handlers (struct save_signal *saved_handlers)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
650 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 while (saved_handlers->code)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
652 {
692
681c352bbf30 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 648
diff changeset
653 saved_handlers->handler
109100
2bc9a0c04c87 Remove __P and P_ from .c and .m files and definition of P_
Jan D <jan.h.d@swipnet.se>
parents: 108892
diff changeset
654 = (SIGTYPE (*) (int)) signal (saved_handlers->code, SIG_IGN);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655 saved_handlers++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
659 static void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
660 restore_signal_handlers (struct save_signal *saved_handlers)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
662 while (saved_handlers->code)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
663 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
664 signal (saved_handlers->code, saved_handlers->handler);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
665 saved_handlers++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
666 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
667 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
668
82995
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
669 #ifndef SIGIO
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
670 /* If SIGIO is broken, don't do anything. */
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
671 void
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
672 init_sigio (int fd)
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
673 {
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
674 }
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
675
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
676 void
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
677 reset_sigio (int fd)
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
678 {
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
679 }
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
680
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
681 void
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
682 request_sigio (void)
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
683 {
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
684 }
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
685
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
686 void
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
687 unrequest_sigio (void)
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
688 {
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
689 }
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
690
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
691 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
692 #ifdef F_SETFL
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
693
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
694 int old_fcntl_flags[MAXDESC];
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
695
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
696 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
697 init_sigio (int fd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
698 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
699 #ifdef FASYNC
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
700 old_fcntl_flags[fd] = fcntl (fd, F_GETFL, 0) & ~FASYNC;
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
701 fcntl (fd, F_SETFL, old_fcntl_flags[fd] | FASYNC);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702 #endif
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
703 interrupts_deferred = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
704 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705
20379
e6db4b8d2834 (reset_sigio): Return void.
Andreas Schwab <schwab@suse.de>
parents: 20367
diff changeset
706 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
707 reset_sigio (int fd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708 {
82995
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
709 #ifdef FASYNC
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
710 fcntl (fd, F_SETFL, old_fcntl_flags[fd]);
82995
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
711 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
712 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
714 #ifdef FASYNC /* F_SETFL does not imply existence of FASYNC */
83004
7900111db01c Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents: 82995
diff changeset
715 /* XXX Uhm, FASYNC is not used anymore here. */
83385
1cd4072747c6 Merged from miles@gnu.org--gnu-2005 (patch 593-595)
Karoly Lorentey <lorentey@elte.hu>
parents: 83383 66065
diff changeset
716 /* XXX Yeah, but you need it for SIGIO, don't you? */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
718 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
719 request_sigio (void)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720 {
83454
845a93c68e9a Fix C-g during `make-network-process'. (Reported by Mark Plaksin.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83431
diff changeset
721 if (noninteractive)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
722 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
723
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724 #ifdef SIGWINCH
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
725 sigunblock (sigmask (SIGWINCH));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 #endif
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
727 sigunblock (sigmask (SIGIO));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 interrupts_deferred = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
732 void
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
733 unrequest_sigio (void)
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
734 {
83454
845a93c68e9a Fix C-g during `make-network-process'. (Reported by Mark Plaksin.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83431
diff changeset
735 if (noninteractive)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
736 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
737
83454
845a93c68e9a Fix C-g during `make-network-process'. (Reported by Mark Plaksin.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83431
diff changeset
738 #if 0 /* XXX What's wrong with blocking SIGIO under X? */
845a93c68e9a Fix C-g during `make-network-process'. (Reported by Mark Plaksin.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83431
diff changeset
739 if (x_display_list)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
740 return;
83004
7900111db01c Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents: 82995
diff changeset
741 #endif
83454
845a93c68e9a Fix C-g during `make-network-process'. (Reported by Mark Plaksin.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83431
diff changeset
742
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743 #ifdef SIGWINCH
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
744 sigblock (sigmask (SIGWINCH));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745 #endif
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
746 sigblock (sigmask (SIGIO));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747 interrupts_deferred = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 #else /* no FASYNC */
46952
2ff6f626f0ce [MSDOS]: Don't define request_sigio and
Eli Zaretskii <eliz@gnu.org>
parents: 46922
diff changeset
751 #ifndef MSDOS
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
752
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
753 void
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
754 request_sigio (void)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 {
66065
6345e0814501 (request_sigio, unrequest_sigio): Do nothing in
Andreas Schwab <schwab@suse.de>
parents: 65657
diff changeset
756 if (noninteractive || read_socket_hook)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
757 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
758
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
759 croak ("request_sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
760 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
761
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
762 void
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
763 unrequest_sigio (void)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
764 {
66065
6345e0814501 (request_sigio, unrequest_sigio): Do nothing in
Andreas Schwab <schwab@suse.de>
parents: 65657
diff changeset
765 if (noninteractive || read_socket_hook)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
766 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
767
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768 croak ("unrequest_sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
769 }
46952
2ff6f626f0ce [MSDOS]: Don't define request_sigio and
Eli Zaretskii <eliz@gnu.org>
parents: 46922
diff changeset
770
2ff6f626f0ce [MSDOS]: Don't define request_sigio and
Eli Zaretskii <eliz@gnu.org>
parents: 46922
diff changeset
771 #endif /* MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772 #endif /* FASYNC */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
773 #endif /* F_SETFL */
82995
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
774 #endif /* SIGIO */
108235
9aa39b975b8a Remove BSD_PGRPS.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108234
diff changeset
775
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
776
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
777 /* Getting and setting emacs_tty structures. */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
778
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
779 /* Set *TC to the parameters associated with the terminal FD.
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
780 Return zero if all's well, or -1 if we ran into an error we
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
781 couldn't deal with. */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
782 int
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
783 emacs_get_tty (int fd, struct emacs_tty *settings)
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
784 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
785 /* Retrieve the primary parameters - baud rate, character size, etcetera. */
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
786 #ifndef DOS_NT
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
787 /* We have those nifty POSIX tcmumbleattr functions. */
109165
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
788 memset (&settings->main, 0, sizeof (settings->main));
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
789 if (tcgetattr (fd, &settings->main) < 0)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
790 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
791 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
792
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
793 /* We have survived the tempest. */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
794 return 0;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
795 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
796
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
797
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
798 /* Set the parameters of the tty on FD according to the contents of
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
799 *SETTINGS. If FLUSHP is non-zero, we discard input.
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
800 Return 0 if all went well, and -1 if anything failed. */
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
801
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
802 int
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
803 emacs_set_tty (int fd, struct emacs_tty *settings, int flushp)
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
804 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
805 /* Set the primary parameters - baud rate, character size, etcetera. */
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
806 #ifndef DOS_NT
3321
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
807 int i;
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
808 /* We have those nifty POSIX tcmumbleattr functions.
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
809 William J. Smith <wjs@wiis.wang.com> writes:
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
810 "POSIX 1003.1 defines tcsetattr to return success if it was
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
811 able to perform any of the requested actions, even if some
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
812 of the requested actions could not be performed.
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
813 We must read settings back to ensure tty setup properly.
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
814 AIX requires this to keep tty from hanging occasionally." */
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
815 /* This make sure that we don't loop indefinitely in here. */
3321
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
816 for (i = 0 ; i < 10 ; i++)
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
817 if (tcsetattr (fd, flushp ? TCSAFLUSH : TCSADRAIN, &settings->main) < 0)
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
818 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
819 if (errno == EINTR)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
820 continue;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
821 else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
822 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
823 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
824 else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
825 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
826 struct termios new;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
827
109165
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
828 memset (&new, 0, sizeof (new));
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
829 /* Get the current settings, and see if they're what we asked for. */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
830 tcgetattr (fd, &new);
3321
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
831 /* We cannot use memcmp on the whole structure here because under
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
832 * aix386 the termios structure has some reserved field that may
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
833 * not be filled in.
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
834 */
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
835 if ( new.c_iflag == settings->main.c_iflag
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
836 && new.c_oflag == settings->main.c_oflag
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
837 && new.c_cflag == settings->main.c_cflag
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
838 && new.c_lflag == settings->main.c_lflag
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
839 && memcmp (new.c_cc, settings->main.c_cc, NCCS) == 0)
3321
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
840 break;
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
841 else
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
842 continue;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
843 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
844 #endif
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
845
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
846 /* We have survived the tempest. */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
847 return 0;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
848 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
849
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
850
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
851
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
852 #ifdef F_SETOWN
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
853 int old_fcntl_owner[MAXDESC];
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
854 #endif /* F_SETOWN */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
856 /* This may also be defined in stdio,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
857 but if so, this does no harm,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
858 and using the same name avoids wasting the other one's space. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
859
97119
b57392641da7 * systty.h (sensemode): Remove empty #if. Remove reference to
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97043
diff changeset
860 #if defined (USG)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
861 unsigned char _sobuf[BUFSIZ+8];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
863 char _sobuf[BUFSIZ];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
864 #endif
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
865
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
866 /* Initialize the terminal mode on all tty devices that are currently
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
867 open. */
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
868
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
869 void
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
870 init_all_sys_modes (void)
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
871 {
82989
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 82988
diff changeset
872 struct tty_display_info *tty;
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
873 for (tty = tty_list; tty; tty = tty->next)
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
874 init_sys_modes (tty);
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
875 }
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
876
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
877 /* Initialize the terminal mode on the given tty device. */
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
878
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
879 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
880 init_sys_modes (struct tty_display_info *tty_out)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
881 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
882 struct emacs_tty tty;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
883
17869
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
884 Vtty_erase_char = Qnil;
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
885
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
886 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
887 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
888
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
889 if (!tty_out->output)
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
890 return; /* The tty is suspended. */
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
891
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
892 if (! tty_out->old_tty)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
893 tty_out->old_tty = (struct emacs_tty *) xmalloc (sizeof (struct emacs_tty));
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
894
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
895 EMACS_GET_TTY (fileno (tty_out->input), tty_out->old_tty);
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
896
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
897 tty = *tty_out->old_tty;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
898
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
899 #if !defined (DOS_NT)
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
900 XSETINT (Vtty_erase_char, tty.main.c_cc[VERASE]);
17869
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
901
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
902 tty.main.c_iflag |= (IGNBRK); /* Ignore break condition */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
903 tty.main.c_iflag &= ~ICRNL; /* Disable map of CR to NL on input */
14790
70553c545976 (init_sys_modes): Clear INLCR like ICRNL.
Richard M. Stallman <rms@gnu.org>
parents: 14390
diff changeset
904 #ifdef INLCR /* I'm just being cautious,
70553c545976 (init_sys_modes): Clear INLCR like ICRNL.
Richard M. Stallman <rms@gnu.org>
parents: 14390
diff changeset
905 since I can't check how widespread INLCR is--rms. */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
906 tty.main.c_iflag &= ~INLCR; /* Disable map of NL to CR on input */
14790
70553c545976 (init_sys_modes): Clear INLCR like ICRNL.
Richard M. Stallman <rms@gnu.org>
parents: 14390
diff changeset
907 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
908 #ifdef ISTRIP
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
909 tty.main.c_iflag &= ~ISTRIP; /* don't strip 8th bit on input */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910 #endif
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
911 tty.main.c_lflag &= ~ECHO; /* Disable echo */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
912 tty.main.c_lflag &= ~ICANON; /* Disable erase/kill processing */
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
913 #ifdef IEXTEN
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
914 tty.main.c_lflag &= ~IEXTEN; /* Disable other editing characters. */
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
915 #endif
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
916 tty.main.c_lflag |= ISIG; /* Enable signals */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
917 if (tty_out->flow_control)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
918 {
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
919 tty.main.c_iflag |= IXON; /* Enable start/stop output control */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
920 #ifdef IXANY
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
921 tty.main.c_iflag &= ~IXANY;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
922 #endif /* IXANY */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
923 }
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
924 else
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
925 tty.main.c_iflag &= ~IXON; /* Disable start/stop output control */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
926 tty.main.c_oflag &= ~ONLCR; /* Disable map of NL to CR-NL
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
927 on output */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
928 tty.main.c_oflag &= ~TAB3; /* Disable tab expansion */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
929 #ifdef CS8
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
930 if (tty_out->meta_key)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
931 {
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
932 tty.main.c_cflag |= CS8; /* allow 8th bit on input */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
933 tty.main.c_cflag &= ~PARENB;/* Don't check parity */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
934 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
935 #endif
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
936 if (tty_out->input == stdin)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
937 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
938 tty.main.c_cc[VINTR] = quit_char; /* C-g (usually) gives SIGINT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
939 /* Set up C-g for both SIGQUIT and SIGINT.
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
940 We don't know which we will get, but we handle both alike
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
941 so which one it really gives us does not matter. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
942 tty.main.c_cc[VQUIT] = quit_char;
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
943 }
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
944 else
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
945 {
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
946 /* We normally don't get interrupt or quit signals from tty
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
947 devices other than our controlling terminal; therefore,
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
948 we must handle C-g as normal input. Unfortunately, this
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
949 means that the interrupt and quit feature must be
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
950 disabled on secondary ttys, or we would not even see the
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
951 keypress.
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
952
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
953 Note that even though emacsclient could have special code
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
954 to pass SIGINT to Emacs, we should _not_ enable
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
955 interrupt/quit keys for emacsclient frames. This means
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
956 that we can't break out of loops in C code from a
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
957 secondary tty frame, but we can always decide what
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
958 display the C-g came from, which is more important from a
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
959 usability point of view. (Consider the case when two
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
960 people work together using the same Emacs instance.) */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
961 tty.main.c_cc[VINTR] = CDISABLE;
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
962 tty.main.c_cc[VQUIT] = CDISABLE;
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
963 }
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
964 tty.main.c_cc[VMIN] = 1; /* Input should wait for at least 1 char */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
965 tty.main.c_cc[VTIME] = 0; /* no matter how long that takes. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
966 #ifdef VSWTCH
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
967 tty.main.c_cc[VSWTCH] = CDISABLE; /* Turn off shell layering use
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
968 of C-z */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
969 #endif /* VSWTCH */
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
970
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
971 #ifdef VSUSP
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
972 tty.main.c_cc[VSUSP] = CDISABLE; /* Turn off handling of C-z. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
973 #endif /* VSUSP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
974 #ifdef V_DSUSP
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
975 tty.main.c_cc[V_DSUSP] = CDISABLE; /* Turn off handling of C-y. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
976 #endif /* V_DSUSP */
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
977 #ifdef VDSUSP /* Some systems have VDSUSP, some have V_DSUSP. */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
978 tty.main.c_cc[VDSUSP] = CDISABLE;
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
979 #endif /* VDSUSP */
3472
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
980 #ifdef VLNEXT
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
981 tty.main.c_cc[VLNEXT] = CDISABLE;
3472
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
982 #endif /* VLNEXT */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
983 #ifdef VREPRINT
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
984 tty.main.c_cc[VREPRINT] = CDISABLE;
3472
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
985 #endif /* VREPRINT */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
986 #ifdef VWERASE
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
987 tty.main.c_cc[VWERASE] = CDISABLE;
3472
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
988 #endif /* VWERASE */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
989 #ifdef VDISCARD
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
990 tty.main.c_cc[VDISCARD] = CDISABLE;
3472
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
991 #endif /* VDISCARD */
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
992
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
993 if (tty_out->flow_control)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
994 {
8104
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
995 #ifdef VSTART
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
996 tty.main.c_cc[VSTART] = '\021';
8104
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
997 #endif /* VSTART */
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
998 #ifdef VSTOP
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
999 tty.main.c_cc[VSTOP] = '\023';
8104
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1000 #endif /* VSTOP */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1001 }
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1002 else
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1003 {
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1004 #ifdef VSTART
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1005 tty.main.c_cc[VSTART] = CDISABLE;
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1006 #endif /* VSTART */
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1007 #ifdef VSTOP
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1008 tty.main.c_cc[VSTOP] = CDISABLE;
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1009 #endif /* VSTOP */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1010 }
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1011
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1012 #ifdef AIX
83196
22658e29bd48 Merged in changes from CVS trunk.
Karoly Lorentey <lorentey@elte.hu>
parents: 83194 56714
diff changeset
1013 tty.main.c_cc[VSTRT] = CDISABLE;
22658e29bd48 Merged in changes from CVS trunk.
Karoly Lorentey <lorentey@elte.hu>
parents: 83194 56714
diff changeset
1014 tty.main.c_cc[VSTOP] = CDISABLE;
22658e29bd48 Merged in changes from CVS trunk.
Karoly Lorentey <lorentey@elte.hu>
parents: 83194 56714
diff changeset
1015 tty.main.c_cc[VSUSP] = CDISABLE;
22658e29bd48 Merged in changes from CVS trunk.
Karoly Lorentey <lorentey@elte.hu>
parents: 83194 56714
diff changeset
1016 tty.main.c_cc[VDSUSP] = CDISABLE;
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1017 if (tty_out->flow_control)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1018 {
18232
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1019 #ifdef VSTART
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1020 tty.main.c_cc[VSTART] = '\021';
18232
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1021 #endif /* VSTART */
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1022 #ifdef VSTOP
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1023 tty.main.c_cc[VSTOP] = '\023';
18232
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1024 #endif /* VSTOP */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1025 }
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1026 /* Also, PTY overloads NUL and BREAK.
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1027 don't ignore break, but don't signal either, so it looks like NUL.
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1028 This really serves a purpose only if running in an XTERM window
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1029 or via TELNET or the like, but does no harm elsewhere. */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1030 tty.main.c_iflag &= ~IGNBRK;
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1031 tty.main.c_iflag &= ~BRKINT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1032 #endif
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1033 #endif /* not DOS_NT */
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
1034
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1035 #ifdef MSDOS /* Demacs 1.1.2 91/10/20 Manabu Higashida, MW Aug 1993 */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1036 if (!tty_out->term_initted)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1037 internal_terminal_init ();
97652
d711e8ee1f6b (init_sys_modes): Call dos_ttraw with tty_out as argument.
Eli Zaretskii <eliz@gnu.org>
parents: 97142
diff changeset
1038 dos_ttraw (tty_out);
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1039 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1040
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1041 EMACS_SET_TTY (fileno (tty_out->input), &tty, 0);
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1042
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1043 /* This code added to insure that, if flow-control is not to be used,
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1044 we have an unlocked terminal at the start. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1045
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1046 #ifdef TCXONC
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1047 if (!tty_out->flow_control) ioctl (fileno (tty_out->input), TCXONC, 1);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1048 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1049 #ifdef TIOCSTART
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1050 if (!tty_out->flow_control) ioctl (fileno (tty_out->input), TIOCSTART, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1051 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1052
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
1053 #if !defined (DOS_NT)
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
1054 #ifdef TCOON
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1055 if (!tty_out->flow_control) tcflow (fileno (tty_out->input), TCOON);
9937
cd2db9aeeb25 (init_sys_modes): Maybe call tcflow.
Richard M. Stallman <rms@gnu.org>
parents: 9794
diff changeset
1056 #endif
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
1057 #endif
9937
cd2db9aeeb25 (init_sys_modes): Maybe call tcflow.
Richard M. Stallman <rms@gnu.org>
parents: 9794
diff changeset
1058
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1059 #ifdef F_SETFL
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
1060 #ifdef F_GETOWN /* F_SETFL does not imply existence of F_GETOWN */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1061 if (interrupt_input)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1062 {
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1063 old_fcntl_owner[fileno (tty_out->input)] =
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1064 fcntl (fileno (tty_out->input), F_GETOWN, 0);
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1065 fcntl (fileno (tty_out->input), F_SETOWN, getpid ());
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1066 init_sigio (fileno (tty_out->input));
80994
62b6aa7f8c37 Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents: 80981
diff changeset
1067 #ifdef HAVE_GPM
84956
29a2854dd601 (narrow_foreground_group, widen_foreground_group): Static.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84848
diff changeset
1068 if (gpm_tty == tty_out)
80981
f454fb9563fd (init_sys_modes): Make gpm_fd nonblocking
Nick Roberts <nickrob@snap.net.nz>
parents: 77349
diff changeset
1069 {
84956
29a2854dd601 (narrow_foreground_group, widen_foreground_group): Static.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84848
diff changeset
1070 /* Arrange for mouse events to give us SIGIO signals. */
80981
f454fb9563fd (init_sys_modes): Make gpm_fd nonblocking
Nick Roberts <nickrob@snap.net.nz>
parents: 77349
diff changeset
1071 fcntl (gpm_fd, F_SETOWN, getpid ());
81105
1f40aca3eadc (init_sys_modes): Add rather than replace with
Nick Roberts <nickrob@snap.net.nz>
parents: 80994
diff changeset
1072 fcntl (gpm_fd, F_SETFL, fcntl (gpm_fd, F_GETFL, 0) | O_NONBLOCK);
80981
f454fb9563fd (init_sys_modes): Make gpm_fd nonblocking
Nick Roberts <nickrob@snap.net.nz>
parents: 77349
diff changeset
1073 init_sigio (gpm_fd);
f454fb9563fd (init_sys_modes): Make gpm_fd nonblocking
Nick Roberts <nickrob@snap.net.nz>
parents: 77349
diff changeset
1074 }
80994
62b6aa7f8c37 Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents: 80981
diff changeset
1075 #endif /* HAVE_GPM */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1076 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1077 #endif /* F_GETOWN */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1078 #endif /* F_SETFL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1079
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1080 #ifdef _IOFBF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1081 /* This symbol is defined on recent USG systems.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1082 Someone says without this call USG won't really buffer the file
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1083 even with a call to setbuf. */
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1084 setvbuf (tty_out->output, (char *) _sobuf, _IOFBF, sizeof _sobuf);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1085 #else
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1086 setbuf (tty_out->output, (char *) _sobuf);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1087 #endif
82995
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
1088
84848
d8f4346c8ee1 (init_sys_modes): Use set_terminal_modes_hook.
Jason Rumney <jasonr@gnu.org>
parents: 84768
diff changeset
1089 if (tty_out->terminal->set_terminal_modes_hook)
d8f4346c8ee1 (init_sys_modes): Use set_terminal_modes_hook.
Jason Rumney <jasonr@gnu.org>
parents: 84768
diff changeset
1090 tty_out->terminal->set_terminal_modes_hook (tty_out->terminal);
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1091
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1092 if (!tty_out->term_initted)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1093 {
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1094 Lisp_Object tail, frame;
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1095 FOR_EACH_FRAME (tail, frame)
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1096 {
82990
2ecd1f669db9 Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
1097 /* XXX This needs to be revised. */
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1098 if (FRAME_TERMCAP_P (XFRAME (frame))
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1099 && FRAME_TTY (XFRAME (frame)) == tty_out)
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1100 init_frame_faces (XFRAME (frame));
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1101 }
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1102 }
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1103
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1104 if (tty_out->term_initted && no_redraw_on_reenter)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1105 {
107713
41747909cb4b Get rid of the direct_output optimizations.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106815
diff changeset
1106 /* We used to call "direct_output_forward_char(0)" here,
41747909cb4b Get rid of the direct_output optimizations.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106815
diff changeset
1107 but it's not clear why, since it may not do anything anyway. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1108 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1109 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1110 {
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1111 Lisp_Object tail, frame;
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1112 frame_garbaged = 1;
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1113 FOR_EACH_FRAME (tail, frame)
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1114 {
98505
47fd5fc61588 (init_sys_modes): Set FRAME_GARBAGED_P for MSDOS frames as well as for TTY.
Eli Zaretskii <eliz@gnu.org>
parents: 97652
diff changeset
1115 if ((FRAME_TERMCAP_P (XFRAME (frame))
47fd5fc61588 (init_sys_modes): Set FRAME_GARBAGED_P for MSDOS frames as well as for TTY.
Eli Zaretskii <eliz@gnu.org>
parents: 97652
diff changeset
1116 || FRAME_MSDOS_P (XFRAME (frame)))
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1117 && FRAME_TTY (XFRAME (frame)) == tty_out)
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1118 FRAME_GARBAGED_P (XFRAME (frame)) = 1;
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1119 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1120 }
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1121
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1122 tty_out->term_initted = 1;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1123 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1124
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1125 /* Return nonzero if safe to use tabs in output.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1126 At the time this is called, init_sys_modes has not been done yet. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1127
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1128 int
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1129 tabs_safe_p (int fd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1130 {
53232
22aaf1e5fbe6 Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents: 53231
diff changeset
1131 struct emacs_tty etty;
22aaf1e5fbe6 Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents: 53231
diff changeset
1132
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1133 EMACS_GET_TTY (fd, &etty);
53232
22aaf1e5fbe6 Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents: 53231
diff changeset
1134 return EMACS_TTY_TABS_OK (&etty);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1135 }
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1136
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1137 /* Get terminal size from system.
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1138 Store number of lines into *HEIGHTP and width into *WIDTHP.
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1139 We store 0 if there's no valid information. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1140
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1141 void
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1142 get_tty_size (int fd, int *widthp, int *heightp)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1143 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1144
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1145 #ifdef TIOCGWINSZ
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1146
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1147 /* BSD-style. */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1148 struct winsize size;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1149
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1150 if (ioctl (fd, TIOCGWINSZ, &size) == -1)
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1151 *widthp = *heightp = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1152 else
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1153 {
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1154 *widthp = size.ws_col;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1155 *heightp = size.ws_row;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1156 }
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1157
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1158 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1159 #ifdef TIOCGSIZE
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1160
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1161 /* SunOS - style. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1162 struct ttysize size;
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1163
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1164 if (ioctl (fd, TIOCGSIZE, &size) == -1)
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1165 *widthp = *heightp = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1166 else
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1167 {
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1168 *widthp = size.ts_cols;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1169 *heightp = size.ts_lines;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1170 }
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1171
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1172 #else
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1173 #ifdef MSDOS
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1174 *widthp = ScreenCols ();
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1175 *heightp = ScreenRows ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1176 #else /* system doesn't know size */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1177 *widthp = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1178 *heightp = 0;
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1179 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1180 #endif /* not SunOS-style */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1181 #endif /* not BSD-style */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1182 }
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1183
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1184 /* Set the logical window size associated with descriptor FD
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1185 to HEIGHT and WIDTH. This is used mainly with ptys. */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1186
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1187 int
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
1188 set_window_size (int fd, int height, int width)
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1189 {
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1190 #ifdef TIOCSWINSZ
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1191
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1192 /* BSD-style. */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1193 struct winsize size;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1194 size.ws_row = height;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1195 size.ws_col = width;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1196
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1197 if (ioctl (fd, TIOCSWINSZ, &size) == -1)
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1198 return 0; /* error */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1199 else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1200 return 1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1201
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1202 #else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1203 #ifdef TIOCSSIZE
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1204
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1205 /* SunOS - style. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1206 struct ttysize size;
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1207 size.ts_lines = height;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1208 size.ts_cols = width;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1209
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1210 if (ioctl (fd, TIOCGSIZE, &size) == -1)
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1211 return 0;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1212 else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1213 return 1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1214 #else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1215 return -1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1216 #endif /* not SunOS-style */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1217 #endif /* not BSD-style */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1218 }
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1219
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1220
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1221
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1222 /* Prepare all terminal devices for exiting Emacs. */
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1223
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1224 void
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1225 reset_all_sys_modes (void)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1226 {
82989
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 82988
diff changeset
1227 struct tty_display_info *tty;
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1228 for (tty = tty_list; tty; tty = tty->next)
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1229 reset_sys_modes (tty);
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1230 }
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1231
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
1232 /* Prepare the terminal for closing it; move the cursor to the
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1233 bottom of the frame, turn off interrupt-driven I/O, etc. */
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1234
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1235 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
1236 reset_sys_modes (struct tty_display_info *tty_out)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1237 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1238 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1239 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1240 fflush (stdout);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1241 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1242 }
53229
33c3c7c16e13 lib-src/emacsclient.c: Implemented --here option (open a new Emacs tty). Needs more work.
Karoly Lorentey <lorentey@elte.hu>
parents: 53226
diff changeset
1243 if (!tty_out->term_initted)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1244 return;
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1245
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1246 if (!tty_out->output)
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1247 return; /* The tty is suspended. */
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1248
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1249 /* Go to and clear the last line of the terminal. */
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1250
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
1251 cmgoto (tty_out, FrameRows (tty_out) - 1, 0);
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1252
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1253 /* Code adapted from tty_clear_end_of_line. */
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1254 if (tty_out->TS_clr_line)
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1255 {
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1256 emacs_tputs (tty_out, tty_out->TS_clr_line, 1, cmputc);
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1257 }
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1258 else
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1259 { /* have to do it the hard way */
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1260 int i;
83420
521d3f18b3d1 Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents: 83385
diff changeset
1261 tty_turn_off_insert (tty_out);
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1262
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1263 for (i = curX (tty_out); i < FrameCols (tty_out) - 1; i++)
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1264 {
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1265 fputc (' ', tty_out->output);
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1266 }
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1267 }
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1268
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
1269 cmgoto (tty_out, FrameRows (tty_out) - 1, 0);
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
1270 fflush (tty_out->output);
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1271
84848
d8f4346c8ee1 (init_sys_modes): Use set_terminal_modes_hook.
Jason Rumney <jasonr@gnu.org>
parents: 84768
diff changeset
1272 if (tty_out->terminal->reset_terminal_modes_hook)
d8f4346c8ee1 (init_sys_modes): Use set_terminal_modes_hook.
Jason Rumney <jasonr@gnu.org>
parents: 84768
diff changeset
1273 tty_out->terminal->reset_terminal_modes_hook (tty_out->terminal);
83330
233c9974025b Fix the original cause of the "arrow keys don't work on screen" bug.
Karoly Lorentey <lorentey@elte.hu>
parents: 83318
diff changeset
1274
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
1275 #ifdef BSD_SYSTEM
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1276 /* Avoid possible loss of output when changing terminal modes. */
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1277 fsync (fileno (tty_out->output));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1278 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1279
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1280 #ifdef F_SETFL
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
1281 #ifdef F_SETOWN /* F_SETFL does not imply existence of F_SETOWN */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1282 if (interrupt_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1283 {
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1284 reset_sigio (fileno (tty_out->input));
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1285 fcntl (fileno (tty_out->input), F_SETOWN,
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1286 old_fcntl_owner[fileno (tty_out->input)]);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1287 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1288 #endif /* F_SETOWN */
6489
6c138b61c8b4 (reset_sys_modes): Turn off O_NDELAY.
Karl Heuer <kwzh@gnu.org>
parents: 6102
diff changeset
1289 #ifdef O_NDELAY
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1290 fcntl (fileno (tty_out->input), F_SETFL,
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1291 fcntl (fileno (tty_out->input), F_GETFL, 0) & ~O_NDELAY);
6489
6c138b61c8b4 (reset_sys_modes): Turn off O_NDELAY.
Karl Heuer <kwzh@gnu.org>
parents: 6102
diff changeset
1292 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1293 #endif /* F_SETFL */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1294
53233
fe9b37bee5f7 Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents: 53232
diff changeset
1295 if (tty_out->old_tty)
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1296 while (EMACS_SET_TTY (fileno (tty_out->input),
53233
fe9b37bee5f7 Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents: 53232
diff changeset
1297 tty_out->old_tty, 0) < 0 && errno == EINTR)
12070
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1298 ;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1299
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1300 #ifdef MSDOS /* Demacs 1.1.2 91/10/20 Manabu Higashida */
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1301 dos_ttcooked ();
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1302 #endif
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1303
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1304 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1305
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1306 #ifdef HAVE_PTYS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1307
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1308 /* Set up the proper status flags for use of a pty. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1309
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1310 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
1311 setup_pty (int fd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1312 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1313 /* I'm told that TOICREMOTE does not mean control chars
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1314 "can't be sent" but rather that they don't have
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1315 input-editing or signaling effects.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1316 That should be good, because we have other ways
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1317 to do those things in Emacs.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1318 However, telnet mode seems not to work on 4.2.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1319 So TIOCREMOTE is turned off now. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1320
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1321 /* Under hp-ux, if TIOCREMOTE is turned on, some calls
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1322 will hang. In particular, the "timeout" feature (which
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1323 causes a read to return if there is no data available)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1324 does this. Also it is known that telnet mode will hang
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1325 in such a way that Emacs must be stopped (perhaps this
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1326 is the same problem).
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1327
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1328 If TIOCREMOTE is turned off, then there is a bug in
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1329 hp-ux which sometimes loses data. Apparently the
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1330 code which blocks the master process when the internal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1331 buffer fills up does not work. Other than this,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1332 though, everything else seems to work fine.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1333
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1334 Since the latter lossage is more benign, we may as well
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1335 lose that way. -- cph */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1336 #ifdef FIONBIO
96643
79121a8f01e3 * config.nt (HAVE_FACES): Remove, unused.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96595
diff changeset
1337 #if defined(UNIX98_PTYS)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1338 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 int on = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1340 ioctl (fd, FIONBIO, &on);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1342 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1344 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1345 #endif /* HAVE_PTYS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1346
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1347 /* init_system_name sets up the string for the Lisp function
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1348 system-name to return. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1349
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1350 extern Lisp_Object Vsystem_name;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1351
3150
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1352 #ifdef HAVE_SOCKETS
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1353 #include <sys/socket.h>
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1354 #include <netdb.h>
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1355 #endif /* HAVE_SOCKETS */
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1356
33718
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
1357 #ifdef TRY_AGAIN
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
1358 #ifndef HAVE_H_ERRNO
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
1359 extern int h_errno;
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
1360 #endif
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
1361 #endif /* TRY_AGAIN */
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
1362
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1363 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
1364 init_system_name (void)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1365 {
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
1366 #ifndef HAVE_GETHOSTNAME
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1367 struct utsname uts;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1368 uname (&uts);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1369 Vsystem_name = build_string (uts.nodename);
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
1370 #else /* HAVE_GETHOSTNAME */
11800
a2f009e1b85b (init_system_name): Clean up signedness mismatch.
Karl Heuer <kwzh@gnu.org>
parents: 11722
diff changeset
1371 unsigned int hostname_size = 256;
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1372 char *hostname = (char *) alloca (hostname_size);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1373
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1374 /* Try to get the host name; if the buffer is too short, try
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1375 again. Apparently, the only indication gethostname gives of
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1376 whether the buffer was large enough is the presence or absence
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1377 of a '\0' in the string. Eech. */
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1378 for (;;)
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1379 {
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1380 gethostname (hostname, hostname_size - 1);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1381 hostname[hostname_size - 1] = '\0';
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1382
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1383 /* Was the buffer large enough for the '\0'? */
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1384 if (strlen (hostname) < hostname_size - 1)
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1385 break;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1386
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1387 hostname_size <<= 1;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1388 hostname = (char *) alloca (hostname_size);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1389 }
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
1390 #ifdef HAVE_SOCKETS
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1391 /* Turn the hostname into the official, fully-qualified hostname.
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1392 Don't do this if we're going to dump; this can confuse system
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1393 libraries on some machines and make the dumped emacs core dump. */
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
1394 #ifndef CANNOT_DUMP
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1395 if (initialized)
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
1396 #endif /* not CANNOT_DUMP */
109315
8f3464b85afb Use strchr, strrchr instead of index, rindex
Andreas Schwab <schwab@linux-m68k.org>
parents: 109170
diff changeset
1397 if (! strchr (hostname, '.'))
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1398 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1399 int count;
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1400 #ifdef HAVE_GETADDRINFO
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1401 struct addrinfo *res;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1402 struct addrinfo hints;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1403 int ret;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1404
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1405 memset (&hints, 0, sizeof (hints));
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1406 hints.ai_socktype = SOCK_STREAM;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1407 hints.ai_flags = AI_CANONNAME;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1408
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1409 for (count = 0;; count++)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1410 {
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1411 if ((ret = getaddrinfo (hostname, NULL, &hints, &res)) == 0
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1412 || ret != EAI_AGAIN)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1413 break;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1414
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1415 if (count >= 5)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1416 break;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1417 Fsleep_for (make_number (1), Qnil);
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1418 }
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1419
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1420 if (ret == 0)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1421 {
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1422 struct addrinfo *it = res;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1423 while (it)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1424 {
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1425 char *fqdn = it->ai_canonname;
109315
8f3464b85afb Use strchr, strrchr instead of index, rindex
Andreas Schwab <schwab@linux-m68k.org>
parents: 109170
diff changeset
1426 if (fqdn && strchr (fqdn, '.')
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1427 && strcmp (fqdn, "localhost.localdomain") != 0)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1428 break;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1429 it = it->ai_next;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1430 }
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1431 if (it)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1432 {
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1433 hostname = alloca (strlen (it->ai_canonname) + 1);
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1434 strcpy (hostname, it->ai_canonname);
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1435 }
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1436 freeaddrinfo (res);
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1437 }
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1438 #else /* !HAVE_GETADDRINFO */
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1439 struct hostent *hp;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1440 for (count = 0;; count++)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1441 {
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1442
8330
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
1443 #ifdef TRY_AGAIN
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1444 h_errno = 0;
8330
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
1445 #endif
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1446 hp = gethostbyname (hostname);
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
1447 #ifdef TRY_AGAIN
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1448 if (! (hp == 0 && h_errno == TRY_AGAIN))
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
1449 #endif
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1450
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1451 break;
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1452
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1453 if (count >= 5)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1454 break;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1455 Fsleep_for (make_number (1), Qnil);
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1456 }
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1457
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1458 if (hp)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1459 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1460 char *fqdn = (char *) hp->h_name;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1461
109315
8f3464b85afb Use strchr, strrchr instead of index, rindex
Andreas Schwab <schwab@linux-m68k.org>
parents: 109170
diff changeset
1462 if (!strchr (fqdn, '.'))
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1463 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1464 /* We still don't have a fully qualified domain name.
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1465 Try to find one in the list of alternate names */
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1466 char **alias = hp->h_aliases;
77349
ddd98fc21199 (init_system_name): Don't accept localhost.localdomain.
Chong Yidong <cyd@stupidchicken.com>
parents: 75348
diff changeset
1467 while (*alias
109315
8f3464b85afb Use strchr, strrchr instead of index, rindex
Andreas Schwab <schwab@linux-m68k.org>
parents: 109170
diff changeset
1468 && (!strchr (*alias, '.')
77349
ddd98fc21199 (init_system_name): Don't accept localhost.localdomain.
Chong Yidong <cyd@stupidchicken.com>
parents: 75348
diff changeset
1469 || !strcmp (*alias, "localhost.localdomain")))
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1470 alias++;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1471 if (*alias)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1472 fqdn = *alias;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1473 }
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1474 hostname = fqdn;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1475 }
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1476 #endif /* !HAVE_GETADDRINFO */
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1477 }
3150
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1478 #endif /* HAVE_SOCKETS */
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1479 Vsystem_name = build_string (hostname);
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
1480 #endif /* HAVE_GETHOSTNAME */
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1481 {
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1482 unsigned char *p;
46370
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46298
diff changeset
1483 for (p = SDATA (Vsystem_name); *p; p++)
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1484 if (*p == ' ' || *p == '\t')
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1485 *p = '-';
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1486 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1487 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1488
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
1489 #ifndef MSDOS
91702
b7a5a89054dc * configure.in (LIBX11_MACHINE, HAVE_XFREE386): Remove code
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87799
diff changeset
1490 #if !defined (HAVE_SELECT)
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1491
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1492 #include "sysselect.h"
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1493 #undef select
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1494
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1495 #if defined (HAVE_X_WINDOWS) && !defined (HAVE_SELECT)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1496 /* Cause explanatory error message at compile time,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1497 since the select emulation is not good enough for X. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1498 int *x = &x_windows_lose_if_no_select_system_call;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1499 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1500
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1501 /* Emulate as much as select as is possible under 4.1 and needed by Gnu Emacs
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1502 * Only checks read descriptors.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1503 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1504 /* How long to wait between checking fds in select */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1505 #define SELECT_PAUSE 1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1506 int select_alarmed;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1507
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1508 /* For longjmp'ing back to read_input_waiting. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1509
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1510 jmp_buf read_alarm_throw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1511
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1512 /* Nonzero if the alarm signal should throw back to read_input_waiting.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1513 The read_socket_hook function sets this to 1 while it is waiting. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1514
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1515 int read_alarm_should_throw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1516
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1517 void
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1518 select_alarm (int ignore)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1519 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1520 select_alarmed = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1521 signal (SIGALRM, SIG_IGN);
58986
59945307b86b * syssignal.h: Declare main_thread.
Jan Djärv <jan.h.d@swipnet.se>
parents: 58621
diff changeset
1522 SIGNAL_THREAD_CHECK (SIGALRM);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1523 if (read_alarm_should_throw)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1524 longjmp (read_alarm_throw, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1525 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1526
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1527 #ifndef WINDOWSNT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1528 /* Only rfds are checked. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1529 int
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1530 sys_select (int nfds,
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1531 SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds,
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1532 EMACS_TIME *timeout)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1533 {
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1534 /* XXX This needs to be updated for multi-tty support. Is there
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1535 anybody who needs to emulate select these days? */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1536 int ravail = 0;
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1537 SELECT_TYPE orfds;
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1538 int timeoutval;
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1539 int *local_timeout;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1540 extern int proc_buffered_char[];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1541 extern int process_tick, update_tick;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1542 unsigned char buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1543
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1544 #if defined (HAVE_SELECT) && defined (HAVE_X_WINDOWS)
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1545 /* If we're using X, then the native select will work; we only need the
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1546 emulation for non-X usage. */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1547 if (!NILP (Vinitial_window_system))
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1548 return select (nfds, rfds, wfds, efds, timeout);
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1549 #endif
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1550 timeoutval = timeout ? EMACS_SECS (*timeout) : 100000;
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1551 local_timeout = &timeoutval;
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1552 FD_ZERO (&orfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1553 if (rfds)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1554 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1555 orfds = *rfds;
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1556 FD_ZERO (rfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1557 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1558 if (wfds)
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1559 FD_ZERO (wfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1560 if (efds)
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1561 FD_ZERO (efds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1562
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1563 /* If we are looking only for the terminal, with no timeout,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1564 just read it and wait -- that's more efficient. */
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1565 if (*local_timeout == 100000 && process_tick == update_tick
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1566 && FD_ISSET (0, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1567 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1568 int fd;
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1569 for (fd = 1; fd < nfds; ++fd)
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1570 if (FD_ISSET (fd, &orfds))
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1571 goto hardway;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1572 if (! detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1573 read_input_waiting ();
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1574 FD_SET (0, rfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1575 return 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1576 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1577
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1578 hardway:
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1579 /* Once a second, till the timer expires, check all the flagged read
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1580 * descriptors to see if any input is available. If there is some then
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1581 * set the corresponding bit in the return copy of rfds.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1582 */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1583 while (1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1584 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1585 register int to_check, fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1586
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1587 if (rfds)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1588 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1589 for (to_check = nfds, fd = 0; --to_check >= 0; fd++)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1590 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1591 if (FD_ISSET (fd, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1592 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1593 int avail = 0, status = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1594
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1595 if (fd == 0)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1596 avail = detect_input_pending (); /* Special keyboard handler */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1597 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1598 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1599 #ifdef FIONREAD
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1600 status = ioctl (fd, FIONREAD, &avail);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1601 #else /* no FIONREAD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1602 /* Hoping it will return -1 if nothing available
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1603 or 0 if all 0 chars requested are read. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1604 if (proc_buffered_char[fd] >= 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1605 avail = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1606 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1607 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1608 avail = read (fd, &buf, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1609 if (avail > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1610 proc_buffered_char[fd] = buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1611 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1612 #endif /* no FIONREAD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1613 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1614 if (status >= 0 && avail > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1615 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1616 FD_SET (fd, rfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1617 ravail++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1618 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1619 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1620 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1621 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1622 if (*local_timeout == 0 || ravail != 0 || process_tick != update_tick)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1623 break;
27432
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
1624
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
1625 turn_on_atimers (0);
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
1626 signal (SIGALRM, select_alarm);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1627 select_alarmed = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1628 alarm (SELECT_PAUSE);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1629
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1630 /* Wait for a SIGALRM (or maybe a SIGTINT) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1631 while (select_alarmed == 0 && *local_timeout != 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1632 && process_tick == update_tick)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1633 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1634 /* If we are interested in terminal input,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1635 wait by reading the terminal.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1636 That makes instant wakeup for terminal input at least. */
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1637 if (FD_ISSET (0, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1638 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1639 read_input_waiting ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1640 if (detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1641 select_alarmed = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1642 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1643 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1644 pause ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1645 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1646 (*local_timeout) -= SELECT_PAUSE;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1647
27432
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
1648 /* Reset the old alarm if there was one. */
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
1649 turn_on_atimers (1);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1650
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1651 if (*local_timeout == 0) /* Stop on timer being cleared */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1652 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1653 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1654 return ravail;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1655 }
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1656 #endif /* not WINDOWSNT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1657
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1658 /* Read keyboard input into the standard buffer,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1659 waiting for at least one character. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1660
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1661 void
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
1662 read_input_waiting (void)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1663 {
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1664 /* XXX This needs to be updated for multi-tty support. Is there
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1665 anybody who needs to emulate select these days? */
1014
6e25f9b75841 * sysdep.c (select): There's no need to cast the return value of
Jim Blandy <jimb@redhat.com>
parents: 766
diff changeset
1666 int nread, i;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1667
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1668 if (read_socket_hook)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1669 {
54166
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1670 struct input_event hold_quit;
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1671
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1672 EVENT_INIT (hold_quit);
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1673 hold_quit.kind = NO_EVENT;
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1674
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1675 read_alarm_should_throw = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1676 if (! setjmp (read_alarm_throw))
54166
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1677 nread = (*read_socket_hook) (0, 1, &hold_quit);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1678 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1679 nread = -1;
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1680
54166
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1681 if (hold_quit.kind != NO_EVENT)
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1682 kbd_buffer_store_event (&hold_quit);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1683 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1684 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1685 {
51572
1ef0c7b51ff9 (kbd_input_ast, read_input_waiting): Don't pass uninitialized
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51552
diff changeset
1686 struct input_event e;
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1687 char buf[3];
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1688 nread = read (fileno (stdin), buf, 1);
51572
1ef0c7b51ff9 (kbd_input_ast, read_input_waiting): Don't pass uninitialized
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51552
diff changeset
1689 EVENT_INIT (e);
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1690
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1691 /* Scan the chars for C-g and store them in kbd_buffer. */
45804
863817d7e734 *** empty log message ***
Pavel Janík <Pavel@Janik.cz>
parents: 44890
diff changeset
1692 e.kind = ASCII_KEYSTROKE_EVENT;
25674
b0d0bcf1b32e (reset_sys_modes): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 25578
diff changeset
1693 e.frame_or_window = selected_frame;
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1694 e.modifiers = 0;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1695 for (i = 0; i < nread; i++)
4952
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
1696 {
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1697 /* Convert chars > 0177 to meta events if desired.
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1698 We do this under the same conditions that read_avail_input does. */
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1699 if (read_socket_hook == 0)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1700 {
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1701 /* If the user says she has a meta key, then believe her. */
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1702 if (meta_key == 1 && (buf[i] & 0x80))
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1703 e.modifiers = meta_modifier;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1704 if (meta_key != 2)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1705 buf[i] &= ~0x80;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1706 }
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1707
9279
2382e2f3884e (kbd_input_ast, read_input_waiting): Use new accessor macros instead of
Karl Heuer <kwzh@gnu.org>
parents: 9239
diff changeset
1708 XSETINT (e.code, buf[i]);
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1709 kbd_buffer_store_event (&e);
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1710 /* Don't look at input that follows a C-g too closely.
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1711 This reduces lossage due to autorepeat on C-g. */
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1712 if (buf[i] == quit_char)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1713 break;
4952
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
1714 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1715 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1716 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1717
91702
b7a5a89054dc * configure.in (LIBX11_MACHINE, HAVE_XFREE386): Remove code
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87799
diff changeset
1718 #if !defined (HAVE_SELECT)
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
1719 #define select sys_select
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
1720 #endif
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
1721
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1722 #endif /* not HAVE_SELECT */
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
1723 #endif /* not MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1724
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1725 /* POSIX signals support - DJB */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1726 /* Anyone with POSIX signals should have ANSI C declarations */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1727
20948
a9a9a13079b4 (sys_sigpause): Removed.
Andreas Schwab <schwab@suse.de>
parents: 20498
diff changeset
1728 sigset_t empty_mask, full_mask;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1729
108200
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
1730 #ifndef WINDOWSNT
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
1731
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1732 signal_handler_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1733 sys_signal (int signal_number, signal_handler_t action)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1734 {
20948
a9a9a13079b4 (sys_sigpause): Removed.
Andreas Schwab <schwab@suse.de>
parents: 20498
diff changeset
1735 struct sigaction new_action, old_action;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1736 sigemptyset (&new_action.sa_mask);
20498
22dd2d861e36 (sys_signal): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 20456
diff changeset
1737 new_action.sa_handler = action;
98547
0835efd6ac19 (sys_signal): Always set SA_RESTART when
Andreas Schwab <schwab@suse.de>
parents: 98505
diff changeset
1738 new_action.sa_flags = 0;
0835efd6ac19 (sys_signal): Always set SA_RESTART when
Andreas Schwab <schwab@suse.de>
parents: 98505
diff changeset
1739 #if defined (SA_RESTART)
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1740 /* Emacs mostly works better with restartable system services. If this
46298
c6d9317e4393 (sys_signal): Test BROKEN_SA_RESTART.
Richard M. Stallman <rms@gnu.org>
parents: 45804
diff changeset
1741 flag exists, we probably want to turn it on here.
c6d9317e4393 (sys_signal): Test BROKEN_SA_RESTART.
Richard M. Stallman <rms@gnu.org>
parents: 45804
diff changeset
1742 However, on some systems this resets the timeout of `select'
c6d9317e4393 (sys_signal): Test BROKEN_SA_RESTART.
Richard M. Stallman <rms@gnu.org>
parents: 45804
diff changeset
1743 which means that `select' never finishes if it keeps getting signals.
c6d9317e4393 (sys_signal): Test BROKEN_SA_RESTART.
Richard M. Stallman <rms@gnu.org>
parents: 45804
diff changeset
1744 BROKEN_SA_RESTART is defined on those systems. */
58518
1a5509ec45da (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56714
diff changeset
1745 /* It's not clear why the comment above says "mostly works better". --Stef
1a5509ec45da (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56714
diff changeset
1746 When SYNC_INPUT is set, we don't want SA_RESTART because we need to poll
1a5509ec45da (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56714
diff changeset
1747 for pending input so we need long-running syscalls to be interrupted
1a5509ec45da (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56714
diff changeset
1748 after a signal that sets the interrupt_input_pending flag. */
98548
2c49cf36c498 Add comment for last change.
Andreas Schwab <schwab@suse.de>
parents: 98547
diff changeset
1749 /* Non-interactive keyboard input goes through stdio, where we always
2c49cf36c498 Add comment for last change.
Andreas Schwab <schwab@suse.de>
parents: 98547
diff changeset
1750 want restartable system calls. */
98547
0835efd6ac19 (sys_signal): Always set SA_RESTART when
Andreas Schwab <schwab@suse.de>
parents: 98505
diff changeset
1751 # if defined (BROKEN_SA_RESTART) || defined(SYNC_INPUT)
0835efd6ac19 (sys_signal): Always set SA_RESTART when
Andreas Schwab <schwab@suse.de>
parents: 98505
diff changeset
1752 if (noninteractive)
0835efd6ac19 (sys_signal): Always set SA_RESTART when
Andreas Schwab <schwab@suse.de>
parents: 98505
diff changeset
1753 # endif
0835efd6ac19 (sys_signal): Always set SA_RESTART when
Andreas Schwab <schwab@suse.de>
parents: 98505
diff changeset
1754 new_action.sa_flags = SA_RESTART;
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1755 #endif
709
829ba8707e86 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 692
diff changeset
1756 sigaction (signal_number, &new_action, &old_action);
20498
22dd2d861e36 (sys_signal): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 20456
diff changeset
1757 return (old_action.sa_handler);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1758 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1759
108200
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
1760 #endif /* WINDOWSNT */
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
1761
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1762 #ifndef __GNUC__
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1763 /* If we're compiling with GCC, we don't need this function, since it
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1764 can be written as a macro. */
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1765 sigset_t
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1766 sys_sigmask (int sig)
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1767 {
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1768 sigset_t mask;
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1769 sigemptyset (&mask);
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1770 sigaddset (&mask, sig);
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1771 return mask;
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1772 }
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1773 #endif
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
1774
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1775 /* I'd like to have these guys return pointers to the mask storage in here,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1776 but there'd be trouble if the code was saving multiple masks. I'll be
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1777 safe and pass the structure. It normally won't be more than 2 bytes
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1778 anyhow. - DJB */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1779
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1780 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1781 sys_sigblock (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1782 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1783 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1784 sigprocmask (SIG_BLOCK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1785 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1786 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1787
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1788 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1789 sys_sigunblock (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1790 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1791 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1792 sigprocmask (SIG_UNBLOCK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1793 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1794 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1795
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1796 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1797 sys_sigsetmask (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1798 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1799 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1800 sigprocmask (SIG_SETMASK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1801 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1802 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1803
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1804
51552
d84e9160d869 Remove redundant include of unistd.h, stdlib.h. Use
Dave Love <fx@gnu.org>
parents: 51206
diff changeset
1805 #if !defined HAVE_STRSIGNAL && !HAVE_DECL_SYS_SIGLIST
26526
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1806 static char *my_sys_siglist[NSIG];
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1807 # ifdef sys_siglist
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1808 # undef sys_siglist
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1809 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1810 # define sys_siglist my_sys_siglist
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1811 #endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1812
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1813 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
1814 init_signals (void)
26526
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1815 {
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1816 sigemptyset (&empty_mask);
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1817 sigfillset (&full_mask);
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1818
51552
d84e9160d869 Remove redundant include of unistd.h, stdlib.h. Use
Dave Love <fx@gnu.org>
parents: 51206
diff changeset
1819 #if !defined HAVE_STRSIGNAL && !HAVE_DECL_SYS_SIGLIST
26526
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1820 if (! initialized)
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1821 {
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1822 # ifdef SIGABRT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1823 sys_siglist[SIGABRT] = "Aborted";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1824 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1825 # ifdef SIGAIO
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1826 sys_siglist[SIGAIO] = "LAN I/O interrupt";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1827 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1828 # ifdef SIGALRM
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1829 sys_siglist[SIGALRM] = "Alarm clock";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1830 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1831 # ifdef SIGBUS
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1832 sys_siglist[SIGBUS] = "Bus error";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1833 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1834 # ifdef SIGCLD
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1835 sys_siglist[SIGCLD] = "Child status changed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1836 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1837 # ifdef SIGCHLD
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1838 sys_siglist[SIGCHLD] = "Child status changed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1839 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1840 # ifdef SIGCONT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1841 sys_siglist[SIGCONT] = "Continued";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1842 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1843 # ifdef SIGDANGER
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1844 sys_siglist[SIGDANGER] = "Swap space dangerously low";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1845 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1846 # ifdef SIGDGNOTIFY
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1847 sys_siglist[SIGDGNOTIFY] = "Notification message in queue";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1848 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1849 # ifdef SIGEMT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1850 sys_siglist[SIGEMT] = "Emulation trap";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1851 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1852 # ifdef SIGFPE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1853 sys_siglist[SIGFPE] = "Arithmetic exception";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1854 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1855 # ifdef SIGFREEZE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1856 sys_siglist[SIGFREEZE] = "SIGFREEZE";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1857 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1858 # ifdef SIGGRANT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1859 sys_siglist[SIGGRANT] = "Monitor mode granted";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1860 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1861 # ifdef SIGHUP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1862 sys_siglist[SIGHUP] = "Hangup";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1863 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1864 # ifdef SIGILL
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1865 sys_siglist[SIGILL] = "Illegal instruction";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1866 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1867 # ifdef SIGINT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1868 sys_siglist[SIGINT] = "Interrupt";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1869 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1870 # ifdef SIGIO
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1871 sys_siglist[SIGIO] = "I/O possible";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1872 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1873 # ifdef SIGIOINT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1874 sys_siglist[SIGIOINT] = "I/O intervention required";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1875 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1876 # ifdef SIGIOT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1877 sys_siglist[SIGIOT] = "IOT trap";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1878 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1879 # ifdef SIGKILL
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1880 sys_siglist[SIGKILL] = "Killed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1881 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1882 # ifdef SIGLOST
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1883 sys_siglist[SIGLOST] = "Resource lost";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1884 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1885 # ifdef SIGLWP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1886 sys_siglist[SIGLWP] = "SIGLWP";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1887 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1888 # ifdef SIGMSG
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1889 sys_siglist[SIGMSG] = "Monitor mode data available";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1890 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1891 # ifdef SIGPHONE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1892 sys_siglist[SIGWIND] = "SIGPHONE";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1893 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1894 # ifdef SIGPIPE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1895 sys_siglist[SIGPIPE] = "Broken pipe";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1896 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1897 # ifdef SIGPOLL
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1898 sys_siglist[SIGPOLL] = "Pollable event occurred";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1899 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1900 # ifdef SIGPROF
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1901 sys_siglist[SIGPROF] = "Profiling timer expired";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1902 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1903 # ifdef SIGPTY
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1904 sys_siglist[SIGPTY] = "PTY I/O interrupt";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1905 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1906 # ifdef SIGPWR
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1907 sys_siglist[SIGPWR] = "Power-fail restart";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1908 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1909 # ifdef SIGQUIT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1910 sys_siglist[SIGQUIT] = "Quit";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1911 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1912 # ifdef SIGRETRACT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1913 sys_siglist[SIGRETRACT] = "Need to relinguish monitor mode";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1914 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1915 # ifdef SIGSAK
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1916 sys_siglist[SIGSAK] = "Secure attention";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1917 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1918 # ifdef SIGSEGV
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1919 sys_siglist[SIGSEGV] = "Segmentation violation";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1920 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1921 # ifdef SIGSOUND
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1922 sys_siglist[SIGSOUND] = "Sound completed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1923 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1924 # ifdef SIGSTOP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1925 sys_siglist[SIGSTOP] = "Stopped (signal)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1926 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1927 # ifdef SIGSTP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1928 sys_siglist[SIGSTP] = "Stopped (user)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1929 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1930 # ifdef SIGSYS
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1931 sys_siglist[SIGSYS] = "Bad argument to system call";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1932 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1933 # ifdef SIGTERM
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1934 sys_siglist[SIGTERM] = "Terminated";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1935 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1936 # ifdef SIGTHAW
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1937 sys_siglist[SIGTHAW] = "SIGTHAW";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1938 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1939 # ifdef SIGTRAP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1940 sys_siglist[SIGTRAP] = "Trace/breakpoint trap";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1941 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1942 # ifdef SIGTSTP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1943 sys_siglist[SIGTSTP] = "Stopped (user)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1944 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1945 # ifdef SIGTTIN
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1946 sys_siglist[SIGTTIN] = "Stopped (tty input)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1947 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1948 # ifdef SIGTTOU
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1949 sys_siglist[SIGTTOU] = "Stopped (tty output)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1950 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1951 # ifdef SIGURG
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1952 sys_siglist[SIGURG] = "Urgent I/O condition";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1953 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1954 # ifdef SIGUSR1
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1955 sys_siglist[SIGUSR1] = "User defined signal 1";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1956 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1957 # ifdef SIGUSR2
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1958 sys_siglist[SIGUSR2] = "User defined signal 2";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1959 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1960 # ifdef SIGVTALRM
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1961 sys_siglist[SIGVTALRM] = "Virtual timer expired";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1962 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1963 # ifdef SIGWAITING
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1964 sys_siglist[SIGWAITING] = "Process's LWPs are blocked";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1965 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1966 # ifdef SIGWINCH
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1967 sys_siglist[SIGWINCH] = "Window size changed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1968 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1969 # ifdef SIGWIND
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1970 sys_siglist[SIGWIND] = "SIGWIND";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1971 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1972 # ifdef SIGXCPU
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1973 sys_siglist[SIGXCPU] = "CPU time limit exceeded";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1974 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1975 # ifdef SIGXFSZ
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1976 sys_siglist[SIGXFSZ] = "File size limit exceeded";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1977 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1978 }
51552
d84e9160d869 Remove redundant include of unistd.h, stdlib.h. Use
Dave Love <fx@gnu.org>
parents: 51206
diff changeset
1979 #endif /* !defined HAVE_STRSIGNAL && !defined HAVE_DECL_SYS_SIGLIST */
26526
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1980 }
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
1981
2332
bc2f7dc78412 * sysdep.c (random, srandom): Don't define these if HAVE_RANDOM is
Jim Blandy <jimb@redhat.com>
parents: 2287
diff changeset
1982 #ifndef HAVE_RANDOM
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1983 #ifdef random
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1984 #define HAVE_RANDOM
8368
0c30bec316c6 (random): Use rand differently, and distinguish BSD/USG.
Richard M. Stallman <rms@gnu.org>
parents: 8358
diff changeset
1985 #endif
8358
f9d8f778f73b (random, srandom): Obey HAVE_RAND48 flag.
Richard M. Stallman <rms@gnu.org>
parents: 8330
diff changeset
1986 #endif
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1987
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1988 /* Figure out how many bits the system's random number generator uses.
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1989 `random' and `lrand48' are assumed to return 31 usable bits.
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1990 BSD `rand' returns a 31 bit value but the low order bits are unusable;
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1991 so we'll shift it and treat it like the 15-bit USG `rand'. */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1992
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1993 #ifndef RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1994 # ifdef HAVE_RANDOM
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1995 # define RAND_BITS 31
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1996 # else /* !HAVE_RANDOM */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1997 # ifdef HAVE_LRAND48
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1998 # define RAND_BITS 31
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
1999 # define random lrand48
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2000 # else /* !HAVE_LRAND48 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2001 # define RAND_BITS 15
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2002 # if RAND_MAX == 32767
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2003 # define random rand
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2004 # else /* RAND_MAX != 32767 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2005 # if RAND_MAX == 2147483647
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2006 # define random() (rand () >> 16)
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2007 # else /* RAND_MAX != 2147483647 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2008 # ifdef USG
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2009 # define random rand
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2010 # else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2011 # define random() (rand () >> 16)
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
2012 # endif /* !USG */
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2013 # endif /* RAND_MAX != 2147483647 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2014 # endif /* RAND_MAX != 32767 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2015 # endif /* !HAVE_LRAND48 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2016 # endif /* !HAVE_RANDOM */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2017 #endif /* !RAND_BITS */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2018
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2019 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
2020 seed_random (long int arg)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2021 {
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2022 #ifdef HAVE_RANDOM
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2023 srandom ((unsigned int)arg);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2024 #else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2025 # ifdef HAVE_LRAND48
8702
097fe97274e9 (srandom): Pass arg to srand48; no return value.
Karl Heuer <kwzh@gnu.org>
parents: 8699
diff changeset
2026 srand48 (arg);
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2027 # else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2028 srand ((unsigned int)arg);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2029 # endif
8358
f9d8f778f73b (random, srandom): Obey HAVE_RAND48 flag.
Richard M. Stallman <rms@gnu.org>
parents: 8330
diff changeset
2030 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2031 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2032
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2033 /*
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2034 * Build a full Emacs-sized word out of whatever we've got.
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2035 * This suffices even for a 64-bit architecture with a 15-bit rand.
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2036 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2037 long
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
2038 get_random (void)
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2039 {
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2040 long val = random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2041 #if VALBITS > RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2042 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2043 #if VALBITS > 2*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2044 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2045 #if VALBITS > 3*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2046 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2047 #if VALBITS > 4*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2048 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2049 #endif /* need at least 5 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2050 #endif /* need at least 4 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2051 #endif /* need at least 3 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2052 #endif /* need at least 2 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2053 return val & ((1L << VALBITS) - 1);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2054 }
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2055
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2056 #ifndef HAVE_STRERROR
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
2057 #ifndef WINDOWSNT
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2058 char *
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2059 strerror (errnum)
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2060 int errnum;
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2061 {
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2062 extern char *sys_errlist[];
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2063 extern int sys_nerr;
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2064
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2065 if (errnum >= 0 && errnum < sys_nerr)
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2066 return sys_errlist[errnum];
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2067 return (char *) "Unknown error";
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2068 }
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
2069 #endif /* not WINDOWSNT */
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2070 #endif /* ! HAVE_STRERROR */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2071
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2072 int
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
2073 emacs_open (const char *path, int oflag, int mode)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2074 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2075 register int rtnval;
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2076
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2077 while ((rtnval = open (path, oflag, mode)) == -1
58518
1a5509ec45da (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56714
diff changeset
2078 && (errno == EINTR))
1a5509ec45da (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56714
diff changeset
2079 QUIT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2080 return (rtnval);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2081 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2082
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2083 int
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
2084 emacs_close (int fd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2085 {
12547
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2086 int did_retry = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2087 register int rtnval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2088
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2089 while ((rtnval = close (fd)) == -1
12547
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2090 && (errno == EINTR))
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2091 did_retry = 1;
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2092
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2093 /* If close is interrupted SunOS 4.1 may or may not have closed the
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2094 file descriptor. If it did the second close will fail with
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2095 errno = EBADF. That means we have succeeded. */
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2096 if (rtnval == -1 && did_retry && errno == EBADF)
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2097 return 0;
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2098
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2099 return rtnval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2100 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2101
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2102 int
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
2103 emacs_read (int fildes, char *buf, unsigned int nbyte)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2104 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2105 register int rtnval;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2106
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2107 while ((rtnval = read (fildes, buf, nbyte)) == -1
58518
1a5509ec45da (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56714
diff changeset
2108 && (errno == EINTR))
1a5509ec45da (sys_signal): Don't use SA_RESTART if SYNC_INPUT is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 56714
diff changeset
2109 QUIT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2110 return (rtnval);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2111 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2112
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2113 int
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
2114 emacs_write (int fildes, const char *buf, unsigned int nbyte)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2115 {
4772
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2116 register int rtnval, bytes_written;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2117
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2118 bytes_written = 0;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2119
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2120 while (nbyte > 0)
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2121 {
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2122 rtnval = write (fildes, buf, nbyte);
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2123
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2124 if (rtnval == -1)
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2125 {
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2126 if (errno == EINTR)
58621
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2127 {
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2128 #ifdef SYNC_INPUT
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2129 /* I originally used `QUIT' but that might causes files to
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2130 be truncated if you hit C-g in the middle of it. --Stef */
101646
18eabb5ae6df (emacs_write): Use process_pending_signals.
Chong Yidong <cyd@stupidchicken.com>
parents: 100862
diff changeset
2131 process_pending_signals ();
58621
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2132 #endif
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2133 continue;
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2134 }
4772
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2135 else
5954
02f406110e4b (sys_write): If any bytes were written, return how many.
Richard M. Stallman <rms@gnu.org>
parents: 5937
diff changeset
2136 return (bytes_written ? bytes_written : -1);
4772
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2137 }
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2138
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2139 buf += rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2140 nbyte -= rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2141 bytes_written += rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2142 }
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2143 return (bytes_written);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2144 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2145
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2146 #ifdef USG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2147 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2148 * All of the following are for USG.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2149 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2150 * On USG systems the system calls are INTERRUPTIBLE by signals
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2151 * that the user program has elected to catch. Thus the system call
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2152 * must be retried in these cases. To handle this without massive
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2153 * changes in the source code, we remap the standard system call names
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2154 * to names for our own functions in sysdep.c that do the system call
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2155 * with retries. Actually, for portability reasons, it is good
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2156 * programming practice, as this example shows, to limit all actual
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
2157 * system calls to a single occurrence in the source. Sure, this
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2158 * adds an extra level of function call overhead but it is almost
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2159 * always negligible. Fred Fish, Unisoft Systems Inc.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2160 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2161
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2162 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2163 * Warning, this function may not duplicate 4.2 action properly
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2164 * under error conditions.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2165 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2166
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2167 #ifndef MAXPATHLEN
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2168 /* In 4.1, param.h fails to define this. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2169 #define MAXPATHLEN 1024
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2170 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2171
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2172 #ifndef HAVE_GETWD
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2173
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2174 char *
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2175 getwd (char *pathname)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2176 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2177 char *npath, *spath;
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2178 extern char *getcwd (char *, size_t);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2179
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
2180 BLOCK_INPUT; /* getcwd uses malloc */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2181 spath = npath = getcwd ((char *) 0, MAXPATHLEN);
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2182 if (spath == 0)
37219
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
2183 {
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
2184 UNBLOCK_INPUT;
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
2185 return spath;
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
2186 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2187 /* On Altos 3068, getcwd can return @hostname/dir, so discard
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2188 up to first slash. Should be harmless on other systems. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2189 while (*npath && *npath != '/')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2190 npath++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2191 strcpy (pathname, npath);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2192 free (spath); /* getcwd uses malloc */
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
2193 UNBLOCK_INPUT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2194 return pathname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2195 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2196
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2197 #endif /* HAVE_GETWD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2198
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2199 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2200 * Emulate rename using unlink/link. Note that this is
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2201 * only partially correct. Also, doesn't enforce restriction
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2202 * that files be of same type (regular->regular, dir->dir, etc).
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2203 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2204
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
2205 #ifndef HAVE_RENAME
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
2206
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2207 int
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2208 rename (const char *from, const char *to)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2209 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2210 if (access (from, 0) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2211 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2212 unlink (to);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2213 if (link (from, to) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2214 if (unlink (from) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2215 return (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2216 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2217 return (-1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2218 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2219
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
2220 #endif
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
2221
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2222
97141
840bd675fd85 * s/ms-w32.h (MULTI_KBOARD): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97119
diff changeset
2223 #if defined(HPUX) && !defined(HAVE_PERROR)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2224
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2225 /* HPUX curses library references perror, but as far as we know
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2226 it won't be called. Anyway this definition will do for now. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2227
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2228 void
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2229 perror (void)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2230 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2231 }
97141
840bd675fd85 * s/ms-w32.h (MULTI_KBOARD): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97119
diff changeset
2232 #endif /* HPUX and not HAVE_PERROR */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2233
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2234 #ifndef HAVE_DUP2
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2235
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2236 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2237 * Emulate BSD dup2. First close newd if it already exists.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2238 * Then, attempt to dup oldd. If not successful, call dup2 recursively
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2239 * until we are, then close the unsuccessful ones.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2240 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2241
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2242 int
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2243 dup2 (int oldd, int newd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2244 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2245 register int fd, ret;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2246
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2247 emacs_close (newd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2248
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2249 #ifdef F_DUPFD
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2250 return fcntl (oldd, F_DUPFD, newd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2251 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2252 fd = dup (old);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2253 if (fd == -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2254 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2255 if (fd == new)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2256 return new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2257 ret = dup2 (old,new);
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2258 emacs_close (fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2259 return ret;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2260 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2261 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2262
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2263 #endif /* not HAVE_DUP2 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2264
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2265 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2266 * Gettimeofday. Simulate as much as possible. Only accurate
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2267 * to nearest second. Emacs doesn't use tzp so ignore it for now.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2268 * Only needed when subprocesses are defined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2269 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2270
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2271 #ifndef HAVE_GETTIMEOFDAY
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2272 #ifdef HAVE_TIMEVAL
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2273
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2274 /* ARGSUSED */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2275 int
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2276 gettimeofday (struct timeval *tp, struct timezone *tzp)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2277 {
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2278 extern long time (long);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2279
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2280 tp->tv_sec = time ((long *)0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2281 tp->tv_usec = 0;
3239
2e4882a32671 (gettimeofday): Don't store in *tzp if tzp is 0.
Richard M. Stallman <rms@gnu.org>
parents: 3157
diff changeset
2282 if (tzp != 0)
2e4882a32671 (gettimeofday): Don't store in *tzp if tzp is 0.
Richard M. Stallman <rms@gnu.org>
parents: 3157
diff changeset
2283 tzp->tz_minuteswest = -1;
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2284 return 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2285 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2286
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2287 #endif
109378
4e99d7aa7526 Remove more "#ifdef subprocesses".
Eli Zaretskii <eliz@gnu.org>
parents: 109315
diff changeset
2288 #endif /* !HAVE_GETTIMEOFDAY && HAVE_TIMEVAL */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2289
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2290 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2291 * This function will go away as soon as all the stubs fixed. (fnf)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2292 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2293
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2294 void
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
2295 croak (char *badfunc)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2296 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2297 printf ("%s not yet implemented\r\n", badfunc);
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
2298 reset_all_sys_modes ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2299 exit (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2300 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2301
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2302 #endif /* USG */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2303
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2304 /* Directory routines for systems that don't have them. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2305
109585
4504e82595bb Replace tests for SYSV_SYSTEM_DIR with HAVE_DIRENT_H, set via autoconf
Jan D <jan.h.d@swipnet.se>
parents: 109378
diff changeset
2306 #ifdef HAVE_DIRENT_H
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2307
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2308 #include <dirent.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2309
97119
b57392641da7 * systty.h (sensemode): Remove empty #if. Remove reference to
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97043
diff changeset
2310 #if !defined (HAVE_CLOSEDIR)
5158
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
2311
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2312 int
97119
b57392641da7 * systty.h (sensemode): Remove empty #if. Remove reference to
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97043
diff changeset
2313 closedir (DIR *dirp /* stream from opendir */)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2314 {
5158
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
2315 int rtnval;
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
2316
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2317 rtnval = emacs_close (dirp->dd_fd);
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
2318 xfree ((char *) dirp);
5158
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
2319
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
2320 return rtnval;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2321 }
97119
b57392641da7 * systty.h (sensemode): Remove empty #if. Remove reference to
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97043
diff changeset
2322 #endif /* not HAVE_CLOSEDIR */
109585
4504e82595bb Replace tests for SYSV_SYSTEM_DIR with HAVE_DIRENT_H, set via autoconf
Jan D <jan.h.d@swipnet.se>
parents: 109378
diff changeset
2323 #endif /* HAVE_DIRENT_H */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2324
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2325
8934
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2326 int
109130
cd13b432f239 Fix more prototypes.
Juanma Barranquero <lekktu@gmail.com>
parents: 109126
diff changeset
2327 set_file_times (const char *filename, EMACS_TIME atime, EMACS_TIME mtime)
8934
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2328 {
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2329 #ifdef HAVE_UTIMES
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2330 struct timeval tv[2];
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2331 tv[0] = atime;
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2332 tv[1] = mtime;
9081
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
2333 return utimes (filename, tv);
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
2334 #else /* not HAVE_UTIMES */
8934
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2335 struct utimbuf utb;
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2336 utb.actime = EMACS_SECS (atime);
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2337 utb.modtime = EMACS_SECS (mtime);
9081
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
2338 return utime (filename, &utb);
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
2339 #endif /* not HAVE_UTIMES */
8934
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2340 }
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2341
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2342 /* mkdir and rmdir functions, for systems which don't have them. */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2343
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2344 #ifndef HAVE_MKDIR
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2345 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2346 * Written by Robert Rother, Mariah Corporation, August 1985.
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2347 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2348 * If you want it, it's yours. All I ask in return is that if you
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2349 * figure out how to do this in a Bourne Shell script you send me
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2350 * a copy.
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2351 * sdcsvax!rmr or rmr@uscd
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2352 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2353 * Severely hacked over by John Gilmore to make a 4.2BSD compatible
74145
8eceefbbcde7 Space/tab mixup.
Juanma Barranquero <lekktu@gmail.com>
parents: 73363
diff changeset
2354 * subroutine. 11Mar86; hoptoad!gnu
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2355 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2356 * Modified by rmtodd@uokmax 6-28-87 -- when making an already existing dir,
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2357 * subroutine didn't return EEXIST. It does now.
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2358 */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2359
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2360 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2361 * Make a directory.
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2362 */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2363 int
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2364 mkdir (char *dpath, int dmode)
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2365 {
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2366 int cpid, status, fd;
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2367 struct stat statbuf;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2368
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2369 if (stat (dpath, &statbuf) == 0)
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2370 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2371 errno = EEXIST; /* Stat worked, so it already exists */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2372 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2373 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2374
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2375 /* If stat fails for a reason other than non-existence, return error */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2376 if (errno != ENOENT)
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2377 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2378
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2379 synch_process_alive = 1;
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2380 switch (cpid = fork ())
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2381 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2382
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2383 case -1: /* Error in fork */
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2384 return (-1); /* Errno is set already */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2385
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2386 case 0: /* Child process */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2387 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2388 * Cheap hack to set mode of new directory. Since this
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2389 * child process is going away anyway, we zap its umask.
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2390 * FIXME, this won't suffice to set SUID, SGID, etc. on this
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2391 * directory. Does anybody care?
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2392 */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2393 status = umask (0); /* Get current umask */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2394 status = umask (status | (0777 & ~dmode)); /* Set for mkdir */
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2395 fd = emacs_open ("/dev/null", O_RDWR, 0);
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2396 if (fd >= 0)
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2397 {
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2398 dup2 (fd, 0);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2399 dup2 (fd, 1);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2400 dup2 (fd, 2);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2401 }
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2402 execl ("/bin/mkdir", "mkdir", dpath, (char *) 0);
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2403 _exit (-1); /* Can't exec /bin/mkdir */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2404
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2405 default: /* Parent process */
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2406 wait_for_termination (cpid);
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2407 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2408
53715
811d720ddd2b (mkdir, rmdir): Also check synch_process_termsig.
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
2409 if (synch_process_death != 0 || synch_process_retcode != 0
811d720ddd2b (mkdir, rmdir): Also check synch_process_termsig.
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
2410 || synch_process_termsig != 0)
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2411 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2412 errno = EIO; /* We don't know why, but */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2413 return -1; /* /bin/mkdir failed */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2414 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2415
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2416 return 0;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2417 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2418 #endif /* not HAVE_MKDIR */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2419
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2420 #ifndef HAVE_RMDIR
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2421 int
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2422 rmdir (char *dpath)
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2423 {
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2424 int cpid, status, fd;
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2425 struct stat statbuf;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2426
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2427 if (stat (dpath, &statbuf) != 0)
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2428 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2429 /* Stat just set errno. We don't have to */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2430 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2431 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2432
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2433 synch_process_alive = 1;
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2434 switch (cpid = fork ())
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2435 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2436
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2437 case -1: /* Error in fork */
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2438 return (-1); /* Errno is set already */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2439
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2440 case 0: /* Child process */
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2441 fd = emacs_open ("/dev/null", O_RDWR, 0);
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2442 if (fd >= 0)
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2443 {
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2444 dup2 (fd, 0);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2445 dup2 (fd, 1);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2446 dup2 (fd, 2);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2447 }
12326
b99947e6b447 (rmdir): Fix up Aug 19 1993 change that wasn't done right.
Richard M. Stallman <rms@gnu.org>
parents: 12231
diff changeset
2448 execl ("/bin/rmdir", "rmdir", dpath, (char *) 0);
b99947e6b447 (rmdir): Fix up Aug 19 1993 change that wasn't done right.
Richard M. Stallman <rms@gnu.org>
parents: 12231
diff changeset
2449 _exit (-1); /* Can't exec /bin/rmdir */
b99947e6b447 (rmdir): Fix up Aug 19 1993 change that wasn't done right.
Richard M. Stallman <rms@gnu.org>
parents: 12231
diff changeset
2450
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2451 default: /* Parent process */
12326
b99947e6b447 (rmdir): Fix up Aug 19 1993 change that wasn't done right.
Richard M. Stallman <rms@gnu.org>
parents: 12231
diff changeset
2452 wait_for_termination (cpid);
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2453 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2454
53715
811d720ddd2b (mkdir, rmdir): Also check synch_process_termsig.
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
2455 if (synch_process_death != 0 || synch_process_retcode != 0
811d720ddd2b (mkdir, rmdir): Also check synch_process_termsig.
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
2456 || synch_process_termsig != 0)
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2457 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2458 errno = EIO; /* We don't know why, but */
12326
b99947e6b447 (rmdir): Fix up Aug 19 1993 change that wasn't done right.
Richard M. Stallman <rms@gnu.org>
parents: 12231
diff changeset
2459 return -1; /* /bin/rmdir failed */
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2460 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2461
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2462 return 0;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2463 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2464 #endif /* !HAVE_RMDIR */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2465
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2466
109165
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2467 #ifndef HAVE_MEMSET
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2468 void *
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2469 memset (void *b, int n, size_t length)
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2470 {
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2471 unsigned char *p = b;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2472 while (length-- > 0)
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2473 *p++ = n;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2474 return b;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2475 }
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2476 #endif /* !HAVE_MEMSET */
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2477
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2478 #ifndef HAVE_MEMCPY
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2479 void *
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2480 memcpy (void *b1, void *b2, size_t length)
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2481 {
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2482 unsigned char *p1 = b1, *p2 = b2;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2483 while (length-- > 0)
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2484 *p1++ = *p2++;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2485 return b1;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2486 }
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2487 #endif /* !HAVE_MEMCPY */
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2488
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2489 #ifndef HAVE_MEMMOVE
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2490 void *
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2491 memmove (void *b1, void *b2, size_t length)
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2492 {
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2493 unsigned char *p1 = b1, *p2 = b2;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2494 if (p1 < p2 || p1 >= p2 + length)
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2495 while (length-- > 0)
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2496 *p1++ = *p2++;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2497 else
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2498 {
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2499 p1 += length;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2500 p2 += length;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2501 while (length-- > 0)
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2502 *--p1 = *--p2;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2503 }
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2504 return b1;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2505 }
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2506 #endif /* !HAVE_MEMCPY */
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2507
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2508 #ifndef HAVE_MEMCMP
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2509 int
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2510 memcmp (void *b1, void *b2, size_t length)
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2511 {
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2512 unsigned char *p1 = b1, *p2 = b2;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2513 while (length-- > 0)
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2514 if (*p1++ != *p2++)
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2515 return p1[-1] < p2[-1] ? -1 : 1;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2516 return 0;
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2517 }
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2518 #endif /* !HAVE_MEMCMP */
750db9f3e6d8 Replace bcopy, bzero, bcmp by memcpy, memmove, memset, memcmp
Andreas Schwab <schwab@linux-m68k.org>
parents: 109159
diff changeset
2519
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2520 #ifndef HAVE_STRSIGNAL
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2521 char *
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2522 strsignal (int code)
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2523 {
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2524 char *signame = 0;
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2525
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2526 if (0 <= code && code < NSIG)
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2527 {
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2528 /* Cast to suppress warning if the table has const char *. */
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2529 signame = (char *) sys_siglist[code];
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2530 }
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2531
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2532 return signame;
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2533 }
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2534 #endif /* HAVE_STRSIGNAL */
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2535
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
2536 #ifndef DOS_NT
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2537 /* For make-serial-process */
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2538 int
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2539 serial_open (char *port)
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2540 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2541 int fd = -1;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2542
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2543 fd = emacs_open ((char*) port,
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2544 O_RDWR
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2545 #ifdef O_NONBLOCK
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2546 | O_NONBLOCK
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2547 #else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2548 | O_NDELAY
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2549 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2550 #ifdef O_NOCTTY
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2551 | O_NOCTTY
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2552 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2553 , 0);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2554 if (fd < 0)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2555 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2556 error ("Could not open %s: %s",
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2557 port, emacs_strerror (errno));
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2558 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2559 #ifdef TIOCEXCL
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2560 ioctl (fd, TIOCEXCL, (char *) 0);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2561 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2562
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2563 return fd;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2564 }
96099
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2565
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2566 #if !defined (HAVE_CFMAKERAW)
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2567 /* Workaround for targets which are missing cfmakeraw. */
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2568 /* Pasted from man page. */
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2569 static void
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2570 cfmakeraw (struct termios *termios_p)
96099
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2571 {
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2572 termios_p->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2573 termios_p->c_oflag &= ~OPOST;
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2574 termios_p->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2575 termios_p->c_cflag &= ~(CSIZE|PARENB);
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2576 termios_p->c_cflag |= CS8;
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2577 }
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2578 #endif /* !defined (HAVE_CFMAKERAW */
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2579
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2580 #if !defined (HAVE_CFSETSPEED)
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2581 /* Workaround for targets which are missing cfsetspeed. */
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2582 static int
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2583 cfsetspeed (struct termios *termios_p, speed_t vitesse)
96099
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2584 {
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2585 return (cfsetispeed (termios_p, vitesse)
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2586 + cfsetospeed (termios_p, vitesse));
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2587 }
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2588 #endif
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2589
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2590 /* For serial-process-configure */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2591 void
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2592 serial_configure (struct Lisp_Process *p,
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2593 Lisp_Object contact)
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2594 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2595 Lisp_Object childp2 = Qnil;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2596 Lisp_Object tem = Qnil;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2597 struct termios attr;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2598 int err = -1;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2599 char summary[4] = "???"; /* This usually becomes "8N1". */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2600
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2601 childp2 = Fcopy_sequence (p->childp);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2602
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2603 /* Read port attributes and prepare default configuration. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2604 err = tcgetattr (p->outfd, &attr);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2605 if (err != 0)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2606 error ("tcgetattr() failed: %s", emacs_strerror (errno));
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2607 cfmakeraw (&attr);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2608 #if defined (CLOCAL)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2609 attr.c_cflag |= CLOCAL;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2610 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2611 #if defined (CREAD)
100574
6b3d372af944 (serial_configure): Fix typo.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100572
diff changeset
2612 attr.c_cflag |= CREAD;
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2613 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2614
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2615 /* Configure speed. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2616 if (!NILP (Fplist_member (contact, QCspeed)))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2617 tem = Fplist_get (contact, QCspeed);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2618 else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2619 tem = Fplist_get (p->childp, QCspeed);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2620 CHECK_NUMBER (tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2621 err = cfsetspeed (&attr, XINT (tem));
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2622 if (err != 0)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2623 error ("cfsetspeed(%d) failed: %s", XINT (tem), emacs_strerror (errno));
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2624 childp2 = Fplist_put (childp2, QCspeed, tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2625
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2626 /* Configure bytesize. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2627 if (!NILP (Fplist_member (contact, QCbytesize)))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2628 tem = Fplist_get (contact, QCbytesize);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2629 else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2630 tem = Fplist_get (p->childp, QCbytesize);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2631 if (NILP (tem))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2632 tem = make_number (8);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2633 CHECK_NUMBER (tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2634 if (XINT (tem) != 7 && XINT (tem) != 8)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2635 error (":bytesize must be nil (8), 7, or 8");
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2636 summary[0] = XINT (tem) + '0';
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2637 #if defined (CSIZE) && defined (CS7) && defined (CS8)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2638 attr.c_cflag &= ~CSIZE;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2639 attr.c_cflag |= ((XINT (tem) == 7) ? CS7 : CS8);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2640 #else
96309
7d463685c286 Comment fixes.
Glenn Morris <rgm@gnu.org>
parents: 96303
diff changeset
2641 /* Don't error on bytesize 8, which should be set by cfmakeraw. */
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2642 if (XINT (tem) != 8)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2643 error ("Bytesize cannot be changed");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2644 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2645 childp2 = Fplist_put (childp2, QCbytesize, tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2646
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2647 /* Configure parity. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2648 if (!NILP (Fplist_member (contact, QCparity)))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2649 tem = Fplist_get (contact, QCparity);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2650 else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2651 tem = Fplist_get (p->childp, QCparity);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2652 if (!NILP (tem) && !EQ (tem, Qeven) && !EQ (tem, Qodd))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2653 error (":parity must be nil (no parity), `even', or `odd'");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2654 #if defined (PARENB) && defined (PARODD) && defined (IGNPAR) && defined (INPCK)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2655 attr.c_cflag &= ~(PARENB | PARODD);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2656 attr.c_iflag &= ~(IGNPAR | INPCK);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2657 if (NILP (tem))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2658 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2659 summary[1] = 'N';
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2660 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2661 else if (EQ (tem, Qeven))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2662 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2663 summary[1] = 'E';
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2664 attr.c_cflag |= PARENB;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2665 attr.c_iflag |= (IGNPAR | INPCK);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2666 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2667 else if (EQ (tem, Qodd))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2668 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2669 summary[1] = 'O';
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2670 attr.c_cflag |= (PARENB | PARODD);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2671 attr.c_iflag |= (IGNPAR | INPCK);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2672 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2673 #else
96309
7d463685c286 Comment fixes.
Glenn Morris <rgm@gnu.org>
parents: 96303
diff changeset
2674 /* Don't error on no parity, which should be set by cfmakeraw. */
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2675 if (!NILP (tem))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2676 error ("Parity cannot be configured");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2677 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2678 childp2 = Fplist_put (childp2, QCparity, tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2679
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2680 /* Configure stopbits. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2681 if (!NILP (Fplist_member (contact, QCstopbits)))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2682 tem = Fplist_get (contact, QCstopbits);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2683 else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2684 tem = Fplist_get (p->childp, QCstopbits);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2685 if (NILP (tem))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2686 tem = make_number (1);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2687 CHECK_NUMBER (tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2688 if (XINT (tem) != 1 && XINT (tem) != 2)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2689 error (":stopbits must be nil (1 stopbit), 1, or 2");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2690 summary[2] = XINT (tem) + '0';
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2691 #if defined (CSTOPB)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2692 attr.c_cflag &= ~CSTOPB;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2693 if (XINT (tem) == 2)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2694 attr.c_cflag |= CSTOPB;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2695 #else
96309
7d463685c286 Comment fixes.
Glenn Morris <rgm@gnu.org>
parents: 96303
diff changeset
2696 /* Don't error on 1 stopbit, which should be set by cfmakeraw. */
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2697 if (XINT (tem) != 1)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2698 error ("Stopbits cannot be configured");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2699 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2700 childp2 = Fplist_put (childp2, QCstopbits, tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2701
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2702 /* Configure flowcontrol. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2703 if (!NILP (Fplist_member (contact, QCflowcontrol)))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2704 tem = Fplist_get (contact, QCflowcontrol);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2705 else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2706 tem = Fplist_get (p->childp, QCflowcontrol);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2707 if (!NILP (tem) && !EQ (tem, Qhw) && !EQ (tem, Qsw))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2708 error (":flowcontrol must be nil (no flowcontrol), `hw', or `sw'");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2709 #if defined (CRTSCTS)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2710 attr.c_cflag &= ~CRTSCTS;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2711 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2712 #if defined (CNEW_RTSCTS)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2713 attr.c_cflag &= ~CNEW_RTSCTS;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2714 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2715 #if defined (IXON) && defined (IXOFF)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2716 attr.c_iflag &= ~(IXON | IXOFF);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2717 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2718 if (NILP (tem))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2719 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2720 /* Already configured. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2721 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2722 else if (EQ (tem, Qhw))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2723 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2724 #if defined (CRTSCTS)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2725 attr.c_cflag |= CRTSCTS;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2726 #elif defined (CNEW_RTSCTS)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2727 attr.c_cflag |= CNEW_RTSCTS;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2728 #else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2729 error ("Hardware flowcontrol (RTS/CTS) not supported");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2730 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2731 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2732 else if (EQ (tem, Qsw))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2733 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2734 #if defined (IXON) && defined (IXOFF)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2735 attr.c_iflag |= (IXON | IXOFF);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2736 #else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2737 error ("Software flowcontrol (XON/XOFF) not supported");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2738 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2739 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2740 childp2 = Fplist_put (childp2, QCflowcontrol, tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2741
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2742 /* Activate configuration. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2743 err = tcsetattr (p->outfd, TCSANOW, &attr);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2744 if (err != 0)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2745 error ("tcsetattr() failed: %s", emacs_strerror (errno));
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2746
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2747 childp2 = Fplist_put (childp2, QCsummary, build_string (summary));
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2748 p->childp = childp2;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2749
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2750 }
109949
5f187a091415 Simplify termio code.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109726
diff changeset
2751 #endif /* not DOS_NT */
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2752
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2753 /* System depended enumeration of and access to system processes a-la ps(1). */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2754
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2755 #ifdef HAVE_PROCFS
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2756
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2757 /* Process enumeration and access via /proc. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2758
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2759 Lisp_Object
109126
aec1143e8d85 Convert (most) functions in src to standard C.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 109100
diff changeset
2760 list_system_processes (void)
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2761 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2762 Lisp_Object procdir, match, proclist, next;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2763 struct gcpro gcpro1, gcpro2;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2764 register Lisp_Object tail;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2765
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2766 GCPRO2 (procdir, match);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2767 /* For every process on the system, there's a directory in the
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2768 "/proc" pseudo-directory whose name is the numeric ID of that
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2769 process. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2770 procdir = build_string ("/proc");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2771 match = build_string ("[0-9]+");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2772 proclist = directory_files_internal (procdir, Qnil, match, Qt, 0, Qnil);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2773
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2774 /* `proclist' gives process IDs as strings. Destructively convert
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2775 each string into a number. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2776 for (tail = proclist; CONSP (tail); tail = next)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2777 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2778 next = XCDR (tail);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2779 XSETCAR (tail, Fstring_to_number (XCAR (tail), Qnil));
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2780 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2781 UNGCPRO;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2782
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2783 /* directory_files_internal returns the files in reverse order; undo
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2784 that. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2785 proclist = Fnreverse (proclist);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2786 return proclist;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2787 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2788
103711
531520bb5152 * sysdep.c (sys_suspend): Remove USG_JOBCTRL #ifdef, unused.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103558
diff changeset
2789 /* The WINDOWSNT implementation is in w32.c.
531520bb5152 * sysdep.c (sys_suspend): Remove USG_JOBCTRL #ifdef, unused.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103558
diff changeset
2790 The MSDOS implementation is in dosfns.c. */
100862
63bb1043409e (list_system_processes, system_process_attributes) [MSDOS]: Don't use the
Eli Zaretskii <eliz@gnu.org>
parents: 100838
diff changeset
2791 #elif !defined (WINDOWSNT) && !defined (MSDOS)
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2792
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2793 Lisp_Object
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2794 list_system_processes (void)
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2795 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2796 return Qnil;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2797 }
100595
04f1da2d6ad5 Add commentary about WINDOWSNT implementation of list_system_processes and
Eli Zaretskii <eliz@gnu.org>
parents: 100575
diff changeset
2798
04f1da2d6ad5 Add commentary about WINDOWSNT implementation of list_system_processes and
Eli Zaretskii <eliz@gnu.org>
parents: 100575
diff changeset
2799 #endif /* !defined (WINDOWSNT) */
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2800
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2801 #ifdef GNU_LINUX
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2802 static void
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2803 time_from_jiffies (unsigned long long tval, long hz,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2804 time_t *sec, unsigned *usec)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2805 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2806 unsigned long long ullsec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2807
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2808 *sec = tval / hz;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2809 ullsec = *sec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2810 tval -= ullsec * hz;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2811 /* Careful: if HZ > 1 million, then integer division by it yields zero. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2812 if (hz <= 1000000)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2813 *usec = tval * 1000000 / hz;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2814 else
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2815 *usec = tval / (hz / 1000000);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2816 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2817
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2818 static Lisp_Object
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2819 ltime_from_jiffies (unsigned long long tval, long hz)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2820 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2821 time_t sec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2822 unsigned usec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2823
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2824 time_from_jiffies (tval, hz, &sec, &usec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2825
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2826 return list3 (make_number ((sec >> 16) & 0xffff),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2827 make_number (sec & 0xffff),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2828 make_number (usec));
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2829 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2830
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2831 static void
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2832 get_up_time (time_t *sec, unsigned *usec)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2833 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2834 FILE *fup;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2835
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2836 *sec = *usec = 0;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2837
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2838 BLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2839 fup = fopen ("/proc/uptime", "r");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2840
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2841 if (fup)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2842 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2843 double uptime, idletime;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2844
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2845 /* The numbers in /proc/uptime use C-locale decimal point, but
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2846 we already set ourselves to the C locale (see `fixup_locale'
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2847 in emacs.c). */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2848 if (2 <= fscanf (fup, "%lf %lf", &uptime, &idletime))
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2849 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2850 *sec = uptime;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2851 *usec = (uptime - *sec) * 1000000;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2852 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2853 fclose (fup);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2854 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2855 UNBLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2856 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2857
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2858 #define MAJOR(d) (((unsigned)(d) >> 8) & 0xfff)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2859 #define MINOR(d) (((unsigned)(d) & 0xff) | (((unsigned)(d) & 0xfff00000) >> 12))
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2860
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2861 static Lisp_Object
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
2862 procfs_ttyname (int rdev)
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2863 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2864 FILE *fdev = NULL;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2865 char name[PATH_MAX];
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2866
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2867 BLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2868 fdev = fopen ("/proc/tty/drivers", "r");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2869
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2870 if (fdev)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2871 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2872 unsigned major;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2873 unsigned long minor_beg, minor_end;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2874 char minor[25]; /* 2 32-bit numbers + dash */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2875 char *endp;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2876
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2877 while (!feof (fdev) && !ferror (fdev))
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2878 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2879 if (3 <= fscanf (fdev, "%*s %s %u %s %*s\n", name, &major, minor)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2880 && major == MAJOR (rdev))
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2881 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2882 minor_beg = strtoul (minor, &endp, 0);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2883 if (*endp == '\0')
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2884 minor_end = minor_beg;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2885 else if (*endp == '-')
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2886 minor_end = strtoul (endp + 1, &endp, 0);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2887 else
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2888 continue;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2889
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2890 if (MINOR (rdev) >= minor_beg && MINOR (rdev) <= minor_end)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2891 {
105746
41169068dcab (procfs_ttyname): Fix sprintf format to match argument
Andreas Schwab <schwab@linux-m68k.org>
parents: 103711
diff changeset
2892 sprintf (name + strlen (name), "%u", MINOR (rdev));
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2893 break;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2894 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2895 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2896 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2897 fclose (fdev);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2898 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2899 UNBLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2900 return build_string (name);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2901 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2902
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2903 static unsigned long
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2904 procfs_get_total_memory (void)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2905 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2906 FILE *fmem = NULL;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2907 unsigned long retval = 2 * 1024 * 1024; /* default: 2GB */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2908
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2909 BLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2910 fmem = fopen ("/proc/meminfo", "r");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2911
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2912 if (fmem)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2913 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2914 unsigned long entry_value;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2915 char entry_name[20]; /* the longest I saw is 13+1 */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2916
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2917 while (!feof (fmem) && !ferror (fmem))
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2918 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2919 if (2 <= fscanf (fmem, "%s %lu kB\n", entry_name, &entry_value)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2920 && strcmp (entry_name, "MemTotal:") == 0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2921 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2922 retval = entry_value;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2923 break;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2924 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2925 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2926 fclose (fmem);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2927 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2928 UNBLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2929 return retval;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2930 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2931
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2932 Lisp_Object
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
2933 system_process_attributes (Lisp_Object pid)
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2934 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2935 char procfn[PATH_MAX], fn[PATH_MAX];
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2936 struct stat st;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2937 struct passwd *pw;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2938 struct group *gr;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2939 long clocks_per_sec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2940 char *procfn_end;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2941 char procbuf[1025], *p, *q;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2942 int fd;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2943 ssize_t nread;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2944 const char *cmd = NULL;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2945 char *cmdline = NULL;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2946 size_t cmdsize = 0, cmdline_size;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2947 unsigned char c;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2948 int proc_id, ppid, uid, gid, pgrp, sess, tty, tpgid, thcount;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2949 unsigned long long utime, stime, cutime, cstime, start;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2950 long priority, nice, rss;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2951 unsigned long minflt, majflt, cminflt, cmajflt, vsize;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2952 time_t sec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2953 unsigned usec;
107846
e8ea73860300 Try to solve the problem of spurious EOF chars in long lines of text
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107737
diff changeset
2954 EMACS_TIME tnow, tstart, tboot, telapsed;
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2955 double pcpu, pmem;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2956 Lisp_Object attrs = Qnil;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2957 Lisp_Object cmd_str, decoded_cmd, tem;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2958 struct gcpro gcpro1, gcpro2;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2959 EMACS_INT uid_eint, gid_eint;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2960
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2961 CHECK_NUMBER_OR_FLOAT (pid);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2962 proc_id = FLOATP (pid) ? XFLOAT_DATA (pid) : XINT (pid);
105746
41169068dcab (procfs_ttyname): Fix sprintf format to match argument
Andreas Schwab <schwab@linux-m68k.org>
parents: 103711
diff changeset
2963 sprintf (procfn, "/proc/%u", proc_id);
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2964 if (stat (procfn, &st) < 0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2965 return attrs;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2966
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2967 GCPRO2 (attrs, decoded_cmd);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2968
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2969 /* euid egid */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2970 uid = st.st_uid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2971 /* Use of EMACS_INT stops GCC whining about limited range of data type. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2972 uid_eint = uid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2973 attrs = Fcons (Fcons (Qeuid, make_fixnum_or_float (uid_eint)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2974 BLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2975 pw = getpwuid (uid);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2976 UNBLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2977 if (pw)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2978 attrs = Fcons (Fcons (Quser, build_string (pw->pw_name)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2979
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2980 gid = st.st_gid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2981 gid_eint = gid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2982 attrs = Fcons (Fcons (Qegid, make_fixnum_or_float (gid_eint)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2983 BLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2984 gr = getgrgid (gid);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2985 UNBLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2986 if (gr)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2987 attrs = Fcons (Fcons (Qgroup, build_string (gr->gr_name)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2988
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2989 strcpy (fn, procfn);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2990 procfn_end = fn + strlen (fn);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2991 strcpy (procfn_end, "/stat");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2992 fd = emacs_open (fn, O_RDONLY, 0);
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
2993 if (fd >= 0 && (nread = emacs_read (fd, procbuf, sizeof (procbuf) - 1)) > 0)
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2994 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2995 procbuf[nread] = '\0';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2996 p = procbuf;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2997
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2998 p = strchr (p, '(');
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2999 if (p != NULL)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3000 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3001 q = strrchr (p + 1, ')');
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3002 /* comm */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3003 if (q != NULL)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3004 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3005 cmd = p + 1;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3006 cmdsize = q - cmd;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3007 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3008 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3009 else
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3010 q = NULL;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3011 if (cmd == NULL)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3012 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3013 cmd = "???";
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3014 cmdsize = 3;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3015 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3016 /* Command name is encoded in locale-coding-system; decode it. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3017 cmd_str = make_unibyte_string (cmd, cmdsize);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3018 decoded_cmd = code_convert_string_norecord (cmd_str,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3019 Vlocale_coding_system, 0);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3020 attrs = Fcons (Fcons (Qcomm, decoded_cmd), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3021
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3022 if (q)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3023 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3024 EMACS_INT ppid_eint, pgrp_eint, sess_eint, tpgid_eint, thcount_eint;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3025 p = q + 2;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3026 /* state ppid pgrp sess tty tpgid . minflt cminflt majflt cmajflt utime stime cutime cstime priority nice thcount . start vsize rss */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3027 sscanf (p, "%c %d %d %d %d %d %*u %lu %lu %lu %lu %Lu %Lu %Lu %Lu %ld %ld %d %*d %Lu %lu %ld",
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3028 &c, &ppid, &pgrp, &sess, &tty, &tpgid,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3029 &minflt, &cminflt, &majflt, &cmajflt,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3030 &utime, &stime, &cutime, &cstime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3031 &priority, &nice, &thcount, &start, &vsize, &rss);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3032 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3033 char state_str[2];
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3034
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3035 state_str[0] = c;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3036 state_str[1] = '\0';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3037 tem = build_string (state_str);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3038 attrs = Fcons (Fcons (Qstate, tem), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3039 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3040 /* Stops GCC whining about limited range of data type. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3041 ppid_eint = ppid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3042 pgrp_eint = pgrp;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3043 sess_eint = sess;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3044 tpgid_eint = tpgid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3045 thcount_eint = thcount;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3046 attrs = Fcons (Fcons (Qppid, make_fixnum_or_float (ppid_eint)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3047 attrs = Fcons (Fcons (Qpgrp, make_fixnum_or_float (pgrp_eint)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3048 attrs = Fcons (Fcons (Qsess, make_fixnum_or_float (sess_eint)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3049 attrs = Fcons (Fcons (Qttname, procfs_ttyname (tty)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3050 attrs = Fcons (Fcons (Qtpgid, make_fixnum_or_float (tpgid_eint)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3051 attrs = Fcons (Fcons (Qminflt, make_fixnum_or_float (minflt)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3052 attrs = Fcons (Fcons (Qmajflt, make_fixnum_or_float (majflt)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3053 attrs = Fcons (Fcons (Qcminflt, make_fixnum_or_float (cminflt)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3054 attrs = Fcons (Fcons (Qcmajflt, make_fixnum_or_float (cmajflt)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3055 clocks_per_sec = sysconf (_SC_CLK_TCK);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3056 if (clocks_per_sec < 0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3057 clocks_per_sec = 100;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3058 attrs = Fcons (Fcons (Qutime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3059 ltime_from_jiffies (utime, clocks_per_sec)),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3060 attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3061 attrs = Fcons (Fcons (Qstime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3062 ltime_from_jiffies (stime, clocks_per_sec)),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3063 attrs);
100830
01439dc6e53b (system_process_attributes): Compute Qtime and Qctime and add them to the alist.
Eli Zaretskii <eliz@gnu.org>
parents: 100595
diff changeset
3064 attrs = Fcons (Fcons (Qtime,
01439dc6e53b (system_process_attributes): Compute Qtime and Qctime and add them to the alist.
Eli Zaretskii <eliz@gnu.org>
parents: 100595
diff changeset
3065 ltime_from_jiffies (stime+utime, clocks_per_sec)),
01439dc6e53b (system_process_attributes): Compute Qtime and Qctime and add them to the alist.
Eli Zaretskii <eliz@gnu.org>
parents: 100595
diff changeset
3066 attrs);
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3067 attrs = Fcons (Fcons (Qcutime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3068 ltime_from_jiffies (cutime, clocks_per_sec)),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3069 attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3070 attrs = Fcons (Fcons (Qcstime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3071 ltime_from_jiffies (cstime, clocks_per_sec)),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3072 attrs);
100830
01439dc6e53b (system_process_attributes): Compute Qtime and Qctime and add them to the alist.
Eli Zaretskii <eliz@gnu.org>
parents: 100595
diff changeset
3073 attrs = Fcons (Fcons (Qctime,
01439dc6e53b (system_process_attributes): Compute Qtime and Qctime and add them to the alist.
Eli Zaretskii <eliz@gnu.org>
parents: 100595
diff changeset
3074 ltime_from_jiffies (cstime+cutime, clocks_per_sec)),
01439dc6e53b (system_process_attributes): Compute Qtime and Qctime and add them to the alist.
Eli Zaretskii <eliz@gnu.org>
parents: 100595
diff changeset
3075 attrs);
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3076 attrs = Fcons (Fcons (Qpri, make_number (priority)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3077 attrs = Fcons (Fcons (Qnice, make_number (nice)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3078 attrs = Fcons (Fcons (Qthcount, make_fixnum_or_float (thcount_eint)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3079 EMACS_GET_TIME (tnow);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3080 get_up_time (&sec, &usec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3081 EMACS_SET_SECS (telapsed, sec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3082 EMACS_SET_USECS (telapsed, usec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3083 EMACS_SUB_TIME (tboot, tnow, telapsed);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3084 time_from_jiffies (start, clocks_per_sec, &sec, &usec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3085 EMACS_SET_SECS (tstart, sec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3086 EMACS_SET_USECS (tstart, usec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3087 EMACS_ADD_TIME (tstart, tboot, tstart);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3088 attrs = Fcons (Fcons (Qstart,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3089 list3 (make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3090 ((EMACS_SECS (tstart) >> 16) & 0xffff),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3091 make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3092 (EMACS_SECS (tstart) & 0xffff),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3093 make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3094 (EMACS_USECS (tstart)))),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3095 attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3096 attrs = Fcons (Fcons (Qvsize, make_fixnum_or_float (vsize/1024)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3097 attrs = Fcons (Fcons (Qrss, make_fixnum_or_float (4*rss)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3098 EMACS_SUB_TIME (telapsed, tnow, tstart);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3099 attrs = Fcons (Fcons (Qetime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3100 list3 (make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3101 ((EMACS_SECS (telapsed) >> 16) & 0xffff),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3102 make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3103 (EMACS_SECS (telapsed) & 0xffff),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3104 make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3105 (EMACS_USECS (telapsed)))),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3106 attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3107 time_from_jiffies (utime + stime, clocks_per_sec, &sec, &usec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3108 pcpu = (sec + usec / 1000000.0) / (EMACS_SECS (telapsed) + EMACS_USECS (telapsed) / 1000000.0);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3109 if (pcpu > 1.0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3110 pcpu = 1.0;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3111 attrs = Fcons (Fcons (Qpcpu, make_float (100 * pcpu)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3112 pmem = 4.0 * 100 * rss / procfs_get_total_memory ();
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3113 if (pmem > 100)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3114 pmem = 100;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3115 attrs = Fcons (Fcons (Qpmem, make_float (pmem)), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3116 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3117 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3118 if (fd >= 0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3119 emacs_close (fd);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3120
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3121 /* args */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3122 strcpy (procfn_end, "/cmdline");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3123 fd = emacs_open (fn, O_RDONLY, 0);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3124 if (fd >= 0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3125 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3126 for (cmdline_size = 0; emacs_read (fd, &c, 1) == 1; cmdline_size++)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3127 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3128 if (isspace (c) || c == '\\')
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3129 cmdline_size++; /* for later quoting, see below */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3130 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3131 if (cmdline_size)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3132 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3133 cmdline = xmalloc (cmdline_size + 1);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3134 lseek (fd, 0L, SEEK_SET);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3135 cmdline[0] = '\0';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3136 if ((nread = read (fd, cmdline, cmdline_size)) >= 0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3137 cmdline[nread++] = '\0';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3138 else
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3139 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3140 /* Assigning zero to `nread' makes us skip the following
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3141 two loops, assign zero to cmdline_size, and enter the
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3142 following `if' clause that handles unknown command
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3143 lines. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3144 nread = 0;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3145 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3146 /* We don't want trailing null characters. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3147 for (p = cmdline + nread - 1; p > cmdline && !*p; p--)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3148 nread--;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3149 for (p = cmdline; p < cmdline + nread; p++)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3150 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3151 /* Escape-quote whitespace and backslashes. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3152 if (isspace (*p) || *p == '\\')
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3153 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3154 memmove (p + 1, p, nread - (p - cmdline));
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3155 nread++;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3156 *p++ = '\\';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3157 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3158 else if (*p == '\0')
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3159 *p = ' ';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3160 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3161 cmdline_size = nread;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3162 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3163 if (!cmdline_size)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3164 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3165 if (!cmd)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3166 cmd = "???";
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3167 if (!cmdsize)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3168 cmdsize = strlen (cmd);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3169 cmdline_size = cmdsize + 2;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3170 cmdline = xmalloc (cmdline_size + 1);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3171 strcpy (cmdline, "[");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3172 strcat (strncat (cmdline, cmd, cmdsize), "]");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3173 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3174 emacs_close (fd);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3175 /* Command line is encoded in locale-coding-system; decode it. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3176 cmd_str = make_unibyte_string (cmdline, cmdline_size);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3177 decoded_cmd = code_convert_string_norecord (cmd_str,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3178 Vlocale_coding_system, 0);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3179 xfree (cmdline);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3180 attrs = Fcons (Fcons (Qargs, decoded_cmd), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3181 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3182
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3183 UNGCPRO;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3184 return attrs;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3185 }
100595
04f1da2d6ad5 Add commentary about WINDOWSNT implementation of list_system_processes and
Eli Zaretskii <eliz@gnu.org>
parents: 100575
diff changeset
3186
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3187 #elif defined (SOLARIS2) && defined (HAVE_PROCFS)
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3188
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3189 /* The <procfs.h> header does not like to be included if _LP64 is defined and
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3190 __FILE_OFFSET_BITS == 64. This is an ugly workaround that. */
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3191 #if !defined (_LP64) && defined (_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3192 #define PROCFS_FILE_OFFSET_BITS_HACK 1
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3193 #undef _FILE_OFFSET_BITS
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3194 #else
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3195 #define PROCFS_FILE_OFFSET_BITS_HACK 0
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3196 #endif
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3197
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3198 #include <procfs.h>
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3199
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3200 #if PROCFS_FILE_OFFSET_BITS_HACK == 1
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3201 #define _FILE_OFFSET_BITS 64
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3202 #endif /* PROCFS_FILE_OFFSET_BITS_HACK == 1 */
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3203
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3204 Lisp_Object
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3205 system_process_attributes (Lisp_Object pid)
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3206 {
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3207 char procfn[PATH_MAX], fn[PATH_MAX];
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3208 struct stat st;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3209 struct passwd *pw;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3210 struct group *gr;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3211 char *procfn_end;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3212 struct psinfo pinfo;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3213 int fd;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3214 ssize_t nread;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3215 int proc_id, uid, gid;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3216 Lisp_Object attrs = Qnil;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3217 Lisp_Object decoded_cmd, tem;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3218 struct gcpro gcpro1, gcpro2;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3219 EMACS_INT uid_eint, gid_eint;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3220
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3221 CHECK_NUMBER_OR_FLOAT (pid);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3222 proc_id = FLOATP (pid) ? XFLOAT_DATA (pid) : XINT (pid);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3223 sprintf (procfn, "/proc/%u", proc_id);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3224 if (stat (procfn, &st) < 0)
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3225 return attrs;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3226
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3227 GCPRO2 (attrs, decoded_cmd);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3228
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3229 /* euid egid */
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3230 uid = st.st_uid;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3231 /* Use of EMACS_INT stops GCC whining about limited range of data type. */
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3232 uid_eint = uid;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3233 attrs = Fcons (Fcons (Qeuid, make_fixnum_or_float (uid_eint)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3234 BLOCK_INPUT;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3235 pw = getpwuid (uid);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3236 UNBLOCK_INPUT;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3237 if (pw)
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3238 attrs = Fcons (Fcons (Quser, build_string (pw->pw_name)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3239
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3240 gid = st.st_gid;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3241 gid_eint = gid;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3242 attrs = Fcons (Fcons (Qegid, make_fixnum_or_float (gid_eint)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3243 BLOCK_INPUT;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3244 gr = getgrgid (gid);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3245 UNBLOCK_INPUT;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3246 if (gr)
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3247 attrs = Fcons (Fcons (Qgroup, build_string (gr->gr_name)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3248
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3249 strcpy (fn, procfn);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3250 procfn_end = fn + strlen (fn);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3251 strcpy (procfn_end, "/psinfo");
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3252 fd = emacs_open (fn, O_RDONLY, 0);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3253 if (fd >= 0
109159
3e9fdeb960d1 * coding.c, sysdep.c: Convert some more functions to standard C.
Juanma Barranquero <lekktu@gmail.com>
parents: 109130
diff changeset
3254 && (nread = read (fd, (char*)&pinfo, sizeof (struct psinfo)) > 0))
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3255 {
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3256 attrs = Fcons (Fcons (Qppid, make_fixnum_or_float (pinfo.pr_ppid)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3257 attrs = Fcons (Fcons (Qpgrp, make_fixnum_or_float (pinfo.pr_pgid)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3258 attrs = Fcons (Fcons (Qsess, make_fixnum_or_float (pinfo.pr_sid)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3259
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3260 {
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3261 char state_str[2];
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3262 state_str[0] = pinfo.pr_lwp.pr_sname;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3263 state_str[1] = '\0';
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3264 tem = build_string (state_str);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3265 attrs = Fcons (Fcons (Qstate, tem), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3266 }
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3267
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3268 /* FIXME: missing Qttyname. psinfo.pr_ttydev is a dev_t,
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3269 need to get a string from it. */
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3270
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3271 /* FIXME: missing: Qtpgid */
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3272
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3273 /* FIXME: missing:
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3274 Qminflt
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3275 Qmajflt
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3276 Qcminflt
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3277 Qcmajflt
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3278
100838
5deb9f2f65ae (system_process_attributes): Provide Qtime and Qctime
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100830
diff changeset
3279 Qutime
5deb9f2f65ae (system_process_attributes): Provide Qtime and Qctime
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100830
diff changeset
3280 Qcutime
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3281 Qstime
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3282 Qcstime
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3283 Are they available? */
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3284
100838
5deb9f2f65ae (system_process_attributes): Provide Qtime and Qctime
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100830
diff changeset
3285 attrs = Fcons (Fcons (Qtime,
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3286 list3 (make_number (pinfo.pr_time.tv_sec >> 16),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3287 make_number (pinfo.pr_time.tv_sec & 0xffff),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3288 make_number (pinfo.pr_time.tv_nsec))),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3289 attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3290
100838
5deb9f2f65ae (system_process_attributes): Provide Qtime and Qctime
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100830
diff changeset
3291 attrs = Fcons (Fcons (Qctime,
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3292 list3 (make_number (pinfo.pr_ctime.tv_sec >> 16),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3293 make_number (pinfo.pr_ctime.tv_sec & 0xffff),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3294 make_number (pinfo.pr_ctime.tv_nsec))),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3295 attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3296
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3297 attrs = Fcons (Fcons (Qpri, make_number (pinfo.pr_lwp.pr_pri)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3298 attrs = Fcons (Fcons (Qnice, make_number (pinfo.pr_lwp.pr_nice)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3299 attrs = Fcons (Fcons (Qthcount, make_fixnum_or_float (pinfo.pr_nlwp)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3300
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3301 attrs = Fcons (Fcons (Qstart,
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3302 list3 (make_number (pinfo.pr_start.tv_sec >> 16),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3303 make_number (pinfo.pr_start.tv_sec & 0xffff),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3304 make_number (pinfo.pr_start.tv_nsec))),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3305 attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3306 attrs = Fcons (Fcons (Qvsize, make_fixnum_or_float (pinfo.pr_size)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3307 attrs = Fcons (Fcons (Qrss, make_fixnum_or_float (pinfo.pr_rssize)), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3308
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3309 /* pr_pctcpu and pr_pctmem are encoded as a fixed point 16 bit number in [0 ... 1]. */
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3310 attrs = Fcons (Fcons (Qpcpu, (pinfo.pr_pctcpu * 100.0) / (double)0x8000), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3311 attrs = Fcons (Fcons (Qpmem, (pinfo.pr_pctmem * 100.0) / (double)0x8000), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3312
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3313 decoded_cmd
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3314 = code_convert_string_norecord (make_unibyte_string (pinfo.pr_fname,
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3315 strlen (pinfo.pr_fname)),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3316 Vlocale_coding_system, 0);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3317 attrs = Fcons (Fcons (Qcomm, decoded_cmd), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3318 decoded_cmd
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3319 = code_convert_string_norecord (make_unibyte_string (pinfo.pr_psargs,
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3320 strlen (pinfo.pr_psargs)),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3321 Vlocale_coding_system, 0);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3322 attrs = Fcons (Fcons (Qargs, decoded_cmd), attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3323 }
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3324
100575
a6c184e576ae (system_process_attributes): Close fd when done.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100574
diff changeset
3325 if (fd >= 0)
a6c184e576ae (system_process_attributes): Close fd when done.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100574
diff changeset
3326 emacs_close (fd);
a6c184e576ae (system_process_attributes): Close fd when done.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100574
diff changeset
3327
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3328 UNGCPRO;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3329 return attrs;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3330 }
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3331
103711
531520bb5152 * sysdep.c (sys_suspend): Remove USG_JOBCTRL #ifdef, unused.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103558
diff changeset
3332 /* The WINDOWSNT implementation is in w32.c.
531520bb5152 * sysdep.c (sys_suspend): Remove USG_JOBCTRL #ifdef, unused.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103558
diff changeset
3333 The MSDOS implementation is in dosfns.c. */
100862
63bb1043409e (list_system_processes, system_process_attributes) [MSDOS]: Don't use the
Eli Zaretskii <eliz@gnu.org>
parents: 100838
diff changeset
3334 #elif !defined (WINDOWSNT) && !defined (MSDOS)
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3335
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3336 Lisp_Object
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3337 system_process_attributes (Lisp_Object pid)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3338 {
100572
7d5b97314a0a * sysdep.c (system_process_attributes): Fix typo.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100567
diff changeset
3339 return Qnil;
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3340 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3341
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3342 #endif /* !defined (WINDOWSNT) */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3343
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32236
diff changeset
3344
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51572
diff changeset
3345 /* arch-tag: edb43589-4e09-4544-b325-978b5b121dcf
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51572
diff changeset
3346 (do not change this comment) */