annotate src/sysdep.c @ 109623:7b98612e8827

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