annotate src/sysdep.c @ 109069:325f0ae2b5bf

xfns.c (x_default_font_parameter): Remove got_from_system (Bug#6526).
author Jan D <jan.h.d@swipnet.se>
date Mon, 28 Jun 2010 14:46:39 +0200
parents d86e65007470
children 2bc9a0c04c87
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 #ifdef HAVE_CONFIG_H
64341c22fb4c Include <config.h>.
Pavel Janík <Pavel@Janik.cz>
parents: 41969
diff changeset
22 #include <config.h>
64341c22fb4c Include <config.h>.
Pavel Janík <Pavel@Janik.cz>
parents: 41969
diff changeset
23 #endif
64341c22fb4c Include <config.h>.
Pavel Janík <Pavel@Janik.cz>
parents: 41969
diff changeset
24
103083
dcf1f34f1713 * sysdep.c: Include <ctype.h>.
Andreas Schwab <schwab@linux-m68k.org>
parents: 101646
diff changeset
25 #include <ctype.h>
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #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
27 #include <stdio.h>
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 #include <setjmp.h>
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
29 #ifdef HAVE_PWD_H
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
30 #include <pwd.h>
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
31 #include <grp.h>
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
32 #endif /* HAVE_PWD_H */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
33 #ifdef HAVE_LIMITS_H
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
34 #include <limits.h>
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
35 #endif /* HAVE_LIMITS_H */
29387
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
36 #ifdef HAVE_UNISTD_H
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
37 #include <unistd.h>
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
38 #endif
100566
91f7b663a0fd Include alloca.h.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100565
diff changeset
39
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 #include "lisp.h"
35055
daf01616a3e7 (random, srandom): Declare explicitly.
Dave Love <fx@gnu.org>
parents: 33718
diff changeset
41 /* Including stdlib.h isn't necessarily enough to get srandom
daf01616a3e7 (random, srandom): Declare explicitly.
Dave Love <fx@gnu.org>
parents: 33718
diff changeset
42 declared, e.g. without __USE_XOPEN_EXTENDED with glibc 2. */
daf01616a3e7 (random, srandom): Declare explicitly.
Dave Love <fx@gnu.org>
parents: 33718
diff changeset
43
84396
a21cc2869d36 [WINDOWSNT]: Don't include sysselect.h
Eli Zaretskii <eliz@gnu.org>
parents: 83648
diff changeset
44 /* The w32 build defines select stuff in w32.h, which is included by
a21cc2869d36 [WINDOWSNT]: Don't include sysselect.h
Eli Zaretskii <eliz@gnu.org>
parents: 83648
diff changeset
45 sys/select.h (included below). */
a21cc2869d36 [WINDOWSNT]: Don't include sysselect.h
Eli Zaretskii <eliz@gnu.org>
parents: 83648
diff changeset
46 #ifndef WINDOWSNT
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
47 #include "sysselect.h"
84396
a21cc2869d36 [WINDOWSNT]: Don't include sysselect.h
Eli Zaretskii <eliz@gnu.org>
parents: 83648
diff changeset
48 #endif
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
49
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
50 #include "blockinput.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
52 #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
53 #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
54 #define write sys_write
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
55 #include <windows.h>
31101
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
56 #ifndef NULL
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
57 #define NULL 0
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
58 #endif
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
59 #endif /* not WINDOWSNT */
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
60
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 #include <sys/types.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 #include <sys/stat.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 #include <errno.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64
29125
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
65 #ifdef HAVE_SETPGID
108235
9aa39b975b8a Remove BSD_PGRPS.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108234
diff changeset
66 #if !defined (USG)
29911
02b0c6c15f1c Undefine setpgrp before setting it.
Dave Love <fx@gnu.org>
parents: 29812
diff changeset
67 #undef setpgrp
29125
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
68 #define setpgrp setpgid
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
69 #endif
29150
0398ec3316c5 (setpgrp): Don't define if USG and BSD_PGRPS are not defined.
Gerd Moellmann <gerd@gnu.org>
parents: 29125
diff changeset
70 #endif
29125
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
71
16003
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
72 /* 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
73 #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
74 #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
75 #endif
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
76
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
77 #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
78 #include <dos.h>
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
79 #include "dosfns.h"
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
80 #include "msdos.h"
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
81 #include <sys/param.h>
14971
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
82
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
83 extern int etext;
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
84 extern unsigned start __asm__ ("start");
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
85 #endif
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
86
5533
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
87 #include <sys/file.h>
46922
ee04d07683ab [!VMS]: Include sys/files.h.
Richard M. Stallman <rms@gnu.org>
parents: 46653
diff changeset
88
48652
682129896be4 (fcntl.h): Test only HAVE_FCNTL_H.
Richard M. Stallman <rms@gnu.org>
parents: 48507
diff changeset
89 #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
90 #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
91 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
93 #ifndef MSDOS
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94 #include <sys/ioctl.h>
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
95 #endif
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
96
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
97 #include "systty.h"
4640
1ae92cbb80ba Include syswait.h.
Richard M. Stallman <rms@gnu.org>
parents: 4438
diff changeset
98 #include "syswait.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99
87730
91da483b3fa5 * movemail.c:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
100 #if defined (USG)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 #include <sys/utsname.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 #include <memory.h>
87730
91da483b3fa5 * movemail.c:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87649
diff changeset
103 #endif /* USG */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 extern int quit_char;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106
31101
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
107 #include "keyboard.h"
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
108 #include "frame.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 #include "window.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 #include "termhooks.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 #include "termchar.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 #include "termopts.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 #include "dispextern.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 #include "process.h"
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
115 #include "cm.h" /* for reset_sys_modes */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116
95917
c46e112bded0 Comment fix for rms.
Glenn Morris <rgm@gnu.org>
parents: 95884
diff changeset
117 /* For serial_configure and serial_open. */
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
118 extern Lisp_Object QCport, QCspeed, QCprocess;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
119 extern Lisp_Object QCbytesize, QCstopbits, QCparity, Qodd, Qeven;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
120 extern Lisp_Object QCflowcontrol, Qhw, Qsw, QCsummary;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
121
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
122 #ifdef WINDOWSNT
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
123 #include <direct.h>
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
124 /* 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
125 #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
126 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
127 int _cdecl _getpid (void);
65418
b7f29d144468 [WINDOWSNT]: Add prototype for getwd.
Eli Zaretskii <eliz@gnu.org>
parents: 65410
diff changeset
128 extern char *getwd (char *);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
129 #endif
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
130
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
131 #include "syssignal.h"
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
132 #include "systime.h"
9239
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
133 #ifdef HAVE_UTIME_H
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
134 #include <utime.h>
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
135 #endif
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
136
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
137 #ifndef HAVE_UTIMES
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
138 #ifndef HAVE_STRUCT_UTIMBUF
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
139 /* 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
140 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
141 struct utimbuf {
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
142 long actime;
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
143 long modtime;
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
144 };
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
145 #endif
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
146 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147
4952
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
148 /* 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
149 #ifndef LPASS8
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
150 #define LPASS8 0
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
151 #endif
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
152
105959
ba3ffbd9c422 * process.c (ifflag_def): Make flag_sym constant.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105746
diff changeset
153 static const int baud_convert[] =
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 0, 50, 75, 110, 135, 150, 200, 300, 600, 1200,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 1800, 2400, 4800, 9600, 19200, 38400
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 };
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158
29252
c8f4d06938b9 (ospeed) [HAVE_SPEED_T]: Declare as `extern speed_t'.
Gerd Moellmann <gerd@gnu.org>
parents: 29150
diff changeset
159 #ifdef HAVE_SPEED_T
c8f4d06938b9 (ospeed) [HAVE_SPEED_T]: Declare as `extern speed_t'.
Gerd Moellmann <gerd@gnu.org>
parents: 29150
diff changeset
160 #include <termios.h>
c8f4d06938b9 (ospeed) [HAVE_SPEED_T]: Declare as `extern speed_t'.
Gerd Moellmann <gerd@gnu.org>
parents: 29150
diff changeset
161 #else
19023
f7a3c16c49cb [HAVE_LIBNCURSES]: Declare ospeed as short, unless NCURSES_OSPEED_T.
Richard M. Stallman <rms@gnu.org>
parents: 18808
diff changeset
162 #if defined (HAVE_LIBNCURSES) && ! defined (NCURSES_OSPEED_T)
f7a3c16c49cb [HAVE_LIBNCURSES]: Declare ospeed as short, unless NCURSES_OSPEED_T.
Richard M. Stallman <rms@gnu.org>
parents: 18808
diff changeset
163 #else
41969
e669966d496e Test GNU_LINUX, not LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 41275
diff changeset
164 #if defined (HAVE_TERMIOS_H) && defined (GNU_LINUX)
18808
a431fbda7f23 Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18660
diff changeset
165 #include <termios.h>
16117
16c866efd8b5 [HAVE_TERMIOS_H]: Include termios.h.
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
166 #endif
19023
f7a3c16c49cb [HAVE_LIBNCURSES]: Declare ospeed as short, unless NCURSES_OSPEED_T.
Richard M. Stallman <rms@gnu.org>
parents: 18808
diff changeset
167 #endif
29252
c8f4d06938b9 (ospeed) [HAVE_SPEED_T]: Declare as `extern speed_t'.
Gerd Moellmann <gerd@gnu.org>
parents: 29150
diff changeset
168 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
170 int emacs_ospeed;
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
171
71063
7510757f449b * search.c (matcher_overflow): Mark as NO_RETURN.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 68651
diff changeset
172 void croak P_ ((char *)) NO_RETURN;
21769
07999a47f2ee (croak): Add forward declaration.
Richard M. Stallman <rms@gnu.org>
parents: 21532
diff changeset
173
29812
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
174 /* Temporary used by `sigblock' when defined in terms of signprocmask. */
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
175
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
176 SIGMASKTYPE sigprocmask_set;
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
177
65410
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
178
65657
c6e45e9a83bf * s/aix4-2.h (BROKEN_GET_CURRENT_DIR_NAME): Define
Dan Nicolaescu <dann@ics.uci.edu>
parents: 65580
diff changeset
179 #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
180
65418
b7f29d144468 [WINDOWSNT]: Add prototype for getwd.
Eli Zaretskii <eliz@gnu.org>
parents: 65410
diff changeset
181 /* 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
182 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
183 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
184 char*
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
185 get_current_dir_name ()
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
186 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
187 char *buf;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
188 char *pwd;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
189 struct stat dotstat, pwdstat;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
190 /* 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
191 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
192 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
193 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
194 && (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
195 && stat (pwd, &pwdstat) == 0
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
196 && stat (".", &dotstat) == 0
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
197 && 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
198 && 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
199 #ifdef MAXPATHLEN
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
200 && strlen (pwd) < MAXPATHLEN
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
201 #endif
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 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
204 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
205 if (!buf)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
206 return NULL;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
207 strcpy (buf, pwd);
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
208 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
209 #ifdef HAVE_GETCWD
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
210 else
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 size_t buf_size = 1024;
65418
b7f29d144468 [WINDOWSNT]: Add prototype for getwd.
Eli Zaretskii <eliz@gnu.org>
parents: 65410
diff changeset
213 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
214 if (!buf)
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 for (;;)
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 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
219 break;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
220 if (errno != ERANGE)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
221 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
222 int tmp_errno = errno;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
223 free (buf);
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
224 errno = tmp_errno;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
225 return NULL;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
226 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
227 buf_size *= 2;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
228 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
229 if (!buf)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
230 return NULL;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
231 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
232 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
233 #else
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
234 else
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
235 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
236 /* We need MAXPATHLEN here. */
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
237 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
238 if (!buf)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
239 return NULL;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
240 if (getwd (buf) == NULL)
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
241 {
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
242 int tmp_errno = errno;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
243 free (buf);
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
244 errno = tmp_errno;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
245 return NULL;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
246 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
247 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
248 #endif
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
249 return buf;
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
250 }
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
251 #endif
2a3fa7d60327 (get_current_dir_name) [!HAVE_CURRENT_DIR_NAME]: New function.
Eli Zaretskii <eliz@gnu.org>
parents: 64770
diff changeset
252
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
253
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
254 /* Discard pending input on all input descriptors. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
255
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
256 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
257 discard_tty_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
258 {
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
259 #ifndef WINDOWSNT
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
260 struct emacs_tty buf;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
261
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
264
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
265 #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
266 while (dos_keyread () != -1)
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
267 ;
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
268 #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
269 {
82989
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 82988
diff changeset
270 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
271 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
272 {
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
273 if (tty->input) /* Is the device suspended? */
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
274 {
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
275 EMACS_GET_TTY (fileno (tty->input), &buf);
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
276 EMACS_SET_TTY (fileno (tty->input), &buf, 0);
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
277 }
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
278 }
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
279 }
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
280 #endif /* not MSDOS */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
281 #endif /* not WINDOWSNT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
284
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 #ifdef SIGTSTP
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
287 /* 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
288 the terminal.
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
289 XXX What if we have multiple ttys?
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
290 */
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
291
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
292 void
48507
00bcc92f4acf (stuff_char) [PROTOTYPES]: Provide ISO C arglist.
Dave Love <fx@gnu.org>
parents: 46952
diff changeset
293 stuff_char (char c)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294 {
83004
7900111db01c Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents: 82995
diff changeset
295 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
296 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
297
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 /* Should perhaps error if in batch mode */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 #ifdef TIOCSTI
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
300 ioctl (fileno (CURTTY()->input), TIOCSTI, &c);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 #else /* no TIOCSTI */
5167
6ac5c999a7cc (init_baud_rate): Avoid referring to sg uninitialized.
Richard M. Stallman <rms@gnu.org>
parents: 5158
diff changeset
302 error ("Cannot stuff terminal input characters in this version of Unix");
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303 #endif /* no TIOCSTI */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 #endif /* SIGTSTP */
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
307
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
308 void
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
309 init_baud_rate (int fd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 if (noninteractive)
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
312 emacs_ospeed = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314 {
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
315 #ifdef DOS_NT
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
316 emacs_ospeed = 15;
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
317 #else /* not DOS_NT */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
318 #ifdef HAVE_TERMIOS
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
319 struct termios sg;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
320
5167
6ac5c999a7cc (init_baud_rate): Avoid referring to sg uninitialized.
Richard M. Stallman <rms@gnu.org>
parents: 5158
diff changeset
321 sg.c_cflag = B9600;
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
322 tcgetattr (fd, &sg);
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
323 emacs_ospeed = cfgetospeed (&sg);
97142
c3512b2085a0 * bitmaps/README:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97141
diff changeset
324 #else /* not TERMIOS */
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
325 #ifdef HAVE_TERMIO
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
326 struct termio sg;
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
327
5167
6ac5c999a7cc (init_baud_rate): Avoid referring to sg uninitialized.
Richard M. Stallman <rms@gnu.org>
parents: 5158
diff changeset
328 sg.c_cflag = B9600;
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
329 #ifdef HAVE_TCATTR
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
330 tcgetattr (fd, &sg);
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
331 #else
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
332 ioctl (fd, TCGETA, &sg);
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
333 #endif
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
334 emacs_ospeed = sg.c_cflag & CBAUD;
97142
c3512b2085a0 * bitmaps/README:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97141
diff changeset
335 #else /* neither TERMIOS nor TERMIO */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
336 struct sgttyb sg;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
337
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
338 sg.sg_ospeed = B9600;
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
339 if (ioctl (fd, TIOCGETP, &sg) < 0)
3559
a9b886b3f976 (init_baud_rate) [HAVE_TERMIOS]: Use cfgetospeed.
Richard M. Stallman <rms@gnu.org>
parents: 3472
diff changeset
340 abort ();
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
341 emacs_ospeed = sg.sg_ospeed;
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
342 #endif /* not HAVE_TERMIO */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
343 #endif /* not HAVE_TERMIOS */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
344 #endif /* not DOS_NT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
346
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
347 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
348 ? baud_convert[emacs_ospeed] : 9600);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 if (baud_rate == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
350 baud_rate = 1200;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
353
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
354 /*ARGSUSED*/
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
355 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
356 set_exclusive_use (fd)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
357 int fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
358 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 #ifdef FIOCLEX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360 ioctl (fd, FIOCLEX, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
361 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
362 /* Ok to do nothing if this feature does not exist */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 }
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
364
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
365 #ifndef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
366
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
367 wait_without_blocking ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
368 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
369 croak ("wait_without_blocking");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
370 synch_process_alive = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
371 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373 #endif /* not subprocesses */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
374
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
375 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
376 (at least for bsd). */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
378 SIGTYPE
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
379 wait_for_termination_signal ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 {}
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 /* Wait for subprocess with process id `pid' to terminate and
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
383 make sure it will get eliminated (not remain forever as a zombie) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
385 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 wait_for_termination (pid)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387 int pid;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
389 while (1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 #ifdef subprocesses
96303
ddedcecb18ef * unexnext.c:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96099
diff changeset
392 #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
393 /* 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
394 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
395 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
396 /* 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
397 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
398 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
399 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
400 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
401 if (0 > kill (pid, 0))
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
402 {
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
403 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
404 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
405 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
406 }
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
407 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
408 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
409 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
410 sigpause (SIGEMPTYMASK);
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
411 #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
412 #ifdef WINDOWSNT
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
413 wait (0);
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
414 break;
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
415 #else /* not WINDOWSNT */
3301
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
416 sigblock (sigmask (SIGCHLD));
39374
54dd36cef0e2 (wait_for_termination) [POSIX_SIGNALS]: Terminate
Gerd Moellmann <gerd@gnu.org>
parents: 39363
diff changeset
417 errno = 0;
54dd36cef0e2 (wait_for_termination) [POSIX_SIGNALS]: Terminate
Gerd Moellmann <gerd@gnu.org>
parents: 39363
diff changeset
418 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
419 {
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
420 sigunblock (sigmask (SIGCHLD));
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
421 break;
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
422 }
39363
50bf161d854c (wait_for_termination): Add a FIXME comment for the use of non-POSIX
Gerd Moellmann <gerd@gnu.org>
parents: 37219
diff changeset
423
44099
0400b67840ba (wait_for_termination): Use sigsuspend rather than sigpause.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43713
diff changeset
424 sigsuspend (&empty_mask);
108200
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
425 #endif /* not WINDOWSNT */
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
426 #endif /* not BSD_SYSTEM, and not HPUX version >= 6 */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 #else /* not subprocesses */
14971
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
428 break;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 #endif /* not subprocesses */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 * flush any pending output
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 * (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
438 */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
439
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
440 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 flush_pending_output (channel)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442 int channel;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
443 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 #ifdef HAVE_TERMIOS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 /* If we try this, we get hit with SIGTTIN, because
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 the child's tty belongs to the child's pgrp. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 #ifdef TCFLSH
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 ioctl (channel, TCFLSH, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 #ifdef TIOCFLUSH
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452 int zero = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
453 /* 3rd arg should be ignored
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 but some 4.2 kernels actually want the address of an int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 and nonzero means something different. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
456 ioctl (channel, TIOCFLUSH, &zero);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
457 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
459 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
460 }
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
461
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
462 /* Set up the terminal at the other end of a pseudo-terminal that
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
463 we will be controlling an inferior through.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
464 It should not echo or do line-editing, since that is done
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
465 in Emacs. No padding needed for insertion into an Emacs buffer. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
466
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
467 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
468 child_setup_tty (out)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
469 int out;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470 {
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
471 #ifndef DOS_NT
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
472 struct emacs_tty s;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
473
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
474 EMACS_GET_TTY (out, &s);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
475
1927
c6dc1a37aeb4 * sysdep.c (child_setup_tty): Recognize HAVE_TERMIOS as well as
Jim Blandy <jimb@redhat.com>
parents: 1596
diff changeset
476 #if defined (HAVE_TERMIO) || defined (HAVE_TERMIOS)
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
477 s.main.c_oflag |= OPOST; /* Enable output postprocessing */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
478 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
479 #ifdef NLDLY
95063
b309a7cbf6e1 (child_setup_tty): Handle systems with NLDLY, without FFDLY.
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
480 /* 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
481 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
482 #ifdef FFDLY
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
483 s.main.c_oflag &= ~(NLDLY|CRDLY|TABDLY|BSDLY|VTDLY|FFDLY);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
484 /* No output delays */
95063
b309a7cbf6e1 (child_setup_tty): Handle systems with NLDLY, without FFDLY.
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
485 #else
b309a7cbf6e1 (child_setup_tty): Handle systems with NLDLY, without FFDLY.
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
486 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
487 /* No output delays */
b309a7cbf6e1 (child_setup_tty): Handle systems with NLDLY, without FFDLY.
Glenn Morris <rgm@gnu.org>
parents: 94963
diff changeset
488 #endif
5967
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
489 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
490 s.main.c_lflag &= ~ECHO; /* Disable echo */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
491 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
492 #ifdef IUCLC
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
493 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
494 #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
495 #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
496 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
497 #endif
5972
ccb0f99750e3 (child_setup_tty): Typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 5967
diff changeset
498 #ifdef OLCUC
5967
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
499 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
500 #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
501 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
502 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
503 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
504 s.main.c_cc[VKILL] = CDISABLE; /* disable kill processing */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
505
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 #ifdef HPUX
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
507 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
508 #endif /* HPUX */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
509
56696
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
510 #ifdef SIGNALS_VIA_CHARACTERS
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
511 /* 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
512 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
513 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
514 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
515 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
516 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
517 #endif /* not SIGNALS_VIA_CHARACTERS */
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
518
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
519 #ifdef AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
520 /* Also, PTY overloads NUL and BREAK.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 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
522 s.main.c_iflag &= ~IGNBRK;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
523 s.main.c_iflag &= ~BRKINT;
56696
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
524 /* 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
525 unconditionally. Then a SIGNALS_VIA_CHARACTERS conditional
fb72da59e269 (child_setup_tty) [SIGNALS_VIA_CHARACTERS]:
Richard M. Stallman <rms@gnu.org>
parents: 56479
diff changeset
526 would force it to 0377. That looks like duplicated code. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
527 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
528 #endif /* AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529
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
530 /* We used to enable ICANON (and set VEOF to 04), but this leads to
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
531 problems where process.c wants to send EOFs every once in a while
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
532 to force the output, which leads to weird effects when the
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
533 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
534 extra EOFs. So we don't send EOFs any more in
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
535 process.c:send_process, and instead we disable ICANON by default,
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
536 so if a subsprocess sets up ICANON, it's his problem (or the Elisp
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
537 package that talks to it) to deal with lines that are too long. */
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
538 s.main.c_lflag &= ~ICANON; /* Disable line editing and eof processing */
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
539 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
540 s.main.c_cc[VTIME] = 0;
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
541
108839
481f67c74989 * sysdep.c (child_setup_tty): Move the non-canonical initialization to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108235
diff changeset
542 #else /* not HAVE_TERMIO */
481f67c74989 * sysdep.c (child_setup_tty): Move the non-canonical initialization to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108235
diff changeset
543
481f67c74989 * sysdep.c (child_setup_tty): Move the non-canonical initialization to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108235
diff changeset
544 s.main.sg_flags &= ~(ECHO | CRMOD | ANYP | ALLDELAY | RAW | LCASE
481f67c74989 * sysdep.c (child_setup_tty): Move the non-canonical initialization to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108235
diff changeset
545 | CBREAK | TANDEM);
481f67c74989 * sysdep.c (child_setup_tty): Move the non-canonical initialization to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108235
diff changeset
546 s.main.sg_flags |= LPASS8;
481f67c74989 * sysdep.c (child_setup_tty): Move the non-canonical initialization to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108235
diff changeset
547 s.main.sg_erase = 0377;
481f67c74989 * sysdep.c (child_setup_tty): Move the non-canonical initialization to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108235
diff changeset
548 s.main.sg_kill = 0377;
481f67c74989 * sysdep.c (child_setup_tty): Move the non-canonical initialization to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108235
diff changeset
549 s.lmode = LLITOUT | s.lmode; /* Don't strip 8th bit */
481f67c74989 * sysdep.c (child_setup_tty): Move the non-canonical initialization to
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108235
diff changeset
550
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 #endif /* not HAVE_TERMIO */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
552
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
553 EMACS_SET_TTY (out, &s, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
555 #endif /* not DOS_NT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558 #endif /* subprocesses */
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
559
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 /* Record a signal code and the handler for it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561 struct save_signal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 int code;
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
564 SIGTYPE (*handler) P_ ((int));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565 };
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
566
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
567 static void save_signal_handlers P_ ((struct save_signal *));
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
568 static void restore_signal_handlers P_ ((struct save_signal *));
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
569
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570 /* Suspend the Emacs process; give terminal to its superior. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
571
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
572 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 sys_suspend ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574 {
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
575 #if defined (SIGTSTP) && !defined (MSDOS)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
576
3826
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
577 {
4958
8d58e388e71b (sys_suspend): Use EMACS_GETPGRP macro.
Richard M. Stallman <rms@gnu.org>
parents: 4952
diff changeset
578 int pgrp = EMACS_GETPGRP (0);
3826
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
579 EMACS_KILLPG (pgrp, SIGTSTP);
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
580 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
581
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
582 #else /* No SIGTSTP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
583 /* On a system where suspending is not implemented,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
584 instead fork a subshell and let it talk directly to the terminal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
585 while we wait. */
6102
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
586 sys_subshell ();
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
587
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
588 #endif /* no SIGTSTP */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
589 }
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
590
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
591 /* Fork a subshell. */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
592
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
593 void
6102
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
594 sys_subshell ()
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
595 {
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
596 #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
597 int st;
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
598 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
599 #endif
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
600 int pid;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
601 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
602 Lisp_Object dir;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
603 unsigned char *str = 0;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
604 int len;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
605
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
606 saved_handlers[0].code = SIGINT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
607 saved_handlers[1].code = SIGQUIT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
608 saved_handlers[2].code = SIGTERM;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
609 #ifdef SIGIO
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
610 saved_handlers[3].code = SIGIO;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
611 saved_handlers[4].code = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
612 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
613 saved_handlers[3].code = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
614 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
615
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
616 /* 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
617 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
618
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
619 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
620 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
621 goto xyzzy;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
622 dir = Fsymbol_value (dir);
9110
c0eefdfd11f4 (sys_subshell): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9082
diff changeset
623 if (!STRINGP (dir))
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
624 goto xyzzy;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
625
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
626 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
627 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
628 len = SCHARS (dir);
40db0673e6f0 Most uses of XSTRING combined with STRING_BYTES or indirection changed to
Ken Raeburn <raeburn@raeburn.org>
parents: 46298
diff changeset
629 bcopy (SDATA (dir), str, len);
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
630 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
631 str[len] = 0;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
632 xyzzy:
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
633
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
634 #ifdef DOS_NT
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
635 pid = 0;
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
636 save_signal_handlers (saved_handlers);
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
637 synch_process_alive = 1;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
638 #else
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
639 pid = vfork ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
640 if (pid == -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
641 error ("Can't spawn subshell");
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
642 #endif
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
643
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644 if (pid == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
645 {
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
646 char *sh = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
647
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
648 #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
649 getwd (oldwd);
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
650 if (sh == 0)
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
651 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
652 #endif
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
653 if (sh == 0)
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
654 sh = (char *) egetenv ("SHELL");
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655 if (sh == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656 sh = "sh";
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
657
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658 /* 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
659 if (str)
22336
0af99a2dc706 (sys_subshell): Cast arg to chdir.
Karl Heuer <kwzh@gnu.org>
parents: 21843
diff changeset
660 chdir ((char *) str);
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
661
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
662 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
663 close_process_descs (); /* Close Emacs's pipes/ptys */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
664 #endif
1203
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
665
7482
8193d122cf6e (sys_subshell): PRIO_PROCESS renamed to SET_EMACS_PRIORITY.
Richard M. Stallman <rms@gnu.org>
parents: 7326
diff changeset
666 #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
667 {
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
668 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
669
7482
8193d122cf6e (sys_subshell): PRIO_PROCESS renamed to SET_EMACS_PRIORITY.
Richard M. Stallman <rms@gnu.org>
parents: 7326
diff changeset
670 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
671 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
672 }
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
673 #endif
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
674
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
675 #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
676 {
43708
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
677 char *epwd = getenv ("PWD");
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
678 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
679
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
680 /* 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
681 if (epwd)
43706
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
682 {
43708
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
683 strcpy (old_pwd, epwd);
43706
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
684 if (str[len - 1] == '/')
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
685 str[len - 1] = '\0';
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
686 setenv ("PWD", str, 1);
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
687 }
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
688 st = system (sh);
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
689 chdir (oldwd);
43708
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
690 if (epwd)
43706
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
691 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
692 }
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
693 #else /* not MSDOS */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
694 #ifdef WINDOWSNT
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
695 /* Waits for process completion */
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
696 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
697 chdir (oldwd);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
698 if (pid == -1)
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
699 write (1, "Can't execute subshell", 22);
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
700 #else /* not WINDOWSNT */
59937
89e653e08ed9 (sys_subshell): Properly terminate execlp argument list.
Andreas Schwab <schwab@suse.de>
parents: 58986
diff changeset
701 execlp (sh, sh, (char *) 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
702 write (1, "Can't execute subshell", 22);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
703 _exit (1);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
704 #endif /* not WINDOWSNT */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
705 #endif /* not MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
707
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
708 /* 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
709 #ifndef MSDOS
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
710 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
711 synch_process_alive = 1;
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
712 #endif
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
713
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
714 #ifndef DOS_NT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
715 wait_for_termination (pid);
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
716 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717 restore_signal_handlers (saved_handlers);
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
718 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
719 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
721 static void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722 save_signal_handlers (saved_handlers)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723 struct save_signal *saved_handlers;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
725 while (saved_handlers->code)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 {
692
681c352bbf30 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 648
diff changeset
727 saved_handlers->handler
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
728 = (SIGTYPE (*) P_ ((int))) signal (saved_handlers->code, SIG_IGN);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 saved_handlers++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
731 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
733 static void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734 restore_signal_handlers (saved_handlers)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735 struct save_signal *saved_handlers;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
736 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737 while (saved_handlers->code)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
738 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
739 signal (saved_handlers->code, saved_handlers->handler);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
740 saved_handlers++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
741 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743
82995
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
744 #ifndef SIGIO
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
745 /* 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
746 void
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
747 init_sigio (int fd)
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
748 {
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
749 }
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
750
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
751 void
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
752 reset_sigio (int fd)
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
753 {
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
754 }
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
755
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
756 void
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
757 request_sigio (void)
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
758 {
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
759 }
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
760
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
761 void
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
762 unrequest_sigio (void)
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
763 {
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
764 }
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
765
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
766 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
767 #ifdef F_SETFL
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
768
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
769 int old_fcntl_flags[MAXDESC];
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
770
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
771 void
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
772 init_sigio (fd)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
773 int fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
774 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
775 #ifdef FASYNC
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
776 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
777 fcntl (fd, F_SETFL, old_fcntl_flags[fd] | FASYNC);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778 #endif
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
779 interrupts_deferred = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781
20379
e6db4b8d2834 (reset_sigio): Return void.
Andreas Schwab <schwab@suse.de>
parents: 20367
diff changeset
782 void
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
783 reset_sigio (fd)
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
784 int fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 {
82995
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
786 #ifdef FASYNC
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
787 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
788 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
789 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
790
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
791 #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
792 /* 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
793 /* XXX Yeah, but you need it for SIGIO, don't you? */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
794
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
795 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
796 request_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
797 {
83454
845a93c68e9a Fix C-g during `make-network-process'. (Reported by Mark Plaksin.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83431
diff changeset
798 if (noninteractive)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
799 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
800
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
801 #ifdef SIGWINCH
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
802 sigunblock (sigmask (SIGWINCH));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
803 #endif
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
804 sigunblock (sigmask (SIGIO));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806 interrupts_deferred = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
808
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
809 void
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
810 unrequest_sigio (void)
83004
7900111db01c Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents: 82995
diff changeset
811 {
83454
845a93c68e9a Fix C-g during `make-network-process'. (Reported by Mark Plaksin.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83431
diff changeset
812 if (noninteractive)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
813 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
814
83454
845a93c68e9a Fix C-g during `make-network-process'. (Reported by Mark Plaksin.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83431
diff changeset
815 #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
816 if (x_display_list)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
817 return;
83004
7900111db01c Converted display hooks to be display-local. Plus many bugfixes.
Karoly Lorentey <lorentey@elte.hu>
parents: 82995
diff changeset
818 #endif
83454
845a93c68e9a Fix C-g during `make-network-process'. (Reported by Mark Plaksin.)
Karoly Lorentey <lorentey@elte.hu>
parents: 83431
diff changeset
819
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
820 #ifdef SIGWINCH
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
821 sigblock (sigmask (SIGWINCH));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
822 #endif
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
823 sigblock (sigmask (SIGIO));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
824 interrupts_deferred = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
825 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
826
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
827 #else /* no FASYNC */
46952
2ff6f626f0ce [MSDOS]: Don't define request_sigio and
Eli Zaretskii <eliz@gnu.org>
parents: 46922
diff changeset
828 #ifndef MSDOS
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
829
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
830 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831 request_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
832 {
66065
6345e0814501 (request_sigio, unrequest_sigio): Do nothing in
Andreas Schwab <schwab@suse.de>
parents: 65657
diff changeset
833 if (noninteractive || read_socket_hook)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
834 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
835
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
836 croak ("request_sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
837 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
838
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
839 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
840 unrequest_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
841 {
66065
6345e0814501 (request_sigio, unrequest_sigio): Do nothing in
Andreas Schwab <schwab@suse.de>
parents: 65657
diff changeset
842 if (noninteractive || read_socket_hook)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
843 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
844
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
845 croak ("unrequest_sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
846 }
46952
2ff6f626f0ce [MSDOS]: Don't define request_sigio and
Eli Zaretskii <eliz@gnu.org>
parents: 46922
diff changeset
847
2ff6f626f0ce [MSDOS]: Don't define request_sigio and
Eli Zaretskii <eliz@gnu.org>
parents: 46922
diff changeset
848 #endif /* MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
849 #endif /* FASYNC */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
850 #endif /* F_SETFL */
82995
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
851 #endif /* SIGIO */
108235
9aa39b975b8a Remove BSD_PGRPS.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 108234
diff changeset
852
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
853
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
854 /* 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
855
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
856 /* 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
857 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
858 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
859 int
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
860 emacs_get_tty (fd, settings)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
861 int fd;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
862 struct emacs_tty *settings;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
863 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
864 /* Retrieve the primary parameters - baud rate, character size, etcetera. */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
865 #ifdef HAVE_TCATTR
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
866 /* We have those nifty POSIX tcmumbleattr functions. */
21843
600f19764b68 (emacs_get_tty): Zero out termios structure before
Andreas Schwab <schwab@suse.de>
parents: 21769
diff changeset
867 bzero (&settings->main, 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
868 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
869 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
870
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
871 #else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
872 #ifdef HAVE_TERMIO
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
873 /* The SYSV-style interface? */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
874 if (ioctl (fd, TCGETA, &settings->main) < 0)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
875 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
876
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
877 #else
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
878 #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
879 /* I give up - I hope you have the BSD ioctls. */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
880 if (ioctl (fd, TIOCGETP, &settings->main) < 0)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
881 return -1;
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
882 #endif /* not DOS_NT */
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
883 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
884 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
885
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
886 /* Suivant - Do we have to get struct ltchars data? */
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
887 #ifdef HAVE_LTCHARS
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
888 if (ioctl (fd, TIOCGLTC, &settings->ltchars) < 0)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
889 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
890 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
891
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
892 /* How about a struct tchars and a wordful of lmode bits? */
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
893 #ifdef HAVE_TCHARS
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
894 if (ioctl (fd, TIOCGETC, &settings->tchars) < 0
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
895 || ioctl (fd, TIOCLGET, &settings->lmode) < 0)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
896 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
897 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
898
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
899 /* 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
900 return 0;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
901 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
902
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
903
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
904 /* 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
905 *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
906 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
907
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
908 int
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
909 emacs_set_tty (fd, settings, flushp)
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
910 int fd;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
911 struct emacs_tty *settings;
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
912 int flushp;
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
913 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
914 /* Set the primary parameters - baud rate, character size, etcetera. */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
915 #ifdef HAVE_TCATTR
3321
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
916 int i;
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
917 /* 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
918 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
919 "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
920 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
921 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
922 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
923 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
924 /* 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
925 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
926 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
927 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
928 if (errno == EINTR)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
929 continue;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
930 else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
931 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
932 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
933 else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
934 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
935 struct termios new;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
936
21843
600f19764b68 (emacs_get_tty): Zero out termios structure before
Andreas Schwab <schwab@suse.de>
parents: 21769
diff changeset
937 bzero (&new, sizeof (new));
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
938 /* 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
939 tcgetattr (fd, &new);
3321
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
940 /* 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
941 * 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
942 * not be filled in.
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
943 */
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
944 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
945 && 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
946 && 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
947 && 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
948 && 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
949 break;
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
950 else
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
951 continue;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
952 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
953
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
954 #else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
955 #ifdef HAVE_TERMIO
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
956 /* The SYSV-style interface? */
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
957 if (ioctl (fd, flushp ? TCSETAF : TCSETAW, &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
958 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
959
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
960 #else
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
961 #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
962 /* I give up - I hope you have the BSD ioctls. */
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
963 if (ioctl (fd, (flushp) ? TIOCSETP : TIOCSETN, &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
964 return -1;
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
965 #endif /* not DOS_NT */
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
966
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
967 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
968 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
969
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
970 /* Suivant - Do we have to get struct ltchars data? */
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
971 #ifdef HAVE_LTCHARS
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
972 if (ioctl (fd, TIOCSLTC, &settings->ltchars) < 0)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
973 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
974 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
975
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
976 /* How about a struct tchars and a wordful of lmode bits? */
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
977 #ifdef HAVE_TCHARS
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
978 if (ioctl (fd, TIOCSETC, &settings->tchars) < 0
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
979 || ioctl (fd, TIOCLSET, &settings->lmode) < 0)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
980 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
981 #endif
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
982
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
983 /* 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
984 return 0;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
985 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
986
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
987
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
988
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
989 #ifdef F_SETOWN
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
990 int old_fcntl_owner[MAXDESC];
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
991 #endif /* F_SETOWN */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
992
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
993 /* This may also be defined in stdio,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
994 but if so, this does no harm,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
995 and using the same name avoids wasting the other one's space. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
996
97119
b57392641da7 * systty.h (sensemode): Remove empty #if. Remove reference to
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97043
diff changeset
997 #if defined (USG)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
998 unsigned char _sobuf[BUFSIZ+8];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
999 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1000 char _sobuf[BUFSIZ];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1001 #endif
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1002
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1003 #ifdef HAVE_LTCHARS
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1004 static struct ltchars new_ltchars = {-1,-1,-1,-1,-1,-1};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1005 #endif
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1006 #ifdef HAVE_TCHARS
17869
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
1007 static struct tchars new_tchars = {-1,-1,-1,-1,-1,-1};
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1008 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1009
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1010 /* 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
1011 open. */
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1012
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1013 void
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1014 init_all_sys_modes (void)
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1015 {
82989
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 82988
diff changeset
1016 struct tty_display_info *tty;
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1017 for (tty = tty_list; tty; tty = tty->next)
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1018 init_sys_modes (tty);
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1019 }
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1020
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1021 /* 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
1022
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1023 void
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
1024 init_sys_modes (tty_out)
82989
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 82988
diff changeset
1025 struct tty_display_info *tty_out;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1026 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1027 struct emacs_tty tty;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1028
17869
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
1029 Vtty_erase_char = Qnil;
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
1030
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1031 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1032 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1033
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1034 if (!tty_out->output)
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1035 return; /* The tty is suspended. */
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1036
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1037 if (! tty_out->old_tty)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1038 tty_out->old_tty = (struct emacs_tty *) xmalloc (sizeof (struct emacs_tty));
53233
fe9b37bee5f7 Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents: 53232
diff changeset
1039
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1040 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
1041
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1042 tty = *tty_out->old_tty;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1043
1927
c6dc1a37aeb4 * sysdep.c (child_setup_tty): Recognize HAVE_TERMIOS as well as
Jim Blandy <jimb@redhat.com>
parents: 1596
diff changeset
1044 #if defined (HAVE_TERMIO) || defined (HAVE_TERMIOS)
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1045 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
1046
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1047 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
1048 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
1049 #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
1050 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
1051 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
1052 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1053 #ifdef ISTRIP
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1054 tty.main.c_iflag &= ~ISTRIP; /* don't strip 8th bit on input */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1055 #endif
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1056 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
1057 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
1058 #ifdef IEXTEN
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1059 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
1060 #endif
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1061 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
1062 if (tty_out->flow_control)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1063 {
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1064 tty.main.c_iflag |= IXON; /* Enable start/stop output control */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1065 #ifdef IXANY
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1066 tty.main.c_iflag &= ~IXANY;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1067 #endif /* IXANY */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1068 }
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1069 else
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1070 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
1071 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
1072 on output */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1073 tty.main.c_oflag &= ~TAB3; /* Disable tab expansion */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1074 #ifdef CS8
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1075 if (tty_out->meta_key)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1076 {
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1077 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
1078 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
1079 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1080 #endif
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1081 if (tty_out->input == stdin)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1082 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1083 tty.main.c_cc[VINTR] = quit_char; /* C-g (usually) gives SIGINT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1084 /* 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
1085 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
1086 so which one it really gives us does not matter. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1087 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
1088 }
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1089 else
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1090 {
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1091 /* 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
1092 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
1093 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
1094 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
1095 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
1096 keypress.
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1097
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1098 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
1099 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
1100 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
1101 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
1102 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
1103 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
1104 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
1105 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
1106 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
1107 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
1108 }
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1109 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
1110 tty.main.c_cc[VTIME] = 0; /* no matter how long that takes. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1111 #ifdef VSWTCH
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1112 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
1113 of C-z */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1114 #endif /* VSWTCH */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1115
96877
feac6d588d82 * m/mips.h (LOAD_AVE_TYPE, LOAD_AVE_CVT): Do not define, not used
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96833
diff changeset
1116 #if defined (__mips__) || defined (HAVE_TCATTR)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1117 #ifdef VSUSP
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1118 tty.main.c_cc[VSUSP] = CDISABLE; /* Turn off mips handling of C-z. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1119 #endif /* VSUSP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1120 #ifdef V_DSUSP
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1121 tty.main.c_cc[V_DSUSP] = CDISABLE; /* Turn off mips handling of C-y. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1122 #endif /* V_DSUSP */
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
1123 #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
1124 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
1125 #endif /* VDSUSP */
3472
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1126 #ifdef VLNEXT
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1127 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
1128 #endif /* VLNEXT */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1129 #ifdef VREPRINT
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1130 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
1131 #endif /* VREPRINT */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1132 #ifdef VWERASE
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1133 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
1134 #endif /* VWERASE */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1135 #ifdef VDISCARD
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1136 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
1137 #endif /* VDISCARD */
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1138
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1139 if (tty_out->flow_control)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1140 {
8104
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1141 #ifdef VSTART
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1142 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
1143 #endif /* VSTART */
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1144 #ifdef VSTOP
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1145 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
1146 #endif /* VSTOP */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1147 }
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1148 else
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1149 {
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1150 #ifdef VSTART
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1151 tty.main.c_cc[VSTART] = CDISABLE;
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1152 #endif /* VSTART */
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1153 #ifdef VSTOP
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1154 tty.main.c_cc[VSTOP] = CDISABLE;
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1155 #endif /* VSTOP */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1156 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1157 #endif /* mips or HAVE_TCATTR */
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1158
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1159 #ifdef AIX
83196
22658e29bd48 Merged in changes from CVS trunk.
Karoly Lorentey <lorentey@elte.hu>
parents: 83194 56714
diff changeset
1160 tty.main.c_cc[VSTRT] = CDISABLE;
22658e29bd48 Merged in changes from CVS trunk.
Karoly Lorentey <lorentey@elte.hu>
parents: 83194 56714
diff changeset
1161 tty.main.c_cc[VSTOP] = CDISABLE;
22658e29bd48 Merged in changes from CVS trunk.
Karoly Lorentey <lorentey@elte.hu>
parents: 83194 56714
diff changeset
1162 tty.main.c_cc[VSUSP] = CDISABLE;
22658e29bd48 Merged in changes from CVS trunk.
Karoly Lorentey <lorentey@elte.hu>
parents: 83194 56714
diff changeset
1163 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
1164 if (tty_out->flow_control)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1165 {
18232
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1166 #ifdef VSTART
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1167 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
1168 #endif /* VSTART */
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1169 #ifdef VSTOP
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1170 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
1171 #endif /* VSTOP */
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1172 }
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1173 /* 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
1174 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
1175 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
1176 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
1177 tty.main.c_iflag &= ~IGNBRK;
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1178 tty.main.c_iflag &= ~BRKINT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1179 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1180 #else /* if not HAVE_TERMIO */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1181 #ifndef DOS_NT
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1182 XSETINT (Vtty_erase_char, tty.main.sg_erase);
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1183 tty.main.sg_flags &= ~(ECHO | CRMOD | XTABS);
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1184 if (meta_key)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1185 tty.main.sg_flags |= ANYP;
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1186 tty.main.sg_flags |= interrupt_input ? RAW : CBREAK;
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1187 #endif /* not DOS_NT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1188 #endif /* not HAVE_TERMIO */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1189
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1190 /* If going to use CBREAK mode, we must request C-g to interrupt
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1191 and turn off start and stop chars, etc. If not going to use
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1192 CBREAK mode, do this anyway so as to turn off local flow
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1193 control for user coming over network on 4.2; in this case,
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1194 only t_stopc and t_startc really matter. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1195 #ifndef HAVE_TERMIO
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1196 #ifdef HAVE_TCHARS
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1197 /* Note: if not using CBREAK mode, it makes no difference how we
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1198 set this */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1199 tty.tchars = new_tchars;
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1200 tty.tchars.t_intrc = quit_char;
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1201 if (tty_out->flow_control)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1202 {
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1203 tty.tchars.t_startc = '\021';
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1204 tty.tchars.t_stopc = '\023';
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1205 }
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1206
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1207 tty.lmode = LDECCTQ | LLITOUT | LPASS8 | LNOFLSH | tty_out->old_tty.lmode;
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1208
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1209 #endif /* HAVE_TCHARS */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1210 #endif /* not HAVE_TERMIO */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1211
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1212 #ifdef HAVE_LTCHARS
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1213 tty.ltchars = new_ltchars;
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1214 #endif /* HAVE_LTCHARS */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1215 #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
1216 if (!tty_out->term_initted)
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1217 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
1218 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
1219 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1220
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1221 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
1222
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1223 /* 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
1224 we have an unlocked terminal at the start. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1225
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1226 #ifdef TCXONC
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1227 if (!tty_out->flow_control) ioctl (fileno (tty_out->input), TCXONC, 1);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1228 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1229 #ifdef TIOCSTART
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1230 if (!tty_out->flow_control) ioctl (fileno (tty_out->input), TIOCSTART, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1231 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1232
96303
ddedcecb18ef * unexnext.c:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96099
diff changeset
1233 #if defined (HAVE_TERMIOS) || defined (HPUX)
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
1234 #ifdef TCOON
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1235 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
1236 #endif
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
1237 #endif
9937
cd2db9aeeb25 (init_sys_modes): Maybe call tcflow.
Richard M. Stallman <rms@gnu.org>
parents: 9794
diff changeset
1238
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1239 #ifdef F_SETFL
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
1240 #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
1241 if (interrupt_input)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1242 {
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1243 old_fcntl_owner[fileno (tty_out->input)] =
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1244 fcntl (fileno (tty_out->input), F_GETOWN, 0);
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1245 fcntl (fileno (tty_out->input), F_SETOWN, getpid ());
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1246 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
1247 #ifdef HAVE_GPM
84956
29a2854dd601 (narrow_foreground_group, widen_foreground_group): Static.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84848
diff changeset
1248 if (gpm_tty == tty_out)
80981
f454fb9563fd (init_sys_modes): Make gpm_fd nonblocking
Nick Roberts <nickrob@snap.net.nz>
parents: 77349
diff changeset
1249 {
84956
29a2854dd601 (narrow_foreground_group, widen_foreground_group): Static.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84848
diff changeset
1250 /* 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
1251 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
1252 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
1253 init_sigio (gpm_fd);
f454fb9563fd (init_sys_modes): Make gpm_fd nonblocking
Nick Roberts <nickrob@snap.net.nz>
parents: 77349
diff changeset
1254 }
80994
62b6aa7f8c37 Use HAVE_GPM instead of HAVE_GPM_H.
Nick Roberts <nickrob@snap.net.nz>
parents: 80981
diff changeset
1255 #endif /* HAVE_GPM */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1256 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1257 #endif /* F_GETOWN */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1258 #endif /* F_SETFL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1259
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1260 #ifdef _IOFBF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1261 /* This symbol is defined on recent USG systems.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1262 Someone says without this call USG won't really buffer the file
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1263 even with a call to setbuf. */
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1264 setvbuf (tty_out->output, (char *) _sobuf, _IOFBF, sizeof _sobuf);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1265 #else
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1266 setbuf (tty_out->output, (char *) _sobuf);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1267 #endif
82995
039bd6989d29 Portability fixes (now it compiles & runs fine on Solaris).
Karoly Lorentey <lorentey@elte.hu>
parents: 82990
diff changeset
1268
84848
d8f4346c8ee1 (init_sys_modes): Use set_terminal_modes_hook.
Jason Rumney <jasonr@gnu.org>
parents: 84768
diff changeset
1269 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
1270 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
1271
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
1272 if (!tty_out->term_initted)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1273 {
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
1274 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
1275 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
1276 {
82990
2ecd1f669db9 Fixed X support, preliminary support for X-tty combo sessions.
Karoly Lorentey <lorentey@elte.hu>
parents: 82989
diff changeset
1277 /* 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
1278 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
1279 && 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
1280 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
1281 }
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
1282 }
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
1283
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
1284 if (tty_out->term_initted && no_redraw_on_reenter)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1285 {
107713
41747909cb4b Get rid of the direct_output optimizations.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 106815
diff changeset
1286 /* 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
1287 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
1288 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1289 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1290 {
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
1291 Lisp_Object tail, frame;
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1292 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
1293 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
1294 {
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
1295 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
1296 || 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
1297 && 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
1298 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
1299 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1300 }
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1301
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
1302 tty_out->term_initted = 1;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1303 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1304
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1305 /* Return nonzero if safe to use tabs in output.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1306 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
1307
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1308 int
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1309 tabs_safe_p (int fd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1310 {
53232
22aaf1e5fbe6 Full support for multiple terminal I/O (with some rough edges).
Karoly Lorentey <lorentey@elte.hu>
parents: 53231
diff changeset
1311 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
1312
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1313 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
1314 return EMACS_TTY_TABS_OK (&etty);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1315 }
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1316
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1317 /* Get terminal size from system.
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1318 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
1319 We store 0 if there's no valid information. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1320
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1321 void
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1322 get_tty_size (int fd, int *widthp, int *heightp)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1323 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1324
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1325 #ifdef TIOCGWINSZ
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1326
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1327 /* BSD-style. */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1328 struct winsize size;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1329
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1330 if (ioctl (fd, TIOCGWINSZ, &size) == -1)
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1331 *widthp = *heightp = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1332 else
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1333 {
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1334 *widthp = size.ws_col;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1335 *heightp = size.ws_row;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1336 }
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1337
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1338 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 #ifdef TIOCGSIZE
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1340
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1341 /* SunOS - style. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1342 struct ttysize size;
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1343
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1344 if (ioctl (fd, TIOCGSIZE, &size) == -1)
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1345 *widthp = *heightp = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1346 else
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1347 {
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1348 *widthp = size.ts_cols;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1349 *heightp = size.ts_lines;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1350 }
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1351
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1352 #else
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1353 #ifdef MSDOS
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1354 *widthp = ScreenCols ();
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1355 *heightp = ScreenRows ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1356 #else /* system doesn't know size */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1357 *widthp = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1358 *heightp = 0;
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1359 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1360 #endif /* not SunOS-style */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1361 #endif /* not BSD-style */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1362 }
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1363
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1364 /* 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
1365 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
1366
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1367 int
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1368 set_window_size (fd, height, width)
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1369 int fd, height, width;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1370 {
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1371 #ifdef TIOCSWINSZ
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1372
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1373 /* BSD-style. */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1374 struct winsize size;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1375 size.ws_row = height;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1376 size.ws_col = width;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1377
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1378 if (ioctl (fd, TIOCSWINSZ, &size) == -1)
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1379 return 0; /* error */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1380 else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1381 return 1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1382
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1383 #else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1384 #ifdef TIOCSSIZE
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1385
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1386 /* SunOS - style. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1387 struct ttysize size;
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1388 size.ts_lines = height;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1389 size.ts_cols = width;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1390
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1391 if (ioctl (fd, TIOCGSIZE, &size) == -1)
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1392 return 0;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1393 else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1394 return 1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1395 #else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1396 return -1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1397 #endif /* not SunOS-style */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1398 #endif /* not BSD-style */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1399 }
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1400
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1401
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1402
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1403 /* 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
1404
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1405 void
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1406 reset_all_sys_modes (void)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1407 {
82989
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 82988
diff changeset
1408 struct tty_display_info *tty;
82987
1682917e56b4 Major bugfixes and slight enhancements.
Karoly Lorentey <lorentey@elte.hu>
parents: 82986
diff changeset
1409 for (tty = tty_list; tty; tty = tty->next)
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1410 reset_sys_modes (tty);
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1411 }
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
1412
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
1413 /* 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
1414 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
1415
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1416 void
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
1417 reset_sys_modes (tty_out)
82989
f3845715a5f6 Separate frame-local, tty-dependent parameters from tty-local parameters.
Karoly Lorentey <lorentey@elte.hu>
parents: 82988
diff changeset
1418 struct tty_display_info *tty_out;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1419 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1420 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1421 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1422 fflush (stdout);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1423 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1424 }
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
1425 if (!tty_out->term_initted)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1426 return;
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1427
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1428 if (!tty_out->output)
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1429 return; /* The tty is suspended. */
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1430
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1431 /* 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
1432
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
1433 cmgoto (tty_out, FrameRows (tty_out) - 1, 0);
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1434
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1435 /* 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
1436 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
1437 {
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1438 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
1439 }
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1440 else
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1441 { /* 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
1442 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
1443 tty_turn_off_insert (tty_out);
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1444
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1445 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
1446 {
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1447 fputc (' ', tty_out->output);
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1448 }
83025
c66ebcc29777 Removed %T in mode-line-format. Trivial documentation changes.
Karoly Lorentey <lorentey@elte.hu>
parents: 83014
diff changeset
1449 }
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1450
53341
d4e6a050c9b1 Bugfix festival.
Karoly Lorentey <lorentey@elte.hu>
parents: 53233
diff changeset
1451 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
1452 fflush (tty_out->output);
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
1453
84848
d8f4346c8ee1 (init_sys_modes): Use set_terminal_modes_hook.
Jason Rumney <jasonr@gnu.org>
parents: 84768
diff changeset
1454 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
1455 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
1456
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
1457 #ifdef BSD_SYSTEM
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1458 /* 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
1459 fsync (fileno (tty_out->output));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1460 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1461
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1462 #ifdef F_SETFL
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
1463 #ifdef F_SETOWN /* F_SETFL does not imply existence of F_SETOWN */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1464 if (interrupt_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1465 {
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1466 reset_sigio (fileno (tty_out->input));
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1467 fcntl (fileno (tty_out->input), F_SETOWN,
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1468 old_fcntl_owner[fileno (tty_out->input)]);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1469 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1470 #endif /* F_SETOWN */
6489
6c138b61c8b4 (reset_sys_modes): Turn off O_NDELAY.
Karl Heuer <kwzh@gnu.org>
parents: 6102
diff changeset
1471 #ifdef O_NDELAY
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1472 fcntl (fileno (tty_out->input), F_SETFL,
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1473 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
1474 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1475 #endif /* F_SETFL */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1476
53233
fe9b37bee5f7 Fully eliminated global tty state variables.
Karoly Lorentey <lorentey@elte.hu>
parents: 53232
diff changeset
1477 if (tty_out->old_tty)
83065
a871be7b26a5 Implemented suspending of emacsclient frames.
Karoly Lorentey <lorentey@elte.hu>
parents: 83037
diff changeset
1478 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
1479 tty_out->old_tty, 0) < 0 && errno == EINTR)
12070
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1480 ;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1481
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1482 #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
1483 dos_ttcooked ();
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1484 #endif
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1485
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1486 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1487
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1488 #ifdef HAVE_PTYS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1489
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1490 /* Set up the proper status flags for use of a pty. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1491
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1492 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1493 setup_pty (fd)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1494 int fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1495 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1496 /* I'm told that TOICREMOTE does not mean control chars
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1497 "can't be sent" but rather that they don't have
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1498 input-editing or signaling effects.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1499 That should be good, because we have other ways
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1500 to do those things in Emacs.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1501 However, telnet mode seems not to work on 4.2.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1502 So TIOCREMOTE is turned off now. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1503
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1504 /* Under hp-ux, if TIOCREMOTE is turned on, some calls
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1505 will hang. In particular, the "timeout" feature (which
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1506 causes a read to return if there is no data available)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1507 does this. Also it is known that telnet mode will hang
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1508 in such a way that Emacs must be stopped (perhaps this
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1509 is the same problem).
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1510
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1511 If TIOCREMOTE is turned off, then there is a bug in
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1512 hp-ux which sometimes loses data. Apparently the
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1513 code which blocks the master process when the internal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1514 buffer fills up does not work. Other than this,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1515 though, everything else seems to work fine.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1516
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1517 Since the latter lossage is more benign, we may as well
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1518 lose that way. -- cph */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1519 #ifdef FIONBIO
96643
79121a8f01e3 * config.nt (HAVE_FACES): Remove, unused.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 96595
diff changeset
1520 #if defined(UNIX98_PTYS)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1521 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1522 int on = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1523 ioctl (fd, FIONBIO, &on);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1524 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1525 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1526 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1527 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1528 #endif /* HAVE_PTYS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1529
97142
c3512b2085a0 * bitmaps/README:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97141
diff changeset
1530 #if !defined(CANNOT_DUMP) || !defined(SYSTEM_MALLOC)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1531 /* Some systems that cannot dump also cannot implement these. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1532
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1533 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1534 * Return the address of the start of the text segment prior to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1535 * doing an unexec. After unexec the return value is undefined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1536 * See crt0.c for further explanation and _start.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1537 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1538 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1539
27922
db5a4af9fafd (start_of_text): Don't define this function for NetBSD
Gerd Moellmann <gerd@gnu.org>
parents: 27709
diff changeset
1540 #if !(defined (__NetBSD__) && defined (__ELF__))
9039
22e5c594d59d (start_of_text): Don't test CANNOT_UNEXEC.
Richard M. Stallman <rms@gnu.org>
parents: 9036
diff changeset
1541 #ifndef HAVE_TEXT_START
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1542 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1543 start_of_text ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1544 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1545 #ifdef TEXT_START
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1546 return ((char *) TEXT_START);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1547 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1548 extern int _start ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1549 return ((char *) _start);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1550 #endif /* TEXT_START */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1551 }
9039
22e5c594d59d (start_of_text): Don't test CANNOT_UNEXEC.
Richard M. Stallman <rms@gnu.org>
parents: 9036
diff changeset
1552 #endif /* not HAVE_TEXT_START */
27922
db5a4af9fafd (start_of_text): Don't define this function for NetBSD
Gerd Moellmann <gerd@gnu.org>
parents: 27709
diff changeset
1553 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1554
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1555 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1556 * Return the address of the start of the data segment prior to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1557 * doing an unexec. After unexec the return value is undefined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1558 * See crt0.c for further information and definition of data_start.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1559 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1560 * Apparently, on BSD systems this is etext at startup. On
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1561 * USG systems (swapping) this is highly mmu dependent and
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1562 * is also dependent on whether or not the program is running
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1563 * with shared text. Generally there is a (possibly large)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1564 * gap between end of text and start of data with shared text.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1565 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1566 * On Uniplus+ systems with shared text, data starts at a
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1567 * fixed address. Each port (from a given oem) is generally
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1568 * different, and the specific value of the start of data can
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1569 * be obtained via the UniPlus+ specific "uvar" system call,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1570 * however the method outlined in crt0.c seems to be more portable.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1571 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1572 * Probably what will have to happen when a USG unexec is available,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1573 * at least on UniPlus, is temacs will have to be made unshared so
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1574 * that text and data are contiguous. Then once loadup is complete,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1575 * unexec will produce a shared executable where the data can be
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
1576 * at the normal shared text boundary and the startofdata variable
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1577 * will be patched by unexec to the correct value.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1578 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1579 */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1580
46653
8ba889cb6430 (start_of_data): Don't define the function if a macro
Ken Raeburn <raeburn@raeburn.org>
parents: 46591
diff changeset
1581 #ifndef start_of_data
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1582 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1583 start_of_data ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1584 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1585 #ifdef DATA_START
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1586 return ((char *) DATA_START);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1587 #else
2121
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1588 #ifdef ORDINARY_LINK
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1589 /*
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1590 * This is a hack. Since we're not linking crt0.c or pre_crt0.c,
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1591 * data_start isn't defined. We take the address of environ, which
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1592 * is known to live at or near the start of the system crt0.c, and
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1593 * we don't sweat the handful of bytes that might lose.
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1594 */
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1595 extern char **environ;
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1596
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
1597 return ((char *) &environ);
2121
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1598 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1599 extern int data_start;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1600 return ((char *) &data_start);
2121
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1601 #endif /* ORDINARY_LINK */
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
1602 #endif /* DATA_START */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1603 }
46653
8ba889cb6430 (start_of_data): Don't define the function if a macro
Ken Raeburn <raeburn@raeburn.org>
parents: 46591
diff changeset
1604 #endif /* start_of_data */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1605 #endif /* NEED_STARTS (not CANNOT_DUMP or not SYSTEM_MALLOC) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1606
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1607 /* 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
1608 system-name to return. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1609
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1610 extern Lisp_Object Vsystem_name;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1611
3150
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1612 #ifdef HAVE_SOCKETS
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1613 #include <sys/socket.h>
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1614 #include <netdb.h>
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1615 #endif /* HAVE_SOCKETS */
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1616
33718
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
1617 #ifdef TRY_AGAIN
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
1618 #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
1619 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
1620 #endif
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
1621 #endif /* TRY_AGAIN */
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
1622
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1623 void
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1624 init_system_name ()
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1625 {
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
1626 #ifndef HAVE_GETHOSTNAME
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1627 struct utsname uts;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1628 uname (&uts);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1629 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
1630 #else /* HAVE_GETHOSTNAME */
11800
a2f009e1b85b (init_system_name): Clean up signedness mismatch.
Karl Heuer <kwzh@gnu.org>
parents: 11722
diff changeset
1631 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
1632 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
1633
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1634 /* 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
1635 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
1636 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
1637 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
1638 for (;;)
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1639 {
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1640 gethostname (hostname, hostname_size - 1);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1641 hostname[hostname_size - 1] = '\0';
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1642
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1643 /* 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
1644 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
1645 break;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1646
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1647 hostname_size <<= 1;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1648 hostname = (char *) alloca (hostname_size);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1649 }
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
1650 #ifdef HAVE_SOCKETS
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1651 /* 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
1652 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
1653 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
1654 #ifndef CANNOT_DUMP
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1655 if (initialized)
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
1656 #endif /* not CANNOT_DUMP */
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1657 if (! index (hostname, '.'))
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1658 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1659 int count;
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1660 #ifdef HAVE_GETADDRINFO
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1661 struct addrinfo *res;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1662 struct addrinfo hints;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1663 int ret;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1664
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1665 memset (&hints, 0, sizeof(hints));
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1666 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
1667 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
1668
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1669 for (count = 0;; count++)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1670 {
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1671 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
1672 || ret != EAI_AGAIN)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1673 break;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1674
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1675 if (count >= 5)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1676 break;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1677 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
1678 }
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1679
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1680 if (ret == 0)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1681 {
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1682 struct addrinfo *it = res;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1683 while (it)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1684 {
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1685 char *fqdn = it->ai_canonname;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1686 if (fqdn && index (fqdn, '.')
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1687 && 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
1688 break;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1689 it = it->ai_next;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1690 }
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1691 if (it)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1692 {
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1693 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
1694 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
1695 }
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1696 freeaddrinfo (res);
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1697 }
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1698 #else /* !HAVE_GETADDRINFO */
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1699 struct hostent *hp;
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1700 for (count = 0;; count++)
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1701 {
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1702
8330
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
1703 #ifdef TRY_AGAIN
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1704 h_errno = 0;
8330
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
1705 #endif
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1706 hp = gethostbyname (hostname);
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
1707 #ifdef TRY_AGAIN
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1708 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
1709 #endif
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1710
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1711 break;
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1712
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1713 if (count >= 5)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1714 break;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1715 Fsleep_for (make_number (1), Qnil);
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1716 }
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1717
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1718 if (hp)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1719 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1720 char *fqdn = (char *) hp->h_name;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1721
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1722 if (!index (fqdn, '.'))
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1723 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1724 /* 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
1725 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
1726 char **alias = hp->h_aliases;
77349
ddd98fc21199 (init_system_name): Don't accept localhost.localdomain.
Chong Yidong <cyd@stupidchicken.com>
parents: 75348
diff changeset
1727 while (*alias
ddd98fc21199 (init_system_name): Don't accept localhost.localdomain.
Chong Yidong <cyd@stupidchicken.com>
parents: 75348
diff changeset
1728 && (!index (*alias, '.')
ddd98fc21199 (init_system_name): Don't accept localhost.localdomain.
Chong Yidong <cyd@stupidchicken.com>
parents: 75348
diff changeset
1729 || !strcmp (*alias, "localhost.localdomain")))
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1730 alias++;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1731 if (*alias)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1732 fqdn = *alias;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1733 }
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1734 hostname = fqdn;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1735 }
86212
777f1d31b403 (init_system_name): Use getaddrinfo if available.
Jan Djärv <jan.h.d@swipnet.se>
parents: 84956
diff changeset
1736 #endif /* !HAVE_GETADDRINFO */
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
1737 }
3150
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
1738 #endif /* HAVE_SOCKETS */
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1739 Vsystem_name = build_string (hostname);
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
1740 #endif /* HAVE_GETHOSTNAME */
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1741 {
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1742 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
1743 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
1744 if (*p == ' ' || *p == '\t')
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1745 *p = '-';
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
1746 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1747 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1748
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
1749 #ifndef MSDOS
91702
b7a5a89054dc * configure.in (LIBX11_MACHINE, HAVE_XFREE386): Remove code
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87799
diff changeset
1750 #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
1751
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1752 #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
1753 #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
1754
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1755 #if defined (HAVE_X_WINDOWS) && !defined (HAVE_SELECT)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1756 /* Cause explanatory error message at compile time,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1757 since the select emulation is not good enough for X. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1758 int *x = &x_windows_lose_if_no_select_system_call;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1759 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1760
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1761 /* 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
1762 * Only checks read descriptors.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1763 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1764 /* How long to wait between checking fds in select */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1765 #define SELECT_PAUSE 1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1766 int select_alarmed;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1767
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1768 /* For longjmp'ing back to read_input_waiting. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1769
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1770 jmp_buf read_alarm_throw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1771
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1772 /* Nonzero if the alarm signal should throw back to read_input_waiting.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1773 The read_socket_hook function sets this to 1 while it is waiting. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1774
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1775 int read_alarm_should_throw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1776
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1777 SIGTYPE
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1778 select_alarm ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1779 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1780 select_alarmed = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1781 signal (SIGALRM, SIG_IGN);
58986
59945307b86b * syssignal.h: Declare main_thread.
Jan Djärv <jan.h.d@swipnet.se>
parents: 58621
diff changeset
1782 SIGNAL_THREAD_CHECK (SIGALRM);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1783 if (read_alarm_should_throw)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1784 longjmp (read_alarm_throw, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1785 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1786
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1787 #ifndef WINDOWSNT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1788 /* Only rfds are checked. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1789 int
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1790 sys_select (nfds, rfds, wfds, efds, timeout)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1791 int nfds;
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1792 SELECT_TYPE *rfds, *wfds, *efds;
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1793 EMACS_TIME *timeout;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1794 {
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1795 /* 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
1796 anybody who needs to emulate select these days? */
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1797 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
1798 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
1799 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
1800 int *local_timeout;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1801 extern int proc_buffered_char[];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1802 #ifndef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1803 int process_tick = 0, update_tick = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1804 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1805 extern int process_tick, update_tick;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1806 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1807 unsigned char buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1808
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1809 #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
1810 /* 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
1811 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
1812 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
1813 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
1814 #endif
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1815 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
1816 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
1817 FD_ZERO (&orfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1818 if (rfds)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1819 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1820 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
1821 FD_ZERO (rfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1822 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1823 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
1824 FD_ZERO (wfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1825 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
1826 FD_ZERO (efds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1827
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1828 /* If we are looking only for the terminal, with no timeout,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1829 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
1830 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
1831 && FD_ISSET (0, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1832 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1833 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
1834 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
1835 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
1836 goto hardway;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1837 if (! detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1838 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
1839 FD_SET (0, rfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1840 return 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1841 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1842
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1843 hardway:
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1844 /* Once a second, till the timer expires, check all the flagged read
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1845 * descriptors to see if any input is available. If there is some then
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1846 * set the corresponding bit in the return copy of rfds.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1847 */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1848 while (1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1849 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1850 register int to_check, fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1851
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1852 if (rfds)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1853 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1854 for (to_check = nfds, fd = 0; --to_check >= 0; fd++)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1855 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1856 if (FD_ISSET (fd, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1857 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1858 int avail = 0, status = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1859
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1860 if (fd == 0)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1861 avail = detect_input_pending (); /* Special keyboard handler */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1862 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1863 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1864 #ifdef FIONREAD
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1865 status = ioctl (fd, FIONREAD, &avail);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1866 #else /* no FIONREAD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1867 /* Hoping it will return -1 if nothing available
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1868 or 0 if all 0 chars requested are read. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1869 if (proc_buffered_char[fd] >= 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1870 avail = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1871 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1872 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1873 avail = read (fd, &buf, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1874 if (avail > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1875 proc_buffered_char[fd] = buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1876 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1877 #endif /* no FIONREAD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1878 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1879 if (status >= 0 && avail > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1880 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
1881 FD_SET (fd, rfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1882 ravail++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1883 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1884 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1885 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1886 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1887 if (*local_timeout == 0 || ravail != 0 || process_tick != update_tick)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1888 break;
27432
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
1889
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
1890 turn_on_atimers (0);
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
1891 signal (SIGALRM, select_alarm);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1892 select_alarmed = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1893 alarm (SELECT_PAUSE);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1894
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1895 /* Wait for a SIGALRM (or maybe a SIGTINT) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1896 while (select_alarmed == 0 && *local_timeout != 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1897 && process_tick == update_tick)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1898 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1899 /* If we are interested in terminal input,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1900 wait by reading the terminal.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1901 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
1902 if (FD_ISSET (0, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1903 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1904 read_input_waiting ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1905 if (detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1906 select_alarmed = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1907 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1908 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1909 pause ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1910 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1911 (*local_timeout) -= SELECT_PAUSE;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1912
27432
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
1913 /* 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
1914 turn_on_atimers (1);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
1915
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1916 if (*local_timeout == 0) /* Stop on timer being cleared */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1917 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1918 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1919 return ravail;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1920 }
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1921 #endif /* not WINDOWSNT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1922
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1923 /* Read keyboard input into the standard buffer,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1924 waiting for at least one character. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1925
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1926 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1927 read_input_waiting ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1928 {
83014
f5cadabb36dd Support for opening X frames from a tty session.
Karoly Lorentey <lorentey@elte.hu>
parents: 83012
diff changeset
1929 /* 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
1930 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
1931 int nread, i;
6e25f9b75841 * sysdep.c (select): There's no need to cast the return value of
Jim Blandy <jimb@redhat.com>
parents: 766
diff changeset
1932 extern int quit_char;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1933
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1934 if (read_socket_hook)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1935 {
54166
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1936 struct input_event hold_quit;
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1937
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1938 EVENT_INIT (hold_quit);
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1939 hold_quit.kind = NO_EVENT;
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1940
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1941 read_alarm_should_throw = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1942 if (! setjmp (read_alarm_throw))
54166
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1943 nread = (*read_socket_hook) (0, 1, &hold_quit);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1944 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1945 nread = -1;
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1946
54166
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1947 if (hold_quit.kind != NO_EVENT)
787d9a46cf1a (BUFFER_SIZE_FACTOR): Remove.
Kim F. Storm <storm@cua.dk>
parents: 53901
diff changeset
1948 kbd_buffer_store_event (&hold_quit);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1949 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1950 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1951 {
51572
1ef0c7b51ff9 (kbd_input_ast, read_input_waiting): Don't pass uninitialized
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51552
diff changeset
1952 struct input_event e;
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1953 char buf[3];
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1954 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
1955 EVENT_INIT (e);
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1956
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1957 /* 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
1958 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
1959 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
1960 e.modifiers = 0;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1961 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
1962 {
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1963 /* 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
1964 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
1965 if (read_socket_hook == 0)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1966 {
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1967 /* 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
1968 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
1969 e.modifiers = meta_modifier;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1970 if (meta_key != 2)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1971 buf[i] &= ~0x80;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1972 }
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1973
9279
2382e2f3884e (kbd_input_ast, read_input_waiting): Use new accessor macros instead of
Karl Heuer <kwzh@gnu.org>
parents: 9239
diff changeset
1974 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
1975 kbd_buffer_store_event (&e);
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1976 /* 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
1977 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
1978 if (buf[i] == quit_char)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
1979 break;
4952
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
1980 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1981 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1982 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1983
91702
b7a5a89054dc * configure.in (LIBX11_MACHINE, HAVE_XFREE386): Remove code
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87799
diff changeset
1984 #if !defined (HAVE_SELECT)
82988
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
1985 #define select sys_select
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
1986 #endif
f82e3a6f5ccb A few more bugfixes and new features.
Karoly Lorentey <lorentey@elte.hu>
parents: 82987
diff changeset
1987
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1988 #endif /* not HAVE_SELECT */
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
1989 #endif /* not MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1990
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1991 /* POSIX signals support - DJB */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1992 /* Anyone with POSIX signals should have ANSI C declarations */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1993
20948
a9a9a13079b4 (sys_sigpause): Removed.
Andreas Schwab <schwab@suse.de>
parents: 20498
diff changeset
1994 sigset_t empty_mask, full_mask;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1995
108200
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
1996 #ifndef WINDOWSNT
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
1997
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1998 signal_handler_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1999 sys_signal (int signal_number, signal_handler_t action)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2000 {
20948
a9a9a13079b4 (sys_sigpause): Removed.
Andreas Schwab <schwab@suse.de>
parents: 20498
diff changeset
2001 struct sigaction new_action, old_action;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2002 sigemptyset (&new_action.sa_mask);
20498
22dd2d861e36 (sys_signal): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 20456
diff changeset
2003 new_action.sa_handler = action;
98547
0835efd6ac19 (sys_signal): Always set SA_RESTART when
Andreas Schwab <schwab@suse.de>
parents: 98505
diff changeset
2004 new_action.sa_flags = 0;
0835efd6ac19 (sys_signal): Always set SA_RESTART when
Andreas Schwab <schwab@suse.de>
parents: 98505
diff changeset
2005 #if defined (SA_RESTART)
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
2006 /* 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
2007 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
2008 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
2009 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
2010 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
2011 /* 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
2012 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
2013 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
2014 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
2015 /* 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
2016 want restartable system calls. */
98547
0835efd6ac19 (sys_signal): Always set SA_RESTART when
Andreas Schwab <schwab@suse.de>
parents: 98505
diff changeset
2017 # 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
2018 if (noninteractive)
0835efd6ac19 (sys_signal): Always set SA_RESTART when
Andreas Schwab <schwab@suse.de>
parents: 98505
diff changeset
2019 # endif
0835efd6ac19 (sys_signal): Always set SA_RESTART when
Andreas Schwab <schwab@suse.de>
parents: 98505
diff changeset
2020 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
2021 #endif
709
829ba8707e86 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 692
diff changeset
2022 sigaction (signal_number, &new_action, &old_action);
20498
22dd2d861e36 (sys_signal): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 20456
diff changeset
2023 return (old_action.sa_handler);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2024 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2025
108200
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
2026 #endif /* WINDOWSNT */
e30aff0bf9d5 Emulate POSIX_SIGNALS on MS-Windows.
Eli Zaretskii <eliz@gnu.org>
parents: 108073
diff changeset
2027
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2028 #ifndef __GNUC__
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2029 /* 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
2030 can be written as a macro. */
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2031 sigset_t
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2032 sys_sigmask (int sig)
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2033 {
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2034 sigset_t mask;
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2035 sigemptyset (&mask);
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2036 sigaddset (&mask, sig);
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2037 return mask;
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2038 }
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2039 #endif
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2040
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2041 /* 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
2042 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
2043 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
2044 anyhow. - DJB */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2045
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2046 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2047 sys_sigblock (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2048 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2049 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2050 sigprocmask (SIG_BLOCK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2051 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2052 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2053
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2054 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2055 sys_sigunblock (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2056 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2057 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2058 sigprocmask (SIG_UNBLOCK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2059 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2060 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2061
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2062 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2063 sys_sigsetmask (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2064 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2065 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2066 sigprocmask (SIG_SETMASK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2067 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2068 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2069
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2070
51552
d84e9160d869 Remove redundant include of unistd.h, stdlib.h. Use
Dave Love <fx@gnu.org>
parents: 51206
diff changeset
2071 #if !defined HAVE_STRSIGNAL && !HAVE_DECL_SYS_SIGLIST
26526
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2072 static char *my_sys_siglist[NSIG];
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2073 # ifdef sys_siglist
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2074 # undef sys_siglist
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2075 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2076 # define sys_siglist my_sys_siglist
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2077 #endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2078
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2079 void
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2080 init_signals ()
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2081 {
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2082 sigemptyset (&empty_mask);
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2083 sigfillset (&full_mask);
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2084
51552
d84e9160d869 Remove redundant include of unistd.h, stdlib.h. Use
Dave Love <fx@gnu.org>
parents: 51206
diff changeset
2085 #if !defined HAVE_STRSIGNAL && !HAVE_DECL_SYS_SIGLIST
26526
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2086 if (! initialized)
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2087 {
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2088 # ifdef SIGABRT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2089 sys_siglist[SIGABRT] = "Aborted";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2090 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2091 # ifdef SIGAIO
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2092 sys_siglist[SIGAIO] = "LAN I/O interrupt";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2093 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2094 # ifdef SIGALRM
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2095 sys_siglist[SIGALRM] = "Alarm clock";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2096 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2097 # ifdef SIGBUS
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2098 sys_siglist[SIGBUS] = "Bus error";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2099 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2100 # ifdef SIGCLD
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2101 sys_siglist[SIGCLD] = "Child status changed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2102 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2103 # ifdef SIGCHLD
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2104 sys_siglist[SIGCHLD] = "Child status changed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2105 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2106 # ifdef SIGCONT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2107 sys_siglist[SIGCONT] = "Continued";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2108 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2109 # ifdef SIGDANGER
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2110 sys_siglist[SIGDANGER] = "Swap space dangerously low";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2111 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2112 # ifdef SIGDGNOTIFY
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2113 sys_siglist[SIGDGNOTIFY] = "Notification message in queue";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2114 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2115 # ifdef SIGEMT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2116 sys_siglist[SIGEMT] = "Emulation trap";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2117 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2118 # ifdef SIGFPE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2119 sys_siglist[SIGFPE] = "Arithmetic exception";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2120 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2121 # ifdef SIGFREEZE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2122 sys_siglist[SIGFREEZE] = "SIGFREEZE";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2123 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2124 # ifdef SIGGRANT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2125 sys_siglist[SIGGRANT] = "Monitor mode granted";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2126 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2127 # ifdef SIGHUP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2128 sys_siglist[SIGHUP] = "Hangup";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2129 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2130 # ifdef SIGILL
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2131 sys_siglist[SIGILL] = "Illegal instruction";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2132 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2133 # ifdef SIGINT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2134 sys_siglist[SIGINT] = "Interrupt";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2135 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2136 # ifdef SIGIO
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2137 sys_siglist[SIGIO] = "I/O possible";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2138 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2139 # ifdef SIGIOINT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2140 sys_siglist[SIGIOINT] = "I/O intervention required";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2141 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2142 # ifdef SIGIOT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2143 sys_siglist[SIGIOT] = "IOT trap";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2144 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2145 # ifdef SIGKILL
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2146 sys_siglist[SIGKILL] = "Killed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2147 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2148 # ifdef SIGLOST
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2149 sys_siglist[SIGLOST] = "Resource lost";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2150 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2151 # ifdef SIGLWP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2152 sys_siglist[SIGLWP] = "SIGLWP";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2153 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2154 # ifdef SIGMSG
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2155 sys_siglist[SIGMSG] = "Monitor mode data available";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2156 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2157 # ifdef SIGPHONE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2158 sys_siglist[SIGWIND] = "SIGPHONE";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2159 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2160 # ifdef SIGPIPE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2161 sys_siglist[SIGPIPE] = "Broken pipe";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2162 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2163 # ifdef SIGPOLL
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2164 sys_siglist[SIGPOLL] = "Pollable event occurred";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2165 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2166 # ifdef SIGPROF
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2167 sys_siglist[SIGPROF] = "Profiling timer expired";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2168 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2169 # ifdef SIGPTY
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2170 sys_siglist[SIGPTY] = "PTY I/O interrupt";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2171 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2172 # ifdef SIGPWR
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2173 sys_siglist[SIGPWR] = "Power-fail restart";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2174 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2175 # ifdef SIGQUIT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2176 sys_siglist[SIGQUIT] = "Quit";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2177 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2178 # ifdef SIGRETRACT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2179 sys_siglist[SIGRETRACT] = "Need to relinguish monitor mode";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2180 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2181 # ifdef SIGSAK
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2182 sys_siglist[SIGSAK] = "Secure attention";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2183 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2184 # ifdef SIGSEGV
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2185 sys_siglist[SIGSEGV] = "Segmentation violation";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2186 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2187 # ifdef SIGSOUND
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2188 sys_siglist[SIGSOUND] = "Sound completed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2189 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2190 # ifdef SIGSTOP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2191 sys_siglist[SIGSTOP] = "Stopped (signal)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2192 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2193 # ifdef SIGSTP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2194 sys_siglist[SIGSTP] = "Stopped (user)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2195 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2196 # ifdef SIGSYS
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2197 sys_siglist[SIGSYS] = "Bad argument to system call";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2198 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2199 # ifdef SIGTERM
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2200 sys_siglist[SIGTERM] = "Terminated";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2201 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2202 # ifdef SIGTHAW
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2203 sys_siglist[SIGTHAW] = "SIGTHAW";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2204 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2205 # ifdef SIGTRAP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2206 sys_siglist[SIGTRAP] = "Trace/breakpoint trap";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2207 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2208 # ifdef SIGTSTP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2209 sys_siglist[SIGTSTP] = "Stopped (user)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2210 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2211 # ifdef SIGTTIN
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2212 sys_siglist[SIGTTIN] = "Stopped (tty input)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2213 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2214 # ifdef SIGTTOU
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2215 sys_siglist[SIGTTOU] = "Stopped (tty output)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2216 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2217 # ifdef SIGURG
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2218 sys_siglist[SIGURG] = "Urgent I/O condition";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2219 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2220 # ifdef SIGUSR1
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2221 sys_siglist[SIGUSR1] = "User defined signal 1";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2222 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2223 # ifdef SIGUSR2
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2224 sys_siglist[SIGUSR2] = "User defined signal 2";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2225 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2226 # ifdef SIGVTALRM
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2227 sys_siglist[SIGVTALRM] = "Virtual timer expired";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2228 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2229 # ifdef SIGWAITING
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2230 sys_siglist[SIGWAITING] = "Process's LWPs are blocked";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2231 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2232 # ifdef SIGWINCH
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2233 sys_siglist[SIGWINCH] = "Window size changed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2234 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2235 # ifdef SIGWIND
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2236 sys_siglist[SIGWIND] = "SIGWIND";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2237 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2238 # ifdef SIGXCPU
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2239 sys_siglist[SIGXCPU] = "CPU time limit exceeded";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2240 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2241 # ifdef SIGXFSZ
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2242 sys_siglist[SIGXFSZ] = "File size limit exceeded";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2243 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2244 }
51552
d84e9160d869 Remove redundant include of unistd.h, stdlib.h. Use
Dave Love <fx@gnu.org>
parents: 51206
diff changeset
2245 #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
2246 }
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2247
2332
bc2f7dc78412 * sysdep.c (random, srandom): Don't define these if HAVE_RANDOM is
Jim Blandy <jimb@redhat.com>
parents: 2287
diff changeset
2248 #ifndef HAVE_RANDOM
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2249 #ifdef random
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2250 #define HAVE_RANDOM
8368
0c30bec316c6 (random): Use rand differently, and distinguish BSD/USG.
Richard M. Stallman <rms@gnu.org>
parents: 8358
diff changeset
2251 #endif
8358
f9d8f778f73b (random, srandom): Obey HAVE_RAND48 flag.
Richard M. Stallman <rms@gnu.org>
parents: 8330
diff changeset
2252 #endif
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2253
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2254 /* 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
2255 `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
2256 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
2257 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
2258
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2259 #ifndef RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2260 # ifdef HAVE_RANDOM
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2261 # define RAND_BITS 31
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2262 # else /* !HAVE_RANDOM */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2263 # ifdef HAVE_LRAND48
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2264 # define RAND_BITS 31
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2265 # define random lrand48
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2266 # else /* !HAVE_LRAND48 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2267 # define RAND_BITS 15
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2268 # if RAND_MAX == 32767
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2269 # define random rand
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2270 # else /* RAND_MAX != 32767 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2271 # if RAND_MAX == 2147483647
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2272 # define random() (rand () >> 16)
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2273 # else /* RAND_MAX != 2147483647 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2274 # ifdef USG
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2275 # define random rand
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2276 # else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2277 # define random() (rand () >> 16)
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
2278 # endif /* !USG */
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2279 # endif /* RAND_MAX != 2147483647 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2280 # endif /* RAND_MAX != 32767 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2281 # endif /* !HAVE_LRAND48 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2282 # endif /* !HAVE_RANDOM */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2283 #endif /* !RAND_BITS */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2284
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2285 void
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2286 seed_random (arg)
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2287 long arg;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2288 {
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2289 #ifdef HAVE_RANDOM
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2290 srandom ((unsigned int)arg);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2291 #else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2292 # ifdef HAVE_LRAND48
8702
097fe97274e9 (srandom): Pass arg to srand48; no return value.
Karl Heuer <kwzh@gnu.org>
parents: 8699
diff changeset
2293 srand48 (arg);
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2294 # else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2295 srand ((unsigned int)arg);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2296 # endif
8358
f9d8f778f73b (random, srandom): Obey HAVE_RAND48 flag.
Richard M. Stallman <rms@gnu.org>
parents: 8330
diff changeset
2297 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2298 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2299
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2300 /*
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2301 * 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
2302 * 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
2303 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2304 long
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2305 get_random ()
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2306 {
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2307 long val = random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2308 #if VALBITS > RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2309 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2310 #if VALBITS > 2*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2311 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2312 #if VALBITS > 3*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2313 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2314 #if VALBITS > 4*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2315 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2316 #endif /* need at least 5 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2317 #endif /* need at least 4 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2318 #endif /* need at least 3 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2319 #endif /* need at least 2 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2320 return val & ((1L << VALBITS) - 1);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2321 }
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2322
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2323 #ifndef HAVE_STRERROR
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
2324 #ifndef WINDOWSNT
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2325 char *
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2326 strerror (errnum)
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2327 int errnum;
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2328 {
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2329 extern char *sys_errlist[];
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2330 extern int sys_nerr;
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2331
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2332 if (errnum >= 0 && errnum < sys_nerr)
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2333 return sys_errlist[errnum];
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2334 return (char *) "Unknown error";
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2335 }
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
2336 #endif /* not WINDOWSNT */
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
2337 #endif /* ! HAVE_STRERROR */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2338
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2339 int
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2340 emacs_open (path, oflag, mode)
46475
148316527c61 (emacs_open, set_file_times): String pointer args now
Ken Raeburn <raeburn@raeburn.org>
parents: 46370
diff changeset
2341 const char *path;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2342 int oflag, mode;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2343 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2344 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
2345
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2346 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
2347 && (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
2348 QUIT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2349 return (rtnval);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2350 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2351
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2352 int
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2353 emacs_close (fd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2354 int fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2355 {
12547
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2356 int did_retry = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2357 register int rtnval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2358
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2359 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
2360 && (errno == EINTR))
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2361 did_retry = 1;
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2362
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2363 /* 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
2364 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
2365 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
2366 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
2367 return 0;
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
2368
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2369 return rtnval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2370 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2371
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2372 int
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2373 emacs_read (fildes, buf, nbyte)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2374 int fildes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2375 char *buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2376 unsigned int nbyte;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2377 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2378 register int rtnval;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2379
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2380 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
2381 && (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
2382 QUIT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2383 return (rtnval);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2384 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2385
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2386 int
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2387 emacs_write (fildes, buf, nbyte)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2388 int fildes;
46558
d613ff01b7a8 (emacs_write): Buffer pointer now const.
Ken Raeburn <raeburn@raeburn.org>
parents: 46475
diff changeset
2389 const char *buf;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2390 unsigned int nbyte;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2391 {
4772
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2392 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
2393
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2394 bytes_written = 0;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2395
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2396 while (nbyte > 0)
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2397 {
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2398 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
2399
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2400 if (rtnval == -1)
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2401 {
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2402 if (errno == EINTR)
58621
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2403 {
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2404 #ifdef SYNC_INPUT
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2405 /* 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
2406 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
2407 process_pending_signals ();
58621
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2408 #endif
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2409 continue;
62f194448b68 (emacs_write): Don't use QUIT.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58518
diff changeset
2410 }
4772
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2411 else
5954
02f406110e4b (sys_write): If any bytes were written, return how many.
Richard M. Stallman <rms@gnu.org>
parents: 5937
diff changeset
2412 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
2413 }
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2414
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2415 buf += rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2416 nbyte -= rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2417 bytes_written += rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2418 }
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
2419 return (bytes_written);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2420 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2421
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2422 #ifdef USG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2423 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2424 * All of the following are for USG.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2425 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2426 * On USG systems the system calls are INTERRUPTIBLE by signals
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2427 * that the user program has elected to catch. Thus the system call
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2428 * must be retried in these cases. To handle this without massive
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2429 * changes in the source code, we remap the standard system call names
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2430 * 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
2431 * with retries. Actually, for portability reasons, it is good
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2432 * 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
2433 * system calls to a single occurrence in the source. Sure, this
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2434 * adds an extra level of function call overhead but it is almost
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2435 * always negligible. Fred Fish, Unisoft Systems Inc.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2436 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2437
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2438 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2439 * Warning, this function may not duplicate 4.2 action properly
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2440 * under error conditions.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2441 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2442
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2443 #ifndef MAXPATHLEN
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2444 /* In 4.1, param.h fails to define this. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2445 #define MAXPATHLEN 1024
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2446 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2447
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2448 #ifndef HAVE_GETWD
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2449
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2450 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2451 getwd (pathname)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2452 char *pathname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2453 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2454 char *npath, *spath;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2455 extern char *getcwd ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2456
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
2457 BLOCK_INPUT; /* getcwd uses malloc */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2458 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
2459 if (spath == 0)
37219
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
2460 {
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
2461 UNBLOCK_INPUT;
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
2462 return spath;
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
2463 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2464 /* On Altos 3068, getcwd can return @hostname/dir, so discard
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2465 up to first slash. Should be harmless on other systems. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2466 while (*npath && *npath != '/')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2467 npath++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2468 strcpy (pathname, npath);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2469 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
2470 UNBLOCK_INPUT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2471 return pathname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2472 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2473
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2474 #endif /* HAVE_GETWD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2475
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2476 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2477 * Emulate rename using unlink/link. Note that this is
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2478 * only partially correct. Also, doesn't enforce restriction
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2479 * that files be of same type (regular->regular, dir->dir, etc).
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2480 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2481
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
2482 #ifndef HAVE_RENAME
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
2483
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2484 rename (from, to)
3842
e8bcf96f1418 * sysdep.c (rename): Make arguments const. autoconf #defines
Jim Blandy <jimb@redhat.com>
parents: 3826
diff changeset
2485 const char *from;
e8bcf96f1418 * sysdep.c (rename): Make arguments const. autoconf #defines
Jim Blandy <jimb@redhat.com>
parents: 3826
diff changeset
2486 const char *to;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2487 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2488 if (access (from, 0) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2489 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2490 unlink (to);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2491 if (link (from, to) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2492 if (unlink (from) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2493 return (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2494 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2495 return (-1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2496 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2497
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
2498 #endif
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
2499
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2500
97141
840bd675fd85 * s/ms-w32.h (MULTI_KBOARD): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97119
diff changeset
2501 #if defined(HPUX) && !defined(HAVE_PERROR)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2502
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2503 /* HPUX curses library references perror, but as far as we know
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2504 it won't be called. Anyway this definition will do for now. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2505
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2506 perror ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2507 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2508 }
97141
840bd675fd85 * s/ms-w32.h (MULTI_KBOARD): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97119
diff changeset
2509 #endif /* HPUX and not HAVE_PERROR */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2510
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2511 #ifndef HAVE_DUP2
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2512
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2513 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2514 * Emulate BSD dup2. First close newd if it already exists.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2515 * Then, attempt to dup oldd. If not successful, call dup2 recursively
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2516 * until we are, then close the unsuccessful ones.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2517 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2518
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2519 dup2 (oldd, newd)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2520 int oldd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2521 int newd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2522 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2523 register int fd, ret;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2524
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2525 emacs_close (newd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2526
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2527 #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
2528 return fcntl (oldd, F_DUPFD, newd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2529 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2530 fd = dup (old);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2531 if (fd == -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2532 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2533 if (fd == new)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2534 return new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2535 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
2536 emacs_close (fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2537 return ret;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2538 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2539 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2540
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2541 #endif /* not HAVE_DUP2 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2542
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2543 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2544 * Gettimeofday. Simulate as much as possible. Only accurate
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2545 * to nearest second. Emacs doesn't use tzp so ignore it for now.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2546 * Only needed when subprocesses are defined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2547 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2548
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2549 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2550 #ifndef HAVE_GETTIMEOFDAY
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2551 #ifdef HAVE_TIMEVAL
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2552
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2553 /* ARGSUSED */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2554 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2555 gettimeofday (tp, tzp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2556 struct timeval *tp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2557 struct timezone *tzp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2558 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2559 extern long time ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2560
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2561 tp->tv_sec = time ((long *)0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2562 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
2563 if (tzp != 0)
2e4882a32671 (gettimeofday): Don't store in *tzp if tzp is 0.
Richard M. Stallman <rms@gnu.org>
parents: 3157
diff changeset
2564 tzp->tz_minuteswest = -1;
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2565 return 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2566 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2567
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2568 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2569 #endif
97142
c3512b2085a0 * bitmaps/README:
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97141
diff changeset
2570 #endif /* subprocess && !HAVE_GETTIMEOFDAY && HAVE_TIMEVAL */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48741
diff changeset
2571
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2572 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2573 * This function will go away as soon as all the stubs fixed. (fnf)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2574 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2575
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2576 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2577 croak (badfunc)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2578 char *badfunc;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2579 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2580 printf ("%s not yet implemented\r\n", badfunc);
53226
dd3018b4785b Implemented multiple tty support.
Karoly Lorentey <lorentey@elte.hu>
parents: 53225
diff changeset
2581 reset_all_sys_modes ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2582 exit (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2583 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2584
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2585 #endif /* USG */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2586
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2587 /* Directory routines for systems that don't have them. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2588
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2589 #ifdef SYSV_SYSTEM_DIR
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2590
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2591 #include <dirent.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2592
97119
b57392641da7 * systty.h (sensemode): Remove empty #if. Remove reference to
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97043
diff changeset
2593 #if !defined (HAVE_CLOSEDIR)
5158
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
2594
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2595 int
97119
b57392641da7 * systty.h (sensemode): Remove empty #if. Remove reference to
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97043
diff changeset
2596 closedir (DIR *dirp /* stream from opendir */)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2597 {
5158
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
2598 int rtnval;
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
2599
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2600 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
2601 xfree ((char *) dirp);
5158
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
2602
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
2603 return rtnval;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2604 }
97119
b57392641da7 * systty.h (sensemode): Remove empty #if. Remove reference to
Dan Nicolaescu <dann@ics.uci.edu>
parents: 97043
diff changeset
2605 #endif /* not HAVE_CLOSEDIR */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2606 #endif /* SYSV_SYSTEM_DIR */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2607
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2608
8934
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2609 int
9082
2c6875700c9f (set_file_times): Fix typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9081
diff changeset
2610 set_file_times (filename, atime, mtime)
46475
148316527c61 (emacs_open, set_file_times): String pointer args now
Ken Raeburn <raeburn@raeburn.org>
parents: 46370
diff changeset
2611 const char *filename;
8934
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2612 EMACS_TIME atime, mtime;
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2613 {
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2614 #ifdef HAVE_UTIMES
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2615 struct timeval tv[2];
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2616 tv[0] = atime;
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2617 tv[1] = mtime;
9081
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
2618 return utimes (filename, tv);
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
2619 #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
2620 struct utimbuf utb;
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2621 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
2622 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
2623 return utime (filename, &utb);
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
2624 #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
2625 }
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
2626
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2627 /* 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
2628
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2629 #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
2630 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2631 * 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
2632 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2633 * 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
2634 * 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
2635 * a copy.
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2636 * 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
2637 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2638 * 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
2639 * 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
2640 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2641 * 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
2642 * 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
2643 */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2644
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2645 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2646 * 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
2647 */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2648 int
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2649 mkdir (dpath, dmode)
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2650 char *dpath;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2651 int dmode;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2652 {
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2653 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
2654 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
2655
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2656 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
2657 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2658 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
2659 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2660 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2661
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2662 /* 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
2663 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
2664 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2665
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2666 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
2667 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
2668 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2669
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2670 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
2671 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
2672
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2673 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
2674 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2675 * 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
2676 * 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
2677 * 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
2678 * 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
2679 */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2680 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
2681 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
2682 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
2683 if (fd >= 0)
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2684 {
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2685 dup2 (fd, 0);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2686 dup2 (fd, 1);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2687 dup2 (fd, 2);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2688 }
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2689 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
2690 _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
2691
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2692 default: /* Parent process */
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2693 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
2694 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2695
53715
811d720ddd2b (mkdir, rmdir): Also check synch_process_termsig.
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
2696 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
2697 || 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
2698 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2699 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
2700 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
2701 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2702
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2703 return 0;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2704 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2705 #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
2706
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2707 #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
2708 int
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2709 rmdir (dpath)
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2710 char *dpath;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2711 {
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2712 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
2713 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
2714
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2715 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
2716 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2717 /* 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
2718 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2719 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2720
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2721 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
2722 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
2723 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2724
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2725 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
2726 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
2727
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2728 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
2729 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
2730 if (fd >= 0)
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2731 {
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2732 dup2 (fd, 0);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2733 dup2 (fd, 1);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2734 dup2 (fd, 2);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
2735 }
12326
b99947e6b447 (rmdir): Fix up Aug 19 1993 change that wasn't done right.
Richard M. Stallman <rms@gnu.org>
parents: 12231
diff changeset
2736 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
2737 _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
2738
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2739 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
2740 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
2741 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2742
53715
811d720ddd2b (mkdir, rmdir): Also check synch_process_termsig.
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
2743 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
2744 || 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
2745 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2746 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
2747 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
2748 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2749
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2750 return 0;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2751 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
2752 #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
2753
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2754
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2755 #ifndef HAVE_STRSIGNAL
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2756 char *
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2757 strsignal (code)
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2758 int code;
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2759 {
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2760 char *signame = 0;
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2761
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2762 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
2763 {
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2764 /* 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
2765 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
2766 }
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2767
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2768 return signame;
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2769 }
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
2770 #endif /* HAVE_STRSIGNAL */
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2771
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2772 #ifdef HAVE_TERMIOS
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2773 /* For make-serial-process */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2774 int serial_open (char *port)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2775 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2776 int fd = -1;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2777
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2778 fd = emacs_open ((char*) port,
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2779 O_RDWR
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2780 #ifdef O_NONBLOCK
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2781 | O_NONBLOCK
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2782 #else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2783 | O_NDELAY
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2784 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2785 #ifdef O_NOCTTY
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2786 | O_NOCTTY
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2787 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2788 , 0);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2789 if (fd < 0)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2790 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2791 error ("Could not open %s: %s",
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2792 port, emacs_strerror (errno));
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2793 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2794 #ifdef TIOCEXCL
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2795 ioctl (fd, TIOCEXCL, (char *) 0);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2796 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2797
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2798 return fd;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2799 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2800 #endif /* TERMIOS */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2801
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2802 #ifdef HAVE_TERMIOS
96099
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2803
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2804 #if !defined (HAVE_CFMAKERAW)
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2805 /* 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
2806 /* Pasted from man page. */
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2807 static void cfmakeraw (struct termios *termios_p)
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2808 {
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2809 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
2810 termios_p->c_oflag &= ~OPOST;
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2811 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
2812 termios_p->c_cflag &= ~(CSIZE|PARENB);
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2813 termios_p->c_cflag |= CS8;
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2814 }
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2815 #endif /* !defined (HAVE_CFMAKERAW */
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2816
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2817 #if !defined (HAVE_CFSETSPEED)
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2818 /* Workaround for targets which are missing cfsetspeed. */
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2819 static int cfsetspeed (struct termios *termios_p, speed_t vitesse)
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2820 {
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2821 return (cfsetispeed (termios_p, vitesse)
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2822 + cfsetospeed (termios_p, vitesse));
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2823 }
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2824 #endif
eb403674cfbf (cfsetspeed): New fun extracted from the code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 96098
diff changeset
2825
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2826 /* For serial-process-configure */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2827 void
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2828 serial_configure (struct Lisp_Process *p,
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2829 Lisp_Object contact)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2830 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2831 Lisp_Object childp2 = Qnil;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2832 Lisp_Object tem = Qnil;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2833 struct termios attr;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2834 int err = -1;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2835 char summary[4] = "???"; /* This usually becomes "8N1". */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2836
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2837 childp2 = Fcopy_sequence (p->childp);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2838
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2839 /* Read port attributes and prepare default configuration. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2840 err = tcgetattr (p->outfd, &attr);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2841 if (err != 0)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2842 error ("tcgetattr() failed: %s", emacs_strerror (errno));
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2843 cfmakeraw (&attr);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2844 #if defined (CLOCAL)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2845 attr.c_cflag |= CLOCAL;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2846 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2847 #if defined (CREAD)
100574
6b3d372af944 (serial_configure): Fix typo.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100572
diff changeset
2848 attr.c_cflag |= CREAD;
95884
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2849 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2850
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2851 /* Configure speed. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2852 if (!NILP (Fplist_member (contact, QCspeed)))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2853 tem = Fplist_get (contact, QCspeed);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2854 else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2855 tem = Fplist_get (p->childp, QCspeed);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2856 CHECK_NUMBER (tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2857 err = cfsetspeed (&attr, XINT (tem));
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2858 if (err != 0)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2859 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
2860 childp2 = Fplist_put (childp2, QCspeed, tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2861
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2862 /* Configure bytesize. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2863 if (!NILP (Fplist_member (contact, QCbytesize)))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2864 tem = Fplist_get (contact, QCbytesize);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2865 else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2866 tem = Fplist_get (p->childp, QCbytesize);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2867 if (NILP (tem))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2868 tem = make_number (8);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2869 CHECK_NUMBER (tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2870 if (XINT (tem) != 7 && XINT (tem) != 8)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2871 error (":bytesize must be nil (8), 7, or 8");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2872 summary[0] = XINT(tem) + '0';
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2873 #if defined (CSIZE) && defined (CS7) && defined (CS8)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2874 attr.c_cflag &= ~CSIZE;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2875 attr.c_cflag |= ((XINT (tem) == 7) ? CS7 : CS8);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2876 #else
96309
7d463685c286 Comment fixes.
Glenn Morris <rgm@gnu.org>
parents: 96303
diff changeset
2877 /* 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
2878 if (XINT (tem) != 8)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2879 error ("Bytesize cannot be changed");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2880 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2881 childp2 = Fplist_put (childp2, QCbytesize, tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2882
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2883 /* Configure parity. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2884 if (!NILP (Fplist_member (contact, QCparity)))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2885 tem = Fplist_get (contact, QCparity);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2886 else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2887 tem = Fplist_get (p->childp, QCparity);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2888 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
2889 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
2890 #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
2891 attr.c_cflag &= ~(PARENB | PARODD);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2892 attr.c_iflag &= ~(IGNPAR | INPCK);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2893 if (NILP (tem))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2894 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2895 summary[1] = 'N';
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2896 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2897 else if (EQ (tem, Qeven))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2898 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2899 summary[1] = 'E';
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2900 attr.c_cflag |= PARENB;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2901 attr.c_iflag |= (IGNPAR | INPCK);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2902 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2903 else if (EQ (tem, Qodd))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2904 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2905 summary[1] = 'O';
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2906 attr.c_cflag |= (PARENB | PARODD);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2907 attr.c_iflag |= (IGNPAR | INPCK);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2908 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2909 #else
96309
7d463685c286 Comment fixes.
Glenn Morris <rgm@gnu.org>
parents: 96303
diff changeset
2910 /* 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
2911 if (!NILP (tem))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2912 error ("Parity cannot be configured");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2913 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2914 childp2 = Fplist_put (childp2, QCparity, tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2915
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2916 /* Configure stopbits. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2917 if (!NILP (Fplist_member (contact, QCstopbits)))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2918 tem = Fplist_get (contact, QCstopbits);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2919 else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2920 tem = Fplist_get (p->childp, QCstopbits);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2921 if (NILP (tem))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2922 tem = make_number (1);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2923 CHECK_NUMBER (tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2924 if (XINT (tem) != 1 && XINT (tem) != 2)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2925 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
2926 summary[2] = XINT (tem) + '0';
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2927 #if defined (CSTOPB)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2928 attr.c_cflag &= ~CSTOPB;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2929 if (XINT (tem) == 2)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2930 attr.c_cflag |= CSTOPB;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2931 #else
96309
7d463685c286 Comment fixes.
Glenn Morris <rgm@gnu.org>
parents: 96303
diff changeset
2932 /* 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
2933 if (XINT (tem) != 1)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2934 error ("Stopbits cannot be configured");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2935 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2936 childp2 = Fplist_put (childp2, QCstopbits, tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2937
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2938 /* Configure flowcontrol. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2939 if (!NILP (Fplist_member (contact, QCflowcontrol)))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2940 tem = Fplist_get (contact, QCflowcontrol);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2941 else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2942 tem = Fplist_get (p->childp, QCflowcontrol);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2943 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
2944 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
2945 #if defined (CRTSCTS)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2946 attr.c_cflag &= ~CRTSCTS;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2947 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2948 #if defined (CNEW_RTSCTS)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2949 attr.c_cflag &= ~CNEW_RTSCTS;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2950 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2951 #if defined (IXON) && defined (IXOFF)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2952 attr.c_iflag &= ~(IXON | IXOFF);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2953 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2954 if (NILP (tem))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2955 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2956 /* Already configured. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2957 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2958 else if (EQ (tem, Qhw))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2959 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2960 #if defined (CRTSCTS)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2961 attr.c_cflag |= CRTSCTS;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2962 #elif defined (CNEW_RTSCTS)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2963 attr.c_cflag |= CNEW_RTSCTS;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2964 #else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2965 error ("Hardware flowcontrol (RTS/CTS) not supported");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2966 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2967 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2968 else if (EQ (tem, Qsw))
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2969 {
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2970 #if defined (IXON) && defined (IXOFF)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2971 attr.c_iflag |= (IXON | IXOFF);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2972 #else
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2973 error ("Software flowcontrol (XON/XOFF) not supported");
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2974 #endif
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2975 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2976 childp2 = Fplist_put (childp2, QCflowcontrol, tem);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2977
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2978 /* Activate configuration. */
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2979 err = tcsetattr (p->outfd, TCSANOW, &attr);
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2980 if (err != 0)
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2981 error ("tcsetattr() failed: %s", emacs_strerror (errno));
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2982
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2983 childp2 = Fplist_put (childp2, QCsummary, build_string (summary));
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2984 p->childp = childp2;
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2985
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2986 }
d6a4488883dc Daniel Engeler <engeler at gmail.com>
Glenn Morris <rgm@gnu.org>
parents: 95063
diff changeset
2987 #endif /* TERMIOS */
100565
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 /* 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
2990
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2991 #ifdef HAVE_PROCFS
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2992
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2993 /* Process enumeration and access via /proc. */
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 Lisp_Object
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2996 list_system_processes ()
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 Lisp_Object procdir, match, proclist, next;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
2999 struct gcpro gcpro1, gcpro2;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3000 register Lisp_Object tail;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3001
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3002 GCPRO2 (procdir, match);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3003 /* 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
3004 "/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
3005 process. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3006 procdir = build_string ("/proc");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3007 match = build_string ("[0-9]+");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3008 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
3009
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3010 /* `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
3011 each string into a number. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3012 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
3013 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3014 next = XCDR (tail);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3015 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
3016 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3017 UNGCPRO;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3018
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3019 /* 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
3020 that. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3021 proclist = Fnreverse (proclist);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3022 return proclist;
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
103711
531520bb5152 * sysdep.c (sys_suspend): Remove USG_JOBCTRL #ifdef, unused.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103558
diff changeset
3025 /* 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
3026 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
3027 #elif !defined (WINDOWSNT) && !defined (MSDOS)
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3028
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3029 Lisp_Object
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3030 list_system_processes ()
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3031 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3032 return Qnil;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3033 }
100595
04f1da2d6ad5 Add commentary about WINDOWSNT implementation of list_system_processes and
Eli Zaretskii <eliz@gnu.org>
parents: 100575
diff changeset
3034
04f1da2d6ad5 Add commentary about WINDOWSNT implementation of list_system_processes and
Eli Zaretskii <eliz@gnu.org>
parents: 100575
diff changeset
3035 #endif /* !defined (WINDOWSNT) */
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3036
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3037 #ifdef GNU_LINUX
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3038 static void
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3039 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
3040 time_t *sec, unsigned *usec)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3041 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3042 unsigned long long ullsec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3043
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3044 *sec = tval / hz;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3045 ullsec = *sec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3046 tval -= ullsec * hz;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3047 /* 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
3048 if (hz <= 1000000)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3049 *usec = tval * 1000000 / hz;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3050 else
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3051 *usec = tval / (hz / 1000000);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3052 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3053
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3054 static Lisp_Object
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3055 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
3056 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3057 time_t sec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3058 unsigned usec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3059
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3060 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
3061
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3062 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
3063 make_number (sec & 0xffff),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3064 make_number (usec));
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3065 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3066
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3067 static void
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3068 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
3069 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3070 FILE *fup;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3071
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3072 *sec = *usec = 0;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3073
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3074 BLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3075 fup = fopen ("/proc/uptime", "r");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3076
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3077 if (fup)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3078 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3079 double uptime, idletime;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3080
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3081 /* 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
3082 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
3083 in emacs.c). */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3084 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
3085 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3086 *sec = uptime;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3087 *usec = (uptime - *sec) * 1000000;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3088 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3089 fclose (fup);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3090 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3091 UNBLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3092 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3093
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3094 #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
3095 #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
3096
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3097 static Lisp_Object
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3098 procfs_ttyname (int rdev)
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3099 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3100 FILE *fdev = NULL;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3101 char name[PATH_MAX];
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3102
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3103 BLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3104 fdev = fopen ("/proc/tty/drivers", "r");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3105
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3106 if (fdev)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3107 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3108 unsigned major;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3109 unsigned long minor_beg, minor_end;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3110 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
3111 char *endp;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3112
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3113 while (!feof (fdev) && !ferror (fdev))
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3114 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3115 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
3116 && major == MAJOR (rdev))
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 minor_beg = strtoul (minor, &endp, 0);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3119 if (*endp == '\0')
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3120 minor_end = minor_beg;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3121 else if (*endp == '-')
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3122 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
3123 else
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3124 continue;
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 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
3127 {
105746
41169068dcab (procfs_ttyname): Fix sprintf format to match argument
Andreas Schwab <schwab@linux-m68k.org>
parents: 103711
diff changeset
3128 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
3129 break;
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 }
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 fclose (fdev);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3134 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3135 UNBLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3136 return build_string (name);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3137 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3138
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3139 static unsigned long
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3140 procfs_get_total_memory (void)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3141 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3142 FILE *fmem = NULL;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3143 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
3144
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3145 BLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3146 fmem = fopen ("/proc/meminfo", "r");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3147
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3148 if (fmem)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3149 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3150 unsigned long entry_value;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3151 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
3152
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3153 while (!feof (fmem) && !ferror (fmem))
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3154 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3155 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
3156 && strcmp (entry_name, "MemTotal:") == 0)
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 retval = entry_value;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3159 break;
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 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3162 fclose (fmem);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3163 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3164 UNBLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3165 return retval;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3166 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3167
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3168 Lisp_Object
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3169 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
3170 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3171 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
3172 struct stat st;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3173 struct passwd *pw;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3174 struct group *gr;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3175 long clocks_per_sec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3176 char *procfn_end;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3177 char procbuf[1025], *p, *q;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3178 int fd;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3179 ssize_t nread;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3180 const char *cmd = NULL;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3181 char *cmdline = NULL;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3182 size_t cmdsize = 0, cmdline_size;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3183 unsigned char c;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3184 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
3185 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
3186 long priority, nice, rss;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3187 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
3188 time_t sec;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3189 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
3190 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
3191 double pcpu, pmem;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3192 Lisp_Object attrs = Qnil;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3193 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
3194 struct gcpro gcpro1, gcpro2;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3195 EMACS_INT uid_eint, gid_eint;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3196
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3197 CHECK_NUMBER_OR_FLOAT (pid);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3198 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
3199 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
3200 if (stat (procfn, &st) < 0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3201 return attrs;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3202
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3203 GCPRO2 (attrs, decoded_cmd);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3204
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3205 /* euid egid */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3206 uid = st.st_uid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3207 /* 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
3208 uid_eint = uid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3209 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
3210 BLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3211 pw = getpwuid (uid);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3212 UNBLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3213 if (pw)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3214 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
3215
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3216 gid = st.st_gid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3217 gid_eint = gid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3218 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
3219 BLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3220 gr = getgrgid (gid);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3221 UNBLOCK_INPUT;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3222 if (gr)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3223 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
3224
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3225 strcpy (fn, procfn);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3226 procfn_end = fn + strlen (fn);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3227 strcpy (procfn_end, "/stat");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3228 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
3229 if (fd >= 0 && (nread = emacs_read (fd, procbuf, sizeof(procbuf) - 1)) > 0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3230 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3231 procbuf[nread] = '\0';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3232 p = procbuf;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3233
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3234 p = strchr (p, '(');
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3235 if (p != NULL)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3236 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3237 q = strrchr (p + 1, ')');
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3238 /* comm */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3239 if (q != NULL)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3240 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3241 cmd = p + 1;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3242 cmdsize = q - cmd;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3243 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3244 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3245 else
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3246 q = NULL;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3247 if (cmd == NULL)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3248 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3249 cmd = "???";
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3250 cmdsize = 3;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3251 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3252 /* 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
3253 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
3254 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
3255 Vlocale_coding_system, 0);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3256 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
3257
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3258 if (q)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3259 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3260 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
3261 p = q + 2;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3262 /* 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
3263 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
3264 &c, &ppid, &pgrp, &sess, &tty, &tpgid,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3265 &minflt, &cminflt, &majflt, &cmajflt,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3266 &utime, &stime, &cutime, &cstime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3267 &priority, &nice, &thcount, &start, &vsize, &rss);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3268 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3269 char state_str[2];
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3270
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3271 state_str[0] = c;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3272 state_str[1] = '\0';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3273 tem = build_string (state_str);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3274 attrs = Fcons (Fcons (Qstate, tem), attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3275 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3276 /* 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
3277 ppid_eint = ppid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3278 pgrp_eint = pgrp;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3279 sess_eint = sess;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3280 tpgid_eint = tpgid;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3281 thcount_eint = thcount;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3282 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
3283 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
3284 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
3285 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
3286 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
3287 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
3288 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
3289 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
3290 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
3291 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
3292 if (clocks_per_sec < 0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3293 clocks_per_sec = 100;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3294 attrs = Fcons (Fcons (Qutime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3295 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
3296 attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3297 attrs = Fcons (Fcons (Qstime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3298 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
3299 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
3300 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
3301 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
3302 attrs);
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3303 attrs = Fcons (Fcons (Qcutime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3304 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
3305 attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3306 attrs = Fcons (Fcons (Qcstime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3307 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
3308 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
3309 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
3310 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
3311 attrs);
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3312 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
3313 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
3314 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
3315 EMACS_GET_TIME (tnow);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3316 get_up_time (&sec, &usec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3317 EMACS_SET_SECS (telapsed, sec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3318 EMACS_SET_USECS (telapsed, usec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3319 EMACS_SUB_TIME (tboot, tnow, telapsed);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3320 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
3321 EMACS_SET_SECS (tstart, sec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3322 EMACS_SET_USECS (tstart, usec);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3323 EMACS_ADD_TIME (tstart, tboot, tstart);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3324 attrs = Fcons (Fcons (Qstart,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3325 list3 (make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3326 ((EMACS_SECS (tstart) >> 16) & 0xffff),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3327 make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3328 (EMACS_SECS (tstart) & 0xffff),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3329 make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3330 (EMACS_USECS (tstart)))),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3331 attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3332 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
3333 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
3334 EMACS_SUB_TIME (telapsed, tnow, tstart);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3335 attrs = Fcons (Fcons (Qetime,
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3336 list3 (make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3337 ((EMACS_SECS (telapsed) >> 16) & 0xffff),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3338 make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3339 (EMACS_SECS (telapsed) & 0xffff),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3340 make_number
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3341 (EMACS_USECS (telapsed)))),
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3342 attrs);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3343 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
3344 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
3345 if (pcpu > 1.0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3346 pcpu = 1.0;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3347 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
3348 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
3349 if (pmem > 100)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3350 pmem = 100;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3351 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
3352 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3353 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3354 if (fd >= 0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3355 emacs_close (fd);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3356
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3357 /* args */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3358 strcpy (procfn_end, "/cmdline");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3359 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
3360 if (fd >= 0)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3361 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3362 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
3363 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3364 if (isspace (c) || c == '\\')
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3365 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
3366 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3367 if (cmdline_size)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3368 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3369 cmdline = xmalloc (cmdline_size + 1);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3370 lseek (fd, 0L, SEEK_SET);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3371 cmdline[0] = '\0';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3372 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
3373 cmdline[nread++] = '\0';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3374 else
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3375 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3376 /* 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
3377 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
3378 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
3379 lines. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3380 nread = 0;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3381 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3382 /* 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
3383 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
3384 nread--;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3385 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
3386 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3387 /* Escape-quote whitespace and backslashes. */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3388 if (isspace (*p) || *p == '\\')
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3389 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3390 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
3391 nread++;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3392 *p++ = '\\';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3393 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3394 else if (*p == '\0')
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3395 *p = ' ';
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3396 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3397 cmdline_size = nread;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3398 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3399 if (!cmdline_size)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3400 {
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3401 if (!cmd)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3402 cmd = "???";
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3403 if (!cmdsize)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3404 cmdsize = strlen (cmd);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3405 cmdline_size = cmdsize + 2;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3406 cmdline = xmalloc (cmdline_size + 1);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3407 strcpy (cmdline, "[");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3408 strcat (strncat (cmdline, cmd, cmdsize), "]");
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3409 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3410 emacs_close (fd);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3411 /* 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
3412 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
3413 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
3414 Vlocale_coding_system, 0);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3415 xfree (cmdline);
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3416 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
3417 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3418
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3419 UNGCPRO;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3420 return attrs;
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3421 }
100595
04f1da2d6ad5 Add commentary about WINDOWSNT implementation of list_system_processes and
Eli Zaretskii <eliz@gnu.org>
parents: 100575
diff changeset
3422
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3423 #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
3424
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3425 /* 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
3426 __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
3427 #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
3428 #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
3429 #undef _FILE_OFFSET_BITS
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3430 #else
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3431 #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
3432 #endif
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3433
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3434 #include <procfs.h>
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3435
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3436 #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
3437 #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
3438 #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
3439
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3440 Lisp_Object
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3441 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
3442 {
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3443 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
3444 struct stat st;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3445 struct passwd *pw;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3446 struct group *gr;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3447 char *procfn_end;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3448 struct psinfo pinfo;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3449 int fd;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3450 ssize_t nread;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3451 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
3452 Lisp_Object attrs = Qnil;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3453 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
3454 struct gcpro gcpro1, gcpro2;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3455 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
3456
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3457 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
3458 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
3459 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
3460 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
3461 return attrs;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3462
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3463 GCPRO2 (attrs, decoded_cmd);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3464
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3465 /* euid egid */
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3466 uid = st.st_uid;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3467 /* 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
3468 uid_eint = uid;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3469 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
3470 BLOCK_INPUT;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3471 pw = getpwuid (uid);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3472 UNBLOCK_INPUT;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3473 if (pw)
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3474 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
3475
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3476 gid = st.st_gid;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3477 gid_eint = gid;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3478 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
3479 BLOCK_INPUT;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3480 gr = getgrgid (gid);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3481 UNBLOCK_INPUT;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3482 if (gr)
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3483 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
3484
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3485 strcpy (fn, procfn);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3486 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
3487 strcpy (procfn_end, "/psinfo");
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3488 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
3489 if (fd >= 0
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3490 && (nread = read (fd, (char*)&pinfo, sizeof(struct psinfo)) > 0))
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3491 {
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3492 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
3493 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
3494 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
3495
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3496 {
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3497 char state_str[2];
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3498 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
3499 state_str[1] = '\0';
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3500 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
3501 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
3502 }
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3503
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3504 /* 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
3505 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
3506
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3507 /* FIXME: missing: Qtpgid */
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3508
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3509 /* FIXME: missing:
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3510 Qminflt
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3511 Qmajflt
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3512 Qcminflt
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3513 Qcmajflt
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3514
100838
5deb9f2f65ae (system_process_attributes): Provide Qtime and Qctime
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100830
diff changeset
3515 Qutime
5deb9f2f65ae (system_process_attributes): Provide Qtime and Qctime
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100830
diff changeset
3516 Qcutime
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3517 Qstime
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3518 Qcstime
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3519 Are they available? */
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3520
100838
5deb9f2f65ae (system_process_attributes): Provide Qtime and Qctime
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100830
diff changeset
3521 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
3522 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
3523 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
3524 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
3525 attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3526
100838
5deb9f2f65ae (system_process_attributes): Provide Qtime and Qctime
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100830
diff changeset
3527 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
3528 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
3529 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
3530 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
3531 attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3532
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3533 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
3534 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
3535 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
3536
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3537 attrs = Fcons (Fcons (Qstart,
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3538 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
3539 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
3540 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
3541 attrs);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3542 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
3543 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
3544
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3545 /* 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
3546 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
3547 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
3548
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3549 decoded_cmd
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3550 = 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
3551 strlen (pinfo.pr_fname)),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3552 Vlocale_coding_system, 0);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3553 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
3554 decoded_cmd
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3555 = 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
3556 strlen (pinfo.pr_psargs)),
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3557 Vlocale_coding_system, 0);
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3558 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
3559 }
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3560
100575
a6c184e576ae (system_process_attributes): Close fd when done.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100574
diff changeset
3561 if (fd >= 0)
a6c184e576ae (system_process_attributes): Close fd when done.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100574
diff changeset
3562 emacs_close (fd);
a6c184e576ae (system_process_attributes): Close fd when done.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100574
diff changeset
3563
100567
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3564 UNGCPRO;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3565 return attrs;
387ca5b2d869 * sysdep.c (system_process_attributes): Add implementation for Solaris.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100566
diff changeset
3566 }
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3567
103711
531520bb5152 * sysdep.c (sys_suspend): Remove USG_JOBCTRL #ifdef, unused.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 103558
diff changeset
3568 /* 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
3569 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
3570 #elif !defined (WINDOWSNT) && !defined (MSDOS)
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3571
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3572 Lisp_Object
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3573 system_process_attributes (Lisp_Object pid)
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3574 {
100572
7d5b97314a0a * sysdep.c (system_process_attributes): Fix typo.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 100567
diff changeset
3575 return Qnil;
100565
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3576 }
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3577
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3578 #endif /* !defined (WINDOWSNT) */
dcc7f5970d5c Reorganize implementation of Flist_system_processes and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 98548
diff changeset
3579
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32236
diff changeset
3580
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51572
diff changeset
3581 /* arch-tag: edb43589-4e09-4544-b325-978b5b121dcf
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51572
diff changeset
3582 (do not change this comment) */