annotate src/sysdep.c @ 45079:bf76420e3297

(occur-mode-map): Bind "q" to `delete-window'. (occur-1): If one of the buffers we're searching is the *Occur* buffer itself, handle it by creating a temporary buffer. If any of the buffers being searched are killed, note that in the search result message. Also, set local variables before we possibly kill the buffer.
author Colin Walters <walters@gnu.org>
date Thu, 02 May 2002 21:22:47 +0000
parents 01b93e5e53a7
children 863817d7e734
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.
35078
5b3800ddebf0 Update copyright.
Gerd Moellmann <gerd@gnu.org>
parents: 35077
diff changeset
2 Copyright (C) 1985, 86,87,88,93,94,95, 1999, 2000, 2001
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
3 Free Software Foundation, Inc.
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5 This file is part of GNU Emacs.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 GNU Emacs is free software; you can redistribute it and/or modify
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 it under the terms of the GNU General Public License as published by
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
9 the Free Software Foundation; either version 2, or (at your option)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 any later version.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 GNU Emacs is distributed in the hope that it will be useful,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 GNU General Public License for more details.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 13943
diff changeset
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 13943
diff changeset
20 Boston, MA 02111-1307, USA. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
42469
64341c22fb4c Include <config.h>.
Pavel Janík <Pavel@Janik.cz>
parents: 41969
diff changeset
22 #ifdef HAVE_CONFIG_H
64341c22fb4c Include <config.h>.
Pavel Janík <Pavel@Janik.cz>
parents: 41969
diff changeset
23 #include <config.h>
64341c22fb4c Include <config.h>.
Pavel Janík <Pavel@Janik.cz>
parents: 41969
diff changeset
24 #endif
64341c22fb4c Include <config.h>.
Pavel Janík <Pavel@Janik.cz>
parents: 41969
diff changeset
25
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #include <signal.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 #include <setjmp.h>
29387
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
28 #ifdef HAVE_UNISTD_H
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
29 #include <unistd.h>
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
30 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31 #include "lisp.h"
35055
daf01616a3e7 (random, srandom): Declare explicitly.
Dave Love <fx@gnu.org>
parents: 33718
diff changeset
32 /* Including stdlib.h isn't necessarily enough to get srandom
daf01616a3e7 (random, srandom): Declare explicitly.
Dave Love <fx@gnu.org>
parents: 33718
diff changeset
33 declared, e.g. without __USE_XOPEN_EXTENDED with glibc 2. */
daf01616a3e7 (random, srandom): Declare explicitly.
Dave Love <fx@gnu.org>
parents: 33718
diff changeset
34 #ifdef HAVE_RANDOM
35189
249d8611d11f (random): Revert the declaration.
Dave Love <fx@gnu.org>
parents: 35078
diff changeset
35 #if 0 /* It turns out that defining _OSF_SOURCE in osf5-0.h gets
249d8611d11f (random): Revert the declaration.
Dave Love <fx@gnu.org>
parents: 35078
diff changeset
36 random prototyped as returning `int'. It looks to me as
249d8611d11f (random): Revert the declaration.
Dave Love <fx@gnu.org>
parents: 35078
diff changeset
37 though the best way to DTRT is to prefer the rand48 functions
249d8611d11f (random): Revert the declaration.
Dave Love <fx@gnu.org>
parents: 35078
diff changeset
38 (per libc.info). -- fx */
35055
daf01616a3e7 (random, srandom): Declare explicitly.
Dave Love <fx@gnu.org>
parents: 33718
diff changeset
39 extern long int random P_ ((void));
35189
249d8611d11f (random): Revert the declaration.
Dave Love <fx@gnu.org>
parents: 35078
diff changeset
40 #endif
35077
ef98c2544bee Don't prototype srandom; it takes an unsigned argument
Gerd Moellmann <gerd@gnu.org>
parents: 35055
diff changeset
41 #if 0 /* Don't prototype srandom; it takes an unsigned argument on
ef98c2544bee Don't prototype srandom; it takes an unsigned argument
Gerd Moellmann <gerd@gnu.org>
parents: 35055
diff changeset
42 some systems, and an unsigned long on others, like FreeBSD
ef98c2544bee Don't prototype srandom; it takes an unsigned argument
Gerd Moellmann <gerd@gnu.org>
parents: 35055
diff changeset
43 4.1. */
35055
daf01616a3e7 (random, srandom): Declare explicitly.
Dave Love <fx@gnu.org>
parents: 33718
diff changeset
44 extern void srandom P_ ((unsigned int));
daf01616a3e7 (random, srandom): Declare explicitly.
Dave Love <fx@gnu.org>
parents: 33718
diff changeset
45 #endif
35077
ef98c2544bee Don't prototype srandom; it takes an unsigned argument
Gerd Moellmann <gerd@gnu.org>
parents: 35055
diff changeset
46 #endif
35055
daf01616a3e7 (random, srandom): Declare explicitly.
Dave Love <fx@gnu.org>
parents: 33718
diff changeset
47
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
48 #include "blockinput.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 #undef NULL
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents: 44099
diff changeset
51 #ifdef MAC_OS8
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32236
diff changeset
52 /* It is essential to include stdlib.h so that this file picks up
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32236
diff changeset
53 the correct definitions of rand, srand, and RAND_MAX.
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32236
diff changeset
54 Otherwise random numbers will not work correctly. */
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32236
diff changeset
55 #include <stdlib.h>
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32236
diff changeset
56
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
57 #ifndef subprocesses
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
58 /* Nonzero means delete a process right away if it exits (process.c). */
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
59 static int delete_exited_processes;
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
60 #endif
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents: 44099
diff changeset
61 #endif /* MAC_OS8 */
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
62
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
63 #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
64 #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
65 #define write sys_write
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
66 #include <windows.h>
31101
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
67 #ifndef NULL
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
68 #define NULL 0
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
69 #endif
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
70 #endif /* not WINDOWSNT */
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
71
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
72 /* Does anyone other than VMS need this? */
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
73 #ifndef fwrite
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
74 #define sys_fwrite fwrite
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
75 #else
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
76 #undef fwrite
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
77 #endif
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
78
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 #include <stdio.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 #include <sys/types.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 #include <sys/stat.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 #include <errno.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83
11624
5c151211d571 [HAVE_UNISTD_H]: Include unistd.h.
Richard M. Stallman <rms@gnu.org>
parents: 11391
diff changeset
84 /* Get _POSIX_VDISABLE, if it is available. */
5c151211d571 [HAVE_UNISTD_H]: Include unistd.h.
Richard M. Stallman <rms@gnu.org>
parents: 11391
diff changeset
85 #ifdef HAVE_UNISTD_H
5c151211d571 [HAVE_UNISTD_H]: Include unistd.h.
Richard M. Stallman <rms@gnu.org>
parents: 11391
diff changeset
86 #include <unistd.h>
5c151211d571 [HAVE_UNISTD_H]: Include unistd.h.
Richard M. Stallman <rms@gnu.org>
parents: 11391
diff changeset
87 #endif
5c151211d571 [HAVE_UNISTD_H]: Include unistd.h.
Richard M. Stallman <rms@gnu.org>
parents: 11391
diff changeset
88
29387
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
89 #ifdef HAVE_STDLIB_H
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
90 #include <stdlib.h>
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
91 #endif
2ead157165c4 Conditionally include stdlib.h, unistd.h.
Dave Love <fx@gnu.org>
parents: 29252
diff changeset
92
29125
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
93 #ifdef HAVE_SETPGID
29150
0398ec3316c5 (setpgrp): Don't define if USG and BSD_PGRPS are not defined.
Gerd Moellmann <gerd@gnu.org>
parents: 29125
diff changeset
94 #if !defined (USG) || defined (BSD_PGRPS)
29911
02b0c6c15f1c Undefine setpgrp before setting it.
Dave Love <fx@gnu.org>
parents: 29812
diff changeset
95 #undef setpgrp
29125
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
96 #define setpgrp setpgid
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
97 #endif
29150
0398ec3316c5 (setpgrp): Don't define if USG and BSD_PGRPS are not defined.
Gerd Moellmann <gerd@gnu.org>
parents: 29125
diff changeset
98 #endif
29125
63520d6017fb (setpgrp) [HAVE_SETPGID]: Define as setpgid.
Gerd Moellmann <gerd@gnu.org>
parents: 29033
diff changeset
99
16003
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
100 /* 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
101 #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
102 #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
103 #endif
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
104
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
105 #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
106 #include <dos.h>
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
107 #include "dosfns.h"
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
108 #include "msdos.h"
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
109 #include <sys/param.h>
14971
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
110
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
111 #if __DJGPP__ > 1
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
112 extern int etext;
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
113 extern unsigned start __asm__ ("start");
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
114 #endif
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
115 #endif
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
116
31101
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
117 #ifndef USE_CRT_DLL
25453
61fb4dde8684 Include <stdlib.h> if available. Declare errno only if it is not a macro.
Andreas Schwab <schwab@suse.de>
parents: 25431
diff changeset
118 #ifndef errno
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 extern int errno;
25453
61fb4dde8684 Include <stdlib.h> if available. Declare errno only if it is not a macro.
Andreas Schwab <schwab@suse.de>
parents: 25431
diff changeset
120 #endif
31101
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
121 #endif
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
122
5533
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
123 #ifdef VMS
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
124 #include <rms.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
125 #include <ttdef.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
126 #include <tt2def.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
127 #include <iodef.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
128 #include <ssdef.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
129 #include <descrip.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
130 #include <fibdef.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
131 #include <atrdef.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
132 #include <ctype.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
133 #include <string.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
134 #ifdef __GNUC__
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
135 #include <sys/file.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
136 #else
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
137 #include <file.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
138 #endif
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
139 #undef F_SETFL
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
140 #ifndef RAB$C_BID
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
141 #include <rab.h>
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
142 #endif
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
143 #define MAXIOSIZE (32 * PAGESIZE) /* Don't I/O more than 32 blocks at a time */
5533
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
144 #endif /* VMS */
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
145
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
146 #ifndef BSD4_1
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
147 #ifdef BSD_SYSTEM /* avoid writing defined (BSD_SYSTEM) || defined (USG)
5533
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
148 because the vms compiler doesn't grok `defined' */
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
149 #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
150 #endif
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
151 #ifdef USG
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
152 #ifndef USG5
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
153 #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
154 #endif
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
155 #endif
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
156 #endif /* not 4.1 bsd */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
158 #ifndef MSDOS
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 #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
160 #endif
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
161
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
162 #include "systty.h"
4640
1ae92cbb80ba Include syswait.h.
Richard M. Stallman <rms@gnu.org>
parents: 4438
diff changeset
163 #include "syswait.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 #ifdef BROKEN_TIOCGWINSZ
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 #undef TIOCGWINSZ
7559
c786925f32a5 [BROKEN_TIOCGWINSZ]: Undef TIOCSWINSZ too.
Richard M. Stallman <rms@gnu.org>
parents: 7482
diff changeset
167 #undef TIOCSWINSZ
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
170 #if defined (USG) || defined (DGUX)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 #include <sys/utsname.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 #ifndef MEMORY_IN_STRING_H
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 #include <memory.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 #endif
7326
f6e5ef4a73e3 Test ISC4_0 along with TIOCGWINSZ.
Richard M. Stallman <rms@gnu.org>
parents: 6895
diff changeset
175 #if defined (TIOCGWINSZ) || defined (ISC4_0)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 #ifdef NEED_SIOCTL
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 #include <sys/sioctl.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 #ifdef NEED_PTEM_H
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 #include <sys/stream.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 #include <sys/ptem.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 #endif
7326
f6e5ef4a73e3 Test ISC4_0 along with TIOCGWINSZ.
Richard M. Stallman <rms@gnu.org>
parents: 6895
diff changeset
183 #endif /* TIOCGWINSZ or ISC4_0 */
20288
3ef6fba94e13 Treat DGUX the same as USG.
Karl Heuer <kwzh@gnu.org>
parents: 20202
diff changeset
184 #endif /* USG or DGUX */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 extern int quit_char;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187
31101
1a4f15527382 Include keyboard.h before frame.h.
Andrew Innes <andrewi@gnu.org>
parents: 30611
diff changeset
188 #include "keyboard.h"
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
189 #include "frame.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 #include "window.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 #include "termhooks.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 #include "termchar.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 #include "termopts.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 #include "dispextern.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 #include "process.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
197 #ifdef WINDOWSNT
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
198 #include <direct.h>
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
199 /* 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
200 #define _P_WAIT 0
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
201 int _CRTAPI1 _spawnlp (int, const char *, const char *, ...);
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
202 int _CRTAPI1 _getpid (void);
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
203 #endif
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
204
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 #ifdef NONSYSTEM_DIR_LIBRARY
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 #include "ndir.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 #endif /* NONSYSTEM_DIR_LIBRARY */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
209 #include "syssignal.h"
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
210 #include "systime.h"
9239
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
211 #ifdef HAVE_UTIME_H
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
212 #include <utime.h>
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
213 #endif
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
214
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
215 #ifndef HAVE_UTIMES
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
216 #ifndef HAVE_STRUCT_UTIMBUF
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
217 /* 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
218 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
219 struct utimbuf {
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
220 long actime;
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
221 long modtime;
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
222 };
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
223 #endif
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
224 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225
4952
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
226 /* 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
227 #ifndef LPASS8
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
228 #define LPASS8 0
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
229 #endif
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
230
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
231 #ifdef BSD4_1
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
232 #define LNOFLSH 0100000
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
233 #endif
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
234
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 static int baud_convert[] =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 #ifdef BAUD_CONVERT
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 BAUD_CONVERT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
240 0, 50, 75, 110, 135, 150, 200, 300, 600, 1200,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 1800, 2400, 4800, 9600, 19200, 38400
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 };
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244
29252
c8f4d06938b9 (ospeed) [HAVE_SPEED_T]: Declare as `extern speed_t'.
Gerd Moellmann <gerd@gnu.org>
parents: 29150
diff changeset
245 #ifdef HAVE_SPEED_T
c8f4d06938b9 (ospeed) [HAVE_SPEED_T]: Declare as `extern speed_t'.
Gerd Moellmann <gerd@gnu.org>
parents: 29150
diff changeset
246 #include <termios.h>
c8f4d06938b9 (ospeed) [HAVE_SPEED_T]: Declare as `extern speed_t'.
Gerd Moellmann <gerd@gnu.org>
parents: 29150
diff changeset
247 #else
19023
f7a3c16c49cb [HAVE_LIBNCURSES]: Declare ospeed as short, unless NCURSES_OSPEED_T.
Richard M. Stallman <rms@gnu.org>
parents: 18808
diff changeset
248 #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
249 #else
41969
e669966d496e Test GNU_LINUX, not LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 41275
diff changeset
250 #if defined (HAVE_TERMIOS_H) && defined (GNU_LINUX)
18808
a431fbda7f23 Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18660
diff changeset
251 #include <termios.h>
16117
16c866efd8b5 [HAVE_TERMIOS_H]: Include termios.h.
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
252 #endif
19023
f7a3c16c49cb [HAVE_LIBNCURSES]: Declare ospeed as short, unless NCURSES_OSPEED_T.
Richard M. Stallman <rms@gnu.org>
parents: 18808
diff changeset
253 #endif
29252
c8f4d06938b9 (ospeed) [HAVE_SPEED_T]: Declare as `extern speed_t'.
Gerd Moellmann <gerd@gnu.org>
parents: 29150
diff changeset
254 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
255
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
256 int emacs_ospeed;
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
257
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
258 /* The file descriptor for Emacs's input terminal.
9651
3c2685c4e09d (input_fd): No longer static.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
259 Under Unix, this is normally zero except when using X;
3c2685c4e09d (input_fd): No longer static.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
260 under VMS, we place the input channel number here. */
3c2685c4e09d (input_fd): No longer static.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
261 int input_fd;
21769
07999a47f2ee (croak): Add forward declaration.
Richard M. Stallman <rms@gnu.org>
parents: 21532
diff changeset
262
07999a47f2ee (croak): Add forward declaration.
Richard M. Stallman <rms@gnu.org>
parents: 21532
diff changeset
263 void croak P_ ((char *));
07999a47f2ee (croak): Add forward declaration.
Richard M. Stallman <rms@gnu.org>
parents: 21532
diff changeset
264
22825
a5d08eacb02b [AIXHFT] (hft_init, hft_reset): Add declarations.
Richard M. Stallman <rms@gnu.org>
parents: 22336
diff changeset
265 #ifdef AIXHFT
a5d08eacb02b [AIXHFT] (hft_init, hft_reset): Add declarations.
Richard M. Stallman <rms@gnu.org>
parents: 22336
diff changeset
266 void hft_init ();
a5d08eacb02b [AIXHFT] (hft_init, hft_reset): Add declarations.
Richard M. Stallman <rms@gnu.org>
parents: 22336
diff changeset
267 void hft_reset ();
a5d08eacb02b [AIXHFT] (hft_init, hft_reset): Add declarations.
Richard M. Stallman <rms@gnu.org>
parents: 22336
diff changeset
268 #endif
21769
07999a47f2ee (croak): Add forward declaration.
Richard M. Stallman <rms@gnu.org>
parents: 21532
diff changeset
269
29812
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
270 /* Temporary used by `sigblock' when defined in terms of signprocmask. */
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
271
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
272 SIGMASKTYPE sigprocmask_set;
e4f28eb9a373 (sigprocmask_set): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 29387
diff changeset
273
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
274
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
275 /* Specify a different file descriptor for further input operations. */
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
276
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
277 void
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
278 change_input_fd (fd)
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
279 int fd;
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
280 {
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
281 input_fd = fd;
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
282 }
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
283
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
284 /* Discard pending input on descriptor input_fd. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
285
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
286 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 discard_tty_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 {
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
289 #ifndef WINDOWSNT
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
290 struct emacs_tty buf;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
292 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
293 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
294
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
295 /* Discarding input is not safe when the input could contain
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
296 replies from the X server. So don't do it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
297 if (read_socket_hook)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
298 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
301 end_kbd_input ();
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
302 SYS$QIOW (0, input_fd, IO$_READVBLK|IO$M_PURGE, input_iosb, 0, 0,
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
303 &buf.main, 0, 0, terminator_mask, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 queue_kbd_input ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305 #else /* not VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306 #ifdef APOLLO
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
307 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
308 int zero = 0;
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
309 ioctl (input_fd, TIOCFLUSH, &zero);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 #else /* not Apollo */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
312 #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
313 while (dos_keyread () != -1)
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
314 ;
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
315 #else /* not MSDOS */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
316 EMACS_GET_TTY (input_fd, &buf);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
317 EMACS_SET_TTY (input_fd, &buf, 0);
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
318 #endif /* not MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 #endif /* not Apollo */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
320 #endif /* not VMS */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
321 #endif /* not WINDOWSNT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
322 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
323
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
324 #ifdef SIGTSTP
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
326 /* Arrange for character C to be read as the next input from
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
327 the terminal. */
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
328
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
329 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 stuff_char (c)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 char c;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 {
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
333 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
334 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
335
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
336 /* Should perhaps error if in batch mode */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337 #ifdef TIOCSTI
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
338 ioctl (input_fd, TIOCSTI, &c);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 #else /* no TIOCSTI */
5167
6ac5c999a7cc (init_baud_rate): Avoid referring to sg uninitialized.
Richard M. Stallman <rms@gnu.org>
parents: 5158
diff changeset
340 error ("Cannot stuff terminal input characters in this version of Unix");
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
341 #endif /* no TIOCSTI */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 #endif /* SIGTSTP */
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
345
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
346 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
347 init_baud_rate ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
349 if (noninteractive)
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
350 emacs_ospeed = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
351 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
352 {
18095
3cfea0947d1c (init_baud_rate): Use INIT_BAUD_RATE if it's defined.
Richard M. Stallman <rms@gnu.org>
parents: 17869
diff changeset
353 #ifdef INIT_BAUD_RATE
3cfea0947d1c (init_baud_rate): Use INIT_BAUD_RATE if it's defined.
Richard M. Stallman <rms@gnu.org>
parents: 17869
diff changeset
354 INIT_BAUD_RATE ();
3cfea0947d1c (init_baud_rate): Use INIT_BAUD_RATE if it's defined.
Richard M. Stallman <rms@gnu.org>
parents: 17869
diff changeset
355 #else
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
356 #ifdef DOS_NT
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
357 emacs_ospeed = 15;
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
358 #else /* not DOS_NT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
359 #ifdef VMS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
360 struct sensemode sg;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
361
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
362 SYS$QIOW (0, input_fd, IO$_SENSEMODE, &sg, 0, 0,
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
363 &sg.class, 12, 0, 0, 0, 0 );
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
364 emacs_ospeed = sg.xmit_baud;
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
365 #else /* not VMS */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
366 #ifdef HAVE_TERMIOS
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
367 struct termios sg;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
368
5167
6ac5c999a7cc (init_baud_rate): Avoid referring to sg uninitialized.
Richard M. Stallman <rms@gnu.org>
parents: 5158
diff changeset
369 sg.c_cflag = B9600;
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
370 tcgetattr (input_fd, &sg);
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
371 emacs_ospeed = cfgetospeed (&sg);
8696
10ec51f5e4b0 (init_baud_rate): Test that getobaud is actually defined.
Richard M. Stallman <rms@gnu.org>
parents: 8690
diff changeset
372 #if defined (USE_GETOBAUD) && defined (getobaud)
8690
83a8062ca215 (init_baud_rate) [USE_GETOBAUD]: Use getobaud.
Richard M. Stallman <rms@gnu.org>
parents: 8368
diff changeset
373 /* m88k-motorola-sysv3 needs this (ghazi@noc.rutgers.edu) 9/1/94. */
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
374 if (emacs_ospeed == 0)
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
375 emacs_ospeed = getobaud (sg.c_cflag);
8690
83a8062ca215 (init_baud_rate) [USE_GETOBAUD]: Use getobaud.
Richard M. Stallman <rms@gnu.org>
parents: 8368
diff changeset
376 #endif
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
377 #else /* neither VMS nor TERMIOS */
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
378 #ifdef HAVE_TERMIO
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
379 struct termio sg;
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
380
5167
6ac5c999a7cc (init_baud_rate): Avoid referring to sg uninitialized.
Richard M. Stallman <rms@gnu.org>
parents: 5158
diff changeset
381 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
382 #ifdef HAVE_TCATTR
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
383 tcgetattr (input_fd, &sg);
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
384 #else
2121
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
385 ioctl (input_fd, TCGETA, &sg);
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
386 #endif
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
387 emacs_ospeed = sg.c_cflag & CBAUD;
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
388 #else /* neither VMS nor TERMIOS nor TERMIO */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
389 struct sgttyb sg;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
390
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
391 sg.sg_ospeed = B9600;
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
392 if (ioctl (input_fd, TIOCGETP, &sg) < 0)
3559
a9b886b3f976 (init_baud_rate) [HAVE_TERMIOS]: Use cfgetospeed.
Richard M. Stallman <rms@gnu.org>
parents: 3472
diff changeset
393 abort ();
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
394 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
395 #endif /* not HAVE_TERMIO */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
396 #endif /* not HAVE_TERMIOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 #endif /* not VMS */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
398 #endif /* not DOS_NT */
18095
3cfea0947d1c (init_baud_rate): Use INIT_BAUD_RATE if it's defined.
Richard M. Stallman <rms@gnu.org>
parents: 17869
diff changeset
399 #endif /* not INIT_BAUD_RATE */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401
33617
a9247e019ab7 (emacs_ospeed): New variable.
Gerd Moellmann <gerd@gnu.org>
parents: 33217
diff changeset
402 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
403 ? baud_convert[emacs_ospeed] : 9600);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 if (baud_rate == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 baud_rate = 1200;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 /*ARGSUSED*/
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
409 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410 set_exclusive_use (fd)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 int fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 #ifdef FIOCLEX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
414 ioctl (fd, FIOCLEX, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 /* Ok to do nothing if this feature does not exist */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 }
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
418
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419 #ifndef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421 wait_without_blocking ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422 {
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
423 #ifdef BSD_SYSTEM
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 wait3 (0, WNOHANG | WUNTRACED, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 croak ("wait_without_blocking");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428 synch_process_alive = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431 #endif /* not subprocesses */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
433 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
434 (at least for bsd). */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
436 SIGTYPE
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
437 wait_for_termination_signal ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
438 {}
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
439
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
440 /* Wait for subprocess with process id `pid' to terminate and
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
441 make sure it will get eliminated (not remain forever as a zombie) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
442
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
443 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
444 wait_for_termination (pid)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
445 int pid;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
446 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
447 while (1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
448 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
449 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
450 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
451 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
452
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
453 status = SYS$FORCEX (&pid, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
454 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
455 #else /* not VMS */
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
456 #if defined (BSD_SYSTEM) || (defined (HPUX) && !defined (HPUX_5))
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
457 /* 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
458 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
459 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
460 /* 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
461 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
462 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
463 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
464 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
465 if (0 > kill (pid, 0))
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
466 {
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
467 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
468 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
469 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
470 }
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
471 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
472 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
473 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
474 sigpause (SIGEMPTYMASK);
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
475 #else /* not BSD_SYSTEM, and not HPUX version >= 6 */
3334
7900edb84c4f (wait_for_termination): Delete LINUX conditionals.
Richard M. Stallman <rms@gnu.org>
parents: 3321
diff changeset
476 #if defined (UNIPLUS)
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
477 if (0 > kill (pid, 0))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478 break;
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
479 wait (0);
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
480 #else /* neither BSD_SYSTEM nor UNIPLUS: random sysV */
41969
e669966d496e Test GNU_LINUX, not LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 41275
diff changeset
481 #ifdef POSIX_SIGNALS /* would this work for GNU/Linux as well? */
3301
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
482 sigblock (sigmask (SIGCHLD));
39374
54dd36cef0e2 (wait_for_termination) [POSIX_SIGNALS]: Terminate
Gerd Moellmann <gerd@gnu.org>
parents: 39363
diff changeset
483 errno = 0;
54dd36cef0e2 (wait_for_termination) [POSIX_SIGNALS]: Terminate
Gerd Moellmann <gerd@gnu.org>
parents: 39363
diff changeset
484 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
485 {
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
486 sigunblock (sigmask (SIGCHLD));
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
487 break;
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
488 }
39363
50bf161d854c (wait_for_termination): Add a FIXME comment for the use of non-POSIX
Gerd Moellmann <gerd@gnu.org>
parents: 37219
diff changeset
489
44099
0400b67840ba (wait_for_termination): Use sigsuspend rather than sigpause.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43713
diff changeset
490 sigsuspend (&empty_mask);
3301
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
491 #else /* not POSIX_SIGNALS */
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
492 #ifdef HAVE_SYSV_SIGPAUSE
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
493 sighold (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
494 if (0 > kill (pid, 0))
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
495 {
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
496 sigrelse (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
497 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
498 }
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
499 sigpause (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
500 #else /* not HAVE_SYSV_SIGPAUSE */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
501 #ifdef WINDOWSNT
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
502 wait (0);
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
503 break;
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
504 #else /* not WINDOWSNT */
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
505 if (0 > kill (pid, 0))
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
506 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
507 /* Using sleep instead of pause avoids timing error.
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
508 If the inferior dies just before the sleep,
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
509 we lose just one second. */
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
510 sleep (1);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
511 #endif /* not WINDOWSNT */
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
512 #endif /* not HAVE_SYSV_SIGPAUSE */
3301
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
513 #endif /* not POSIX_SIGNALS */
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
514 #endif /* not UNIPLUS */
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
515 #endif /* not BSD_SYSTEM, and not HPUX version >= 6 */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516 #endif /* not VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 #else /* not subprocesses */
14971
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
518 #if __DJGPP__ > 1
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
519 break;
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
520 #else /* not __DJGPP__ > 1 */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
521 #ifndef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 if (kill (pid, 0) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 wait (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525 #else /* BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
526 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 status = wait (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 if (status == pid || status == -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530 #endif /* BSD4_1 */
14971
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
531 #endif /* not __DJGPP__ > 1*/
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
532 #endif /* not subprocesses */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
533 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
535
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
536 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
537
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
538 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539 * flush any pending output
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
540 * (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
541 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
542
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
543 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544 flush_pending_output (channel)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
545 int channel;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
546 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
547 #ifdef HAVE_TERMIOS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
548 /* If we try this, we get hit with SIGTTIN, because
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
549 the child's tty belongs to the child's pgrp. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 #ifdef TCFLSH
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
552 ioctl (channel, TCFLSH, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
553 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
554 #ifdef TIOCFLUSH
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
555 int zero = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
556 /* 3rd arg should be ignored
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
557 but some 4.2 kernels actually want the address of an int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
558 and nonzero means something different. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
559 ioctl (channel, TIOCFLUSH, &zero);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
560 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
561 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
562 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
563 }
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
564
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
565 #ifndef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
566 /* Set up the terminal at the other end of a pseudo-terminal that
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
567 we will be controlling an inferior through.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
568 It should not echo or do line-editing, since that is done
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
569 in Emacs. No padding needed for insertion into an Emacs buffer. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
570
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
571 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
572 child_setup_tty (out)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
573 int out;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
574 {
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
575 #ifndef DOS_NT
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
576 struct emacs_tty s;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
577
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
578 EMACS_GET_TTY (out, &s);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
579
1927
c6dc1a37aeb4 * sysdep.c (child_setup_tty): Recognize HAVE_TERMIOS as well as
Jim Blandy <jimb@redhat.com>
parents: 1596
diff changeset
580 #if defined (HAVE_TERMIO) || defined (HAVE_TERMIOS)
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
581 s.main.c_oflag |= OPOST; /* Enable output postprocessing */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
582 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
583 #ifdef NLDLY
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
584 s.main.c_oflag &= ~(NLDLY|CRDLY|TABDLY|BSDLY|VTDLY|FFDLY);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
585 /* No output delays */
5967
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
586 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
587 s.main.c_lflag &= ~ECHO; /* Disable echo */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
588 s.main.c_lflag |= ISIG; /* Enable signals */
41275
1886c6a31a52 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 41163
diff changeset
589 #if 0 /* This causes bugs in (for instance) telnet to certain sites. */
39685
39ebccb06546 (child_setup_tty) [HAVE_TERMIO || HAVE_TERMIOS]:
Gerd Moellmann <gerd@gnu.org>
parents: 39682
diff changeset
590 s.main.c_iflag &= ~ICRNL; /* Disable map of CR to NL on input */
39ebccb06546 (child_setup_tty) [HAVE_TERMIO || HAVE_TERMIOS]:
Gerd Moellmann <gerd@gnu.org>
parents: 39682
diff changeset
591 #ifdef INLCR /* Just being cautious, since I can't check how
39ebccb06546 (child_setup_tty) [HAVE_TERMIO || HAVE_TERMIOS]:
Gerd Moellmann <gerd@gnu.org>
parents: 39682
diff changeset
592 widespread INLCR is--rms. */
39ebccb06546 (child_setup_tty) [HAVE_TERMIO || HAVE_TERMIOS]:
Gerd Moellmann <gerd@gnu.org>
parents: 39682
diff changeset
593 s.main.c_iflag &= ~INLCR; /* Disable map of NL to CR on input */
39ebccb06546 (child_setup_tty) [HAVE_TERMIO || HAVE_TERMIOS]:
Gerd Moellmann <gerd@gnu.org>
parents: 39682
diff changeset
594 #endif
40932
103ddc9d157a (child_setup_tty): Don't clear ICRNL or INLCR.
Richard M. Stallman <rms@gnu.org>
parents: 40122
diff changeset
595 #endif
5967
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
596 #ifdef IUCLC
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
597 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
598 #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
599 #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
600 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
601 #endif
5972
ccb0f99750e3 (child_setup_tty): Typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 5967
diff changeset
602 #ifdef OLCUC
5967
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
603 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
604 #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
605 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
606 s.main.c_cflag = (s.main.c_cflag & ~CSIZE) | CS8; /* Don't strip 8th bit */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
607 #if 0
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
608 /* Said to be unnecessary: */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
609 s.main.c_cc[VMIN] = 1; /* minimum number of characters to accept */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
610 s.main.c_cc[VTIME] = 0; /* wait forever for at least 1 character */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
611 #endif
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
612
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
613 s.main.c_lflag |= ICANON; /* Enable erase/kill and eof processing */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
614 s.main.c_cc[VEOF] = 04; /* insure that EOF is Control-D */
10108
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
615 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
616 s.main.c_cc[VKILL] = CDISABLE; /* disable kill processing */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
617
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
618 #ifdef HPUX
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
619 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
620 #endif /* HPUX */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
621
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
622 #ifdef AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
623 /* AIX enhanced edit loses NULs, so disable it */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
624 #ifndef IBMR2AIX
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
625 s.main.c_line = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
626 s.main.c_iflag &= ~ASCEDIT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
627 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
628 /* Also, PTY overloads NUL and BREAK.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
629 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
630 s.main.c_iflag &= ~IGNBRK;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
631 s.main.c_iflag &= ~BRKINT;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
632 /* QUIT and INTR work better as signals, so disable character forms */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
633 s.main.c_cc[VINTR] = 0377;
3321
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
634 #ifdef SIGNALS_VIA_CHARACTERS
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
635 /* the QUIT and INTR character are used in process_send_signal
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
636 so set them here to something useful. */
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
637 if (s.main.c_cc[VQUIT] == 0377)
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
638 s.main.c_cc[VQUIT] = '\\'&037; /* Control-\ */
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
639 if (s.main.c_cc[VINTR] == 0377)
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
640 s.main.c_cc[VINTR] = 'C'&037; /* Control-C */
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
641 #else /* no TIOCGPGRP or no TIOCGLTC or no TIOCGETC */
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
642 /* QUIT and INTR work better as signals, so disable character forms */
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
643 s.main.c_cc[VQUIT] = 0377;
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
644 s.main.c_cc[VINTR] = 0377;
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
645 s.main.c_lflag &= ~ISIG;
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
646 #endif /* no TIOCGPGRP or no TIOCGLTC or no TIOCGETC */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
647 s.main.c_cc[VEOL] = 0377;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
648 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
649 #endif /* AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
650
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 #else /* not HAVE_TERMIO */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
652
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
653 s.main.sg_flags &= ~(ECHO | CRMOD | ANYP | ALLDELAY | RAW | LCASE
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
654 | CBREAK | TANDEM);
4952
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
655 s.main.sg_flags |= LPASS8;
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
656 s.main.sg_erase = 0377;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
657 s.main.sg_kill = 0377;
4916
83db42883f64 (child_setup_tty): Make the pty handle 8-bit characters.
Richard M. Stallman <rms@gnu.org>
parents: 4772
diff changeset
658 s.lmode = LLITOUT | s.lmode; /* Don't strip 8th bit */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
659
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660 #endif /* not HAVE_TERMIO */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
662 EMACS_SET_TTY (out, &s, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
663
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
664 #ifdef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
665 if (interrupt_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
666 reset_sigio ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
667 #endif /* BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
668 #ifdef RTU
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
669 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
670 int zero = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
671 ioctl (out, FIOASYNC, &zero);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
672 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
673 #endif /* RTU */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
674 #endif /* not DOS_NT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
675 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
676 #endif /* not VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
677
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
678 #endif /* subprocesses */
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
679
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
680 /* Record a signal code and the handler for it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
681 struct save_signal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
682 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
683 int code;
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
684 SIGTYPE (*handler) P_ ((int));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
685 };
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
686
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
687 static void save_signal_handlers P_ ((struct save_signal *));
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
688 static void restore_signal_handlers P_ ((struct save_signal *));
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
689
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
690 /* Suspend the Emacs process; give terminal to its superior. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
691
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
692 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
693 sys_suspend ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
694 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
695 #ifdef VMS
1171
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
696 /* "Foster" parentage allows emacs to return to a subprocess that attached
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
697 to the current emacs as a cheaper than starting a whole new process. This
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
698 is set up by KEPTEDITOR.COM. */
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
699 unsigned long parent_id, foster_parent_id;
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
700 char *fpid_string;
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
701
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
702 fpid_string = getenv ("EMACS_PARENT_PID");
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
703 if (fpid_string != NULL)
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
704 {
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
705 sscanf (fpid_string, "%x", &foster_parent_id);
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
706 if (foster_parent_id != 0)
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
707 parent_id = foster_parent_id;
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
708 else
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
709 parent_id = getppid ();
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
710 }
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
711 else
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
712 parent_id = getppid ();
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
713
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
714 xfree (fpid_string); /* On VMS, this was malloc'd */
1171
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
715
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
716 if (parent_id && parent_id != 0xffffffff)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
718 SIGTYPE (*oldsig)() = (int) signal (SIGINT, SIG_IGN);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 int status = LIB$ATTACH (&parent_id) & 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720 signal (SIGINT, oldsig);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
721 return status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
724 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
725 struct {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
726 int l;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
727 char *a;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
728 } d_prompt;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
729 d_prompt.l = sizeof ("Emacs: "); /* Our special prompt */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
730 d_prompt.a = "Emacs: "; /* Just a reminder */
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
731 LIB$SPAWN (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, &d_prompt, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
732 return 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
733 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
734 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
735 #else
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
736 #if defined (SIGTSTP) && !defined (MSDOS)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
737
3826
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
738 {
4958
8d58e388e71b (sys_suspend): Use EMACS_GETPGRP macro.
Richard M. Stallman <rms@gnu.org>
parents: 4952
diff changeset
739 int pgrp = EMACS_GETPGRP (0);
3826
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
740 EMACS_KILLPG (pgrp, SIGTSTP);
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
741 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
743 #else /* No SIGTSTP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
744 #ifdef USG_JOBCTRL /* If you don't know what this is don't mess with it */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
745 ptrace (0, 0, 0, 0); /* set for ptrace - caught by csh */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746 kill (getpid (), SIGQUIT);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748 #else /* No SIGTSTP or USG_JOBCTRL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 /* On a system where suspending is not implemented,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751 instead fork a subshell and let it talk directly to the terminal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 while we wait. */
6102
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
753 sys_subshell ();
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
754
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
755 #endif /* no USG_JOBCTRL */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
756 #endif /* no SIGTSTP */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
757 #endif /* not VMS */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
758 }
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
759
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
760 /* Fork a subshell. */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
761
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents: 44099
diff changeset
762 #ifndef MAC_OS8
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
763 void
6102
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
764 sys_subshell ()
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
765 {
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
766 #ifndef VMS
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
767 #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
768 int st;
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
769 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
770 #endif
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
771 int pid;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
772 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
773 Lisp_Object dir;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
774 unsigned char *str = 0;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
775 int len;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
776
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
777 saved_handlers[0].code = SIGINT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
778 saved_handlers[1].code = SIGQUIT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
779 saved_handlers[2].code = SIGTERM;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
780 #ifdef SIGIO
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
781 saved_handlers[3].code = SIGIO;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
782 saved_handlers[4].code = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 saved_handlers[3].code = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
785 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
786
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
787 /* 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
788 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
789
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
790 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
791 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
792 goto xyzzy;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
793 dir = Fsymbol_value (dir);
9110
c0eefdfd11f4 (sys_subshell): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9082
diff changeset
794 if (!STRINGP (dir))
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
795 goto xyzzy;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
796
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
797 dir = expand_and_dir_to_file (Funhandled_file_name_directory (dir), Qnil);
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
798 str = (unsigned char *) alloca (XSTRING (dir)->size + 2);
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
799 len = XSTRING (dir)->size;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
800 bcopy (XSTRING (dir)->data, str, len);
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
801 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
802 str[len] = 0;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
803 xyzzy:
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
804
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
805 #ifdef DOS_NT
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
806 pid = 0;
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
807 #if __DJGPP__ > 1
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
808 save_signal_handlers (saved_handlers);
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
809 synch_process_alive = 1;
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
810 #endif /* __DJGPP__ > 1 */
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
811 #else
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
812 pid = vfork ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
813 if (pid == -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
814 error ("Can't spawn subshell");
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
815 #endif
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
816
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
817 if (pid == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
818 {
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
819 char *sh = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
820
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
821 #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
822 getwd (oldwd);
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
823 if (sh == 0)
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
824 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
825 #endif
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
826 if (sh == 0)
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
827 sh = (char *) egetenv ("SHELL");
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
828 if (sh == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
829 sh = "sh";
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
830
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
831 /* 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
832 if (str)
22336
0af99a2dc706 (sys_subshell): Cast arg to chdir.
Karl Heuer <kwzh@gnu.org>
parents: 21843
diff changeset
833 chdir ((char *) str);
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
834
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
836 close_process_descs (); /* Close Emacs's pipes/ptys */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
837 #endif
1203
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
838
7482
8193d122cf6e (sys_subshell): PRIO_PROCESS renamed to SET_EMACS_PRIORITY.
Richard M. Stallman <rms@gnu.org>
parents: 7326
diff changeset
839 #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
840 {
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
841 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
842
7482
8193d122cf6e (sys_subshell): PRIO_PROCESS renamed to SET_EMACS_PRIORITY.
Richard M. Stallman <rms@gnu.org>
parents: 7326
diff changeset
843 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
844 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
845 }
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
846 #endif
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
847
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
848 #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
849 {
43708
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
850 char *epwd = getenv ("PWD");
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
851 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
852
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
853 /* 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
854 if (epwd)
43706
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
855 {
43708
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
856 strcpy (old_pwd, epwd);
43706
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
857 if (str[len - 1] == '/')
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
858 str[len - 1] = '\0';
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
859 setenv ("PWD", str, 1);
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
860 }
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
861 st = system (sh);
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
862 chdir (oldwd);
43708
8d176857311d (sys_subshell): Fix last change.
Eli Zaretskii <eliz@gnu.org>
parents: 43706
diff changeset
863 if (epwd)
43706
009de2eaf047 (sys_subshell) [MSDOS]: If PWD is set in the
Eli Zaretskii <eliz@gnu.org>
parents: 43177
diff changeset
864 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
865 }
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
866 #if 0 /* This is also reported if last command executed in subshell failed, KFS */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
867 if (st)
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
868 report_file_error ("Can't execute subshell", Fcons (build_string (sh), Qnil));
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
869 #endif
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
870 #else /* not MSDOS */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
871 #ifdef WINDOWSNT
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
872 /* Waits for process completion */
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
873 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
874 chdir (oldwd);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
875 if (pid == -1)
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
876 write (1, "Can't execute subshell", 22);
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
877 #else /* not WINDOWSNT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
878 execlp (sh, sh, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
879 write (1, "Can't execute subshell", 22);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
880 _exit (1);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
881 #endif /* not WINDOWSNT */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
882 #endif /* not MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
883 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
884
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
885 /* Do this now if we did not do it before. */
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
886 #if !defined (MSDOS) || __DJGPP__ == 1
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
887 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
888 synch_process_alive = 1;
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
889 #endif
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
890
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
891 #ifndef DOS_NT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
892 wait_for_termination (pid);
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
893 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894 restore_signal_handlers (saved_handlers);
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
895 synch_process_alive = 0;
6102
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
896 #endif /* !VMS */
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32236
diff changeset
897 }
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents: 44099
diff changeset
898 #endif /* !MAC_OS8 */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
900 static void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
901 save_signal_handlers (saved_handlers)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
902 struct save_signal *saved_handlers;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
903 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
904 while (saved_handlers->code)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
905 {
692
681c352bbf30 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 648
diff changeset
906 saved_handlers->handler
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
907 = (SIGTYPE (*) P_ ((int))) signal (saved_handlers->code, SIG_IGN);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
908 saved_handlers++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
909 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
911
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
912 static void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913 restore_signal_handlers (saved_handlers)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
914 struct save_signal *saved_handlers;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
915 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
916 while (saved_handlers->code)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
917 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
918 signal (saved_handlers->code, saved_handlers->handler);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
919 saved_handlers++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
920 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
921 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
922
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
923 #ifdef F_SETFL
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
924
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
925 int old_fcntl_flags;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
926
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
927 void
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
928 init_sigio (fd)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
929 int fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
930 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
931 #ifdef FASYNC
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
932 old_fcntl_flags = fcntl (fd, F_GETFL, 0) & ~FASYNC;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
933 fcntl (fd, F_SETFL, old_fcntl_flags | FASYNC);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
934 #endif
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
935 interrupts_deferred = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
936 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
937
20379
e6db4b8d2834 (reset_sigio): Return void.
Andreas Schwab <schwab@suse.de>
parents: 20367
diff changeset
938 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
939 reset_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
940 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
941 unrequest_sigio ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
942 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
943
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
944 #ifdef FASYNC /* F_SETFL does not imply existence of FASYNC */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
945
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
946 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
947 request_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
948 {
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
949 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
950 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
951
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
952 #ifdef SIGWINCH
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
953 sigunblock (sigmask (SIGWINCH));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
954 #endif
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
955 fcntl (input_fd, F_SETFL, old_fcntl_flags | FASYNC);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
956
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
957 interrupts_deferred = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
958 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
959
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
960 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
961 unrequest_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
962 {
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
963 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
964 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
965
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
966 #ifdef SIGWINCH
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
967 sigblock (sigmask (SIGWINCH));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
968 #endif
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
969 fcntl (input_fd, F_SETFL, old_fcntl_flags);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
970 interrupts_deferred = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
971 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
972
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
973 #else /* no FASYNC */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
974 #ifdef STRIDE /* Stride doesn't have FASYNC - use FIOASYNC */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
975
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
976 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
977 request_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
978 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
979 int on = 1;
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
980
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
981 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
982 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
983
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
984 ioctl (input_fd, FIOASYNC, &on);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
985 interrupts_deferred = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
986 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
987
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
988 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
989 unrequest_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
990 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
991 int off = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
992
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
993 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
994 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
995
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
996 ioctl (input_fd, FIOASYNC, &off);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
997 interrupts_deferred = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
998 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
999
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1000 #else /* not FASYNC, not STRIDE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1001
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1002 #ifdef _CX_UX
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1003
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1004 #include <termios.h>
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1005
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1006 void
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1007 request_sigio ()
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1008 {
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1009 int on = 1;
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1010 sigset_t st;
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1011
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1012 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1013 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1014
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
1015 sigemptyset (&st);
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
1016 sigaddset (&st, SIGIO);
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1017 ioctl (input_fd, FIOASYNC, &on);
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1018 interrupts_deferred = 0;
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
1019 sigprocmask (SIG_UNBLOCK, &st, (sigset_t *)0);
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1020 }
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1021
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1022 void
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1023 unrequest_sigio ()
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1024 {
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1025 int off = 0;
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1026
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1027 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1028 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1029
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1030 ioctl (input_fd, FIOASYNC, &off);
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1031 interrupts_deferred = 1;
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1032 }
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1033
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1034 #else /* ! _CX_UX */
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1035
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1036 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1037 request_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1038 {
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1039 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1040 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1041
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1042 croak ("request_sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1043 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1044
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1045 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1046 unrequest_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1047 {
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1048 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1049 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1050
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1051 croak ("unrequest_sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1052 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1053
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1054 #endif /* _CX_UX */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1055 #endif /* STRIDE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1056 #endif /* FASYNC */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1057 #endif /* F_SETFL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1058
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1059 /* Saving and restoring the process group of Emacs's terminal. */
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1060
5964
1b850ec1a5e2 (init_sys_modes, reset_sys_modes): Test BSD_PGRPS.
Richard M. Stallman <rms@gnu.org>
parents: 5960
diff changeset
1061 #ifdef BSD_PGRPS
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1062
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1063 /* The process group of which Emacs was a member when it initially
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1064 started.
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1065
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1066 If Emacs was in its own process group (i.e. inherited_pgroup ==
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1067 getpid ()), then we know we're running under a shell with job
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1068 control (Emacs would never be run as part of a pipeline).
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1069 Everything is fine.
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1070
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1071 If Emacs was not in its own process group, then we know we're
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1072 running under a shell (or a caller) that doesn't know how to
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1073 separate itself from Emacs (like sh). Emacs must be in its own
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1074 process group in order to receive SIGIO correctly. In this
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1075 situation, we put ourselves in our own pgroup, forcibly set the
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1076 tty's pgroup to our pgroup, and make sure to restore and reinstate
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1077 the tty's pgroup just like any other terminal setting. If
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1078 inherited_group was not the tty's pgroup, then we'll get a
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1079 SIGTTmumble when we try to change the tty's pgroup, and a CONT if
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1080 it goes foreground in the future, which is what should happen. */
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1081 int inherited_pgroup;
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1082
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1083 /* Split off the foreground process group to Emacs alone.
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1084 When we are in the foreground, but not started in our own process
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1085 group, redirect the TTY to point to our own process group. We need
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1086 to be in our own process group to receive SIGIO properly. */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1087 void
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1088 narrow_foreground_group ()
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1089 {
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1090 int me = getpid ();
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1091
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1092 setpgrp (0, inherited_pgroup);
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1093 if (inherited_pgroup != me)
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1094 EMACS_SET_TTY_PGRP (input_fd, &me);
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1095 setpgrp (0, me);
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1096 }
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1097
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1098 /* Set the tty to our original foreground group. */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1099 void
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1100 widen_foreground_group ()
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1101 {
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1102 if (inherited_pgroup != getpid ())
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1103 EMACS_SET_TTY_PGRP (input_fd, &inherited_pgroup);
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1104 setpgrp (0, inherited_pgroup);
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1105 }
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1106
5964
1b850ec1a5e2 (init_sys_modes, reset_sys_modes): Test BSD_PGRPS.
Richard M. Stallman <rms@gnu.org>
parents: 5960
diff changeset
1107 #endif /* BSD_PGRPS */
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1108
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1109 /* 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
1110
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1111 /* 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
1112 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
1113 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
1114 int
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1115 emacs_get_tty (fd, settings)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1116 int fd;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1117 struct emacs_tty *settings;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1118 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1119 /* 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
1120 #ifdef HAVE_TCATTR
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1121 /* We have those nifty POSIX tcmumbleattr functions. */
21843
600f19764b68 (emacs_get_tty): Zero out termios structure before
Andreas Schwab <schwab@suse.de>
parents: 21769
diff changeset
1122 bzero (&settings->main, sizeof (settings->main));
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1123 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
1124 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1125
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1126 #else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1127 #ifdef HAVE_TERMIO
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1128 /* 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
1129 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
1130 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1131
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1132 #else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1133 #ifdef VMS
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1134 /* Vehemently Monstrous System? :-) */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1135 if (! (SYS$QIOW (0, fd, IO$_SENSEMODE, settings, 0, 0,
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1136 &settings->main.class, 12, 0, 0, 0, 0)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1137 & 1))
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1138 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1139
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1140 #else
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1141 #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
1142 /* 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
1143 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
1144 return -1;
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1145 #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
1146 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1147 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1148 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1149
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1150 /* 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
1151 #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
1152 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
1153 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1154 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1155
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1156 /* 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
1157 #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
1158 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
1159 || 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
1160 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1161 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1162
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1163 /* 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
1164 return 0;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1165 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1166
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1167
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1168 /* 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
1169 *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
1170 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
1171
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1172 int
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
1173 emacs_set_tty (fd, settings, flushp)
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1174 int fd;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1175 struct emacs_tty *settings;
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
1176 int flushp;
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1177 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1178 /* 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
1179 #ifdef HAVE_TCATTR
3321
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1180 int i;
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1181 /* 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
1182 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
1183 "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
1184 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
1185 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
1186 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
1187 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
1188 /* 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
1189 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
1190 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
1191 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1192 if (errno == EINTR)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1193 continue;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1194 else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1195 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1196 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1197 else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1198 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1199 struct termios new;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1200
21843
600f19764b68 (emacs_get_tty): Zero out termios structure before
Andreas Schwab <schwab@suse.de>
parents: 21769
diff changeset
1201 bzero (&new, sizeof (new));
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1202 /* 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
1203 tcgetattr (fd, &new);
3321
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1204 /* 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
1205 * 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
1206 * not be filled in.
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1207 */
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1208 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
1209 && 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
1210 && 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
1211 && 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
1212 && 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
1213 break;
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1214 else
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1215 continue;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1216 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1217
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1218 #else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1219 #ifdef HAVE_TERMIO
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1220 /* The SYSV-style interface? */
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
1221 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
1222 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1223
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1224 #else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1225 #ifdef VMS
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1226 /* Vehemently Monstrous System? :-) */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1227 if (! (SYS$QIOW (0, fd, IO$_SETMODE, &input_iosb, 0, 0,
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1228 &settings->main.class, 12, 0, 0, 0, 0)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1229 & 1))
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1230 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1231
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1232 #else
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1233 #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
1234 /* 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
1235 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
1236 return -1;
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1237 #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
1238
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1239 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1240 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1241 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1242
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1243 /* 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
1244 #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
1245 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
1246 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1247 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1248
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1249 /* 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
1250 #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
1251 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
1252 || 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
1253 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1254 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1255
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1256 /* 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
1257 return 0;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1258 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1259
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1260
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1261 /* The initial tty mode bits */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1262 struct emacs_tty old_tty;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1263
12070
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1264 /* 1 if we have been through init_sys_modes. */
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1265 int term_initted;
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1266
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1267 /* 1 if outer tty status has been recorded. */
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1268 int old_tty_valid;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1269
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1270 #ifdef BSD4_1
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1271 /* BSD 4.1 needs to keep track of the lmode bits in order to start
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1272 sigio. */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1273 int lmode;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1274 #endif
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1275
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1276 #ifndef F_SETOWN_BUG
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1277 #ifdef F_SETOWN
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1278 int old_fcntl_owner;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1279 #endif /* F_SETOWN */
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1280 #endif /* F_SETOWN_BUG */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1281
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1282 /* This may also be defined in stdio,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1283 but if so, this does no harm,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1284 and using the same name avoids wasting the other one's space. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1285
23631
c4c37f5b8df6 [nec_ews_svr4]: Extern *_sobuf.
Kenichi Handa <handa@m17n.org>
parents: 22825
diff changeset
1286 #ifdef nec_ews_svr4
c4c37f5b8df6 [nec_ews_svr4]: Extern *_sobuf.
Kenichi Handa <handa@m17n.org>
parents: 22825
diff changeset
1287 extern char *_sobuf ;
c4c37f5b8df6 [nec_ews_svr4]: Extern *_sobuf.
Kenichi Handa <handa@m17n.org>
parents: 22825
diff changeset
1288 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1289 #if defined (USG) || defined (DGUX)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1290 unsigned char _sobuf[BUFSIZ+8];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1291 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1292 char _sobuf[BUFSIZ];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1293 #endif
23631
c4c37f5b8df6 [nec_ews_svr4]: Extern *_sobuf.
Kenichi Handa <handa@m17n.org>
parents: 22825
diff changeset
1294 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1295
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1296 #ifdef HAVE_LTCHARS
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1297 static struct ltchars new_ltchars = {-1,-1,-1,-1,-1,-1};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1298 #endif
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1299 #ifdef HAVE_TCHARS
17869
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
1300 static struct tchars new_tchars = {-1,-1,-1,-1,-1,-1};
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1301 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1302
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1303 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1304 init_sys_modes ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1305 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1306 struct emacs_tty tty;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1307
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents: 44099
diff changeset
1308 #ifdef MAC_OS8
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32236
diff changeset
1309 /* cus-start.el complains if delete-exited-processes is not defined */
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
1310 #ifndef subprocesses
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
1311 DEFVAR_BOOL ("delete-exited-processes", &delete_exited_processes,
40122
4a487543a226 (delete-exited-processes): Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39685
diff changeset
1312 doc: /* *Non-nil means delete processes immediately when they exit.
4a487543a226 (delete-exited-processes): Change doc-string comments to `new style' [w/`doc:' keyword].
Pavel Janík <Pavel@Janik.cz>
parents: 39685
diff changeset
1313 nil means don't delete them until `list-processes' is run. */);
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
1314 delete_exited_processes = 0;
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
1315 #endif
44890
01b93e5e53a7 Patch for building Emacs on Mac OS X. April 26, 2002. See ChangeLog,
Andrew Choi <akochoi@shaw.ca>
parents: 44099
diff changeset
1316 #endif /* MAC_OS8 */
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
1317
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1318 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1319 #if 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1320 static int oob_chars[2] = {0, 1 << 7}; /* catch C-g's */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1321 extern int (*interrupt_signal) ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1322 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1323 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1324
17869
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
1325 Vtty_erase_char = Qnil;
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
1326
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1327 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1328 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1329
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1330 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1331 if (!input_ef)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1332 input_ef = get_kbd_event_flag ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1333 /* LIB$GET_EF (&input_ef); */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1334 SYS$CLREF (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1335 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1336 if (!timer_ef)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1337 timer_ef = get_timer_event_flag ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1338 /* LIB$GET_EF (&timer_ef); */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1339 SYS$CLREF (timer_ef);
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
1340 #if 0
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341 if (!process_ef)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1342 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1343 LIB$GET_EF (&process_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1344 SYS$CLREF (process_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1345 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1346 if (input_ef / 32 != process_ef / 32)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1347 croak ("Input and process event flags in different clusters.");
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
1348 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1349 if (input_ef / 32 != timer_ef / 32)
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
1350 croak ("Input and timer event flags in different clusters.");
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
1351 #if 0
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1352 input_eflist = ((unsigned) 1 << (input_ef % 32)) |
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1353 ((unsigned) 1 << (process_ef % 32));
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
1354 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1355 timer_eflist = ((unsigned) 1 << (input_ef % 32)) |
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1356 ((unsigned) 1 << (timer_ef % 32));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1357 #ifndef VMS4_4
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1358 sys_access_reinit ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1359 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1360 #endif /* not VMS */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1361
5964
1b850ec1a5e2 (init_sys_modes, reset_sys_modes): Test BSD_PGRPS.
Richard M. Stallman <rms@gnu.org>
parents: 5960
diff changeset
1362 #ifdef BSD_PGRPS
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1363 if (! read_socket_hook && EQ (Vwindow_system, Qnil))
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1364 narrow_foreground_group ();
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1365 #endif
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1366
13416
58e22ceabff4 [HAVE_NTGUI] (init_sys_modes, reset_sys_modes):
Geoff Voelker <voelker@cs.washington.edu>
parents: 13174
diff changeset
1367 #ifdef HAVE_WINDOW_SYSTEM
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1368 /* Emacs' window system on MSDOG uses the `internal terminal' and therefore
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1369 needs the initialization code below. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1370 if (!read_socket_hook && EQ (Vwindow_system, Qnil))
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1371 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1372 {
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1373 EMACS_GET_TTY (input_fd, &old_tty);
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1374
12070
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1375 old_tty_valid = 1;
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1376
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1377 tty = old_tty;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1378
1927
c6dc1a37aeb4 * sysdep.c (child_setup_tty): Recognize HAVE_TERMIOS as well as
Jim Blandy <jimb@redhat.com>
parents: 1596
diff changeset
1379 #if defined (HAVE_TERMIO) || defined (HAVE_TERMIOS)
18613
614b916ff5bf Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents: 18604
diff changeset
1380 XSETINT (Vtty_erase_char, old_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
1381
8104
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1382 #ifdef DGUX
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1383 /* This allows meta to be sent on 8th bit. */
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1384 tty.main.c_iflag &= ~INPCK; /* don't check input for parity */
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1385 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1386 tty.main.c_iflag |= (IGNBRK); /* Ignore break condition */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1387 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
1388 #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
1389 since I can't check how widespread INLCR is--rms. */
70553c545976 (init_sys_modes): Clear INLCR like ICRNL.
Richard M. Stallman <rms@gnu.org>
parents: 14390
diff changeset
1390 tty.main.c_iflag &= ~INLCR; /* Disable map of NL to CR on input */
70553c545976 (init_sys_modes): Clear INLCR like ICRNL.
Richard M. Stallman <rms@gnu.org>
parents: 14390
diff changeset
1391 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1392 #ifdef ISTRIP
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1393 tty.main.c_iflag &= ~ISTRIP; /* don't strip 8th bit on input */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1394 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1395 tty.main.c_lflag &= ~ECHO; /* Disable echo */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1396 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
1397 #ifdef IEXTEN
5960
ce4b18e394a2 (init_sys_modes): IEXTEN is in c_lflag, not c_iflag.
Richard M. Stallman <rms@gnu.org>
parents: 5954
diff changeset
1398 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
1399 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1400 tty.main.c_lflag |= ISIG; /* Enable signals */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1401 if (flow_control)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1402 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1403 tty.main.c_iflag |= IXON; /* Enable start/stop output control */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1404 #ifdef IXANY
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1405 tty.main.c_iflag &= ~IXANY;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1406 #endif /* IXANY */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1407 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1408 else
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1409 tty.main.c_iflag &= ~IXON; /* Disable start/stop output control */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1410 tty.main.c_oflag &= ~ONLCR; /* Disable map of NL to CR-NL
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1411 on output */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1412 tty.main.c_oflag &= ~TAB3; /* Disable tab expansion */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1413 #ifdef CS8
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1414 if (meta_key)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1415 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1416 tty.main.c_cflag |= CS8; /* allow 8th bit on input */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1417 tty.main.c_cflag &= ~PARENB;/* Don't check parity */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1418 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1419 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1420 tty.main.c_cc[VINTR] = quit_char; /* C-g (usually) gives SIGINT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1421 /* Set up C-g for both SIGQUIT and SIGINT.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1422 We don't know which we will get, but we handle both alike
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1423 so which one it really gives us does not matter. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1424 tty.main.c_cc[VQUIT] = quit_char;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1425 tty.main.c_cc[VMIN] = 1; /* Input should wait for at least 1 char */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1426 tty.main.c_cc[VTIME] = 0; /* no matter how long that takes. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1427 #ifdef VSWTCH
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
1428 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
1429 of C-z */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1430 #endif /* VSWTCH */
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1431
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1432 #if defined (mips) || defined (HAVE_TCATTR)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1433 #ifdef VSUSP
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
1434 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
1435 #endif /* VSUSP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1436 #ifdef V_DSUSP
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
1437 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
1438 #endif /* V_DSUSP */
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
1439 #ifdef VDSUSP /* Some systems have VDSUSP, some have V_DSUSP. */
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
1440 tty.main.c_cc[VDSUSP] = CDISABLE;
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
1441 #endif /* VDSUSP */
3472
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1442 #ifdef VLNEXT
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1443 tty.main.c_cc[VLNEXT] = CDISABLE;
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1444 #endif /* VLNEXT */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1445 #ifdef VREPRINT
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1446 tty.main.c_cc[VREPRINT] = CDISABLE;
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1447 #endif /* VREPRINT */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1448 #ifdef VWERASE
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1449 tty.main.c_cc[VWERASE] = CDISABLE;
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1450 #endif /* VWERASE */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1451 #ifdef VDISCARD
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1452 tty.main.c_cc[VDISCARD] = CDISABLE;
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1453 #endif /* VDISCARD */
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1454
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1455 if (flow_control)
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1456 {
8104
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1457 #ifdef VSTART
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1458 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
1459 #endif /* VSTART */
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1460 #ifdef VSTOP
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1461 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
1462 #endif /* VSTOP */
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1463 }
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1464 else
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1465 {
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1466 #ifdef VSTART
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1467 tty.main.c_cc[VSTART] = CDISABLE;
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1468 #endif /* VSTART */
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1469 #ifdef VSTOP
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1470 tty.main.c_cc[VSTOP] = CDISABLE;
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1471 #endif /* VSTOP */
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1472 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1473 #endif /* mips or HAVE_TCATTR */
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1474
10108
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1475 #ifdef SET_LINE_DISCIPLINE
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
1476 /* Need to explicitly request TERMIODISC line discipline or
10108
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1477 Ultrix's termios does not work correctly. */
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1478 tty.main.c_line = SET_LINE_DISCIPLINE;
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1479 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1480 #ifdef AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1481 #ifndef IBMR2AIX
10108
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1482 /* AIX enhanced edit loses NULs, so disable it. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1483 tty.main.c_line = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1484 tty.main.c_iflag &= ~ASCEDIT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1485 #else
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1486 tty.main.c_cc[VSTRT] = 255;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1487 tty.main.c_cc[VSTOP] = 255;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1488 tty.main.c_cc[VSUSP] = 255;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1489 tty.main.c_cc[VDSUSP] = 255;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1490 #endif /* IBMR2AIX */
18232
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1491 if (flow_control)
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1492 {
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1493 #ifdef VSTART
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1494 tty.main.c_cc[VSTART] = '\021';
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1495 #endif /* VSTART */
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1496 #ifdef VSTOP
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1497 tty.main.c_cc[VSTOP] = '\023';
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1498 #endif /* VSTOP */
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1499 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1500 /* Also, PTY overloads NUL and BREAK.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1501 don't ignore break, but don't signal either, so it looks like NUL.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1502 This really serves a purpose only if running in an XTERM window
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1503 or via TELNET or the like, but does no harm elsewhere. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1504 tty.main.c_iflag &= ~IGNBRK;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1505 tty.main.c_iflag &= ~BRKINT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1506 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1507 #else /* if not HAVE_TERMIO */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1508 #ifdef VMS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1509 tty.main.tt_char |= TT$M_NOECHO;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1510 if (meta_key)
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
1511 tty.main.tt_char |= TT$M_EIGHTBIT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1512 if (flow_control)
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1513 tty.main.tt_char |= TT$M_TTSYNC;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1514 else
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1515 tty.main.tt_char &= ~TT$M_TTSYNC;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1516 tty.main.tt2_char |= TT2$M_PASTHRU | TT2$M_XON;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1517 #else /* not VMS (BSD, that is) */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1518 #ifndef DOS_NT
21532
fff5e42d7b2a (init_sys_modes): Fix mixing of Lisp_Object and int
Andreas Schwab <schwab@suse.de>
parents: 21514
diff changeset
1519 XSETINT (Vtty_erase_char, tty.main.sg_erase);
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1520 tty.main.sg_flags &= ~(ECHO | CRMOD | XTABS);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1521 if (meta_key)
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1522 tty.main.sg_flags |= ANYP;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1523 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
1524 #endif /* not DOS_NT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1525 #endif /* not VMS (BSD, that is) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1526 #endif /* not HAVE_TERMIO */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1527
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1528 /* If going to use CBREAK mode, we must request C-g to interrupt
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1529 and turn off start and stop chars, etc. If not going to use
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1530 CBREAK mode, do this anyway so as to turn off local flow
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1531 control for user coming over network on 4.2; in this case,
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1532 only t_stopc and t_startc really matter. */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1533 #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
1534 #ifdef HAVE_TCHARS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1535 /* Note: if not using CBREAK mode, it makes no difference how we
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1536 set this */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1537 tty.tchars = new_tchars;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1538 tty.tchars.t_intrc = quit_char;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1539 if (flow_control)
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1540 {
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1541 tty.tchars.t_startc = '\021';
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1542 tty.tchars.t_stopc = '\023';
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1543 }
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1544
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1545 tty.lmode = LDECCTQ | LLITOUT | LPASS8 | LNOFLSH | old_tty.lmode;
3759
036367460955 * sysdep.c [ultrix] (init_sys_modes): Don't set LLITOUT; it
Jim Blandy <jimb@redhat.com>
parents: 3695
diff changeset
1546 #ifdef ultrix
036367460955 * sysdep.c [ultrix] (init_sys_modes): Don't set LLITOUT; it
Jim Blandy <jimb@redhat.com>
parents: 3695
diff changeset
1547 /* Under Ultrix 4.2a, leaving this out doesn't seem to hurt
036367460955 * sysdep.c [ultrix] (init_sys_modes): Don't set LLITOUT; it
Jim Blandy <jimb@redhat.com>
parents: 3695
diff changeset
1548 anything, and leaving it in breaks the meta key. Go figure. */
036367460955 * sysdep.c [ultrix] (init_sys_modes): Don't set LLITOUT; it
Jim Blandy <jimb@redhat.com>
parents: 3695
diff changeset
1549 tty.lmode &= ~LLITOUT;
036367460955 * sysdep.c [ultrix] (init_sys_modes): Don't set LLITOUT; it
Jim Blandy <jimb@redhat.com>
parents: 3695
diff changeset
1550 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1551
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1552 #ifdef BSD4_1
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1553 lmode = tty.lmode;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1554 #endif
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1555
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1556 #endif /* HAVE_TCHARS */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1557 #endif /* not HAVE_TERMIO */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1558
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1559 #ifdef HAVE_LTCHARS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1560 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
1561 #endif /* HAVE_LTCHARS */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1562 #ifdef MSDOS /* Demacs 1.1.2 91/10/20 Manabu Higashida, MW Aug 1993 */
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1563 if (!term_initted)
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1564 internal_terminal_init ();
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1565 dos_ttraw ();
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1566 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1567
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1568 EMACS_SET_TTY (input_fd, &tty, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1569
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1570 /* This code added to insure that, if flow-control is not to be used,
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1571 we have an unlocked terminal at the start. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1572
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1573 #ifdef TCXONC
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1574 if (!flow_control) ioctl (input_fd, TCXONC, 1);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1575 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1576 #ifndef APOLLO
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1577 #ifdef TIOCSTART
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1578 if (!flow_control) ioctl (input_fd, TIOCSTART, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1579 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1580 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1581
9937
cd2db9aeeb25 (init_sys_modes): Maybe call tcflow.
Richard M. Stallman <rms@gnu.org>
parents: 9794
diff changeset
1582 #if defined (HAVE_TERMIOS) || defined (HPUX9)
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
1583 #ifdef TCOON
9937
cd2db9aeeb25 (init_sys_modes): Maybe call tcflow.
Richard M. Stallman <rms@gnu.org>
parents: 9794
diff changeset
1584 if (!flow_control) tcflow (input_fd, TCOON);
cd2db9aeeb25 (init_sys_modes): Maybe call tcflow.
Richard M. Stallman <rms@gnu.org>
parents: 9794
diff changeset
1585 #endif
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
1586 #endif
9937
cd2db9aeeb25 (init_sys_modes): Maybe call tcflow.
Richard M. Stallman <rms@gnu.org>
parents: 9794
diff changeset
1587
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
1588 #ifdef AIXHFT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1589 hft_init ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1590 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1591 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1592 /* IBM's HFT device usually thinks a ^J should be LF/CR. We need it
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1593 to be only LF. This is the way that is done. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1594 struct termio tty;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1595
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1596 if (ioctl (1, HFTGETID, &tty) != -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1597 write (1, "\033[20l", 5);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1598 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1599 #endif
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
1600 #endif /* AIXHFT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1601
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1602 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1603 /* Appears to do nothing when in PASTHRU mode.
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1604 SYS$QIOW (0, input_fd, IO$_SETMODE|IO$M_OUTBAND, 0, 0, 0,
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1605 interrupt_signal, oob_chars, 0, 0, 0, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1606 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1607 queue_kbd_input (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1608 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1609 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1610
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1611 #ifdef F_SETFL
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1612 #ifndef F_SETOWN_BUG
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
1613 #ifdef F_GETOWN /* F_SETFL does not imply existence of F_GETOWN */
7889
11d254f1f196 (init_sys_modes): Don't set up sigio here if window system.
Richard M. Stallman <rms@gnu.org>
parents: 7878
diff changeset
1614 if (interrupt_input
11d254f1f196 (init_sys_modes): Don't set up sigio here if window system.
Richard M. Stallman <rms@gnu.org>
parents: 7878
diff changeset
1615 && ! read_socket_hook && EQ (Vwindow_system, Qnil))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1616 {
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1617 old_fcntl_owner = fcntl (input_fd, F_GETOWN, 0);
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1618 fcntl (input_fd, F_SETOWN, getpid ());
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1619 init_sigio (input_fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1620 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1621 #endif /* F_GETOWN */
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1622 #endif /* F_SETOWN_BUG */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1623 #endif /* F_SETFL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1624
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1625 #ifdef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1626 if (interrupt_input)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1627 init_sigio (input_fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1628 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1629
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1630 #ifdef VMS /* VMS sometimes has this symbol but lacks setvbuf. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1631 #undef _IOFBF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1632 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1633 #ifdef _IOFBF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1634 /* This symbol is defined on recent USG systems.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1635 Someone says without this call USG won't really buffer the file
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1636 even with a call to setbuf. */
22336
0af99a2dc706 (sys_subshell): Cast arg to chdir.
Karl Heuer <kwzh@gnu.org>
parents: 21843
diff changeset
1637 setvbuf (stdout, (char *) _sobuf, _IOFBF, sizeof _sobuf);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1638 #else
22336
0af99a2dc706 (sys_subshell): Cast arg to chdir.
Karl Heuer <kwzh@gnu.org>
parents: 21843
diff changeset
1639 setbuf (stdout, (char *) _sobuf);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1640 #endif
13416
58e22ceabff4 [HAVE_NTGUI] (init_sys_modes, reset_sys_modes):
Geoff Voelker <voelker@cs.washington.edu>
parents: 13174
diff changeset
1641 #ifdef HAVE_WINDOW_SYSTEM
13174
d9170c4ec837 (init_sys_modes) [!HAVE_X_WINDOWS (MSDOS)]: Always call set_terminal_modes.
Kim F. Storm <storm@cua.dk>
parents: 12988
diff changeset
1642 /* Emacs' window system on MSDOG uses the `internal terminal' and therefore
d9170c4ec837 (init_sys_modes) [!HAVE_X_WINDOWS (MSDOS)]: Always call set_terminal_modes.
Kim F. Storm <storm@cua.dk>
parents: 12988
diff changeset
1643 needs the initialization code below. */
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1644 if (EQ (Vwindow_system, Qnil)
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1645 #ifndef WINDOWSNT
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1646 /* When running in tty mode on NT/Win95, we have a read_socket
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1647 hook, but still need the rest of the initialization code below. */
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1648 && (! read_socket_hook)
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1649 #endif
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1650 )
13174
d9170c4ec837 (init_sys_modes) [!HAVE_X_WINDOWS (MSDOS)]: Always call set_terminal_modes.
Kim F. Storm <storm@cua.dk>
parents: 12988
diff changeset
1651 #endif
7878
546334ab3974 (init_sys_modes): Don't call set_terminal_modes
Richard M. Stallman <rms@gnu.org>
parents: 7559
diff changeset
1652 set_terminal_modes ();
546334ab3974 (init_sys_modes): Don't call set_terminal_modes
Richard M. Stallman <rms@gnu.org>
parents: 7559
diff changeset
1653
25157
1978f057423d (init_sys_modes): Call init_frame_faces for termcap
Eli Zaretskii <eliz@gnu.org>
parents: 23631
diff changeset
1654 if (!term_initted
1978f057423d (init_sys_modes): Call init_frame_faces for termcap
Eli Zaretskii <eliz@gnu.org>
parents: 23631
diff changeset
1655 && FRAMEP (Vterminal_frame)
1978f057423d (init_sys_modes): Call init_frame_faces for termcap
Eli Zaretskii <eliz@gnu.org>
parents: 23631
diff changeset
1656 && FRAME_TERMCAP_P (XFRAME (Vterminal_frame)))
1978f057423d (init_sys_modes): Call init_frame_faces for termcap
Eli Zaretskii <eliz@gnu.org>
parents: 23631
diff changeset
1657 init_frame_faces (XFRAME (Vterminal_frame));
1978f057423d (init_sys_modes): Call init_frame_faces for termcap
Eli Zaretskii <eliz@gnu.org>
parents: 23631
diff changeset
1658
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1659 if (term_initted && no_redraw_on_reenter)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1660 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1661 if (display_completed)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1662 direct_output_forward_char (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1663 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1664 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1665 {
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1666 frame_garbaged = 1;
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1667 if (FRAMEP (Vterminal_frame))
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1668 FRAME_GARBAGED_P (XFRAME (Vterminal_frame)) = 1;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1669 }
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1670
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1671 term_initted = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1672 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1673
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1674 /* Return nonzero if safe to use tabs in output.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1675 At the time this is called, init_sys_modes has not been done yet. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1676
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1677 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1678 tabs_safe_p ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1679 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1680 struct emacs_tty tty;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1681
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1682 EMACS_GET_TTY (input_fd, &tty);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1683 return EMACS_TTY_TABS_OK (&tty);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1684 }
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1685
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1686 /* Get terminal size from system.
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1687 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
1688 We store 0 if there's no valid information. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1689
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1690 void
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1691 get_frame_size (widthp, heightp)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1692 int *widthp, *heightp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1693 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1694
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1695 #ifdef TIOCGWINSZ
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1696
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1697 /* BSD-style. */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1698 struct winsize size;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1699
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1700 if (ioctl (input_fd, TIOCGWINSZ, &size) == -1)
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1701 *widthp = *heightp = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1702 else
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1703 {
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1704 *widthp = size.ws_col;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1705 *heightp = size.ws_row;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1706 }
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1707
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1708 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1709 #ifdef TIOCGSIZE
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1710
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1711 /* SunOS - style. */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1712 struct ttysize size;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1713
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1714 if (ioctl (input_fd, TIOCGSIZE, &size) == -1)
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1715 *widthp = *heightp = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1716 else
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1717 {
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1718 *widthp = size.ts_cols;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1719 *heightp = size.ts_lines;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1720 }
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1721
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1722 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1723 #ifdef VMS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1724
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1725 struct sensemode tty;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1726
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1727 SYS$QIOW (0, input_fd, IO$_SENSEMODE, &tty, 0, 0,
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1728 &tty.class, 12, 0, 0, 0, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1729 *widthp = tty.scr_wid;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1730 *heightp = tty.scr_len;
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1731
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1732 #else
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1733 #ifdef MSDOS
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1734 *widthp = ScreenCols ();
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1735 *heightp = ScreenRows ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1736 #else /* system doesn't know size */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1737 *widthp = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1738 *heightp = 0;
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1739 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1740
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1741 #endif /* not VMS */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1742 #endif /* not SunOS-style */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1743 #endif /* not BSD-style */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1744 }
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1745
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1746 /* 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
1747 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
1748
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1749 int
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1750 set_window_size (fd, height, width)
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1751 int fd, height, width;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1752 {
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1753 #ifdef TIOCSWINSZ
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1754
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1755 /* BSD-style. */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1756 struct winsize size;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1757 size.ws_row = height;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1758 size.ws_col = width;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1759
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1760 if (ioctl (fd, TIOCSWINSZ, &size) == -1)
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1761 return 0; /* error */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1762 else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1763 return 1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1764
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1765 #else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1766 #ifdef TIOCSSIZE
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1767
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1768 /* SunOS - style. */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1769 struct ttysize size;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1770 size.ts_lines = height;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1771 size.ts_cols = width;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1772
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1773 if (ioctl (fd, TIOCGSIZE, &size) == -1)
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1774 return 0;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1775 else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1776 return 1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1777 #else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1778 return -1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1779 #endif /* not SunOS-style */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1780 #endif /* not BSD-style */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1781 }
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1782
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1783
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1784 /* Prepare the terminal for exiting Emacs; move the cursor to the
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1785 bottom of the frame, turn off interrupt-driven I/O, etc. */
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1786 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1787 reset_sys_modes ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1788 {
25674
b0d0bcf1b32e (reset_sys_modes): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 25578
diff changeset
1789 struct frame *sf;
b0d0bcf1b32e (reset_sys_modes): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 25578
diff changeset
1790
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1791 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1792 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1793 fflush (stdout);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1794 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1795 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1796 if (!term_initted)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1797 return;
13416
58e22ceabff4 [HAVE_NTGUI] (init_sys_modes, reset_sys_modes):
Geoff Voelker <voelker@cs.washington.edu>
parents: 13174
diff changeset
1798 #ifdef HAVE_WINDOW_SYSTEM
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1799 /* Emacs' window system on MSDOG uses the `internal terminal' and therefore
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1800 needs the clean-up code below. */
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1801 if (!EQ (Vwindow_system, Qnil)
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1802 #ifndef WINDOWSNT
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1803 /* When running in tty mode on NT/Win95, we have a read_socket
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1804 hook, but still need the rest of the clean-up code below. */
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1805 || read_socket_hook
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1806 #endif
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1807 )
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1808 return;
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1809 #endif
25674
b0d0bcf1b32e (reset_sys_modes): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 25578
diff changeset
1810 sf = SELECTED_FRAME ();
b0d0bcf1b32e (reset_sys_modes): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 25578
diff changeset
1811 cursor_to (FRAME_HEIGHT (sf) - 1, 0);
b0d0bcf1b32e (reset_sys_modes): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 25578
diff changeset
1812 clear_end_of_line (FRAME_WIDTH (sf));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1813 /* clear_end_of_line may move the cursor */
25674
b0d0bcf1b32e (reset_sys_modes): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 25578
diff changeset
1814 cursor_to (FRAME_HEIGHT (sf) - 1, 0);
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
1815 #if defined (IBMR2AIX) && defined (AIXHFT)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1816 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1817 /* HFT devices normally use ^J as a LF/CR. We forced it to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1818 do the LF only. Now, we need to reset it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1819 struct termio tty;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1820
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1821 if (ioctl (1, HFTGETID, &tty) != -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1822 write (1, "\033[20h", 5);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1823 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1824 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1825
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1826 reset_terminal_modes ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1827 fflush (stdout);
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
1828 #ifdef BSD_SYSTEM
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1829 #ifndef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1830 /* Avoid possible loss of output when changing terminal modes. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1831 fsync (fileno (stdout));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1832 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1833 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1834
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1835 #ifdef F_SETFL
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1836 #ifndef F_SETOWN_BUG
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
1837 #ifdef F_SETOWN /* F_SETFL does not imply existence of F_SETOWN */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1838 if (interrupt_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1839 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1840 reset_sigio ();
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1841 fcntl (input_fd, F_SETOWN, old_fcntl_owner);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1842 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1843 #endif /* F_SETOWN */
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1844 #endif /* F_SETOWN_BUG */
6489
6c138b61c8b4 (reset_sys_modes): Turn off O_NDELAY.
Karl Heuer <kwzh@gnu.org>
parents: 6102
diff changeset
1845 #ifdef O_NDELAY
6c138b61c8b4 (reset_sys_modes): Turn off O_NDELAY.
Karl Heuer <kwzh@gnu.org>
parents: 6102
diff changeset
1846 fcntl (input_fd, F_SETFL, fcntl (input_fd, F_GETFL, 0) & ~O_NDELAY);
6c138b61c8b4 (reset_sys_modes): Turn off O_NDELAY.
Karl Heuer <kwzh@gnu.org>
parents: 6102
diff changeset
1847 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1848 #endif /* F_SETFL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1849 #ifdef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1850 if (interrupt_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1851 reset_sigio ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1852 #endif /* BSD4_1 */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1853
12070
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1854 if (old_tty_valid)
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1855 while (EMACS_SET_TTY (input_fd, &old_tty, 0) < 0 && errno == EINTR)
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1856 ;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1857
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1858 #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
1859 dos_ttcooked ();
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1860 #endif
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1861
10108
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1862 #ifdef SET_LINE_DISCIPLINE
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1863 /* Ultrix's termios *ignores* any line discipline except TERMIODISC.
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1864 A different old line discipline is therefore not restored, yet.
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1865 Restore the old line discipline by hand. */
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1866 ioctl (0, TIOCSETD, &old_tty.main.c_line);
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1867 #endif
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1868
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
1869 #ifdef AIXHFT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1870 hft_reset ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1871 #endif
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1872
5964
1b850ec1a5e2 (init_sys_modes, reset_sys_modes): Test BSD_PGRPS.
Richard M. Stallman <rms@gnu.org>
parents: 5960
diff changeset
1873 #ifdef BSD_PGRPS
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1874 widen_foreground_group ();
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1875 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1876 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1877
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1878 #ifdef HAVE_PTYS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1879
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1880 /* Set up the proper status flags for use of a pty. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1881
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1882 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1883 setup_pty (fd)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1884 int fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1885 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1886 /* I'm told that TOICREMOTE does not mean control chars
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1887 "can't be sent" but rather that they don't have
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1888 input-editing or signaling effects.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1889 That should be good, because we have other ways
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1890 to do those things in Emacs.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1891 However, telnet mode seems not to work on 4.2.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1892 So TIOCREMOTE is turned off now. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1893
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1894 /* Under hp-ux, if TIOCREMOTE is turned on, some calls
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1895 will hang. In particular, the "timeout" feature (which
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1896 causes a read to return if there is no data available)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1897 does this. Also it is known that telnet mode will hang
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1898 in such a way that Emacs must be stopped (perhaps this
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1899 is the same problem).
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1900
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1901 If TIOCREMOTE is turned off, then there is a bug in
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1902 hp-ux which sometimes loses data. Apparently the
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1903 code which blocks the master process when the internal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1904 buffer fills up does not work. Other than this,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1905 though, everything else seems to work fine.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1906
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1907 Since the latter lossage is more benign, we may as well
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1908 lose that way. -- cph */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1909 #ifdef FIONBIO
29033
bad1d68a57e3 (setup_pty): Treat case that UNIX98_PTYS is defined
Gerd Moellmann <gerd@gnu.org>
parents: 27933
diff changeset
1910 #if defined(SYSV_PTYS) || defined(UNIX98_PTYS)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1911 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1912 int on = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1913 ioctl (fd, FIONBIO, &on);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1914 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1915 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1916 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1917 #ifdef IBMRTAIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1918 /* On AIX, the parent gets SIGHUP when a pty attached child dies. So, we */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1919 /* ignore SIGHUP once we've started a child on a pty. Note that this may */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1920 /* cause EMACS not to die when it should, i.e., when its own controlling */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1921 /* tty goes away. I've complained to the AIX developers, and they may */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1922 /* change this behavior, but I'm not going to hold my breath. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1923 signal (SIGHUP, SIG_IGN);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1924 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1925 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1926 #endif /* HAVE_PTYS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1927
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1928 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1929
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1930 /* Assigning an input channel is done at the start of Emacs execution.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1931 This is called each time Emacs is resumed, also, but does nothing
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1932 because input_chain is no longer zero. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1933
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1934 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1935 init_vms_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1936 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1937 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1938
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1939 if (input_fd == 0)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1940 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1941 status = SYS$ASSIGN (&input_dsc, &input_fd, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1942 if (! (status & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1943 LIB$STOP (status);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1944 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1945 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1946
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1947 /* Deassigning the input channel is done before exiting. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1948
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1949 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1950 stop_vms_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1951 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1952 return SYS$DASSGN (input_fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1953 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1954
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1955 short input_buffer;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1956
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1957 /* Request reading one character into the keyboard buffer.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1958 This is done as soon as the buffer becomes empty. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1959
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1960 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1961 queue_kbd_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1962 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1963 int status;
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
1964 extern kbd_input_ast ();
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
1965
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1966 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1967 stop_input = 0;
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1968 status = SYS$QIO (0, input_fd, IO$_READVBLK,
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1969 &input_iosb, kbd_input_ast, 1,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1970 &input_buffer, 1, 0, terminator_mask, 0, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1971 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1972
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1973 int input_count;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1974
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1975 /* Ast routine that is called when keyboard input comes in
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1976 in accord with the SYS$QIO above. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1977
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1978 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1979 kbd_input_ast ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1980 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1981 register int c = -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1982 int old_errno = errno;
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
1983 extern EMACS_TIME *input_available_clear_time;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1984
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1985 if (waiting_for_ast)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1986 SYS$SETEF (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1987 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1988 input_count++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1989 #ifdef ASTDEBUG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1990 if (input_count == 25)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1991 exit (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1992 printf ("Ast # %d,", input_count);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1993 printf (" iosb = %x, %x, %x, %x",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1994 input_iosb.offset, input_iosb.status, input_iosb.termlen,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1995 input_iosb.term);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1996 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1997 if (input_iosb.offset)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1998 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1999 c = input_buffer;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2000 #ifdef ASTDEBUG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2001 printf (", char = 0%o", c);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2002 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2003 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2004 #ifdef ASTDEBUG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2005 printf ("\n");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2006 fflush (stdout);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2007 sleep (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2008 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2009 if (! stop_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2010 queue_kbd_input ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2011 if (c >= 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2012 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2013 struct input_event e;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2014 e.kind = ascii_keystroke;
9279
2382e2f3884e (kbd_input_ast, read_input_waiting): Use new accessor macros instead of
Karl Heuer <kwzh@gnu.org>
parents: 9239
diff changeset
2015 XSETINT (e.code, c);
25674
b0d0bcf1b32e (reset_sys_modes): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 25578
diff changeset
2016 e.frame_or_window = selected_frame;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2017 kbd_buffer_store_event (&e);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2018 }
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
2019 if (input_available_clear_time)
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
2020 EMACS_SET_SECS_USECS (*input_available_clear_time, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2021 errno = old_errno;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2022 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2023
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2024 /* Wait until there is something in kbd_buffer. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2025
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2026 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2027 wait_for_kbd_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2028 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2029 extern int have_process_input, process_exited;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2030
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2031 /* If already something, avoid doing system calls. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2032 if (detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2033 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2034 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2035 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2036 /* Clear a flag, and tell ast routine above to set it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2037 SYS$CLREF (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2038 waiting_for_ast = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2039 /* Check for timing error: ast happened while we were doing that. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2040 if (!detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2041 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2042 /* No timing error: wait for flag to be set. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2043 set_waiting_for_input (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2044 SYS$WFLOR (input_ef, input_eflist);
41163
c8f21aec2f62 (wait_for_kbd_input) [VMS]: Do not call clear_waiting_for_input with
Pavel Janík <Pavel@Janik.cz>
parents: 40932
diff changeset
2045 clear_waiting_for_input ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2046 if (!detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2047 /* Check for subprocess input availability */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2048 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2049 int dsp = have_process_input || process_exited;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2050
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2051 SYS$CLREF (process_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2052 if (have_process_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2053 process_command_input ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2054 if (process_exited)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2055 process_exit ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2056 if (dsp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2057 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2058 update_mode_lines++;
5253
1846f03ac8f3 [VMS] (wait_for_kbd_input): Call prepare_menu_bars.
Richard M. Stallman <rms@gnu.org>
parents: 5189
diff changeset
2059 prepare_menu_bars ();
35336
002c02db42d3 Call redisplay_preserve_echo_area with additional arg.
Gerd Moellmann <gerd@gnu.org>
parents: 35189
diff changeset
2060 redisplay_preserve_echo_area (18);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2061 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2062 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2063 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2064 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2065 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2066
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2067 /* Get rid of any pending QIO, when we are about to suspend
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2068 or when we want to throw away pending input.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2069 We wait for a positive sign that the AST routine has run
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2070 and therefore there is no I/O request queued when we return.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2071 SYS$SETAST is used to avoid a timing error. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2072
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2073 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2074 end_kbd_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2075 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2076 #ifdef ASTDEBUG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2077 printf ("At end_kbd_input.\n");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2078 fflush (stdout);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2079 sleep (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2080 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2081 if (LIB$AST_IN_PROG ()) /* Don't wait if suspending from kbd_buffer_store_event! */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2082 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
2083 SYS$CANCEL (input_fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2084 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2085 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2086
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2087 SYS$SETAST (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2088 /* Clear a flag, and tell ast routine above to set it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2089 SYS$CLREF (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2090 waiting_for_ast = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2091 stop_input = 1;
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
2092 SYS$CANCEL (input_fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2093 SYS$SETAST (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2094 SYS$WAITFR (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2095 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2096 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2097
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2098 /* Wait for either input available or time interval expiry. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2099
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2100 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2101 input_wait_timeout (timeval)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2102 int timeval; /* Time to wait, in seconds */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2103 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2104 int time [2];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2105 static int zero = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2106 static int large = -10000000;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2107
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2108 LIB$EMUL (&timeval, &large, &zero, time); /* Convert to VMS format */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2109
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2110 /* If already something, avoid doing system calls. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2111 if (detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2112 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2113 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2114 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2115 /* Clear a flag, and tell ast routine above to set it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2116 SYS$CLREF (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2117 waiting_for_ast = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2118 /* Check for timing error: ast happened while we were doing that. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2119 if (!detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2120 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2121 /* No timing error: wait for flag to be set. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2122 SYS$CANTIM (1, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2123 if (SYS$SETIMR (timer_ef, time, 0, 1) & 1) /* Set timer */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2124 SYS$WFLOR (timer_ef, timer_eflist); /* Wait for timer expiry or input */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2125 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2126 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2127 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2128
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2129 /* The standard `sleep' routine works some other way
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2130 and it stops working if you have ever quit out of it.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2131 This one continues to work. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2132
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2133 sys_sleep (timeval)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2134 int timeval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2135 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2136 int time [2];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2137 static int zero = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2138 static int large = -10000000;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2139
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2140 LIB$EMUL (&timeval, &large, &zero, time); /* Convert to VMS format */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2141
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2142 SYS$CANTIM (1, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2143 if (SYS$SETIMR (timer_ef, time, 0, 1) & 1) /* Set timer */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2144 SYS$WAITFR (timer_ef); /* Wait for timer expiry only */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2145 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2146
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2147 void
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
2148 init_sigio (fd)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
2149 int fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2150 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2151 request_sigio ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2152 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2153
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2154 reset_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2155 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2156 unrequest_sigio ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2157 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2158
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2159 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2160 request_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2161 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2162 croak ("request sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2163 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2164
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2165 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2166 unrequest_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2167 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2168 croak ("unrequest sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2169 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2170
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2171 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2172
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2173 /* Note that VMS compiler won't accept defined (CANNOT_DUMP). */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2174 #ifndef CANNOT_DUMP
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2175 #define NEED_STARTS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2176 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2177
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2178 #ifndef SYSTEM_MALLOC
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2179 #ifndef NEED_STARTS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2180 #define NEED_STARTS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2181 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2182 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2183
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2184 #ifdef NEED_STARTS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2185 /* Some systems that cannot dump also cannot implement these. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2186
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2187 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2188 * Return the address of the start of the text segment prior to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2189 * doing an unexec. After unexec the return value is undefined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2190 * See crt0.c for further explanation and _start.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2191 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2192 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2193
27922
db5a4af9fafd (start_of_text): Don't define this function for NetBSD
Gerd Moellmann <gerd@gnu.org>
parents: 27709
diff changeset
2194 #if !(defined (__NetBSD__) && defined (__ELF__))
9039
22e5c594d59d (start_of_text): Don't test CANNOT_UNEXEC.
Richard M. Stallman <rms@gnu.org>
parents: 9036
diff changeset
2195 #ifndef HAVE_TEXT_START
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2196 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2197 start_of_text ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2198 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2199 #ifdef TEXT_START
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2200 return ((char *) TEXT_START);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2201 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2202 #ifdef GOULD
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2203 extern csrt ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2204 return ((char *) csrt);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2205 #else /* not GOULD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2206 extern int _start ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2207 return ((char *) _start);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2208 #endif /* GOULD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2209 #endif /* TEXT_START */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2210 }
9039
22e5c594d59d (start_of_text): Don't test CANNOT_UNEXEC.
Richard M. Stallman <rms@gnu.org>
parents: 9036
diff changeset
2211 #endif /* not HAVE_TEXT_START */
27922
db5a4af9fafd (start_of_text): Don't define this function for NetBSD
Gerd Moellmann <gerd@gnu.org>
parents: 27709
diff changeset
2212 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2213
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2214 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2215 * Return the address of the start of the data segment prior to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2216 * doing an unexec. After unexec the return value is undefined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2217 * See crt0.c for further information and definition of data_start.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2218 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2219 * Apparently, on BSD systems this is etext at startup. On
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2220 * USG systems (swapping) this is highly mmu dependent and
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2221 * is also dependent on whether or not the program is running
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2222 * with shared text. Generally there is a (possibly large)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2223 * gap between end of text and start of data with shared text.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2224 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2225 * On Uniplus+ systems with shared text, data starts at a
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2226 * fixed address. Each port (from a given oem) is generally
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2227 * different, and the specific value of the start of data can
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2228 * be obtained via the UniPlus+ specific "uvar" system call,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2229 * however the method outlined in crt0.c seems to be more portable.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2230 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2231 * Probably what will have to happen when a USG unexec is available,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2232 * at least on UniPlus, is temacs will have to be made unshared so
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2233 * that text and data are contiguous. Then once loadup is complete,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2234 * unexec will produce a shared executable where the data can be
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
2235 * at the normal shared text boundary and the startofdata variable
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2236 * will be patched by unexec to the correct value.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2237 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2238 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2239
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2240 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2241 start_of_data ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2242 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2243 #ifdef DATA_START
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2244 return ((char *) DATA_START);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2245 #else
2121
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2246 #ifdef ORDINARY_LINK
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2247 /*
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2248 * This is a hack. Since we're not linking crt0.c or pre_crt0.c,
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2249 * data_start isn't defined. We take the address of environ, which
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2250 * is known to live at or near the start of the system crt0.c, and
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2251 * we don't sweat the handful of bytes that might lose.
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2252 */
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2253 extern char **environ;
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2254
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
2255 return ((char *) &environ);
2121
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2256 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2257 extern int data_start;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2258 return ((char *) &data_start);
2121
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2259 #endif /* ORDINARY_LINK */
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2260 #endif /* DATA_START */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2261 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2262 #endif /* NEED_STARTS (not CANNOT_DUMP or not SYSTEM_MALLOC) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2263
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2264 #ifndef CANNOT_DUMP
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2265 /* Some systems that cannot dump also cannot implement these. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2266
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2267 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2268 * Return the address of the end of the text segment prior to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2269 * doing an unexec. After unexec the return value is undefined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2270 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2271
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2272 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2273 end_of_text ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2274 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2275 #ifdef TEXT_END
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2276 return ((char *) TEXT_END);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2277 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2278 extern int etext;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2279 return ((char *) &etext);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2280 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2281 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2282
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2283 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2284 * Return the address of the end of the data segment prior to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2285 * doing an unexec. After unexec the return value is undefined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2286 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2287
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2288 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2289 end_of_data ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2290 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2291 #ifdef DATA_END
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2292 return ((char *) DATA_END);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2293 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2294 extern int edata;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2295 return ((char *) &edata);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2296 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2297 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2298
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2299 #endif /* not CANNOT_DUMP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2300
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2301 /* 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
2302 system-name to return. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2303
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2304 #ifdef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2305 #include <whoami.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2306 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2307
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2308 extern Lisp_Object Vsystem_name;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2309
3150
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2310 #ifndef BSD4_1
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2311 #ifndef VMS
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2312 #ifdef HAVE_SOCKETS
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2313 #include <sys/socket.h>
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2314 #include <netdb.h>
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2315 #endif /* HAVE_SOCKETS */
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2316 #endif /* not VMS */
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2317 #endif /* not BSD4_1 */
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2318
33718
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
2319 #ifdef TRY_AGAIN
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
2320 #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
2321 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
2322 #endif
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
2323 #endif /* TRY_AGAIN */
79a269bdf047 Move the code for declaring h_errno after #include <netdb.h>.
Kenichi Handa <handa@m17n.org>
parents: 33617
diff changeset
2324
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2325 void
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2326 init_system_name ()
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2327 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2328 #ifdef BSD4_1
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2329 Vsystem_name = build_string (sysname);
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2330 #else
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2331 #ifdef VMS
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2332 char *sp, *end;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2333 if ((sp = egetenv ("SYS$NODE")) == 0)
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2334 Vsystem_name = build_string ("vax-vms");
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2335 else if ((end = index (sp, ':')) == 0)
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2336 Vsystem_name = build_string (sp);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2337 else
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2338 Vsystem_name = make_string (sp, end - sp);
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2339 #else
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2340 #ifndef HAVE_GETHOSTNAME
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2341 struct utsname uts;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2342 uname (&uts);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2343 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
2344 #else /* HAVE_GETHOSTNAME */
11800
a2f009e1b85b (init_system_name): Clean up signedness mismatch.
Karl Heuer <kwzh@gnu.org>
parents: 11722
diff changeset
2345 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
2346 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
2347
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2348 /* 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
2349 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
2350 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
2351 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
2352 for (;;)
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2353 {
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2354 gethostname (hostname, hostname_size - 1);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2355 hostname[hostname_size - 1] = '\0';
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2356
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2357 /* 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
2358 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
2359 break;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2360
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2361 hostname_size <<= 1;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2362 hostname = (char *) alloca (hostname_size);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2363 }
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2364 #ifdef HAVE_SOCKETS
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2365 /* 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
2366 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
2367 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
2368 #ifndef CANNOT_DUMP
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2369 if (initialized)
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2370 #endif /* not CANNOT_DUMP */
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2371 if (! index (hostname, '.'))
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2372 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2373 struct hostent *hp;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2374 int count;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2375 for (count = 0;; count++)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2376 {
8330
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
2377 #ifdef TRY_AGAIN
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2378 h_errno = 0;
8330
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
2379 #endif
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2380 hp = gethostbyname (hostname);
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
2381 #ifdef TRY_AGAIN
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2382 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
2383 #endif
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2384 break;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2385 if (count >= 5)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2386 break;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2387 Fsleep_for (make_number (1), Qnil);
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2388 }
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2389 if (hp)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2390 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2391 char *fqdn = (char *) hp->h_name;
43177
de51098df2fd (init_system_name): Put unused variable `p' in #if 0.
Pavel Janík <Pavel@Janik.cz>
parents: 42469
diff changeset
2392 #if 0
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2393 char *p;
43177
de51098df2fd (init_system_name): Put unused variable `p' in #if 0.
Pavel Janík <Pavel@Janik.cz>
parents: 42469
diff changeset
2394 #endif
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2395
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2396 if (!index (fqdn, '.'))
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2397 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2398 /* 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
2399 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
2400 char **alias = hp->h_aliases;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2401 while (*alias && !index (*alias, '.'))
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2402 alias++;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2403 if (*alias)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2404 fqdn = *alias;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2405 }
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2406 hostname = fqdn;
6799
1f45c2d4ff2c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 6489
diff changeset
2407 #if 0
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2408 /* Convert the host name to lower case. */
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2409 /* Using ctype.h here would introduce a possible locale
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2410 dependence that is probably wrong for hostnames. */
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2411 p = hostname;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2412 while (*p)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2413 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2414 if (*p >= 'A' && *p <= 'Z')
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2415 *p += 'a' - 'A';
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2416 p++;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2417 }
6799
1f45c2d4ff2c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 6489
diff changeset
2418 #endif
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2419 }
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2420 }
3150
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2421 #endif /* HAVE_SOCKETS */
20293
31035eff741a (init_system_name): Don't use sysinfo.
Karl Heuer <kwzh@gnu.org>
parents: 20288
diff changeset
2422 /* We used to try using getdomainname here,
31035eff741a (init_system_name): Don't use sysinfo.
Karl Heuer <kwzh@gnu.org>
parents: 20288
diff changeset
2423 but NIIBE Yutaka <gniibe@etl.go.jp> says that
19639
fb3c3590498e (init_system_name): Don't try to use getdomainname.
Richard M. Stallman <rms@gnu.org>
parents: 19258
diff changeset
2424 getdomainname gets the NIS/YP domain which often is not the same
fb3c3590498e (init_system_name): Don't try to use getdomainname.
Richard M. Stallman <rms@gnu.org>
parents: 19258
diff changeset
2425 as in Internet domain name. */
20293
31035eff741a (init_system_name): Don't use sysinfo.
Karl Heuer <kwzh@gnu.org>
parents: 20288
diff changeset
2426 #if 0 /* Turned off because sysinfo is not really likely to return the
31035eff741a (init_system_name): Don't use sysinfo.
Karl Heuer <kwzh@gnu.org>
parents: 20288
diff changeset
2427 correct Internet domain. */
19639
fb3c3590498e (init_system_name): Don't try to use getdomainname.
Richard M. Stallman <rms@gnu.org>
parents: 19258
diff changeset
2428 #if (HAVE_SYSINFO && defined (SI_SRPC_DOMAIN))
16003
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2429 if (! index (hostname, '.'))
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2430 {
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2431 /* The hostname is not fully qualified. Append the domain name. */
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2432
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2433 int hostlen = strlen (hostname);
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2434 int domain_size = 256;
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2435
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2436 for (;;)
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2437 {
18660
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2438 char *domain = (char *) alloca (domain_size + 1);
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2439 char *fqdn = (char *) alloca (hostlen + 1 + domain_size + 1);
16003
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2440 int sys_domain_size = sysinfo (SI_SRPC_DOMAIN, domain, domain_size);
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2441 if (sys_domain_size <= 0)
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2442 break;
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2443 if (domain_size < sys_domain_size)
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2444 {
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2445 domain_size = sys_domain_size;
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2446 continue;
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2447 }
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2448 strcpy (fqdn, hostname);
18660
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2449 if (domain[0] == '.')
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2450 strcpy (fqdn + hostlen, domain);
19258
cf4b06e6a5ab (init_system_name): If domain is null, don't add a period.
Richard M. Stallman <rms@gnu.org>
parents: 19198
diff changeset
2451 else if (domain[0] != 0)
18660
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2452 {
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2453 fqdn[hostlen] = '.';
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2454 strcpy (fqdn + hostlen + 1, domain);
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2455 }
16003
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2456 hostname = fqdn;
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2457 break;
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2458 }
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2459 }
19639
fb3c3590498e (init_system_name): Don't try to use getdomainname.
Richard M. Stallman <rms@gnu.org>
parents: 19258
diff changeset
2460 #endif /* HAVE_SYSINFO && defined (SI_SRPC_DOMAIN) */
20293
31035eff741a (init_system_name): Don't use sysinfo.
Karl Heuer <kwzh@gnu.org>
parents: 20288
diff changeset
2461 #endif /* 0 */
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2462 Vsystem_name = build_string (hostname);
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2463 #endif /* HAVE_GETHOSTNAME */
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2464 #endif /* VMS */
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2465 #endif /* BSD4_1 */
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2466 {
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2467 unsigned char *p;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2468 for (p = XSTRING (Vsystem_name)->data; *p; p++)
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2469 if (*p == ' ' || *p == '\t')
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2470 *p = '-';
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2471 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2472 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2473
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
2474 #ifndef MSDOS
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2475 #ifndef VMS
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2476 #if !defined (HAVE_SELECT) || defined (BROKEN_SELECT_NON_X)
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2477
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2478 #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
2479 #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
2480
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2481 #if defined (HAVE_X_WINDOWS) && !defined (HAVE_SELECT)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2482 /* Cause explanatory error message at compile time,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2483 since the select emulation is not good enough for X. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2484 int *x = &x_windows_lose_if_no_select_system_call;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2485 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2486
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2487 /* 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
2488 * Only checks read descriptors.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2489 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2490 /* How long to wait between checking fds in select */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2491 #define SELECT_PAUSE 1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2492 int select_alarmed;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2493
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2494 /* For longjmp'ing back to read_input_waiting. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2495
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2496 jmp_buf read_alarm_throw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2497
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2498 /* Nonzero if the alarm signal should throw back to read_input_waiting.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2499 The read_socket_hook function sets this to 1 while it is waiting. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2500
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2501 int read_alarm_should_throw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2502
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2503 SIGTYPE
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2504 select_alarm ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2505 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2506 select_alarmed = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2507 #ifdef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2508 sigrelse (SIGALRM);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2509 #else /* not BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2510 signal (SIGALRM, SIG_IGN);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2511 #endif /* not BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2512 if (read_alarm_should_throw)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2513 longjmp (read_alarm_throw, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2514 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2515
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
2516 #ifndef WINDOWSNT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2517 /* Only rfds are checked. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2518 int
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2519 sys_select (nfds, rfds, wfds, efds, timeout)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2520 int nfds;
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2521 SELECT_TYPE *rfds, *wfds, *efds;
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2522 EMACS_TIME *timeout;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2523 {
27432
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
2524 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
2525 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
2526 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
2527 int *local_timeout;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2528 extern int proc_buffered_char[];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2529 #ifndef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2530 int process_tick = 0, update_tick = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2531 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2532 extern int process_tick, update_tick;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2533 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2534 unsigned char buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2535
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2536 #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
2537 /* 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
2538 emulation for non-X usage. */
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2539 if (!NILP (Vwindow_system))
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2540 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
2541 #endif
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2542 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
2543 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
2544 FD_ZERO (&orfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2545 if (rfds)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2546 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2547 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
2548 FD_ZERO (rfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2549 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2550 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
2551 FD_ZERO (wfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2552 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
2553 FD_ZERO (efds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2554
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2555 /* If we are looking only for the terminal, with no timeout,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2556 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
2557 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
2558 && FD_ISSET (0, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2559 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2560 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
2561 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
2562 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
2563 goto hardway;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2564 if (! detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2565 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
2566 FD_SET (0, rfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2567 return 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2568 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2569
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2570 hardway:
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2571 /* Once a second, till the timer expires, check all the flagged read
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2572 * descriptors to see if any input is available. If there is some then
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2573 * set the corresponding bit in the return copy of rfds.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2574 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2575 while (1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2576 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2577 register int to_check, fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2578
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2579 if (rfds)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2580 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2581 for (to_check = nfds, fd = 0; --to_check >= 0; fd++)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2582 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2583 if (FD_ISSET (fd, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2584 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2585 int avail = 0, status = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2586
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2587 if (fd == 0)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2588 avail = detect_input_pending (); /* Special keyboard handler */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2589 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2590 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2591 #ifdef FIONREAD
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2592 status = ioctl (fd, FIONREAD, &avail);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2593 #else /* no FIONREAD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2594 /* Hoping it will return -1 if nothing available
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2595 or 0 if all 0 chars requested are read. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2596 if (proc_buffered_char[fd] >= 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2597 avail = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2598 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2599 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2600 avail = read (fd, &buf, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2601 if (avail > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2602 proc_buffered_char[fd] = buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2603 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2604 #endif /* no FIONREAD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2605 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2606 if (status >= 0 && avail > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2607 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2608 FD_SET (fd, rfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2609 ravail++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2610 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2611 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2612 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2613 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2614 if (*local_timeout == 0 || ravail != 0 || process_tick != update_tick)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2615 break;
27432
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
2616
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
2617 turn_on_atimers (0);
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
2618 signal (SIGALRM, select_alarm);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2619 select_alarmed = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2620 alarm (SELECT_PAUSE);
27432
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
2621
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2622 /* Wait for a SIGALRM (or maybe a SIGTINT) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2623 while (select_alarmed == 0 && *local_timeout != 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2624 && process_tick == update_tick)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2625 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2626 /* If we are interested in terminal input,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2627 wait by reading the terminal.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2628 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
2629 if (FD_ISSET (0, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2630 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2631 read_input_waiting ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2632 if (detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2633 select_alarmed = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2634 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2635 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2636 pause ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2637 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2638 (*local_timeout) -= SELECT_PAUSE;
27432
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
2639
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
2640 /* 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
2641 turn_on_atimers (1);
b904070c3d8b (sys_select): Turn atimers off and on instead of
Gerd Moellmann <gerd@gnu.org>
parents: 26526
diff changeset
2642
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2643 if (*local_timeout == 0) /* Stop on timer being cleared */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2644 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2645 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2646 return ravail;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2647 }
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
2648 #endif /* not WINDOWSNT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2649
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2650 /* Read keyboard input into the standard buffer,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2651 waiting for at least one character. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2652
13416
58e22ceabff4 [HAVE_NTGUI] (init_sys_modes, reset_sys_modes):
Geoff Voelker <voelker@cs.washington.edu>
parents: 13174
diff changeset
2653 /* Make all keyboard buffers much bigger when using a window system. */
58e22ceabff4 [HAVE_NTGUI] (init_sys_modes, reset_sys_modes):
Geoff Voelker <voelker@cs.washington.edu>
parents: 13174
diff changeset
2654 #ifdef HAVE_WINDOW_SYSTEM
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2655 #define BUFFER_SIZE_FACTOR 16
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2656 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2657 #define BUFFER_SIZE_FACTOR 1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2658 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2659
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2660 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2661 read_input_waiting ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2662 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2663 struct input_event e;
1014
6e25f9b75841 * sysdep.c (select): There's no need to cast the return value of
Jim Blandy <jimb@redhat.com>
parents: 766
diff changeset
2664 int nread, i;
6e25f9b75841 * sysdep.c (select): There's no need to cast the return value of
Jim Blandy <jimb@redhat.com>
parents: 766
diff changeset
2665 extern int quit_char;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2666
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2667 if (read_socket_hook)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2668 {
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2669 struct input_event buf[256];
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2670
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2671 read_alarm_should_throw = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2672 if (! setjmp (read_alarm_throw))
33217
960181d7eebf (read_input_waiting): Remove extraneous argument to
Andrew Innes <andrewi@gnu.org>
parents: 32752
diff changeset
2673 nread = (*read_socket_hook) (0, buf, 256, 1);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2674 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2675 nread = -1;
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2676
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2677 /* Scan the chars for C-g and store them in kbd_buffer. */
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2678 for (i = 0; i < nread; i++)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2679 {
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2680 kbd_buffer_store_event (&buf[i]);
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2681 /* 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
2682 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
2683 if (buf[i].kind == ascii_keystroke
10946
aa943e2ea495 (read_input_waiting): Fix Lisp_Object vs. int problem.
Karl Heuer <kwzh@gnu.org>
parents: 10528
diff changeset
2684 && buf[i].code == quit_char)
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2685 break;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2686 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2687 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2688 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2689 {
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2690 char buf[3];
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2691 nread = read (fileno (stdin), buf, 1);
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2692
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2693 /* Scan the chars for C-g and store them in kbd_buffer. */
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2694 e.kind = ascii_keystroke;
25674
b0d0bcf1b32e (reset_sys_modes): Change for Lisp_Object selected_frame.
Gerd Moellmann <gerd@gnu.org>
parents: 25578
diff changeset
2695 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
2696 e.modifiers = 0;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2697 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
2698 {
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2699 /* 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
2700 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
2701 if (read_socket_hook == 0)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2702 {
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2703 /* 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
2704 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
2705 e.modifiers = meta_modifier;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2706 if (meta_key != 2)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2707 buf[i] &= ~0x80;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2708 }
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2709
9279
2382e2f3884e (kbd_input_ast, read_input_waiting): Use new accessor macros instead of
Karl Heuer <kwzh@gnu.org>
parents: 9239
diff changeset
2710 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
2711 kbd_buffer_store_event (&e);
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2712 /* 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
2713 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
2714 if (buf[i] == quit_char)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2715 break;
4952
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
2716 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2717 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2718 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2719
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2720 #endif /* not HAVE_SELECT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2721 #endif /* not VMS */
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
2722 #endif /* not MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2723
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2724 #ifdef BSD4_1
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2725 void
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
2726 init_sigio (fd)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
2727 int fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2728 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2729 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2730 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2731 lmode = LINTRUP | lmode;
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
2732 ioctl (fd, TIOCLSET, &lmode);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2733 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2734
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2735 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2736 reset_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2737 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2738 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2739 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2740 lmode = ~LINTRUP & lmode;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2741 ioctl (0, TIOCLSET, &lmode);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2742 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2743
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2744 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2745 request_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2746 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2747 sigrelse (SIGTINT);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2748
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2749 interrupts_deferred = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2750 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2751
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2752 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2753 unrequest_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2754 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2755 sighold (SIGTINT);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2756
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2757 interrupts_deferred = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2758 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2759
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2760 /* still inside #ifdef BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2761 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2762
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2763 int sigheld; /* Mask of held signals */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2764
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2765 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2766 sigholdx (signum)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2767 int signum;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2768 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2769 sigheld |= sigbit (signum);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2770 sighold (signum);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2771 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2772
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2773 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2774 sigisheld (signum)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2775 int signum;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2776 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2777 sigheld |= sigbit (signum);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2778 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2779
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2780 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2781 sigunhold (signum)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2782 int signum;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2783 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2784 sigheld &= ~sigbit (signum);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2785 sigrelse (signum);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2786 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2787
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2788 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2789 sigfree () /* Free all held signals */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2790 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2791 int i;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2792 for (i = 0; i < NSIG; i++)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2793 if (sigheld & sigbit (i))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2794 sigrelse (i);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2795 sigheld = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2796 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2797
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2798 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2799 sigbit (i)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2800 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2801 return 1 << (i - 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2802 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2803 #endif /* subprocesses */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2804 #endif /* BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2805
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2806 /* POSIX signals support - DJB */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2807 /* Anyone with POSIX signals should have ANSI C declarations */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2808
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2809 #ifdef POSIX_SIGNALS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2810
20948
a9a9a13079b4 (sys_sigpause): Removed.
Andreas Schwab <schwab@suse.de>
parents: 20498
diff changeset
2811 sigset_t empty_mask, full_mask;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2812
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2813 signal_handler_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2814 sys_signal (int signal_number, signal_handler_t action)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2815 {
20948
a9a9a13079b4 (sys_sigpause): Removed.
Andreas Schwab <schwab@suse.de>
parents: 20498
diff changeset
2816 struct sigaction new_action, old_action;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2817 sigemptyset (&new_action.sa_mask);
20498
22dd2d861e36 (sys_signal): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 20456
diff changeset
2818 new_action.sa_handler = action;
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
2819 #ifdef SA_RESTART
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
2820 /* Emacs mostly works better with restartable system services. If this
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
2821 * flag exists, we probably want to turn it on here.
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
2822 */
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
2823 new_action.sa_flags = SA_RESTART;
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
2824 #else
3292
6209d0e98e35 (sys_signal): Use 0, not NULL, to set sa_flags.
Richard M. Stallman <rms@gnu.org>
parents: 3268
diff changeset
2825 new_action.sa_flags = 0;
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
2826 #endif
709
829ba8707e86 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 692
diff changeset
2827 sigaction (signal_number, &new_action, &old_action);
20498
22dd2d861e36 (sys_signal): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 20456
diff changeset
2828 return (old_action.sa_handler);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2829 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2830
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2831 #ifndef __GNUC__
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2832 /* 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
2833 can be written as a macro. */
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2834 sigset_t
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2835 sys_sigmask (int sig)
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2836 {
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2837 sigset_t mask;
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2838 sigemptyset (&mask);
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2839 sigaddset (&mask, sig);
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2840 return mask;
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2841 }
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2842 #endif
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2843
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2844 /* 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
2845 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
2846 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
2847 anyhow. - DJB */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2848
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2849 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2850 sys_sigblock (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2851 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2852 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2853 sigprocmask (SIG_BLOCK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2854 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2855 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2856
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2857 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2858 sys_sigunblock (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2859 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2860 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2861 sigprocmask (SIG_UNBLOCK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2862 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2863 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2864
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2865 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2866 sys_sigsetmask (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2867 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2868 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2869 sigprocmask (SIG_SETMASK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2870 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2871 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2872
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2873 #endif /* POSIX_SIGNALS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2874
26526
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2875 #if !defined HAVE_STRSIGNAL && !defined SYS_SIGLIST_DECLARED
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2876 static char *my_sys_siglist[NSIG];
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2877 # ifdef sys_siglist
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2878 # undef sys_siglist
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2879 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2880 # define sys_siglist my_sys_siglist
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2881 #endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2882
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2883 void
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2884 init_signals ()
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2885 {
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2886 #ifdef POSIX_SIGNALS
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2887 sigemptyset (&empty_mask);
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2888 sigfillset (&full_mask);
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2889 #endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2890
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2891 #if !defined HAVE_STRSIGNAL && !defined SYS_SIGLIST_DECLARED
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2892 if (! initialized)
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2893 {
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2894 # ifdef SIGABRT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2895 sys_siglist[SIGABRT] = "Aborted";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2896 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2897 # ifdef SIGAIO
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2898 sys_siglist[SIGAIO] = "LAN I/O interrupt";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2899 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2900 # ifdef SIGALRM
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2901 sys_siglist[SIGALRM] = "Alarm clock";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2902 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2903 # ifdef SIGBUS
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2904 sys_siglist[SIGBUS] = "Bus error";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2905 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2906 # ifdef SIGCLD
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2907 sys_siglist[SIGCLD] = "Child status changed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2908 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2909 # ifdef SIGCHLD
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2910 sys_siglist[SIGCHLD] = "Child status changed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2911 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2912 # ifdef SIGCONT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2913 sys_siglist[SIGCONT] = "Continued";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2914 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2915 # ifdef SIGDANGER
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2916 sys_siglist[SIGDANGER] = "Swap space dangerously low";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2917 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2918 # ifdef SIGDGNOTIFY
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2919 sys_siglist[SIGDGNOTIFY] = "Notification message in queue";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2920 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2921 # ifdef SIGEMT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2922 sys_siglist[SIGEMT] = "Emulation trap";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2923 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2924 # ifdef SIGFPE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2925 sys_siglist[SIGFPE] = "Arithmetic exception";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2926 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2927 # ifdef SIGFREEZE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2928 sys_siglist[SIGFREEZE] = "SIGFREEZE";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2929 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2930 # ifdef SIGGRANT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2931 sys_siglist[SIGGRANT] = "Monitor mode granted";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2932 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2933 # ifdef SIGHUP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2934 sys_siglist[SIGHUP] = "Hangup";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2935 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2936 # ifdef SIGILL
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2937 sys_siglist[SIGILL] = "Illegal instruction";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2938 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2939 # ifdef SIGINT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2940 sys_siglist[SIGINT] = "Interrupt";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2941 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2942 # ifdef SIGIO
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2943 sys_siglist[SIGIO] = "I/O possible";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2944 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2945 # ifdef SIGIOINT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2946 sys_siglist[SIGIOINT] = "I/O intervention required";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2947 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2948 # ifdef SIGIOT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2949 sys_siglist[SIGIOT] = "IOT trap";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2950 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2951 # ifdef SIGKILL
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2952 sys_siglist[SIGKILL] = "Killed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2953 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2954 # ifdef SIGLOST
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2955 sys_siglist[SIGLOST] = "Resource lost";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2956 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2957 # ifdef SIGLWP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2958 sys_siglist[SIGLWP] = "SIGLWP";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2959 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2960 # ifdef SIGMSG
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2961 sys_siglist[SIGMSG] = "Monitor mode data available";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2962 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2963 # ifdef SIGPHONE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2964 sys_siglist[SIGWIND] = "SIGPHONE";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2965 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2966 # ifdef SIGPIPE
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2967 sys_siglist[SIGPIPE] = "Broken pipe";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2968 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2969 # ifdef SIGPOLL
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2970 sys_siglist[SIGPOLL] = "Pollable event occurred";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2971 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2972 # ifdef SIGPROF
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2973 sys_siglist[SIGPROF] = "Profiling timer expired";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2974 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2975 # ifdef SIGPTY
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2976 sys_siglist[SIGPTY] = "PTY I/O interrupt";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2977 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2978 # ifdef SIGPWR
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2979 sys_siglist[SIGPWR] = "Power-fail restart";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2980 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2981 # ifdef SIGQUIT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2982 sys_siglist[SIGQUIT] = "Quit";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2983 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2984 # ifdef SIGRETRACT
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2985 sys_siglist[SIGRETRACT] = "Need to relinguish monitor mode";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2986 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2987 # ifdef SIGSAK
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2988 sys_siglist[SIGSAK] = "Secure attention";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2989 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2990 # ifdef SIGSEGV
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2991 sys_siglist[SIGSEGV] = "Segmentation violation";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2992 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2993 # ifdef SIGSOUND
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2994 sys_siglist[SIGSOUND] = "Sound completed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2995 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2996 # ifdef SIGSTOP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2997 sys_siglist[SIGSTOP] = "Stopped (signal)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2998 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
2999 # ifdef SIGSTP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3000 sys_siglist[SIGSTP] = "Stopped (user)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3001 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3002 # ifdef SIGSYS
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3003 sys_siglist[SIGSYS] = "Bad argument to system call";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3004 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3005 # ifdef SIGTERM
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3006 sys_siglist[SIGTERM] = "Terminated";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3007 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3008 # ifdef SIGTHAW
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3009 sys_siglist[SIGTHAW] = "SIGTHAW";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3010 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3011 # ifdef SIGTRAP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3012 sys_siglist[SIGTRAP] = "Trace/breakpoint trap";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3013 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3014 # ifdef SIGTSTP
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3015 sys_siglist[SIGTSTP] = "Stopped (user)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3016 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3017 # ifdef SIGTTIN
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3018 sys_siglist[SIGTTIN] = "Stopped (tty input)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3019 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3020 # ifdef SIGTTOU
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3021 sys_siglist[SIGTTOU] = "Stopped (tty output)";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3022 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3023 # ifdef SIGURG
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3024 sys_siglist[SIGURG] = "Urgent I/O condition";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3025 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3026 # ifdef SIGUSR1
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3027 sys_siglist[SIGUSR1] = "User defined signal 1";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3028 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3029 # ifdef SIGUSR2
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3030 sys_siglist[SIGUSR2] = "User defined signal 2";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3031 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3032 # ifdef SIGVTALRM
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3033 sys_siglist[SIGVTALRM] = "Virtual timer expired";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3034 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3035 # ifdef SIGWAITING
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3036 sys_siglist[SIGWAITING] = "Process's LWPs are blocked";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3037 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3038 # ifdef SIGWINCH
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3039 sys_siglist[SIGWINCH] = "Window size changed";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3040 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3041 # ifdef SIGWIND
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3042 sys_siglist[SIGWIND] = "SIGWIND";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3043 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3044 # ifdef SIGXCPU
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3045 sys_siglist[SIGXCPU] = "CPU time limit exceeded";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3046 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3047 # ifdef SIGXFSZ
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3048 sys_siglist[SIGXFSZ] = "File size limit exceeded";
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3049 # endif
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3050 }
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3051 #endif /* !defined HAVE_STRSIGNAL && !defined SYS_SIGLIST_DECLARED */
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3052 }
b7438760079b * callproc.c (strerror): Remove decl.
Paul Eggert <eggert@twinsun.com>
parents: 26088
diff changeset
3053
2332
bc2f7dc78412 * sysdep.c (random, srandom): Don't define these if HAVE_RANDOM is
Jim Blandy <jimb@redhat.com>
parents: 2287
diff changeset
3054 #ifndef HAVE_RANDOM
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3055 #ifdef random
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3056 #define HAVE_RANDOM
8368
0c30bec316c6 (random): Use rand differently, and distinguish BSD/USG.
Richard M. Stallman <rms@gnu.org>
parents: 8358
diff changeset
3057 #endif
8358
f9d8f778f73b (random, srandom): Obey HAVE_RAND48 flag.
Richard M. Stallman <rms@gnu.org>
parents: 8330
diff changeset
3058 #endif
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3059
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3060 /* 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
3061 `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
3062 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
3063 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
3064
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3065 #ifndef RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3066 # ifdef HAVE_RANDOM
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3067 # define RAND_BITS 31
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3068 # else /* !HAVE_RANDOM */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3069 # ifdef HAVE_LRAND48
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3070 # define RAND_BITS 31
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3071 # define random lrand48
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3072 # else /* !HAVE_LRAND48 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3073 # define RAND_BITS 15
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3074 # if RAND_MAX == 32767
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3075 # define random rand
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3076 # else /* RAND_MAX != 32767 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3077 # if RAND_MAX == 2147483647
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3078 # define random() (rand () >> 16)
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3079 # else /* RAND_MAX != 2147483647 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3080 # ifdef USG
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3081 # define random rand
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3082 # else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3083 # define random() (rand () >> 16)
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
3084 # endif /* !USG */
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3085 # endif /* RAND_MAX != 2147483647 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3086 # endif /* RAND_MAX != 32767 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3087 # endif /* !HAVE_LRAND48 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3088 # endif /* !HAVE_RANDOM */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3089 #endif /* !RAND_BITS */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3090
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3091 void
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3092 seed_random (arg)
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3093 long arg;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3094 {
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3095 #ifdef HAVE_RANDOM
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3096 srandom ((unsigned int)arg);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3097 #else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3098 # ifdef HAVE_LRAND48
8702
097fe97274e9 (srandom): Pass arg to srand48; no return value.
Karl Heuer <kwzh@gnu.org>
parents: 8699
diff changeset
3099 srand48 (arg);
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3100 # else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3101 srand ((unsigned int)arg);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3102 # endif
8358
f9d8f778f73b (random, srandom): Obey HAVE_RAND48 flag.
Richard M. Stallman <rms@gnu.org>
parents: 8330
diff changeset
3103 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3104 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3105
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3106 /*
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3107 * 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
3108 * 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
3109 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3110 long
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3111 get_random ()
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3112 {
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3113 long val = random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3114 #if VALBITS > RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3115 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3116 #if VALBITS > 2*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3117 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3118 #if VALBITS > 3*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3119 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3120 #if VALBITS > 4*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3121 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3122 #endif /* need at least 5 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3123 #endif /* need at least 4 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3124 #endif /* need at least 3 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3125 #endif /* need at least 2 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3126 return val & ((1L << VALBITS) - 1);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
3127 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3128
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3129 #ifdef WRONG_NAME_INSQUE
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3130
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3131 insque (q,p)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3132 caddr_t q,p;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3133 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3134 _insque (q,p);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3135 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3136
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3137 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3138
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3139 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3140
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3141 #ifdef getenv
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3142 /* If any place else asks for the TERM variable,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3143 allow it to be overridden with the EMACS_TERM variable
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3144 before attempting to translate the logical name TERM. As a last
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3145 resort, ask for VAX C's special idea of the TERM variable. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3146 #undef getenv
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3147 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3148 sys_getenv (name)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3149 char *name;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3150 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3151 register char *val;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3152 static char buf[256];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3153 static struct dsc$descriptor_s equiv
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3154 = {sizeof (buf), DSC$K_DTYPE_T, DSC$K_CLASS_S, buf};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3155 static struct dsc$descriptor_s d_name
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3156 = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3157 short eqlen;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3158
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3159 if (!strcmp (name, "TERM"))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3160 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3161 val = (char *) getenv ("EMACS_TERM");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3162 if (val)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3163 return val;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3164 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3165
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3166 d_name.dsc$w_length = strlen (name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3167 d_name.dsc$a_pointer = name;
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
3168 if (LIB$SYS_TRNLOG (&d_name, &eqlen, &equiv) == 1)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3169 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3170 char *str = (char *) xmalloc (eqlen + 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3171 bcopy (buf, str, eqlen);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3172 str[eqlen] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3173 /* This is a storage leak, but a pain to fix. With luck,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3174 no one will ever notice. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3175 return str;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3176 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3177 return (char *) getenv (name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3178 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3179 #endif /* getenv */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3180
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3181 #ifdef abort
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3182 /* Since VMS doesn't believe in core dumps, the only way to debug this beast is
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3183 to force a call on the debugger from within the image. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3184 #undef abort
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3185 sys_abort ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3186 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3187 reset_sys_modes ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3188 LIB$SIGNAL (SS$_DEBUG);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3189 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3190 #endif /* abort */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3191 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3192
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3193 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3194 #ifdef LINK_CRTL_SHARE
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3195 #ifdef SHARABLE_LIB_BUG
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
3196 /* Variables declared noshare and initialized in sharable libraries
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3197 cannot be shared. The VMS linker incorrectly forces you to use a private
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3198 version which is uninitialized... If not for this "feature", we
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3199 could use the C library definition of sys_nerr and sys_errlist. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3200 int sys_nerr = 35;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3201 char *sys_errlist[] =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3202 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3203 "error 0",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3204 "not owner",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3205 "no such file or directory",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3206 "no such process",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3207 "interrupted system call",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3208 "i/o error",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3209 "no such device or address",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3210 "argument list too long",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3211 "exec format error",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3212 "bad file number",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3213 "no child process",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3214 "no more processes",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3215 "not enough memory",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3216 "permission denied",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3217 "bad address",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3218 "block device required",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3219 "mount devices busy",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3220 "file exists",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3221 "cross-device link",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3222 "no such device",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3223 "not a directory",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3224 "is a directory",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3225 "invalid argument",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3226 "file table overflow",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3227 "too many open files",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3228 "not a typewriter",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3229 "text file busy",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3230 "file too big",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3231 "no space left on device",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3232 "illegal seek",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3233 "read-only file system",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3234 "too many links",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3235 "broken pipe",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3236 "math argument",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3237 "result too large",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3238 "I/O stream empty",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3239 "vax/vms specific error code nontranslatable error"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3240 };
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3241 #endif /* SHARABLE_LIB_BUG */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3242 #endif /* LINK_CRTL_SHARE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3243 #endif /* VMS */
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3244
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3245 #ifndef HAVE_STRERROR
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3246 #ifndef WINDOWSNT
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3247 char *
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3248 strerror (errnum)
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3249 int errnum;
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3250 {
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3251 extern char *sys_errlist[];
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3252 extern int sys_nerr;
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3253
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3254 if (errnum >= 0 && errnum < sys_nerr)
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3255 return sys_errlist[errnum];
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3256 return (char *) "Unknown error";
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3257 }
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3258 #endif /* not WINDOWSNT */
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3259 #endif /* ! HAVE_STRERROR */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3260
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3261 int
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3262 emacs_open (path, oflag, mode)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3263 char *path;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3264 int oflag, mode;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3265 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3266 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
3267
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3268 #ifdef BSD4_1
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3269 if (oflag & O_CREAT)
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3270 return creat (path, mode);
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3271 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3272
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3273 while ((rtnval = open (path, oflag, mode)) == -1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3274 && (errno == EINTR));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3275 return (rtnval);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3276 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3277
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
3278 int
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3279 emacs_close (fd)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3280 int fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3281 {
12547
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
3282 int did_retry = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3283 register int rtnval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3284
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3285 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
3286 && (errno == EINTR))
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
3287 did_retry = 1;
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
3288
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
3289 /* 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
3290 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
3291 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
3292 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
3293 return 0;
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
3294
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3295 return rtnval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3296 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3297
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3298 int
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3299 emacs_read (fildes, buf, nbyte)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3300 int fildes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3301 char *buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3302 unsigned int nbyte;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3303 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3304 register int rtnval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3305
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3306 while ((rtnval = read (fildes, buf, nbyte)) == -1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3307 && (errno == EINTR));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3308 return (rtnval);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3309 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3310
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3311 int
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3312 emacs_write (fildes, buf, nbyte)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3313 int fildes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3314 char *buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3315 unsigned int nbyte;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3316 {
4772
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3317 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
3318
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3319 bytes_written = 0;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3320
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3321 while (nbyte > 0)
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3322 {
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3323 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
3324
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3325 if (rtnval == -1)
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3326 {
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3327 if (errno == EINTR)
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3328 continue;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3329 else
5954
02f406110e4b (sys_write): If any bytes were written, return how many.
Richard M. Stallman <rms@gnu.org>
parents: 5937
diff changeset
3330 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
3331 }
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3332
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3333 buf += rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3334 nbyte -= rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3335 bytes_written += rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3336 }
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3337 return (bytes_written);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3338 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3339
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3340 #ifdef USG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3341 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3342 * All of the following are for USG.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3343 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3344 * On USG systems the system calls are INTERRUPTIBLE by signals
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3345 * that the user program has elected to catch. Thus the system call
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3346 * must be retried in these cases. To handle this without massive
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3347 * changes in the source code, we remap the standard system call names
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3348 * 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
3349 * with retries. Actually, for portability reasons, it is good
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3350 * 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
3351 * system calls to a single occurrence in the source. Sure, this
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3352 * adds an extra level of function call overhead but it is almost
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3353 * always negligible. Fred Fish, Unisoft Systems Inc.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3354 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3355
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3356 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3357 * Warning, this function may not duplicate 4.2 action properly
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3358 * under error conditions.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3359 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3360
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3361 #ifndef MAXPATHLEN
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3362 /* In 4.1, param.h fails to define this. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3363 #define MAXPATHLEN 1024
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3364 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3365
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3366 #ifndef HAVE_GETWD
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3367
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3368 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3369 getwd (pathname)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3370 char *pathname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3371 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3372 char *npath, *spath;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3373 extern char *getcwd ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3374
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
3375 BLOCK_INPUT; /* getcwd uses malloc */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3376 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
3377 if (spath == 0)
37219
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
3378 {
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
3379 UNBLOCK_INPUT;
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
3380 return spath;
78542938ed28 (getwd) [!HAVE_GETWD]: Unblock input before returning.
Gerd Moellmann <gerd@gnu.org>
parents: 35336
diff changeset
3381 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3382 /* On Altos 3068, getcwd can return @hostname/dir, so discard
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3383 up to first slash. Should be harmless on other systems. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3384 while (*npath && *npath != '/')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3385 npath++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3386 strcpy (pathname, npath);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3387 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
3388 UNBLOCK_INPUT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3389 return pathname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3390 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3391
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3392 #endif /* HAVE_GETWD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3393
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3394 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3395 * Emulate rename using unlink/link. Note that this is
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3396 * only partially correct. Also, doesn't enforce restriction
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3397 * that files be of same type (regular->regular, dir->dir, etc).
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3398 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3399
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
3400 #ifndef HAVE_RENAME
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
3401
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3402 rename (from, to)
3842
e8bcf96f1418 * sysdep.c (rename): Make arguments const. autoconf #defines
Jim Blandy <jimb@redhat.com>
parents: 3826
diff changeset
3403 const char *from;
e8bcf96f1418 * sysdep.c (rename): Make arguments const. autoconf #defines
Jim Blandy <jimb@redhat.com>
parents: 3826
diff changeset
3404 const char *to;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3405 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3406 if (access (from, 0) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3407 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3408 unlink (to);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3409 if (link (from, to) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3410 if (unlink (from) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3411 return (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3412 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3413 return (-1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3414 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3415
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
3416 #endif
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
3417
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3418
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3419 #ifdef HPUX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3420 #ifndef HAVE_PERROR
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3421
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3422 /* HPUX curses library references perror, but as far as we know
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3423 it won't be called. Anyway this definition will do for now. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3424
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3425 perror ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3426 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3427 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3428
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3429 #endif /* not HAVE_PERROR */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3430 #endif /* HPUX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3431
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3432 #ifndef HAVE_DUP2
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3433
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3434 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3435 * Emulate BSD dup2. First close newd if it already exists.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3436 * Then, attempt to dup oldd. If not successful, call dup2 recursively
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3437 * until we are, then close the unsuccessful ones.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3438 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3439
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3440 dup2 (oldd, newd)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3441 int oldd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3442 int newd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3443 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3444 register int fd, ret;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3445
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3446 emacs_close (newd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3447
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3448 #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
3449 return fcntl (oldd, F_DUPFD, newd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3450 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3451 fd = dup (old);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3452 if (fd == -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3453 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3454 if (fd == new)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3455 return new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3456 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
3457 emacs_close (fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3458 return ret;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3459 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3460 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3461
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3462 #endif /* not HAVE_DUP2 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3463
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3464 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3465 * Gettimeofday. Simulate as much as possible. Only accurate
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3466 * to nearest second. Emacs doesn't use tzp so ignore it for now.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3467 * Only needed when subprocesses are defined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3468 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3469
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3470 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3471 #ifndef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3472 #ifndef HAVE_GETTIMEOFDAY
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3473 #ifdef HAVE_TIMEVAL
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3474
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3475 /* ARGSUSED */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
3476 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3477 gettimeofday (tp, tzp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3478 struct timeval *tp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3479 struct timezone *tzp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3480 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3481 extern long time ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3482
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3483 tp->tv_sec = time ((long *)0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3484 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
3485 if (tzp != 0)
2e4882a32671 (gettimeofday): Don't store in *tzp if tzp is 0.
Richard M. Stallman <rms@gnu.org>
parents: 3157
diff changeset
3486 tzp->tz_minuteswest = -1;
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
3487 return 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3488 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3489
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3490 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3491 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3492 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3493 #endif /* subprocess && !HAVE_GETTIMEOFDAY && HAVE_TIMEVAL && !VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3494
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3495 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3496 * This function will go away as soon as all the stubs fixed. (fnf)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3497 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3498
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
3499 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3500 croak (badfunc)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3501 char *badfunc;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3502 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3503 printf ("%s not yet implemented\r\n", badfunc);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3504 reset_sys_modes ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3505 exit (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3506 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3507
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3508 #endif /* USG */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3509
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3510 /* Directory routines for systems that don't have them. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3511
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3512 #ifdef SYSV_SYSTEM_DIR
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3513
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3514 #include <dirent.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3515
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
3516 #if defined (BROKEN_CLOSEDIR) || !defined (HAVE_CLOSEDIR)
5158
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
3517
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3518 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3519 closedir (dirp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3520 register DIR *dirp; /* stream from opendir */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3521 {
5158
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
3522 int rtnval;
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
3523
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3524 rtnval = emacs_close (dirp->dd_fd);
3760
e0be9df19ee1 * sysdep.c (closedir): Don't free directory buffer if it looks
Jim Blandy <jimb@redhat.com>
parents: 3759
diff changeset
3525
3797
68807e370e9d Changes for correct pgrp behavior; approach suggested by Bob
Jim Blandy <jimb@redhat.com>
parents: 3760
diff changeset
3526 /* Some systems (like Solaris) allocate the buffer and the DIR all
68807e370e9d Changes for correct pgrp behavior; approach suggested by Bob
Jim Blandy <jimb@redhat.com>
parents: 3760
diff changeset
3527 in one block. Why in the world are we freeing this ourselves
68807e370e9d Changes for correct pgrp behavior; approach suggested by Bob
Jim Blandy <jimb@redhat.com>
parents: 3760
diff changeset
3528 anyway? */
68807e370e9d Changes for correct pgrp behavior; approach suggested by Bob
Jim Blandy <jimb@redhat.com>
parents: 3760
diff changeset
3529 #if ! (defined (sun) && defined (USG5_4))
68807e370e9d Changes for correct pgrp behavior; approach suggested by Bob
Jim Blandy <jimb@redhat.com>
parents: 3760
diff changeset
3530 xfree ((char *) dirp->dd_buf); /* directory block defined in <dirent.h> */
68807e370e9d Changes for correct pgrp behavior; approach suggested by Bob
Jim Blandy <jimb@redhat.com>
parents: 3760
diff changeset
3531 #endif
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
3532 xfree ((char *) dirp);
5158
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
3533
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
3534 return rtnval;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3535 }
5189
af88471e6799 (closedir): Test BROKEN_CLOSEDIR, not INTERRUPTIBLE_CLOSE.
Richard M. Stallman <rms@gnu.org>
parents: 5167
diff changeset
3536 #endif /* BROKEN_CLOSEDIR or not HAVE_CLOSEDIR */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3537 #endif /* SYSV_SYSTEM_DIR */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3538
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3539 #ifdef NONSYSTEM_DIR_LIBRARY
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3540
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3541 DIR *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3542 opendir (filename)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3543 char *filename; /* name of directory */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3544 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3545 register DIR *dirp; /* -> malloc'ed storage */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3546 register int fd; /* file descriptor for read */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3547 struct stat sbuf; /* result of fstat */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3548
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3549 fd = emacs_open (filename, O_RDONLY, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3550 if (fd < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3551 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3552
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
3553 BLOCK_INPUT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3554 if (fstat (fd, &sbuf) < 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3555 || (sbuf.st_mode & S_IFMT) != S_IFDIR
30608
4ec0adbeda9d (opendir, GetTempDirName, run_mac_command): Use xmalloc
Gerd Moellmann <gerd@gnu.org>
parents: 29911
diff changeset
3556 || (dirp = (DIR *) xmalloc (sizeof (DIR))) == 0)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3557 {
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3558 emacs_close (fd);
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
3559 UNBLOCK_INPUT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3560 return 0; /* bad luck today */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3561 }
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
3562 UNBLOCK_INPUT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3563
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3564 dirp->dd_fd = fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3565 dirp->dd_loc = dirp->dd_size = 0; /* refill needed */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3566
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3567 return dirp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3568 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3569
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3570 void
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3571 closedir (dirp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3572 register DIR *dirp; /* stream from opendir */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3573 {
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3574 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
3575 xfree ((char *) dirp);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3576 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3577
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3578
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3579 #ifndef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3580 #define DIRSIZ 14
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3581 struct olddir
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3582 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3583 ino_t od_ino; /* inode */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3584 char od_name[DIRSIZ]; /* filename */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3585 };
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3586 #endif /* not VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3587
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3588 struct direct dir_static; /* simulated directory contents */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3589
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3590 /* ARGUSED */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3591 struct direct *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3592 readdir (dirp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3593 register DIR *dirp; /* stream from opendir */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3594 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3595 #ifndef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3596 register struct olddir *dp; /* -> directory data */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3597 #else /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3598 register struct dir$_name *dp; /* -> directory data */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3599 register struct dir$_version *dv; /* -> version data */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3600 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3601
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3602 for (; ;)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3603 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3604 if (dirp->dd_loc >= dirp->dd_size)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3605 dirp->dd_loc = dirp->dd_size = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3606
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3607 if (dirp->dd_size == 0 /* refill buffer */
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
3608 && (dirp->dd_size = emacs_read (dirp->dd_fd, dirp->dd_buf, DIRBLKSIZ)) <= 0)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3609 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3610
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3611 #ifndef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3612 dp = (struct olddir *) &dirp->dd_buf[dirp->dd_loc];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3613 dirp->dd_loc += sizeof (struct olddir);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3614
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3615 if (dp->od_ino != 0) /* not deleted entry */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3616 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3617 dir_static.d_ino = dp->od_ino;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3618 strncpy (dir_static.d_name, dp->od_name, DIRSIZ);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3619 dir_static.d_name[DIRSIZ] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3620 dir_static.d_namlen = strlen (dir_static.d_name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3621 dir_static.d_reclen = sizeof (struct direct)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3622 - MAXNAMLEN + 3
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3623 + dir_static.d_namlen - dir_static.d_namlen % 4;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3624 return &dir_static; /* -> simulated structure */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3625 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3626 #else /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3627 dp = (struct dir$_name *) dirp->dd_buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3628 if (dirp->dd_loc == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3629 dirp->dd_loc = (dp->dir$b_namecount&1) ? dp->dir$b_namecount + 1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3630 : dp->dir$b_namecount;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3631 dv = (struct dir$_version *)&dp->dir$t_name[dirp->dd_loc];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3632 dir_static.d_ino = dv->dir$w_fid_num;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3633 dir_static.d_namlen = dp->dir$b_namecount;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3634 dir_static.d_reclen = sizeof (struct direct)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3635 - MAXNAMLEN + 3
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3636 + dir_static.d_namlen - dir_static.d_namlen % 4;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3637 strncpy (dir_static.d_name, dp->dir$t_name, dp->dir$b_namecount);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3638 dir_static.d_name[dir_static.d_namlen] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3639 dirp->dd_loc = dirp->dd_size; /* only one record at a time */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3640 return &dir_static;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3641 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3642 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3643 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3644
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3645 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3646 /* readdirver is just like readdir except it returns all versions of a file
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3647 as separate entries. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3648
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3649 /* ARGUSED */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3650 struct direct *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3651 readdirver (dirp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3652 register DIR *dirp; /* stream from opendir */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3653 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3654 register struct dir$_name *dp; /* -> directory data */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3655 register struct dir$_version *dv; /* -> version data */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3656
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3657 if (dirp->dd_loc >= dirp->dd_size - sizeof (struct dir$_name))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3658 dirp->dd_loc = dirp->dd_size = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3659
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3660 if (dirp->dd_size == 0 /* refill buffer */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3661 && (dirp->dd_size = sys_read (dirp->dd_fd, dirp->dd_buf, DIRBLKSIZ)) <= 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3662 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3663
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3664 dp = (struct dir$_name *) dirp->dd_buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3665 if (dirp->dd_loc == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3666 dirp->dd_loc = (dp->dir$b_namecount & 1) ? dp->dir$b_namecount + 1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3667 : dp->dir$b_namecount;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3668 dv = (struct dir$_version *) &dp->dir$t_name[dirp->dd_loc];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3669 strncpy (dir_static.d_name, dp->dir$t_name, dp->dir$b_namecount);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3670 sprintf (&dir_static.d_name[dp->dir$b_namecount], ";%d", dv->dir$w_version);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3671 dir_static.d_namlen = strlen (dir_static.d_name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3672 dir_static.d_ino = dv->dir$w_fid_num;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3673 dir_static.d_reclen = sizeof (struct direct) - MAXNAMLEN + 3
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3674 + dir_static.d_namlen - dir_static.d_namlen % 4;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3675 dirp->dd_loc = ((char *) (++dv) - dp->dir$t_name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3676 return &dir_static;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3677 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3678
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3679 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3680
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3681 #endif /* NONSYSTEM_DIR_LIBRARY */
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3682
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3683
8934
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3684 int
9082
2c6875700c9f (set_file_times): Fix typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9081
diff changeset
3685 set_file_times (filename, atime, mtime)
9081
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
3686 char *filename;
8934
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3687 EMACS_TIME atime, mtime;
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3688 {
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3689 #ifdef HAVE_UTIMES
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3690 struct timeval tv[2];
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3691 tv[0] = atime;
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3692 tv[1] = mtime;
9081
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
3693 return utimes (filename, tv);
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
3694 #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
3695 struct utimbuf utb;
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3696 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
3697 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
3698 return utime (filename, &utb);
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
3699 #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
3700 }
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3701
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3702 /* 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
3703
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3704 #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
3705 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3706 * 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
3707 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3708 * 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
3709 * 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
3710 * a copy.
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3711 * 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
3712 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3713 * Severely hacked over by John Gilmore to make a 4.2BSD compatible
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3714 * subroutine. 11Mar86; hoptoad!gnu
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3715 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3716 * 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
3717 * 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
3718 */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3719
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3720 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3721 * 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
3722 */
5682
9204cb4fdad9 (mkdir): Use MKDIR_PROTOTYPE if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5594
diff changeset
3723 #ifdef MKDIR_PROTOTYPE
9204cb4fdad9 (mkdir): Use MKDIR_PROTOTYPE if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5594
diff changeset
3724 MKDIR_PROTOTYPE
9204cb4fdad9 (mkdir): Use MKDIR_PROTOTYPE if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5594
diff changeset
3725 #else
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3726 int
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3727 mkdir (dpath, dmode)
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3728 char *dpath;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3729 int dmode;
5682
9204cb4fdad9 (mkdir): Use MKDIR_PROTOTYPE if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5594
diff changeset
3730 #endif
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3731 {
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3732 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
3733 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
3734
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3735 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
3736 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3737 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
3738 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3739 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3740
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3741 /* 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
3742 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
3743 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3744
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3745 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
3746 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
3747 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3748
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3749 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
3750 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
3751
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3752 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
3753 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3754 * 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
3755 * 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
3756 * 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
3757 * 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
3758 */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3759 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
3760 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
3761 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
3762 if (fd >= 0)
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3763 {
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3764 dup2 (fd, 0);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3765 dup2 (fd, 1);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3766 dup2 (fd, 2);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3767 }
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3768 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
3769 _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
3770
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3771 default: /* Parent process */
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3772 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
3773 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3774
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3775 if (synch_process_death != 0 || synch_process_retcode != 0)
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3776 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3777 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
3778 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
3779 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3780
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3781 return 0;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3782 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3783 #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
3784
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3785 #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
3786 int
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3787 rmdir (dpath)
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3788 char *dpath;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3789 {
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3790 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
3791 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
3792
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3793 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
3794 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3795 /* 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
3796 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3797 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3798
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3799 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
3800 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
3801 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3802
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3803 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
3804 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
3805
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3806 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
3807 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
3808 if (fd >= 0)
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3809 {
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3810 dup2 (fd, 0);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3811 dup2 (fd, 1);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3812 dup2 (fd, 2);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3813 }
12326
b99947e6b447 (rmdir): Fix up Aug 19 1993 change that wasn't done right.
Richard M. Stallman <rms@gnu.org>
parents: 12231
diff changeset
3814 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
3815 _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
3816
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3817 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
3818 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
3819 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3820
12326
b99947e6b447 (rmdir): Fix up Aug 19 1993 change that wasn't done right.
Richard M. Stallman <rms@gnu.org>
parents: 12231
diff changeset
3821 if (synch_process_death != 0 || synch_process_retcode != 0)
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3822 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3823 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
3824 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
3825 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3826
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3827 return 0;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3828 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3829 #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
3830
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3831
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3832
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3833 /* Functions for VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3834 #ifdef VMS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
3835 #include "vms-pwd.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3836 #include <acldef.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3837 #include <chpdef.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3838 #include <jpidef.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3839
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3840 /* Return as a string the VMS error string pertaining to STATUS.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3841 Reuses the same static buffer each time it is called. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3842
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3843 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3844 vmserrstr (status)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3845 int status; /* VMS status code */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3846 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3847 int bufadr[2];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3848 short len;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3849 static char buf[257];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3850
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3851 bufadr[0] = sizeof buf - 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3852 bufadr[1] = (int) buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3853 if (! (SYS$GETMSG (status, &len, bufadr, 0x1, 0) & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3854 return "untranslatable VMS error status";
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3855 buf[len] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3856 return buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3857 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3858
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3859 #ifdef access
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3860 #undef access
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3861
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3862 /* The following is necessary because 'access' emulation by VMS C (2.0) does
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3863 * not work correctly. (It also doesn't work well in version 2.3.)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3864 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3865
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3866 #ifdef VMS4_4
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3867
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3868 #define DESCRIPTOR(name,string) struct dsc$descriptor_s name = \
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3869 { strlen (string), DSC$K_DTYPE_T, DSC$K_CLASS_S, string }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3870
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3871 typedef union {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3872 struct {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3873 unsigned short s_buflen;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3874 unsigned short s_code;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3875 char *s_bufadr;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3876 unsigned short *s_retlenadr;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3877 } s;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3878 int end;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3879 } item;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3880 #define buflen s.s_buflen
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3881 #define code s.s_code
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3882 #define bufadr s.s_bufadr
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3883 #define retlenadr s.s_retlenadr
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3884
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3885 #define R_OK 4 /* test for read permission */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3886 #define W_OK 2 /* test for write permission */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3887 #define X_OK 1 /* test for execute (search) permission */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3888 #define F_OK 0 /* test for presence of file */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3889
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3890 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3891 sys_access (path, mode)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3892 char *path;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3893 int mode;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3894 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3895 static char *user = NULL;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3896 char dir_fn[512];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3897
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3898 /* translate possible directory spec into .DIR file name, so brain-dead
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3899 * access can treat the directory like a file. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3900 if (directory_file_name (path, dir_fn))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3901 path = dir_fn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3902
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3903 if (mode == F_OK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3904 return access (path, mode);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3905 if (user == NULL && (user = (char *) getenv ("USER")) == NULL)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3906 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3907 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3908 int stat;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3909 int flags;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3910 int acces;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3911 unsigned short int dummy;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3912 item itemlst[3];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3913 static int constant = ACL$C_FILE;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3914 DESCRIPTOR (path_desc, path);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3915 DESCRIPTOR (user_desc, user);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3916
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3917 flags = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3918 acces = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3919 if ((mode & X_OK) && ((stat = access (path, mode)) < 0 || mode == X_OK))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3920 return stat;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3921 if (mode & R_OK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3922 acces |= CHP$M_READ;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3923 if (mode & W_OK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3924 acces |= CHP$M_WRITE;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3925 itemlst[0].buflen = sizeof (int);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3926 itemlst[0].code = CHP$_FLAGS;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3927 itemlst[0].bufadr = (char *) &flags;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3928 itemlst[0].retlenadr = &dummy;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3929 itemlst[1].buflen = sizeof (int);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3930 itemlst[1].code = CHP$_ACCESS;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3931 itemlst[1].bufadr = (char *) &acces;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3932 itemlst[1].retlenadr = &dummy;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3933 itemlst[2].end = CHP$_END;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3934 stat = SYS$CHECK_ACCESS (&constant, &path_desc, &user_desc, itemlst);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3935 return stat == SS$_NORMAL ? 0 : -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3936 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3937 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3938
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3939 #else /* not VMS4_4 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3940
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3941 #include <prvdef.h>
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3942 #define ACE$M_WRITE 2
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3943 #define ACE$C_KEYID 1
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3944
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3945 static unsigned short memid, grpid;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3946 static unsigned int uic;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3947
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3948 /* Called from init_sys_modes, so it happens not very often
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3949 but at least each time Emacs is loaded. */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
3950 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3951 sys_access_reinit ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3952 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3953 uic = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3954 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3955
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3956 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3957 sys_access (filename, type)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3958 char * filename;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3959 int type;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3960 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3961 struct FAB fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3962 struct XABPRO xab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3963 int status, size, i, typecode, acl_controlled;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3964 unsigned int *aclptr, *aclend, aclbuf[60];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3965 union prvdef prvmask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3966
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3967 /* Get UIC and GRP values for protection checking. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3968 if (uic == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3969 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3970 status = LIB$GETJPI (&JPI$_UIC, 0, 0, &uic, 0, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3971 if (! (status & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3972 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3973 memid = uic & 0xFFFF;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3974 grpid = uic >> 16;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3975 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3976
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3977 if (type != 2) /* not checking write access */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3978 return access (filename, type);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3979
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3980 /* Check write protection. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3981
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3982 #define CHECKPRIV(bit) (prvmask.bit)
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3983 #define WRITABLE(field) (! ((xab.xab$w_pro >> field) & XAB$M_NOWRITE))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3984
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3985 /* Find privilege bits */
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
3986 status = SYS$SETPRV (0, 0, 0, prvmask);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3987 if (! (status & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3988 error ("Unable to find privileges: %s", vmserrstr (status));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3989 if (CHECKPRIV (PRV$V_BYPASS))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3990 return 0; /* BYPASS enabled */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3991 fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3992 fab.fab$b_fac = FAB$M_GET;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3993 fab.fab$l_fna = filename;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3994 fab.fab$b_fns = strlen (filename);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3995 fab.fab$l_xab = &xab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3996 xab = cc$rms_xabpro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3997 xab.xab$l_aclbuf = aclbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3998 xab.xab$w_aclsiz = sizeof (aclbuf);
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
3999 status = SYS$OPEN (&fab, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4000 if (! (status & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4001 return -1;
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4002 SYS$CLOSE (&fab, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4003 /* Check system access */
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
4004 if (CHECKPRIV (PRV$V_SYSPRV) && WRITABLE (XAB$V_SYS))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4005 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4006 /* Check ACL entries, if any */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4007 acl_controlled = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4008 if (xab.xab$w_acllen > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4009 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4010 aclptr = aclbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4011 aclend = &aclbuf[xab.xab$w_acllen / 4];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4012 while (*aclptr && aclptr < aclend)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4013 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4014 size = (*aclptr & 0xff) / 4;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4015 typecode = (*aclptr >> 8) & 0xff;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4016 if (typecode == ACE$C_KEYID)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4017 for (i = size - 1; i > 1; i--)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4018 if (aclptr[i] == uic)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4019 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4020 acl_controlled = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4021 if (aclptr[1] & ACE$M_WRITE)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4022 return 0; /* Write access through ACL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4023 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4024 aclptr = &aclptr[size];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4025 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4026 if (acl_controlled) /* ACL specified, prohibits write access */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4027 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4028 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4029 /* No ACL entries specified, check normal protection */
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
4030 if (WRITABLE (XAB$V_WLD)) /* World writable */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4031 return 0;
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
4032 if (WRITABLE (XAB$V_GRP) &&
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4033 (unsigned short) (xab.xab$l_uic >> 16) == grpid)
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
4034 return 0; /* Group writable */
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
4035 if (WRITABLE (XAB$V_OWN) &&
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4036 (xab.xab$l_uic & 0xFFFF) == memid)
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
4037 return 0; /* Owner writable */
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
4038
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
4039 return -1; /* Not writable */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4040 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4041 #endif /* not VMS4_4 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4042 #endif /* access */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4043
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4044 static char vtbuf[NAM$C_MAXRSS+1];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4045
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4046 /* translate a vms file spec to a unix path */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4047 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4048 sys_translate_vms (vfile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4049 char * vfile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4050 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4051 char * p;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4052 char * targ;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4053
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4054 if (!vfile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4055 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4056
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4057 targ = vtbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4058
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4059 /* leading device or logical name is a root directory */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4060 if (p = strchr (vfile, ':'))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4061 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4062 *targ++ = '/';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4063 while (vfile < p)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4064 *targ++ = *vfile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4065 vfile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4066 *targ++ = '/';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4067 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4068 p = vfile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4069 if (*p == '[' || *p == '<')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4070 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4071 while (*++vfile != *p + 2)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4072 switch (*vfile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4073 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4074 case '.':
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4075 if (vfile[-1] == *p)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4076 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4077 *targ++ = '/';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4078 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4079
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4080 case '-':
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4081 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4082 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4083 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4084
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4085 default:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4086 *targ++ = *vfile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4087 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4088 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4089 vfile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4090 *targ++ = '/';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4091 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4092 while (*vfile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4093 *targ++ = *vfile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4094
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4095 return vtbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4096 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4097
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4098 static char utbuf[NAM$C_MAXRSS+1];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4099
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4100 /* translate a unix path to a VMS file spec */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4101 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4102 sys_translate_unix (ufile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4103 char * ufile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4104 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4105 int slash_seen = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4106 char *p;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4107 char * targ;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4108
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4109 if (!ufile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4110 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4111
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4112 targ = utbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4113
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4114 if (*ufile == '/')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4115 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4116 ufile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4117 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4118
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4119 while (*ufile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4120 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4121 switch (*ufile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4122 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4123 case '/':
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4124 if (slash_seen)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4125 if (index (&ufile[1], '/'))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4126 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4127 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4128 *targ++ = ']';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4129 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4130 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4131 *targ++ = ':';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4132 if (index (&ufile[1], '/'))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4133 *targ++ = '[';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4134 slash_seen = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4135 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4136 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4137
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4138 case '.':
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4139 if (strncmp (ufile, "./", 2) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4140 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4141 if (!slash_seen)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4142 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4143 *targ++ = '[';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4144 slash_seen = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4145 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4146 ufile++; /* skip the dot */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4147 if (index (&ufile[1], '/'))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4148 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4149 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4150 *targ++ = ']';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4151 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4152 else if (strncmp (ufile, "../", 3) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4153 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4154 if (!slash_seen)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4155 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4156 *targ++ = '[';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4157 slash_seen = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4158 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4159 *targ++ = '-';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4160 ufile += 2; /* skip the dots */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4161 if (index (&ufile[1], '/'))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4162 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4163 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4164 *targ++ = ']';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4165 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4166 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4167 *targ++ = *ufile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4168 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4169
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4170 default:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4171 *targ++ = *ufile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4172 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4173 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4174 ufile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4175 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4176 *targ = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4177
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4178 return utbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4179 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4180
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4181 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4182 getwd (pathname)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4183 char *pathname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4184 {
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4185 char *ptr, *val;
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4186 extern char *getcwd ();
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4187
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4188 #define MAXPATHLEN 1024
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4189
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
4190 ptr = xmalloc (MAXPATHLEN);
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4191 val = getcwd (ptr, MAXPATHLEN);
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4192 if (val == 0)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4193 {
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4194 xfree (ptr);
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4195 return val;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4196 }
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4197 strcpy (pathname, ptr);
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
4198 xfree (ptr);
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4199
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4200 return pathname;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4201 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4202
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4203 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4204 getppid ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4205 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4206 long item_code = JPI$_OWNER;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4207 unsigned long parent_id;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4208 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4209
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4210 if (((status = LIB$GETJPI (&item_code, 0, 0, &parent_id)) & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4211 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4212 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4213 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4214 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4215 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4216 return parent_id;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4217 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4218
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4219 #undef getuid
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4220 unsigned
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4221 sys_getuid ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4222 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4223 return (getgid () << 16) | getuid ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4224 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4225
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
4226 #undef read
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4227 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4228 sys_read (fildes, buf, nbyte)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4229 int fildes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4230 char *buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4231 unsigned int nbyte;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4232 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4233 return read (fildes, buf, (nbyte < MAXIOSIZE ? nbyte : MAXIOSIZE));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4234 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4235
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4236 #if 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4237 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4238 sys_write (fildes, buf, nbyte)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4239 int fildes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4240 char *buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4241 unsigned int nbyte;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4242 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4243 register int nwrote, rtnval = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4244
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4245 while (nbyte > MAXIOSIZE && (nwrote = write (fildes, buf, MAXIOSIZE)) > 0) {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4246 nbyte -= nwrote;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4247 buf += nwrote;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4248 rtnval += nwrote;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4249 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4250 if (nwrote < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4251 return rtnval ? rtnval : -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4252 if ((nwrote = write (fildes, buf, nbyte)) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4253 return rtnval ? rtnval : -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4254 return (rtnval + nwrote);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4255 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4256 #endif /* 0 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4257
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4258 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4259 * VAX/VMS VAX C RTL really loses. It insists that records
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4260 * end with a newline (carriage return) character, and if they
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4261 * don't it adds one (nice of it isn't it!)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4262 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4263 * Thus we do this stupidity below.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4264 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4265
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
4266 #undef write
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4267 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4268 sys_write (fildes, buf, nbytes)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4269 int fildes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4270 char *buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4271 unsigned int nbytes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4272 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4273 register char *p;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4274 register char *e;
525
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4275 int sum = 0;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4276 struct stat st;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4277
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4278 fstat (fildes, &st);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4279 p = buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4280 while (nbytes > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4281 {
525
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4282 int len, retval;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4283
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4284 /* Handle fixed-length files with carriage control. */
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4285 if (st.st_fab_rfm == FAB$C_FIX
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4286 && ((st.st_fab_rat & (FAB$M_FTN | FAB$M_CR)) != 0))
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4287 {
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4288 len = st.st_fab_mrs;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4289 retval = write (fildes, p, min (len, nbytes));
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4290 if (retval != len)
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4291 return -1;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4292 retval++; /* This skips the implied carriage control */
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4293 }
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4294 else
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4295 {
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4296 e = p + min (MAXIOSIZE, nbytes) - 1;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4297 while (*e != '\n' && e > p) e--;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4298 if (p == e) /* Ok.. so here we add a newline... sigh. */
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4299 e = p + min (MAXIOSIZE, nbytes) - 1;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4300 len = e + 1 - p;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4301 retval = write (fildes, p, len);
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4302 if (retval != len)
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4303 return -1;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4304 }
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4305 p += retval;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4306 sum += retval;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4307 nbytes -= retval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4308 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4309 return sum;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4310 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4311
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4312 /* Create file NEW copying its attributes from file OLD. If
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4313 OLD is 0 or does not exist, create based on the value of
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4314 vms_stmlf_recfm. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4315
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4316 /* Protection value the file should ultimately have.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4317 Set by create_copy_attrs, and use by rename_sansversions. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4318 static unsigned short int fab_final_pro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4319
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4320 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4321 creat_copy_attrs (old, new)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4322 char *old, *new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4323 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4324 struct FAB fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4325 struct XABPRO xabpro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4326 char aclbuf[256]; /* Choice of size is arbitrary. See below. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4327 extern int vms_stmlf_recfm;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4328
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4329 if (old)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4330 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4331 fab.fab$b_fac = FAB$M_GET;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4332 fab.fab$l_fna = old;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4333 fab.fab$b_fns = strlen (old);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4334 fab.fab$l_xab = (char *) &xabpro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4335 xabpro = cc$rms_xabpro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4336 xabpro.xab$l_aclbuf = aclbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4337 xabpro.xab$w_aclsiz = sizeof aclbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4338 /* Call $OPEN to fill in the fab & xabpro fields. */
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4339 if (SYS$OPEN (&fab, 0, 0) & 1)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4340 {
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4341 SYS$CLOSE (&fab, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4342 fab.fab$l_alq = 0; /* zero the allocation quantity */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4343 if (xabpro.xab$w_acllen > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4344 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4345 if (xabpro.xab$w_acllen > sizeof aclbuf)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4346 /* If the acl buffer was too short, redo open with longer one.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4347 Wouldn't need to do this if there were some system imposed
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4348 limit on the size of an ACL, but I can't find any such. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4349 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4350 xabpro.xab$l_aclbuf = (char *) alloca (xabpro.xab$w_acllen);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4351 xabpro.xab$w_aclsiz = xabpro.xab$w_acllen;
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4352 if (SYS$OPEN (&fab, 0, 0) & 1)
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4353 SYS$CLOSE (&fab, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4354 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4355 old = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4356 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4357 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4358 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4359 xabpro.xab$l_aclbuf = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4360 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4361 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4362 old = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4363 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4364 fab.fab$l_fna = new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4365 fab.fab$b_fns = strlen (new);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4366 if (!old)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4367 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4368 fab.fab$l_xab = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4369 fab.fab$b_rfm = vms_stmlf_recfm ? FAB$C_STMLF : FAB$C_VAR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4370 fab.fab$b_rat = FAB$M_CR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4371 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4372
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4373 /* Set the file protections such that we will be able to manipulate
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4374 this file. Once we are done writing and renaming it, we will set
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4375 the protections back. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4376 if (old)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4377 fab_final_pro = xabpro.xab$w_pro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4378 else
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4379 SYS$SETDFPROT (0, &fab_final_pro);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4380 xabpro.xab$w_pro &= 0xff0f; /* set O:rewd for now. This is set back later. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4381
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4382 /* Create the new file with either default attrs or attrs copied
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4383 from old file. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4384 if (!(SYS$CREATE (&fab, 0, 0) & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4385 return -1;
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4386 SYS$CLOSE (&fab, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4387 /* As this is a "replacement" for creat, return a file descriptor
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4388 opened for writing. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4389 return open (new, O_WRONLY);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4390 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4391
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4392 #ifdef creat
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4393 #undef creat
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4394 #include <varargs.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4395 #ifdef __GNUC__
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4396 #ifndef va_count
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4397 #define va_count(X) ((X) = *(((int *) &(va_alist)) - 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4398 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4399 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4400
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4401 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4402 sys_creat (va_alist)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4403 va_dcl
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4404 {
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4405 va_list list_incrementer;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4406 char *name;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4407 int mode;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4408 int rfd; /* related file descriptor */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4409 int fd; /* Our new file descriptor */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4410 int count;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4411 struct stat st_buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4412 char rfm[12];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4413 char rat[15];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4414 char mrs[13];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4415 char fsz[13];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4416 extern int vms_stmlf_recfm;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4417
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4418 va_count (count);
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4419 va_start (list_incrementer);
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4420 name = va_arg (list_incrementer, char *);
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4421 mode = va_arg (list_incrementer, int);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4422 if (count > 2)
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4423 rfd = va_arg (list_incrementer, int);
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4424 va_end (list_incrementer);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4425 if (count > 2)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4426 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4427 /* Use information from the related file descriptor to set record
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4428 format of the newly created file. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4429 fstat (rfd, &st_buf);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4430 switch (st_buf.st_fab_rfm)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4431 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4432 case FAB$C_FIX:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4433 strcpy (rfm, "rfm = fix");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4434 sprintf (mrs, "mrs = %d", st_buf.st_fab_mrs);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4435 strcpy (rat, "rat = ");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4436 if (st_buf.st_fab_rat & FAB$M_CR)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4437 strcat (rat, "cr");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4438 else if (st_buf.st_fab_rat & FAB$M_FTN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4439 strcat (rat, "ftn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4440 else if (st_buf.st_fab_rat & FAB$M_PRN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4441 strcat (rat, "prn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4442 if (st_buf.st_fab_rat & FAB$M_BLK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4443 if (st_buf.st_fab_rat & (FAB$M_CR|FAB$M_FTN|FAB$M_PRN))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4444 strcat (rat, ", blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4445 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4446 strcat (rat, "blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4447 return creat (name, 0, rfm, rat, mrs);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4448
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4449 case FAB$C_VFC:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4450 strcpy (rfm, "rfm = vfc");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4451 sprintf (fsz, "fsz = %d", st_buf.st_fab_fsz);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4452 strcpy (rat, "rat = ");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4453 if (st_buf.st_fab_rat & FAB$M_CR)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4454 strcat (rat, "cr");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4455 else if (st_buf.st_fab_rat & FAB$M_FTN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4456 strcat (rat, "ftn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4457 else if (st_buf.st_fab_rat & FAB$M_PRN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4458 strcat (rat, "prn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4459 if (st_buf.st_fab_rat & FAB$M_BLK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4460 if (st_buf.st_fab_rat & (FAB$M_CR|FAB$M_FTN|FAB$M_PRN))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4461 strcat (rat, ", blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4462 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4463 strcat (rat, "blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4464 return creat (name, 0, rfm, rat, fsz);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4465
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4466 case FAB$C_STM:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4467 strcpy (rfm, "rfm = stm");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4468 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4469
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4470 case FAB$C_STMCR:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4471 strcpy (rfm, "rfm = stmcr");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4472 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4473
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4474 case FAB$C_STMLF:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4475 strcpy (rfm, "rfm = stmlf");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4476 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4477
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4478 case FAB$C_UDF:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4479 strcpy (rfm, "rfm = udf");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4480 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4481
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4482 case FAB$C_VAR:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4483 strcpy (rfm, "rfm = var");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4484 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4485 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4486 strcpy (rat, "rat = ");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4487 if (st_buf.st_fab_rat & FAB$M_CR)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4488 strcat (rat, "cr");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4489 else if (st_buf.st_fab_rat & FAB$M_FTN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4490 strcat (rat, "ftn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4491 else if (st_buf.st_fab_rat & FAB$M_PRN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4492 strcat (rat, "prn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4493 if (st_buf.st_fab_rat & FAB$M_BLK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4494 if (st_buf.st_fab_rat & (FAB$M_CR|FAB$M_FTN|FAB$M_PRN))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4495 strcat (rat, ", blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4496 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4497 strcat (rat, "blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4498 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4499 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4500 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4501 strcpy (rfm, vms_stmlf_recfm ? "rfm = stmlf" : "rfm=var");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4502 strcpy (rat, "rat=cr");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4503 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4504 /* Until the VAX C RTL fixes the many bugs with modes, always use
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4505 mode 0 to get the user's default protection. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4506 fd = creat (name, 0, rfm, rat);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4507 if (fd < 0 && errno == EEXIST)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4508 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4509 if (unlink (name) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4510 report_file_error ("delete", build_string (name));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4511 fd = creat (name, 0, rfm, rat);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4512 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4513 return fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4514 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4515 #endif /* creat */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4516
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4517 /* fwrite to stdout is S L O W. Speed it up by using fputc...*/
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4518 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4519 sys_fwrite (ptr, size, num, fp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4520 register char * ptr;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4521 FILE * fp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4522 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4523 register int tot = num * size;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4524
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4525 while (tot--)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4526 fputc (*ptr++, fp);
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4527 return num;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4528 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4529
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4530 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4531 * The VMS C library routine creat actually creates a new version of an
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4532 * existing file rather than truncating the old version. There are times
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4533 * when this is not the desired behavior, for instance, when writing an
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4534 * auto save file (you only want one version), or when you don't have
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4535 * write permission in the directory containing the file (but the file
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4536 * itself is writable). Hence this routine, which is equivalent to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4537 * "close (creat (fn, 0));" on Unix if fn already exists.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4538 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4539 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4540 vms_truncate (fn)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4541 char *fn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4542 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4543 struct FAB xfab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4544 struct RAB xrab = cc$rms_rab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4545 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4546
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4547 xfab.fab$l_fop = FAB$M_TEF; /* free allocated but unused blocks on close */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4548 xfab.fab$b_fac = FAB$M_TRN | FAB$M_GET; /* allow truncate and get access */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4549 xfab.fab$b_shr = FAB$M_NIL; /* allow no sharing - file must be locked */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4550 xfab.fab$l_fna = fn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4551 xfab.fab$b_fns = strlen (fn);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4552 xfab.fab$l_dna = ";0"; /* default to latest version of the file */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4553 xfab.fab$b_dns = 2;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4554 xrab.rab$l_fab = &xfab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4555
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4556 /* This gibberish opens the file, positions to the first record, and
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4557 deletes all records from there until the end of file. */
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4558 if ((SYS$OPEN (&xfab) & 01) == 01)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4559 {
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4560 if ((SYS$CONNECT (&xrab) & 01) == 01 &&
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4561 (SYS$FIND (&xrab) & 01) == 01 &&
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4562 (SYS$TRUNCATE (&xrab) & 01) == 01)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4563 status = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4564 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4565 status = -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4566 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4567 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4568 status = -1;
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4569 SYS$CLOSE (&xfab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4570 return status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4571 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4572
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4573 /* Define this symbol to actually read SYSUAF.DAT. This requires either
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4574 SYSPRV or a readable SYSUAF.DAT. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4575
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4576 #ifdef READ_SYSUAF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4577 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4578 * getuaf.c
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4579 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4580 * Routine to read the VMS User Authorization File and return
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4581 * a specific user's record.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4582 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4583
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4584 static struct UAF retuaf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4585
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4586 struct UAF *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4587 get_uaf_name (uname)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4588 char * uname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4589 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4590 register status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4591 struct FAB uaf_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4592 struct RAB uaf_rab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4593
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4594 uaf_fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4595 uaf_rab = cc$rms_rab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4596 /* initialize fab fields */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4597 uaf_fab.fab$l_fna = "SYS$SYSTEM:SYSUAF.DAT";
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4598 uaf_fab.fab$b_fns = 21;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4599 uaf_fab.fab$b_fac = FAB$M_GET;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4600 uaf_fab.fab$b_org = FAB$C_IDX;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4601 uaf_fab.fab$b_shr = FAB$M_GET|FAB$M_PUT|FAB$M_UPD|FAB$M_DEL;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4602 /* initialize rab fields */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4603 uaf_rab.rab$l_fab = &uaf_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4604 /* open the User Authorization File */
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4605 status = SYS$OPEN (&uaf_fab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4606 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4607 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4608 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4609 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4610 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4611 }
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4612 status = SYS$CONNECT (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4613 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4614 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4615 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4616 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4617 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4618 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4619 /* read the requested record - index is in uname */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4620 uaf_rab.rab$l_kbf = uname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4621 uaf_rab.rab$b_ksz = strlen (uname);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4622 uaf_rab.rab$b_rac = RAB$C_KEY;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4623 uaf_rab.rab$l_ubf = (char *)&retuaf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4624 uaf_rab.rab$w_usz = sizeof retuaf;
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4625 status = SYS$GET (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4626 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4627 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4628 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4629 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4630 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4631 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4632 /* close the User Authorization File */
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4633 status = SYS$DISCONNECT (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4634 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4635 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4636 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4637 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4638 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4639 }
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4640 status = SYS$CLOSE (&uaf_fab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4641 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4642 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4643 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4644 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4645 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4646 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4647 return &retuaf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4648 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4649
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4650 struct UAF *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4651 get_uaf_uic (uic)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4652 unsigned long uic;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4653 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4654 register status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4655 struct FAB uaf_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4656 struct RAB uaf_rab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4657
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4658 uaf_fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4659 uaf_rab = cc$rms_rab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4660 /* initialize fab fields */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4661 uaf_fab.fab$l_fna = "SYS$SYSTEM:SYSUAF.DAT";
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4662 uaf_fab.fab$b_fns = 21;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4663 uaf_fab.fab$b_fac = FAB$M_GET;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4664 uaf_fab.fab$b_org = FAB$C_IDX;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4665 uaf_fab.fab$b_shr = FAB$M_GET|FAB$M_PUT|FAB$M_UPD|FAB$M_DEL;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4666 /* initialize rab fields */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4667 uaf_rab.rab$l_fab = &uaf_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4668 /* open the User Authorization File */
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4669 status = SYS$OPEN (&uaf_fab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4670 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4671 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4672 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4673 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4674 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4675 }
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4676 status = SYS$CONNECT (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4677 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4678 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4679 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4680 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4681 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4682 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4683 /* read the requested record - index is in uic */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4684 uaf_rab.rab$b_krf = 1; /* 1st alternate key */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4685 uaf_rab.rab$l_kbf = (char *) &uic;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4686 uaf_rab.rab$b_ksz = sizeof uic;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4687 uaf_rab.rab$b_rac = RAB$C_KEY;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4688 uaf_rab.rab$l_ubf = (char *)&retuaf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4689 uaf_rab.rab$w_usz = sizeof retuaf;
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4690 status = SYS$GET (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4691 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4692 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4693 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4694 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4695 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4696 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4697 /* close the User Authorization File */
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4698 status = SYS$DISCONNECT (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4699 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4700 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4701 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4702 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4703 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4704 }
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4705 status = SYS$CLOSE (&uaf_fab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4706 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4707 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4708 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4709 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4710 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4711 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4712 return &retuaf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4713 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4714
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4715 static struct passwd retpw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4716
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4717 struct passwd *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4718 cnv_uaf_pw (up)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4719 struct UAF * up;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4720 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4721 char * ptr;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4722
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4723 /* copy these out first because if the username is 32 chars, the next
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4724 section will overwrite the first byte of the UIC */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4725 retpw.pw_uid = up->uaf$w_mem;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4726 retpw.pw_gid = up->uaf$w_grp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4727
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
4728 /* I suppose this is not the best style, to possibly overwrite one
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4729 byte beyond the end of the field, but what the heck... */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4730 ptr = &up->uaf$t_username[UAF$S_USERNAME];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4731 while (ptr[-1] == ' ')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4732 ptr--;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4733 *ptr = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4734 strcpy (retpw.pw_name, up->uaf$t_username);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4735
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4736 /* the rest of these are counted ascii strings */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4737 strncpy (retpw.pw_gecos, &up->uaf$t_owner[1], up->uaf$t_owner[0]);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4738 retpw.pw_gecos[up->uaf$t_owner[0]] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4739 strncpy (retpw.pw_dir, &up->uaf$t_defdev[1], up->uaf$t_defdev[0]);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4740 retpw.pw_dir[up->uaf$t_defdev[0]] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4741 strncat (retpw.pw_dir, &up->uaf$t_defdir[1], up->uaf$t_defdir[0]);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4742 retpw.pw_dir[up->uaf$t_defdev[0] + up->uaf$t_defdir[0]] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4743 strncpy (retpw.pw_shell, &up->uaf$t_defcli[1], up->uaf$t_defcli[0]);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4744 retpw.pw_shell[up->uaf$t_defcli[0]] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4745
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4746 return &retpw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4747 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4748 #else /* not READ_SYSUAF */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4749 static struct passwd retpw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4750 #endif /* not READ_SYSUAF */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4751
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4752 struct passwd *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4753 getpwnam (name)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4754 char * name;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4755 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4756 #ifdef READ_SYSUAF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4757 struct UAF *up;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4758 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4759 char * user;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4760 char * dir;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4761 unsigned char * full;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4762 #endif /* READ_SYSUAF */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4763 char *ptr = name;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4764
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4765 while (*ptr)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4766 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4767 if ('a' <= *ptr && *ptr <= 'z')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4768 *ptr -= 040;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4769 ptr++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4770 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4771 #ifdef READ_SYSUAF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4772 if (!(up = get_uaf_name (name)))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4773 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4774 return cnv_uaf_pw (up);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4775 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4776 if (strcmp (name, getenv ("USER")) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4777 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4778 retpw.pw_uid = getuid ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4779 retpw.pw_gid = getgid ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4780 strcpy (retpw.pw_name, name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4781 if (full = egetenv ("FULLNAME"))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4782 strcpy (retpw.pw_gecos, full);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4783 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4784 *retpw.pw_gecos = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4785 strcpy (retpw.pw_dir, egetenv ("HOME"));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4786 *retpw.pw_shell = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4787 return &retpw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4788 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4789 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4790 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4791 #endif /* not READ_SYSUAF */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4792 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4793
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4794 struct passwd *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4795 getpwuid (uid)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4796 unsigned long uid;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4797 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4798 #ifdef READ_SYSUAF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4799 struct UAF * up;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4800
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4801 if (!(up = get_uaf_uic (uid)))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4802 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4803 return cnv_uaf_pw (up);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4804 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4805 if (uid == sys_getuid ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4806 return getpwnam (egetenv ("USER"));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4807 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4808 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4809 #endif /* not READ_SYSUAF */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4810 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4811
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4812 /* return total address space available to the current process. This is
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4813 the sum of the current p0 size, p1 size and free page table entries
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4814 available. */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4815 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4816 vlimit ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4817 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4818 int item_code;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4819 unsigned long free_pages;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4820 unsigned long frep0va;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4821 unsigned long frep1va;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4822 register status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4823
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4824 item_code = JPI$_FREPTECNT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4825 if (((status = LIB$GETJPI (&item_code, 0, 0, &free_pages)) & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4826 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4827 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4828 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4829 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4830 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4831 free_pages *= 512;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4832
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4833 item_code = JPI$_FREP0VA;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4834 if (((status = LIB$GETJPI (&item_code, 0, 0, &frep0va)) & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4835 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4836 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4837 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4838 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4839 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4840 item_code = JPI$_FREP1VA;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4841 if (((status = LIB$GETJPI (&item_code, 0, 0, &frep1va)) & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4842 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4843 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4844 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4845 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4846 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4847
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4848 return free_pages + frep0va + (0x7fffffff - frep1va);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4849 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4850
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4851 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4852 define_logical_name (varname, string)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4853 char *varname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4854 char *string;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4855 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4856 struct dsc$descriptor_s strdsc =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4857 {strlen (string), DSC$K_DTYPE_T, DSC$K_CLASS_S, string};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4858 struct dsc$descriptor_s envdsc =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4859 {strlen (varname), DSC$K_DTYPE_T, DSC$K_CLASS_S, varname};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4860 struct dsc$descriptor_s lnmdsc =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4861 {7, DSC$K_DTYPE_T, DSC$K_CLASS_S, "LNM$JOB"};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4862
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4863 return LIB$SET_LOGICAL (&envdsc, &strdsc, &lnmdsc, 0, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4864 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4865
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4866 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4867 delete_logical_name (varname)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4868 char *varname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4869 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4870 struct dsc$descriptor_s envdsc =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4871 {strlen (varname), DSC$K_DTYPE_T, DSC$K_CLASS_S, varname};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4872 struct dsc$descriptor_s lnmdsc =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4873 {7, DSC$K_DTYPE_T, DSC$K_CLASS_S, "LNM$JOB"};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4874
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4875 return LIB$DELETE_LOGICAL (&envdsc, &lnmdsc);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4876 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4877
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4878 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4879 ulimit ()
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4880 {
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4881 return 0;
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4882 }
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4883
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4884 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4885 setpgrp ()
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4886 {
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4887 return 0;
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4888 }
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4889
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4890 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4891 execvp ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4892 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4893 error ("execvp system call not implemented");
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4894 return -1;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4895 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4896
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4897 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4898 rename (from, to)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4899 char *from, *to;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4900 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4901 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4902 struct FAB from_fab = cc$rms_fab, to_fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4903 struct NAM from_nam = cc$rms_nam, to_nam = cc$rms_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4904 char from_esn[NAM$C_MAXRSS];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4905 char to_esn[NAM$C_MAXRSS];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4906
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4907 from_fab.fab$l_fna = from;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4908 from_fab.fab$b_fns = strlen (from);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4909 from_fab.fab$l_nam = &from_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4910 from_fab.fab$l_fop = FAB$M_NAM;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4911
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4912 from_nam.nam$l_esa = from_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4913 from_nam.nam$b_ess = sizeof from_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4914
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4915 to_fab.fab$l_fna = to;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4916 to_fab.fab$b_fns = strlen (to);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4917 to_fab.fab$l_nam = &to_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4918 to_fab.fab$l_fop = FAB$M_NAM;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4919
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4920 to_nam.nam$l_esa = to_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4921 to_nam.nam$b_ess = sizeof to_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4922
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4923 status = SYS$RENAME (&from_fab, 0, 0, &to_fab);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4924
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4925 if (status & 1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4926 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4927 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4928 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4929 if (status == RMS$_DEV)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4930 errno = EXDEV;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4931 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4932 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4933 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4934 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4935 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4936 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4937
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4938 /* This function renames a file like `rename', but it strips
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4939 the version number from the "to" filename, such that the "to" file is
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4940 will always be a new version. It also sets the file protection once it is
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4941 finished. The protection that we will use is stored in fab_final_pro,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4942 and was set when we did a creat_copy_attrs to create the file that we
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4943 are renaming.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4944
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4945 We could use the chmod function, but Eunichs uses 3 bits per user category
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4946 to describe the protection, and VMS uses 4 (write and delete are separate
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4947 bits). To maintain portability, the VMS implementation of `chmod' wires
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4948 the W and D bits together. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4949
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4950
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4951 static struct fibdef fib; /* We need this initialized to zero */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4952 char vms_file_written[NAM$C_MAXRSS];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4953
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4954 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4955 rename_sans_version (from,to)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4956 char *from, *to;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4957 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4958 short int chan;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4959 int stat;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4960 short int iosb[4];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4961 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4962 struct FAB to_fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4963 struct NAM to_nam = cc$rms_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4964 struct dsc$descriptor fib_d ={sizeof (fib),0,0,(char*) &fib};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4965 struct dsc$descriptor fib_attr[2]
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4966 = {{sizeof (fab_final_pro),ATR$C_FPRO,0,(char*) &fab_final_pro},{0,0,0,0}};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4967 char to_esn[NAM$C_MAXRSS];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4968
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4969 $DESCRIPTOR (disk,to_esn);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4970
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4971 to_fab.fab$l_fna = to;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4972 to_fab.fab$b_fns = strlen (to);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4973 to_fab.fab$l_nam = &to_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4974 to_fab.fab$l_fop = FAB$M_NAM;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4975
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4976 to_nam.nam$l_esa = to_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4977 to_nam.nam$b_ess = sizeof to_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4978
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4979 status = SYS$PARSE (&to_fab, 0, 0); /* figure out the full file name */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4980
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4981 if (to_nam.nam$l_fnb && NAM$M_EXP_VER)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4982 *(to_nam.nam$l_ver) = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4983
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4984 stat = rename (from, to_esn);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4985 if (stat < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4986 return stat;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4987
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4988 strcpy (vms_file_written, to_esn);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4989
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4990 to_fab.fab$l_fna = vms_file_written; /* this points to the versionless name */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4991 to_fab.fab$b_fns = strlen (vms_file_written);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4992
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4993 /* Now set the file protection to the correct value */
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4994 SYS$OPEN (&to_fab, 0, 0); /* This fills in the nam$w_fid fields */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4995
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4996 /* Copy these fields into the fib */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4997 fib.fib$r_fid_overlay.fib$w_fid[0] = to_nam.nam$w_fid[0];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4998 fib.fib$r_fid_overlay.fib$w_fid[1] = to_nam.nam$w_fid[1];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4999 fib.fib$r_fid_overlay.fib$w_fid[2] = to_nam.nam$w_fid[2];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5000
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
5001 SYS$CLOSE (&to_fab, 0, 0);
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
5002
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
5003 stat = SYS$ASSIGN (&disk, &chan, 0, 0); /* open a channel to the disk */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5004 if (!stat)
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
5005 LIB$SIGNAL (stat);
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
5006 stat = SYS$QIOW (0, chan, IO$_MODIFY, iosb, 0, 0, &fib_d,
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5007 0, 0, 0, &fib_attr, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5008 if (!stat)
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
5009 LIB$SIGNAL (stat);
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
5010 stat = SYS$DASSGN (chan);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5011 if (!stat)
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
5012 LIB$SIGNAL (stat);
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
5013 strcpy (vms_file_written, to_esn); /* We will write this to the terminal*/
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5014 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5015 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5016
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
5017 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5018 link (file, new)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5019 char * file, * new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5020 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5021 register status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5022 struct FAB fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5023 struct NAM nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5024 unsigned short fid[3];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5025 char esa[NAM$C_MAXRSS];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5026
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5027 fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5028 fab.fab$l_fop = FAB$M_OFP;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5029 fab.fab$l_fna = file;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5030 fab.fab$b_fns = strlen (file);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5031 fab.fab$l_nam = &nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5032
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5033 nam = cc$rms_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5034 nam.nam$l_esa = esa;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5035 nam.nam$b_ess = NAM$C_MAXRSS;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5036
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5037 status = SYS$PARSE (&fab);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5038 if ((status & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5039 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5040 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5041 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5042 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5043 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5044 status = SYS$SEARCH (&fab);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5045 if ((status & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5046 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5047 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5048 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5049 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5050 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5051
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5052 fid[0] = nam.nam$w_fid[0];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5053 fid[1] = nam.nam$w_fid[1];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5054 fid[2] = nam.nam$w_fid[2];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5055
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5056 fab.fab$l_fna = new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5057 fab.fab$b_fns = strlen (new);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5058
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5059 status = SYS$PARSE (&fab);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5060 if ((status & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5061 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5062 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5063 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5064 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5065 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5066
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5067 nam.nam$w_fid[0] = fid[0];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5068 nam.nam$w_fid[1] = fid[1];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5069 nam.nam$w_fid[2] = fid[2];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5070
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5071 nam.nam$l_esa = nam.nam$l_name;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5072 nam.nam$b_esl = nam.nam$b_name + nam.nam$b_type + nam.nam$b_ver;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5073
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5074 status = SYS$ENTER (&fab);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5075 if ((status & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5076 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5077 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5078 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5079 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5080 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5081
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5082 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5083 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5084
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
5085 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5086 croak (badfunc)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5087 char *badfunc;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5088 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5089 printf ("%s not yet implemented\r\n", badfunc);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5090 reset_sys_modes ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5091 exit (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5092 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5093
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5094 long
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5095 random ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5096 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5097 /* Arrange to return a range centered on zero. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5098 return rand () - (1 << 30);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5099 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5100
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
5101 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5102 srandom (seed)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5103 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5104 srand (seed);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5105 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5106 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5107
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
5108 #ifdef AIXHFT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5109
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5110 /* Called from init_sys_modes. */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
5111 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5112 hft_init ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5113 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5114 int junk;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5115
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5116 /* If we're not on an HFT we shouldn't do any of this. We determine
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5117 if we are on an HFT by trying to get an HFT error code. If this
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5118 call fails, we're not on an HFT. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5119 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5120 if (ioctl (0, HFQERROR, &junk) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5121 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5122 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5123 if (ioctl (0, HFQEIO, 0) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5124 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5125 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5126
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5127 /* On AIX the default hft keyboard mapping uses backspace rather than delete
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5128 as the rubout key's ASCII code. Here this is changed. The bug is that
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5129 there's no way to determine the old mapping, so in reset_sys_modes
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5130 we need to assume that the normal map had been present. Of course, this
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5131 code also doesn't help if on a terminal emulator which doesn't understand
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
5132 HFT VTD's. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5133 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5134 struct hfbuf buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5135 struct hfkeymap keymap;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5136
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5137 buf.hf_bufp = (char *)&keymap;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5138 buf.hf_buflen = sizeof (keymap);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5139 keymap.hf_nkeys = 2;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5140 keymap.hfkey[0].hf_kpos = 15;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5141 keymap.hfkey[0].hf_kstate = HFMAPCHAR | HFSHFNONE;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5142 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5143 keymap.hfkey[0].hf_keyidh = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5144 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5145 keymap.hfkey[0].hf_page = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5146 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5147 keymap.hfkey[0].hf_char = 127;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5148 keymap.hfkey[1].hf_kpos = 15;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5149 keymap.hfkey[1].hf_kstate = HFMAPCHAR | HFSHFSHFT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5150 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5151 keymap.hfkey[1].hf_keyidh = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5152 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5153 keymap.hfkey[1].hf_page = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5154 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5155 keymap.hfkey[1].hf_char = 127;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5156 hftctl (0, HFSKBD, &buf);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5157 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5158 /* The HFT system on AIX doesn't optimize for scrolling, so it's really ugly
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5159 at times. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5160 line_ins_del_ok = char_ins_del_ok = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5161 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5162
25578
4c9cf2c63703 [macintosh] (stat, fstat, mkdir, rmdir, utime, access)
Richard M. Stallman <rms@gnu.org>
parents: 25453
diff changeset
5163 /* Reset the rubout key to backspace. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5164
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
5165 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5166 hft_reset ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5167 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5168 struct hfbuf buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5169 struct hfkeymap keymap;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5170 int junk;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5171
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5172 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5173 if (ioctl (0, HFQERROR, &junk) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5174 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5175 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5176 if (ioctl (0, HFQEIO, 0) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5177 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5178 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5179
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5180 buf.hf_bufp = (char *)&keymap;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5181 buf.hf_buflen = sizeof (keymap);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5182 keymap.hf_nkeys = 2;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5183 keymap.hfkey[0].hf_kpos = 15;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5184 keymap.hfkey[0].hf_kstate = HFMAPCHAR | HFSHFNONE;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5185 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5186 keymap.hfkey[0].hf_keyidh = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5187 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5188 keymap.hfkey[0].hf_page = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5189 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5190 keymap.hfkey[0].hf_char = 8;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5191 keymap.hfkey[1].hf_kpos = 15;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5192 keymap.hfkey[1].hf_kstate = HFMAPCHAR | HFSHFSHFT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5193 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5194 keymap.hfkey[1].hf_keyidh = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5195 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5196 keymap.hfkey[1].hf_page = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5197 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5198 keymap.hfkey[1].hf_char = 8;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5199 hftctl (0, HFSKBD, &buf);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5200 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5201
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
5202 #endif /* AIXHFT */
9075
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5203
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5204 #ifdef USE_DL_STUBS
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5205
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5206 /* These are included on Sunos 4.1 when we do not use shared libraries.
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5207 X11 libraries may refer to these functions but (we hope) do not
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5208 actually call them. */
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5209
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5210 void *
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5211 dlopen ()
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5212 {
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5213 return 0;
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5214 }
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5215
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5216 void *
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5217 dlsym ()
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5218 {
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5219 return 0;
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5220 }
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5221
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5222 int
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5223 dlclose ()
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5224 {
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5225 return -1;
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5226 }
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5227
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5228 #endif /* USE_DL_STUBS */
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5229
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5230 #ifndef BSTRING
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5231
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5232 #ifndef bzero
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5233
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5234 void
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5235 bzero (b, length)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5236 register char *b;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5237 register int length;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5238 {
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5239 #ifdef VMS
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5240 short zero = 0;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5241 long max_str = 65535;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5242
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5243 while (length > max_str) {
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5244 (void) LIB$MOVC5 (&zero, &zero, &zero, &max_str, b);
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5245 length -= max_str;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5246 b += max_str;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5247 }
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5248 max_str = length;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5249 (void) LIB$MOVC5 (&zero, &zero, &zero, &max_str, b);
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5250 #else
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5251 while (length-- > 0)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5252 *b++ = 0;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5253 #endif /* not VMS */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5254 }
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5255
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5256 #endif /* no bzero */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5257 #endif /* BSTRING */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5258
11722
d7089b2620fb (bcmp, bcopy): Fix backward BSTRING conditionals.
Richard M. Stallman <rms@gnu.org>
parents: 11624
diff changeset
5259 #if (!defined (BSTRING) && !defined (bcopy)) || defined (NEED_BCOPY)
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5260 #undef bcopy
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5261
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5262 /* Saying `void' requires a declaration, above, where bcopy is used
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5263 and that declaration causes pain for systems where bcopy is a macro. */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5264 bcopy (b1, b2, length)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5265 register char *b1;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5266 register char *b2;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5267 register int length;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5268 {
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5269 #ifdef VMS
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5270 long max_str = 65535;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5271
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5272 while (length > max_str) {
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5273 (void) LIB$MOVC3 (&max_str, b1, b2);
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5274 length -= max_str;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5275 b1 += max_str;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5276 b2 += max_str;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5277 }
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5278 max_str = length;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5279 (void) LIB$MOVC3 (&length, b1, b2);
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5280 #else
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5281 while (length-- > 0)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5282 *b2++ = *b1++;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5283 #endif /* not VMS */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5284 }
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
5285 #endif /* (!defined (BSTRING) && !defined (bcopy)) || defined (NEED_BCOPY) */
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5286
11722
d7089b2620fb (bcmp, bcopy): Fix backward BSTRING conditionals.
Richard M. Stallman <rms@gnu.org>
parents: 11624
diff changeset
5287 #ifndef BSTRING
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5288 #ifndef bcmp
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5289 int
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5290 bcmp (b1, b2, length) /* This could be a macro! */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5291 register char *b1;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5292 register char *b2;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5293 register int length;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5294 {
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5295 #ifdef VMS
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5296 struct dsc$descriptor_s src1 = {length, DSC$K_DTYPE_T, DSC$K_CLASS_S, b1};
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5297 struct dsc$descriptor_s src2 = {length, DSC$K_DTYPE_T, DSC$K_CLASS_S, b2};
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5298
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5299 return STR$COMPARE (&src1, &src2);
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5300 #else
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5301 while (length-- > 0)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5302 if (*b1++ != *b2++)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5303 return 1;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5304
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5305 return 0;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5306 #endif /* not VMS */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5307 }
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5308 #endif /* no bcmp */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5309 #endif /* not BSTRING */
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5310
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5311 #ifndef HAVE_STRSIGNAL
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5312 char *
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5313 strsignal (code)
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5314 int code;
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5315 {
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5316 char *signame = 0;
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5317
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5318 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
5319 {
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5320 #ifdef VMS
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5321 signame = sys_errlist[code];
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5322 #else
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5323 /* 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
5324 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
5325 #endif
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5326 }
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5327
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5328 return signame;
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5329 }
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25674
diff changeset
5330 #endif /* HAVE_STRSIGNAL */
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 32236
diff changeset
5331