annotate src/sysdep.c @ 23323:0800a4f84757

(underlying_strftime): Set the buffer to a nonzero value before calling strftime, and check to see whether strftime has set the buffer to zero. This lets us distinguish between an empty buffer and an error. I'm installing this patch by hand now; it will be superseded whenever the glibc sources are propagated back to fsf.org.
author Paul Eggert <eggert@twinsun.com>
date Fri, 25 Sep 1998 21:40:23 +0000
parents a5d08eacb02b
children c4c37f5b8df6
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.
11286
91376c3783cb Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 11258
diff changeset
2 Copyright (C) 1985, 86, 87, 88, 93, 94, 95 Free Software Foundation, Inc.
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 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
8 the Free Software Foundation; either version 2, or (at your option)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 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
18 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
19 Boston, MA 02111-1307, USA. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
21
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22 #include <signal.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23 #include <setjmp.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24
4696
1fc792473491 Include <config.h> instead of "config.h".
Roland McGrath <roland@gnu.org>
parents: 4681
diff changeset
25 #include <config.h>
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26 #include "lisp.h"
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
27 #include "blockinput.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 #undef NULL
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 #define min(x,y) ((x) > (y) ? (y) : (x))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
32 /* In this file, open, read and write refer to the system calls,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
33 not our sugared interfaces sys_open, sys_read and sys_write.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34 Contrariwise, for systems where we use the system calls directly,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 define sys_read, etc. here as aliases for them. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 #ifndef read
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 #define sys_read read
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 #define sys_write write
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 #endif /* `read' is not a macro */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41 #undef read
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 #undef write
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
44 #ifdef WINDOWSNT
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
45 #define read _read
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
46 #define write _write
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
47 #include <windows.h>
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
48 extern int errno;
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
49 #endif /* not WINDOWSNT */
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
50
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 #ifndef close
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 #define sys_close close
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 #undef close
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 #ifndef open
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 #define sys_open open
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 #else /* `open' is a macro */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 #undef open
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 #endif /* `open' is a macro */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
63 /* 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
64 #ifndef fwrite
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
65 #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
66 #else
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
67 #undef fwrite
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
68 #endif
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
69
8330
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
70 #ifndef HAVE_H_ERRNO
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
71 extern int h_errno;
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
72 #endif
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
73
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 #include <stdio.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 #include <sys/types.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 #include <sys/stat.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 #include <errno.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78
11624
5c151211d571 [HAVE_UNISTD_H]: Include unistd.h.
Richard M. Stallman <rms@gnu.org>
parents: 11391
diff changeset
79 /* Get _POSIX_VDISABLE, if it is available. */
5c151211d571 [HAVE_UNISTD_H]: Include unistd.h.
Richard M. Stallman <rms@gnu.org>
parents: 11391
diff changeset
80 #ifdef HAVE_UNISTD_H
5c151211d571 [HAVE_UNISTD_H]: Include unistd.h.
Richard M. Stallman <rms@gnu.org>
parents: 11391
diff changeset
81 #include <unistd.h>
5c151211d571 [HAVE_UNISTD_H]: Include unistd.h.
Richard M. Stallman <rms@gnu.org>
parents: 11391
diff changeset
82 #endif
5c151211d571 [HAVE_UNISTD_H]: Include unistd.h.
Richard M. Stallman <rms@gnu.org>
parents: 11391
diff changeset
83
16003
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
84 /* 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
85 #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
86 #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
87 #endif
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
88
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
89 #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
90 #include <dos.h>
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
91 #include "dosfns.h"
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
92 #include "msdos.h"
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
93 #include <sys/param.h>
14971
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
94
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
95 #if __DJGPP__ > 1
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
96 extern int etext;
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
97 extern unsigned start __asm__ ("start");
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
98 #endif
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
99 #endif
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
100
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 extern int errno;
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
102
5533
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
103 #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
104 #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
105 #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
106 #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
107 #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
108 #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
109 #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
110 #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
111 #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
112 #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
113 #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
114 #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
115 #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
116 #else
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
117 #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
118 #endif
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
119 #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
120 #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
121 #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
122 #endif
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
123 #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
124 #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
125
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
126 #ifndef BSD4_1
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
127 #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
128 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
129 #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
130 #endif
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
131 #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
132 #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
133 #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
134 #endif
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
135 #endif
cabacc65710f Restore big block of #ifdef and #include lines for fcntl.h and friends,
Roland McGrath <roland@gnu.org>
parents: 5518
diff changeset
136 #endif /* not 4.1 bsd */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
138 #ifndef MSDOS
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 #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
140 #endif
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
141
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
142 #include "systty.h"
4640
1ae92cbb80ba Include syswait.h.
Richard M. Stallman <rms@gnu.org>
parents: 4438
diff changeset
143 #include "syswait.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 #ifdef BROKEN_TIOCGWINSZ
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 #undef TIOCGWINSZ
7559
c786925f32a5 [BROKEN_TIOCGWINSZ]: Undef TIOCSWINSZ too.
Richard M. Stallman <rms@gnu.org>
parents: 7482
diff changeset
147 #undef TIOCSWINSZ
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149
20288
3ef6fba94e13 Treat DGUX the same as USG.
Karl Heuer <kwzh@gnu.org>
parents: 20202
diff changeset
150 #if defined(USG) || defined(DGUX)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 #include <sys/utsname.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 #include <string.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 #ifndef MEMORY_IN_STRING_H
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 #include <memory.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 #endif
7326
f6e5ef4a73e3 Test ISC4_0 along with TIOCGWINSZ.
Richard M. Stallman <rms@gnu.org>
parents: 6895
diff changeset
156 #if defined (TIOCGWINSZ) || defined (ISC4_0)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 #ifdef NEED_SIOCTL
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 #include <sys/sioctl.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 #ifdef NEED_PTEM_H
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 #include <sys/stream.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 #include <sys/ptem.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 #endif
7326
f6e5ef4a73e3 Test ISC4_0 along with TIOCGWINSZ.
Richard M. Stallman <rms@gnu.org>
parents: 6895
diff changeset
164 #endif /* TIOCGWINSZ or ISC4_0 */
20288
3ef6fba94e13 Treat DGUX the same as USG.
Karl Heuer <kwzh@gnu.org>
parents: 20202
diff changeset
165 #endif /* USG or DGUX */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 extern int quit_char;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
169 #include "frame.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 #include "window.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 #include "termhooks.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 #include "termchar.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 #include "termopts.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 #include "dispextern.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 #include "process.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
177 #ifdef WINDOWSNT
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
178 #include <direct.h>
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
179 /* 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
180 #define _P_WAIT 0
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
181 int _CRTAPI1 _spawnlp (int, const char *, const char *, ...);
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
182 int _CRTAPI1 _getpid (void);
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
183 #endif
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
184
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 #ifdef NONSYSTEM_DIR_LIBRARY
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 #include "ndir.h"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 #endif /* NONSYSTEM_DIR_LIBRARY */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
189 #include "syssignal.h"
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
190 #include "systime.h"
9239
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
191 #ifdef HAVE_UTIME_H
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
192 #include <utime.h>
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
193 #endif
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
194
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
195 #ifndef HAVE_UTIMES
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
196 #ifndef HAVE_STRUCT_UTIMBUF
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
197 /* 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
198 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
199 struct utimbuf {
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
200 long actime;
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
201 long modtime;
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
202 };
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
203 #endif
d4ad53f37cc7 Include <utime.h> here instead of in systime.h.
Karl Heuer <kwzh@gnu.org>
parents: 9110
diff changeset
204 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205
11951
00a37f7ba63c (VFORK_RETURN_TYPE): Use int if not already defined.
Karl Heuer <kwzh@gnu.org>
parents: 11800
diff changeset
206 #ifndef VFORK_RETURN_TYPE
00a37f7ba63c (VFORK_RETURN_TYPE): Use int if not already defined.
Karl Heuer <kwzh@gnu.org>
parents: 11800
diff changeset
207 #define VFORK_RETURN_TYPE int
00a37f7ba63c (VFORK_RETURN_TYPE): Use int if not already defined.
Karl Heuer <kwzh@gnu.org>
parents: 11800
diff changeset
208 #endif
00a37f7ba63c (VFORK_RETURN_TYPE): Use int if not already defined.
Karl Heuer <kwzh@gnu.org>
parents: 11800
diff changeset
209
4952
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
210 /* 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
211 #ifndef LPASS8
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
212 #define LPASS8 0
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
213 #endif
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
214
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
215 #ifdef BSD4_1
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
216 #define LNOFLSH 0100000
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
217 #endif
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
218
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 static int baud_convert[] =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 #ifdef BAUD_CONVERT
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 BAUD_CONVERT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 0, 50, 75, 110, 135, 150, 200, 300, 600, 1200,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 1800, 2400, 4800, 9600, 19200, 38400
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 };
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228
19023
f7a3c16c49cb [HAVE_LIBNCURSES]: Declare ospeed as short, unless NCURSES_OSPEED_T.
Richard M. Stallman <rms@gnu.org>
parents: 18808
diff changeset
229 #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
230 extern short ospeed;
f7a3c16c49cb [HAVE_LIBNCURSES]: Declare ospeed as short, unless NCURSES_OSPEED_T.
Richard M. Stallman <rms@gnu.org>
parents: 18808
diff changeset
231 #else
18808
a431fbda7f23 Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18660
diff changeset
232 #if defined (HAVE_TERMIOS_H) && defined (LINUX)
a431fbda7f23 Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18660
diff changeset
233 #include <termios.h>
18660
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
234 /* HJL's version of libc is said to need this on the Alpha.
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
235 On the other hand, DEC OSF1 on the Alpha needs ospeed to be a short. */
16117
16c866efd8b5 [HAVE_TERMIOS_H]: Include termios.h.
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
236 extern speed_t ospeed;
16c866efd8b5 [HAVE_TERMIOS_H]: Include termios.h.
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
237 #else
15718
8db4678b2fd8 Undo previous changes.
Karl Heuer <kwzh@gnu.org>
parents: 15714
diff changeset
238 extern short ospeed;
16117
16c866efd8b5 [HAVE_TERMIOS_H]: Include termios.h.
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
239 #endif
19023
f7a3c16c49cb [HAVE_LIBNCURSES]: Declare ospeed as short, unless NCURSES_OSPEED_T.
Richard M. Stallman <rms@gnu.org>
parents: 18808
diff changeset
240 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
242 /* 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
243 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
244 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
245 int input_fd;
21769
07999a47f2ee (croak): Add forward declaration.
Richard M. Stallman <rms@gnu.org>
parents: 21532
diff changeset
246
07999a47f2ee (croak): Add forward declaration.
Richard M. Stallman <rms@gnu.org>
parents: 21532
diff changeset
247 void croak P_ ((char *));
07999a47f2ee (croak): Add forward declaration.
Richard M. Stallman <rms@gnu.org>
parents: 21532
diff changeset
248
22825
a5d08eacb02b [AIXHFT] (hft_init, hft_reset): Add declarations.
Richard M. Stallman <rms@gnu.org>
parents: 22336
diff changeset
249 #ifdef AIXHFT
a5d08eacb02b [AIXHFT] (hft_init, hft_reset): Add declarations.
Richard M. Stallman <rms@gnu.org>
parents: 22336
diff changeset
250 void hft_init ();
a5d08eacb02b [AIXHFT] (hft_init, hft_reset): Add declarations.
Richard M. Stallman <rms@gnu.org>
parents: 22336
diff changeset
251 void hft_reset ();
a5d08eacb02b [AIXHFT] (hft_init, hft_reset): Add declarations.
Richard M. Stallman <rms@gnu.org>
parents: 22336
diff changeset
252 #endif
21769
07999a47f2ee (croak): Add forward declaration.
Richard M. Stallman <rms@gnu.org>
parents: 21532
diff changeset
253
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
254
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
255 /* 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
256
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
257 void
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
258 change_input_fd (fd)
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
259 int fd;
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
260 {
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
261 input_fd = fd;
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
262 }
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
263
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
264 /* Discard pending input on descriptor input_fd. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
265
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
266 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 discard_tty_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 {
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
269 #ifndef WINDOWSNT
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
270 struct emacs_tty buf;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
271
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
272 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
273 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
274
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
275 /* Discarding input is not safe when the input could contain
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
276 replies from the X server. So don't do it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
277 if (read_socket_hook)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
278 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
279
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281 end_kbd_input ();
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
282 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
283 &buf.main, 0, 0, terminator_mask, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 queue_kbd_input ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
285 #else /* not VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
286 #ifdef APOLLO
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
287 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
288 int zero = 0;
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
289 ioctl (input_fd, TIOCFLUSH, &zero);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
290 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291 #else /* not Apollo */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
292 #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
293 while (dos_keyread () != -1)
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
294 ;
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
295 #else /* not MSDOS */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
296 EMACS_GET_TTY (input_fd, &buf);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
297 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
298 #endif /* not MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
299 #endif /* not Apollo */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
300 #endif /* not VMS */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
301 #endif /* not WINDOWSNT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
302 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 #ifdef SIGTSTP
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
306 /* 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
307 the terminal. */
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
308
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
309 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310 stuff_char (c)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
311 char c;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 {
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
313 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
314 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
315
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316 /* Should perhaps error if in batch mode */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
317 #ifdef TIOCSTI
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
318 ioctl (input_fd, TIOCSTI, &c);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
319 #else /* no TIOCSTI */
5167
6ac5c999a7cc (init_baud_rate): Avoid referring to sg uninitialized.
Richard M. Stallman <rms@gnu.org>
parents: 5158
diff changeset
320 error ("Cannot stuff terminal input characters in this version of Unix");
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
321 #endif /* no TIOCSTI */
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 #endif /* SIGTSTP */
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
325
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
326 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
327 init_baud_rate ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 ospeed = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332 {
18095
3cfea0947d1c (init_baud_rate): Use INIT_BAUD_RATE if it's defined.
Richard M. Stallman <rms@gnu.org>
parents: 17869
diff changeset
333 #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
334 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
335 #else
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
336 #ifdef DOS_NT
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
337 ospeed = 15;
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
338 #else /* not DOS_NT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
339 #ifdef VMS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
340 struct sensemode sg;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
341
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
342 SYS$QIOW (0, input_fd, IO$_SENSEMODE, &sg, 0, 0,
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343 &sg.class, 12, 0, 0, 0, 0 );
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
344 ospeed = sg.xmit_baud;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
345 #else /* not VMS */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
346 #ifdef HAVE_TERMIOS
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
347 struct termios sg;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
348
5167
6ac5c999a7cc (init_baud_rate): Avoid referring to sg uninitialized.
Richard M. Stallman <rms@gnu.org>
parents: 5158
diff changeset
349 sg.c_cflag = B9600;
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
350 tcgetattr (input_fd, &sg);
3559
a9b886b3f976 (init_baud_rate) [HAVE_TERMIOS]: Use cfgetospeed.
Richard M. Stallman <rms@gnu.org>
parents: 3472
diff changeset
351 ospeed = cfgetospeed (&sg);
8696
10ec51f5e4b0 (init_baud_rate): Test that getobaud is actually defined.
Richard M. Stallman <rms@gnu.org>
parents: 8690
diff changeset
352 #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
353 /* m88k-motorola-sysv3 needs this (ghazi@noc.rutgers.edu) 9/1/94. */
83a8062ca215 (init_baud_rate) [USE_GETOBAUD]: Use getobaud.
Richard M. Stallman <rms@gnu.org>
parents: 8368
diff changeset
354 if (ospeed == 0)
83a8062ca215 (init_baud_rate) [USE_GETOBAUD]: Use getobaud.
Richard M. Stallman <rms@gnu.org>
parents: 8368
diff changeset
355 ospeed = getobaud (sg.c_cflag);
83a8062ca215 (init_baud_rate) [USE_GETOBAUD]: Use getobaud.
Richard M. Stallman <rms@gnu.org>
parents: 8368
diff changeset
356 #endif
1048
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
357 #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
358 #ifdef HAVE_TERMIO
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
359 struct termio sg;
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
360
5167
6ac5c999a7cc (init_baud_rate): Avoid referring to sg uninitialized.
Richard M. Stallman <rms@gnu.org>
parents: 5158
diff changeset
361 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
362 #ifdef HAVE_TCATTR
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
363 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
364 #else
2121
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
365 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
366 #endif
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
367 ospeed = sg.c_cflag & CBAUD;
9899cb2199af * sysdep.c (init_baud_rate): Re-arranged order of conditionals -
Jim Blandy <jimb@redhat.com>
parents: 1014
diff changeset
368 #else /* neither VMS nor TERMIOS nor TERMIO */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
369 struct sgttyb sg;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
370
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
371 sg.sg_ospeed = B9600;
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
372 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
373 abort ();
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
374 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
375 #endif /* not HAVE_TERMIO */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
376 #endif /* not HAVE_TERMIOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
377 #endif /* not VMS */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
378 #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
379 #endif /* not INIT_BAUD_RATE */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
380 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
382 baud_rate = (ospeed < sizeof baud_convert / sizeof baud_convert[0]
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
383 ? baud_convert[ospeed] : 9600);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384 if (baud_rate == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
385 baud_rate = 1200;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
386 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
388 /*ARGSUSED*/
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
389 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
390 set_exclusive_use (fd)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
391 int fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
392 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
393 #ifdef FIOCLEX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
394 ioctl (fd, FIOCLEX, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
395 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
396 /* Ok to do nothing if this feature does not exist */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
397 }
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
398
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
399 #ifndef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
400
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
401 wait_without_blocking ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
402 {
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
403 #ifdef BSD_SYSTEM
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
404 wait3 (0, WNOHANG | WUNTRACED, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
406 croak ("wait_without_blocking");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
408 synch_process_alive = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
409 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
410
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
411 #endif /* not subprocesses */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
412
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
413 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
414 (at least for bsd). */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
415
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
416 SIGTYPE
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
417 wait_for_termination_signal ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418 {}
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
419
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
420 /* Wait for subprocess with process id `pid' to terminate and
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
421 make sure it will get eliminated (not remain forever as a zombie) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
422
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
423 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
424 wait_for_termination (pid)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
425 int pid;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
426 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
427 while (1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
428 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
429 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
430 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
431 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
432
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
433 status = SYS$FORCEX (&pid, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
434 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
435 #else /* not VMS */
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
436 #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
437 /* 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
438 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
439 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
440 /* 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
441 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
442 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
443 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
444 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
445 if (0 > kill (pid, 0))
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
446 {
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
447 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
448 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
449 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
450 }
9ac629dc3a4b (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives).
Richard M. Stallman <rms@gnu.org>
parents: 2939
diff changeset
451 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
452 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
453 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
454 sigpause (SIGEMPTYMASK);
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
455 #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
456 #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
457 if (0 > kill (pid, 0))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
458 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
459 wait (0);
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
460 #else /* neither BSD_SYSTEM nor UNIPLUS: random sysV */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
461 #ifdef POSIX_SIGNALS /* would this work for LINUX as well? */
3301
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
462 sigblock (sigmask (SIGCHLD));
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
463 if (0 > kill (pid, 0))
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
464 {
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
465 sigunblock (sigmask (SIGCHLD));
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
466 break;
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
467 }
3472
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
468 sigpause (SIGEMPTYMASK);
3301
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
469 #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
470 #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
471 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
472 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
473 {
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 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
475 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
476 }
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 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
478 #else /* not HAVE_SYSV_SIGPAUSE */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
479 #ifdef WINDOWSNT
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
480 wait (0);
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
481 break;
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
482 #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
483 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
484 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
485 /* 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
486 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
487 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
488 sleep (1);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
489 #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
490 #endif /* not HAVE_SYSV_SIGPAUSE */
3301
aaf396661221 (wait_for_termination): Add POSIX_SIGNALS alternative.
Richard M. Stallman <rms@gnu.org>
parents: 3292
diff changeset
491 #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
492 #endif /* not UNIPLUS */
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
493 #endif /* not BSD_SYSTEM, and not HPUX version >= 6 */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
494 #endif /* not VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
495 #else /* not subprocesses */
14971
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
496 #if __DJGPP__ > 1
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
497 break;
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
498 #else /* not __DJGPP__ > 1 */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
499 #ifndef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
500 if (kill (pid, 0) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
501 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
502 wait (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
503 #else /* BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
504 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
505 status = wait (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
506 if (status == pid || status == -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
507 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
508 #endif /* BSD4_1 */
14971
497b73cc5818 [DJGPP v2] (etext, start): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 14790
diff changeset
509 #endif /* not __DJGPP__ > 1*/
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
510 #endif /* not subprocesses */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
511 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
512 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
513
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
514 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
515
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
516 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
517 * flush any pending output
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
518 * (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
519 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
520
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
521 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
522 flush_pending_output (channel)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
523 int channel;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
524 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
525 #ifdef HAVE_TERMIOS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
526 /* If we try this, we get hit with SIGTTIN, because
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
527 the child's tty belongs to the child's pgrp. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
528 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
529 #ifdef TCFLSH
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
530 ioctl (channel, TCFLSH, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
531 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
532 #ifdef TIOCFLUSH
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
533 int zero = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
534 /* 3rd arg should be ignored
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
535 but some 4.2 kernels actually want the address of an int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
536 and nonzero means something different. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
537 ioctl (channel, TIOCFLUSH, &zero);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
538 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
539 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
540 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
541 }
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
542
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
543 #ifndef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
544 /* Set up the terminal at the other end of a pseudo-terminal that
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
545 we will be controlling an inferior through.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
546 It should not echo or do line-editing, since that is done
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
547 in Emacs. No padding needed for insertion into an Emacs buffer. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
548
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
549 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
550 child_setup_tty (out)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
551 int out;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
552 {
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
553 #ifndef DOS_NT
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
554 struct emacs_tty s;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
555
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
556 EMACS_GET_TTY (out, &s);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
557
1927
c6dc1a37aeb4 * sysdep.c (child_setup_tty): Recognize HAVE_TERMIOS as well as
Jim Blandy <jimb@redhat.com>
parents: 1596
diff changeset
558 #if defined (HAVE_TERMIO) || defined (HAVE_TERMIOS)
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
559 s.main.c_oflag |= OPOST; /* Enable output postprocessing */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
560 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
561 #ifdef NLDLY
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
562 s.main.c_oflag &= ~(NLDLY|CRDLY|TABDLY|BSDLY|VTDLY|FFDLY);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
563 /* 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
564 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
565 s.main.c_lflag &= ~ECHO; /* Disable echo */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
566 s.main.c_lflag |= ISIG; /* Enable signals */
5967
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
567 #ifdef IUCLC
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
568 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
569 #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
570 #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
571 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
572 #endif
5972
ccb0f99750e3 (child_setup_tty): Typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 5967
diff changeset
573 #ifdef OLCUC
5967
ac268a6d91d6 (child_setup_tty): Use IUCLC, OLCUC, NLDLY only if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5964
diff changeset
574 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
575 #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
576 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
577 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
578 #if 0
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
579 /* Said to be unnecessary: */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
580 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
581 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
582 #endif
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
583
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
584 s.main.c_lflag |= ICANON; /* Enable erase/kill and eof processing */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
585 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
586 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
587 s.main.c_cc[VKILL] = CDISABLE; /* disable kill processing */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
588
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
589 #ifdef HPUX
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
590 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
591 #endif /* HPUX */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
592
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
593 #ifdef AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
594 /* AIX enhanced edit loses NULs, so disable it */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
595 #ifndef IBMR2AIX
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
596 s.main.c_line = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
597 s.main.c_iflag &= ~ASCEDIT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
598 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
599 /* Also, PTY overloads NUL and BREAK.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
600 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
601 s.main.c_iflag &= ~IGNBRK;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
602 s.main.c_iflag &= ~BRKINT;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
603 /* QUIT and INTR work better as signals, so disable character forms */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
604 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
605 #ifdef SIGNALS_VIA_CHARACTERS
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
606 /* 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
607 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
608 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
609 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
610 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
611 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
612 #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
613 /* 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
614 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
615 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
616 s.main.c_lflag &= ~ISIG;
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
617 #endif /* no TIOCGPGRP or no TIOCGLTC or no TIOCGETC */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
618 s.main.c_cc[VEOL] = 0377;
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 /* AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
621
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
622 #else /* not HAVE_TERMIO */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
623
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
624 s.main.sg_flags &= ~(ECHO | CRMOD | ANYP | ALLDELAY | RAW | LCASE
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
625 | CBREAK | TANDEM);
4952
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
626 s.main.sg_flags |= LPASS8;
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
627 s.main.sg_erase = 0377;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
628 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
629 s.lmode = LLITOUT | s.lmode; /* Don't strip 8th bit */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
630
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
631 #endif /* not HAVE_TERMIO */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
632
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
633 EMACS_SET_TTY (out, &s, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
634
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
635 #ifdef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
636 if (interrupt_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
637 reset_sigio ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
638 #endif /* BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
639 #ifdef RTU
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
640 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
641 int zero = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
642 ioctl (out, FIOASYNC, &zero);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
643 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
644 #endif /* RTU */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
645 #endif /* not DOS_NT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
646 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
647 #endif /* not VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
648
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
649 #endif /* subprocesses */
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
650
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
651 /* Record a signal code and the handler for it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
652 struct save_signal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
653 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
654 int code;
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
655 SIGTYPE (*handler) P_ ((int));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
656 };
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
657
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
658 static void save_signal_handlers P_ ((struct save_signal *));
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
659 static void restore_signal_handlers P_ ((struct save_signal *));
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
660
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
661 /* Suspend the Emacs process; give terminal to its superior. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
662
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
663 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
664 sys_suspend ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
665 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
666 #ifdef VMS
1171
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
667 /* "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
668 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
669 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
670 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
671 char *fpid_string;
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
672
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
673 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
674 if (fpid_string != NULL)
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
675 {
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
676 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
677 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
678 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
679 else
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
680 parent_id = getppid ();
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
681 }
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
682 else
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
683 parent_id = getppid ();
5c942f6b2d63 (sys_suspend): Read EMACS_PARENT_PID envvar for parent.
Richard M. Stallman <rms@gnu.org>
parents: 1102
diff changeset
684
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
685 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
686
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
687 if (parent_id && parent_id != 0xffffffff)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
688 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
689 SIGTYPE (*oldsig)() = (int) signal (SIGINT, SIG_IGN);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
690 int status = LIB$ATTACH (&parent_id) & 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
691 signal (SIGINT, oldsig);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
692 return status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
693 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
694 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
695 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
696 struct {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
697 int l;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
698 char *a;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
699 } d_prompt;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
700 d_prompt.l = sizeof ("Emacs: "); /* Our special prompt */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
701 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
702 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
703 return 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
704 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
705 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
706 #else
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
707 #if defined(SIGTSTP) && !defined(MSDOS)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
708
3826
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
709 {
4958
8d58e388e71b (sys_suspend): Use EMACS_GETPGRP macro.
Richard M. Stallman <rms@gnu.org>
parents: 4952
diff changeset
710 int pgrp = EMACS_GETPGRP (0);
3826
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
711 EMACS_KILLPG (pgrp, SIGTSTP);
647bef18618f Changes for Irix 4.0, tested this time:
Jim Blandy <jimb@redhat.com>
parents: 3797
diff changeset
712 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
713
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
714 #else /* No SIGTSTP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
715 #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
716 ptrace (0, 0, 0, 0); /* set for ptrace - caught by csh */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
717 kill (getpid (), SIGQUIT);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
718
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
719 #else /* No SIGTSTP or USG_JOBCTRL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
720
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
721 /* On a system where suspending is not implemented,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
722 instead fork a subshell and let it talk directly to the terminal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
723 while we wait. */
6102
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
724 sys_subshell ();
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
725
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
726 #endif /* no USG_JOBCTRL */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
727 #endif /* no SIGTSTP */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
728 #endif /* not VMS */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
729 }
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
730
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
731 /* Fork a subshell. */
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
732
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
733 void
6102
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
734 sys_subshell ()
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
735 {
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
736 #ifndef VMS
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
737 #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
738 int st;
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
739 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
740 #endif
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
741 int pid;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
742 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
743 Lisp_Object dir;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
744 unsigned char *str = 0;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
745 int len;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
746
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
747 saved_handlers[0].code = SIGINT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
748 saved_handlers[1].code = SIGQUIT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
749 saved_handlers[2].code = SIGTERM;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
750 #ifdef SIGIO
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
751 saved_handlers[3].code = SIGIO;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
752 saved_handlers[4].code = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
753 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
754 saved_handlers[3].code = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
755 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
756
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
757 /* 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
758 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
759
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
760 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
761 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
762 goto xyzzy;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
763 dir = Fsymbol_value (dir);
9110
c0eefdfd11f4 (sys_subshell): Use type test macros.
Karl Heuer <kwzh@gnu.org>
parents: 9082
diff changeset
764 if (!STRINGP (dir))
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
765 goto xyzzy;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
766
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
767 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
768 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
769 len = XSTRING (dir)->size;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
770 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
771 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
772 str[len] = 0;
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
773 xyzzy:
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
774
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
775 #ifdef DOS_NT
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
776 pid = 0;
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
777 #if __DJGPP__ > 1
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
778 save_signal_handlers (saved_handlers);
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
779 synch_process_alive = 1;
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
780 #endif /* __DJGPP__ > 1 */
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
781 #else
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
782 pid = vfork ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
783 if (pid == -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
784 error ("Can't spawn subshell");
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
785 #endif
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
786
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
787 if (pid == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
788 {
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
789 char *sh = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
790
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
791 #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
792 getwd (oldwd);
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
793 if (sh == 0)
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
794 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
795 #endif
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
796 if (sh == 0)
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
797 sh = (char *) egetenv ("SHELL");
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
798 if (sh == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
799 sh = "sh";
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
800
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
801 /* 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
802 if (str)
22336
0af99a2dc706 (sys_subshell): Cast arg to chdir.
Karl Heuer <kwzh@gnu.org>
parents: 21843
diff changeset
803 chdir ((char *) str);
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
804
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
805 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
806 close_process_descs (); /* Close Emacs's pipes/ptys */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
807 #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
808
7482
8193d122cf6e (sys_subshell): PRIO_PROCESS renamed to SET_EMACS_PRIORITY.
Richard M. Stallman <rms@gnu.org>
parents: 7326
diff changeset
809 #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
810 {
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
811 extern int 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
812
7482
8193d122cf6e (sys_subshell): PRIO_PROCESS renamed to SET_EMACS_PRIORITY.
Richard M. Stallman <rms@gnu.org>
parents: 7326
diff changeset
813 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
814 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
815 }
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
816 #endif
bc1acd76b294 * sysdep.c (sys_suspend): Don't try to use "nice (- nice (0))" to
Jim Blandy <jimb@redhat.com>
parents: 1171
diff changeset
817
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
818 #ifdef MSDOS /* Demacs 1.1.2 91/10/20 Manabu Higashida */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
819 st = system (sh);
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
820 chdir (oldwd);
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
821 #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
822 if (st)
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
823 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
824 #endif
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
825 #else /* not MSDOS */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
826 #ifdef WINDOWSNT
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
827 /* Waits for process completion */
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
828 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
829 chdir (oldwd);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
830 if (pid == -1)
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
831 write (1, "Can't execute subshell", 22);
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
832 #else /* not WINDOWSNT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
833 execlp (sh, sh, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
834 write (1, "Can't execute subshell", 22);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
835 _exit (1);
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
836 #endif /* not WINDOWSNT */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
837 #endif /* not MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
838 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
839
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
840 /* 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
841 #if !defined (MSDOS) || __DJGPP__ == 1
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
842 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
843 synch_process_alive = 1;
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
844 #endif
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
845
19699
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
846 #ifndef DOS_NT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
847 wait_for_termination (pid);
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
848 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
849 restore_signal_handlers (saved_handlers);
14991
0147f1c8cd2c (sys_subshell): Add conditionals for DJGPP v2.
Richard M. Stallman <rms@gnu.org>
parents: 14971
diff changeset
850 synch_process_alive = 0;
6102
a92ee78acd12 (sys_subshell): New function, split from sys_suspend.
Karl Heuer <kwzh@gnu.org>
parents: 5972
diff changeset
851 #endif /* !VMS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
852 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
853
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
854 static void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
855 save_signal_handlers (saved_handlers)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
856 struct save_signal *saved_handlers;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
857 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
858 while (saved_handlers->code)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
859 {
692
681c352bbf30 *** empty log message ***
Joseph Arceneaux <jla@gnu.org>
parents: 648
diff changeset
860 saved_handlers->handler
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
861 = (SIGTYPE (*) P_ ((int))) signal (saved_handlers->code, SIG_IGN);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
862 saved_handlers++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
863 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
864 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
865
20348
3665989afd33 Add prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20293
diff changeset
866 static void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
867 restore_signal_handlers (saved_handlers)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
868 struct save_signal *saved_handlers;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
869 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
870 while (saved_handlers->code)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
871 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
872 signal (saved_handlers->code, saved_handlers->handler);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
873 saved_handlers++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
874 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
875 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
876
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
877 #ifdef F_SETFL
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
878
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
879 int old_fcntl_flags;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
880
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
881 void
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
882 init_sigio (fd)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
883 int fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
884 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
885 #ifdef FASYNC
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
886 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
887 fcntl (fd, F_SETFL, old_fcntl_flags | FASYNC);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
888 #endif
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
889 interrupts_deferred = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
890 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
891
20379
e6db4b8d2834 (reset_sigio): Return void.
Andreas Schwab <schwab@suse.de>
parents: 20367
diff changeset
892 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
893 reset_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
894 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
895 unrequest_sigio ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
896 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
897
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
898 #ifdef FASYNC /* F_SETFL does not imply existence of FASYNC */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
899
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
900 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
901 request_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
902 {
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
903 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
904 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
905
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
906 #ifdef SIGWINCH
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
907 sigunblock (sigmask (SIGWINCH));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
908 #endif
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
909 fcntl (input_fd, F_SETFL, old_fcntl_flags | FASYNC);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
910
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
911 interrupts_deferred = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
912 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
913
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
914 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
915 unrequest_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
916 {
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
917 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
918 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
919
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
920 #ifdef SIGWINCH
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
921 sigblock (sigmask (SIGWINCH));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
922 #endif
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
923 fcntl (input_fd, F_SETFL, old_fcntl_flags);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
924 interrupts_deferred = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
925 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
926
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
927 #else /* no FASYNC */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
928 #ifdef STRIDE /* Stride doesn't have FASYNC - use FIOASYNC */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
929
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
930 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
931 request_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
932 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
933 int on = 1;
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
934
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
935 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
936 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
937
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
938 ioctl (input_fd, FIOASYNC, &on);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
939 interrupts_deferred = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
940 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
941
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
942 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
943 unrequest_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
944 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
945 int off = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
946
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
947 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
948 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
949
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
950 ioctl (input_fd, FIOASYNC, &off);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
951 interrupts_deferred = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
952 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
953
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
954 #else /* not FASYNC, not STRIDE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
955
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
956 #ifdef _CX_UX
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
957
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
958 #include <termios.h>
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
959
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
960 void
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
961 request_sigio ()
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
962 {
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
963 int on = 1;
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
964 sigset_t st;
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
965
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
966 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
967 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
968
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
969 sigemptyset(&st);
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
970 sigaddset(&st, SIGIO);
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
971 ioctl (input_fd, FIOASYNC, &on);
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
972 interrupts_deferred = 0;
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
973 sigprocmask(SIG_UNBLOCK, &st, (sigset_t *)0);
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
974 }
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
975
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
976 void
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
977 unrequest_sigio ()
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
978 {
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
979 int off = 0;
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
980
9688
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
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
984 ioctl (input_fd, FIOASYNC, &off);
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
985 interrupts_deferred = 1;
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
986 }
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
987
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
988 #else /* ! _CX_UX */
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
989
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
990 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
991 request_sigio ()
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
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
996 croak ("request_sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
997 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
998
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
999 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1000 unrequest_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1001 {
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1002 if (read_socket_hook)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1003 return;
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1004
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1005 croak ("unrequest_sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1006 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1007
5594
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
1008 #endif /* _CX_UX */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1009 #endif /* STRIDE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1010 #endif /* FASYNC */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1011 #endif /* F_SETFL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1012
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1013 /* 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
1014
5964
1b850ec1a5e2 (init_sys_modes, reset_sys_modes): Test BSD_PGRPS.
Richard M. Stallman <rms@gnu.org>
parents: 5960
diff changeset
1015 #ifdef BSD_PGRPS
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1016
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1017 /* 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
1018 started.
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1019
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1020 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
1021 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
1022 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
1023 Everything is fine.
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1024
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1025 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
1026 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
1027 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
1028 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
1029 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
1030 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
1031 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
1032 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
1033 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
1034 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
1035 int inherited_pgroup;
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1036
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1037 /* 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
1038 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
1039 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
1040 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
1041 void
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1042 narrow_foreground_group ()
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1043 {
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1044 int me = getpid ();
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1045
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1046 setpgrp (0, inherited_pgroup);
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1047 if (inherited_pgroup != me)
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1048 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
1049 setpgrp (0, me);
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1050 }
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1051
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1052 /* Set the tty to our original foreground group. */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1053 void
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1054 widen_foreground_group ()
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1055 {
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1056 if (inherited_pgroup != getpid ())
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1057 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
1058 setpgrp (0, inherited_pgroup);
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1059 }
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 #endif /* BSD_PGRPS */
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1062
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1063 /* 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
1064
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1065 /* 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
1066 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
1067 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
1068 int
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1069 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
1070 int fd;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1071 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
1072 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1073 /* 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
1074 #ifdef HAVE_TCATTR
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1075 /* 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
1076 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
1077 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
1078 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1079
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1080 #else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1081 #ifdef HAVE_TERMIO
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1082 /* 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
1083 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
1084 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1085
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1086 #else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1087 #ifdef VMS
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1088 /* Vehemently Monstrous System? :-) */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1089 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
1090 &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
1091 & 1))
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1092 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1093
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1094 #else
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1095 #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
1096 /* 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
1097 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
1098 return -1;
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1099 #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
1100 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1101 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1102 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1103
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1104 /* 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
1105 #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
1106 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
1107 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1108 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1109
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1110 /* 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
1111 #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
1112 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
1113 || 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
1114 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1115 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1116
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1117 /* 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
1118 return 0;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1119 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1120
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1121
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1122 /* 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
1123 *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
1124 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
1125
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1126 int
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
1127 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
1128 int fd;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1129 struct emacs_tty *settings;
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
1130 int flushp;
2656
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 /* 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
1133 #ifdef HAVE_TCATTR
3321
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1134 int i;
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1135 /* 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
1136 William J. Smith <wjs@wiis.wang.com> writes:
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1137 "POSIX 1003.1 defines tcsetattr() to return success if it was
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1138 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
1139 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
1140 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
1141 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
1142 /* 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
1143 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
1144 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
1145 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1146 if (errno == EINTR)
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1147 continue;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1148 else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1149 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1150 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1151 else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1152 {
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1153 struct termios new;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1154
21843
600f19764b68 (emacs_get_tty): Zero out termios structure before
Andreas Schwab <schwab@suse.de>
parents: 21769
diff changeset
1155 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
1156 /* 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
1157 tcgetattr (fd, &new);
3321
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1158 /* 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
1159 * 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
1160 * not be filled in.
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1161 */
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1162 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
1163 && 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
1164 && 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
1165 && new.c_lflag == settings->main.c_lflag
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1166 && memcmp(new.c_cc, settings->main.c_cc, NCCS) == 0)
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1167 break;
d2adfd22a854 (child_setup_tty) [AIX SIGNALS_VIA_CHARACTERS]: Install
Richard M. Stallman <rms@gnu.org>
parents: 3301
diff changeset
1168 else
2656
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1169 continue;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1170 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1171
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1172 #else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1173 #ifdef HAVE_TERMIO
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1174 /* The SYSV-style interface? */
12231
c00af359fde5 (emacs_set_tty): Swap TCSETAF and TCSETAW.
Richard M. Stallman <rms@gnu.org>
parents: 12070
diff changeset
1175 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
1176 return -1;
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 #else
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1179 #ifdef VMS
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1180 /* Vehemently Monstrous System? :-) */
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1181 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
1182 &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
1183 & 1))
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1184 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1185
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1186 #else
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1187 #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
1188 /* 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
1189 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
1190 return -1;
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1191 #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
1192
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1193 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1194 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1195 #endif
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 /* 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
1198 #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
1199 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
1200 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1201 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1202
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1203 /* 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
1204 #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
1205 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
1206 || 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
1207 return -1;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1208 #endif
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1209
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1210 /* 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
1211 return 0;
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1212 }
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1213
93eda11d38de * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into
Jim Blandy <jimb@redhat.com>
parents: 2589
diff changeset
1214
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1215 /* The initial tty mode bits */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1216 struct emacs_tty old_tty;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1217
12070
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1218 /* 1 if we have been through init_sys_modes. */
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1219 int term_initted;
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1220
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1221 /* 1 if outer tty status has been recorded. */
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1222 int old_tty_valid;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1223
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1224 #ifdef BSD4_1
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1225 /* 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
1226 sigio. */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1227 int lmode;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1228 #endif
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1229
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1230 #ifndef F_SETOWN_BUG
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1231 #ifdef F_SETOWN
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1232 int old_fcntl_owner;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1233 #endif /* F_SETOWN */
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1234 #endif /* F_SETOWN_BUG */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1235
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1236 /* This may also be defined in stdio,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1237 but if so, this does no harm,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1238 and using the same name avoids wasting the other one's space. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1239
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1240 #if defined (USG) || defined (DGUX)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1241 unsigned char _sobuf[BUFSIZ+8];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1242 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1243 char _sobuf[BUFSIZ];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1244 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1245
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1246 #ifdef HAVE_LTCHARS
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1247 static struct ltchars new_ltchars = {-1,-1,-1,-1,-1,-1};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1248 #endif
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1249 #ifdef HAVE_TCHARS
17869
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
1250 static struct tchars new_tchars = {-1,-1,-1,-1,-1,-1};
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1251 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1252
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1253 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1254 init_sys_modes ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1255 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1256 struct emacs_tty tty;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1257
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1258 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1259 #if 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1260 static int oob_chars[2] = {0, 1 << 7}; /* catch C-g's */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1261 extern int (*interrupt_signal) ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1262 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1263 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1264
17869
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
1265 Vtty_erase_char = Qnil;
a2fefbc6e46b (init_sys_modes): Initialize Vtty_erase_char if
Richard M. Stallman <rms@gnu.org>
parents: 17108
diff changeset
1266
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1267 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1268 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1269
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1270 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1271 if (!input_ef)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1272 input_ef = get_kbd_event_flag ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1273 /* LIB$GET_EF (&input_ef); */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1274 SYS$CLREF (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1275 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1276 if (!timer_ef)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1277 timer_ef = get_timer_event_flag ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1278 /* LIB$GET_EF (&timer_ef); */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1279 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
1280 #if 0
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1281 if (!process_ef)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1282 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1283 LIB$GET_EF (&process_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1284 SYS$CLREF (process_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1285 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1286 if (input_ef / 32 != process_ef / 32)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1287 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
1288 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1289 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
1290 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
1291 #if 0
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1292 input_eflist = ((unsigned) 1 << (input_ef % 32)) |
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1293 ((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
1294 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1295 timer_eflist = ((unsigned) 1 << (input_ef % 32)) |
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1296 ((unsigned) 1 << (timer_ef % 32));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1297 #ifndef VMS4_4
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1298 sys_access_reinit ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1299 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1300 #endif /* not VMS */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1301
5964
1b850ec1a5e2 (init_sys_modes, reset_sys_modes): Test BSD_PGRPS.
Richard M. Stallman <rms@gnu.org>
parents: 5960
diff changeset
1302 #ifdef BSD_PGRPS
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1303 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
1304 narrow_foreground_group ();
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1305 #endif
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1306
13416
58e22ceabff4 [HAVE_NTGUI] (init_sys_modes, reset_sys_modes):
Geoff Voelker <voelker@cs.washington.edu>
parents: 13174
diff changeset
1307 #ifdef HAVE_WINDOW_SYSTEM
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1308 /* Emacs' window system on MSDOG uses the `internal terminal' and therefore
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1309 needs the initialization code below. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1310 if (!read_socket_hook && EQ (Vwindow_system, Qnil))
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1311 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1312 {
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1313 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
1314
12070
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1315 old_tty_valid = 1;
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1316
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1317 tty = old_tty;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1318
1927
c6dc1a37aeb4 * sysdep.c (child_setup_tty): Recognize HAVE_TERMIOS as well as
Jim Blandy <jimb@redhat.com>
parents: 1596
diff changeset
1319 #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
1320 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
1321
8104
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1322 #ifdef DGUX
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1323 /* 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
1324 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
1325 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1326 tty.main.c_iflag |= (IGNBRK); /* Ignore break condition */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1327 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
1328 #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
1329 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
1330 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
1331 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1332 #ifdef ISTRIP
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1333 tty.main.c_iflag &= ~ISTRIP; /* don't strip 8th bit on input */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1334 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1335 tty.main.c_lflag &= ~ECHO; /* Disable echo */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1336 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
1337 #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
1338 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
1339 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1340 tty.main.c_lflag |= ISIG; /* Enable signals */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1341 if (flow_control)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1342 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1343 tty.main.c_iflag |= IXON; /* Enable start/stop output control */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1344 #ifdef IXANY
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1345 tty.main.c_iflag &= ~IXANY;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1346 #endif /* IXANY */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1347 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1348 else
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1349 tty.main.c_iflag &= ~IXON; /* Disable start/stop output control */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1350 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
1351 on output */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1352 tty.main.c_oflag &= ~TAB3; /* Disable tab expansion */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1353 #ifdef CS8
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1354 if (meta_key)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1355 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1356 tty.main.c_cflag |= CS8; /* allow 8th bit on input */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1357 tty.main.c_cflag &= ~PARENB;/* Don't check parity */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1358 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1359 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1360 tty.main.c_cc[VINTR] = quit_char; /* C-g (usually) gives SIGINT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1361 /* Set up C-g for both SIGQUIT and SIGINT.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1362 We don't know which we will get, but we handle both alike
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1363 so which one it really gives us does not matter. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1364 tty.main.c_cc[VQUIT] = quit_char;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1365 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
1366 tty.main.c_cc[VTIME] = 0; /* no matter how long that takes. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1367 #ifdef VSWTCH
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
1368 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
1369 of C-z */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1370 #endif /* VSWTCH */
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1371
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1372 #if defined (mips) || defined (HAVE_TCATTR)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1373 #ifdef VSUSP
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
1374 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
1375 #endif /* VSUSP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1376 #ifdef V_DSUSP
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
1377 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
1378 #endif /* V_DSUSP */
1102
ff73961932eb (init_sys_modes): Handle VDSUSP like V_DSUSP.
Richard M. Stallman <rms@gnu.org>
parents: 1048
diff changeset
1379 #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
1380 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
1381 #endif /* VDSUSP */
3472
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1382 #ifdef VLNEXT
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1383 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
1384 #endif /* VLNEXT */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1385 #ifdef VREPRINT
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1386 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
1387 #endif /* VREPRINT */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1388 #ifdef VWERASE
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1389 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
1390 #endif /* VWERASE */
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1391 #ifdef VDISCARD
6f05f6e83e94 (wait_for_termination): Fix sigpause in POSIX_SIGNALS case.
Richard M. Stallman <rms@gnu.org>
parents: 3334
diff changeset
1392 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
1393 #endif /* VDISCARD */
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1394
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1395 if (flow_control)
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1396 {
8104
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1397 #ifdef VSTART
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1398 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
1399 #endif /* VSTART */
5434ea918f34 (init_sys_modes): Turn off VSTART and VSTOP chars. On
Richard M. Stallman <rms@gnu.org>
parents: 7908
diff changeset
1400 #ifdef VSTOP
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1401 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
1402 #endif /* VSTOP */
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1403 }
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1404 else
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1405 {
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1406 #ifdef VSTART
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1407 tty.main.c_cc[VSTART] = CDISABLE;
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1408 #endif /* VSTART */
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1409 #ifdef VSTOP
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1410 tty.main.c_cc[VSTOP] = CDISABLE;
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1411 #endif /* VSTOP */
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1412 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1413 #endif /* mips or HAVE_TCATTR */
19198
49274b3596a7 (init_sys_modes) [mips || HAVE_TCATTR]:
Richard M. Stallman <rms@gnu.org>
parents: 19023
diff changeset
1414
10108
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1415 #ifdef SET_LINE_DISCIPLINE
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
1416 /* 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
1417 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
1418 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
1419 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1420 #ifdef AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1421 #ifndef IBMR2AIX
10108
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1422 /* AIX enhanced edit loses NULs, so disable it. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1423 tty.main.c_line = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1424 tty.main.c_iflag &= ~ASCEDIT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1425 #else
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1426 tty.main.c_cc[VSTRT] = 255;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1427 tty.main.c_cc[VSTOP] = 255;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1428 tty.main.c_cc[VSUSP] = 255;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1429 tty.main.c_cc[VDSUSP] = 255;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1430 #endif /* IBMR2AIX */
18232
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1431 if (flow_control)
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1432 {
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1433 #ifdef VSTART
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1434 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
1435 #endif /* VSTART */
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1436 #ifdef VSTOP
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1437 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
1438 #endif /* VSTOP */
4183933733e6 (init_sys_modes): Enable VSTART and VSTOP if flow_control.
Richard M. Stallman <rms@gnu.org>
parents: 18095
diff changeset
1439 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1440 /* Also, PTY overloads NUL and BREAK.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1441 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
1442 This really serves a purpose only if running in an XTERM window
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1443 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
1444 tty.main.c_iflag &= ~IGNBRK;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1445 tty.main.c_iflag &= ~BRKINT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1446 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1447 #else /* if not HAVE_TERMIO */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1448 #ifdef VMS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1449 tty.main.tt_char |= TT$M_NOECHO;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1450 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
1451 tty.main.tt_char |= TT$M_EIGHTBIT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1452 if (flow_control)
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1453 tty.main.tt_char |= TT$M_TTSYNC;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1454 else
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1455 tty.main.tt_char &= ~TT$M_TTSYNC;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1456 tty.main.tt2_char |= TT2$M_PASTHRU | TT2$M_XON;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1457 #else /* not VMS (BSD, that is) */
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
1458 #ifndef DOS_NT
21532
fff5e42d7b2a (init_sys_modes): Fix mixing of Lisp_Object and int
Andreas Schwab <schwab@suse.de>
parents: 21514
diff changeset
1459 XSETINT (Vtty_erase_char, tty.main.sg_erase);
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1460 tty.main.sg_flags &= ~(ECHO | CRMOD | XTABS);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1461 if (meta_key)
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1462 tty.main.sg_flags |= ANYP;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1463 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
1464 #endif /* not DOS_NT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1465 #endif /* not VMS (BSD, that is) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1466 #endif /* not HAVE_TERMIO */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1467
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1468 /* 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
1469 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
1470 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
1471 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
1472 only t_stopc and t_startc really matter. */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1473 #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
1474 #ifdef HAVE_TCHARS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1475 /* 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
1476 set this */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1477 tty.tchars = new_tchars;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1478 tty.tchars.t_intrc = quit_char;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1479 if (flow_control)
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1480 {
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1481 tty.tchars.t_startc = '\021';
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1482 tty.tchars.t_stopc = '\023';
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1483 }
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1484
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1485 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
1486 #ifdef ultrix
036367460955 * sysdep.c [ultrix] (init_sys_modes): Don't set LLITOUT; it
Jim Blandy <jimb@redhat.com>
parents: 3695
diff changeset
1487 /* 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
1488 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
1489 tty.lmode &= ~LLITOUT;
036367460955 * sysdep.c [ultrix] (init_sys_modes): Don't set LLITOUT; it
Jim Blandy <jimb@redhat.com>
parents: 3695
diff changeset
1490 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1491
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1492 #ifdef BSD4_1
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1493 lmode = tty.lmode;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1494 #endif
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1495
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1496 #endif /* HAVE_TCHARS */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1497 #endif /* not HAVE_TERMIO */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1498
3157
84825e357019 * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if
Jim Blandy <jimb@redhat.com>
parents: 3150
diff changeset
1499 #ifdef HAVE_LTCHARS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1500 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
1501 #endif /* HAVE_LTCHARS */
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1502 #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
1503 if (!term_initted)
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1504 internal_terminal_init ();
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1505 dos_ttraw ();
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1506 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1507
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1508 EMACS_SET_TTY (input_fd, &tty, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1509
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1510 /* 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
1511 we have an unlocked terminal at the start. */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1512
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1513 #ifdef TCXONC
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1514 if (!flow_control) ioctl (input_fd, TCXONC, 1);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1515 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1516 #ifndef APOLLO
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1517 #ifdef TIOCSTART
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1518 if (!flow_control) ioctl (input_fd, TIOCSTART, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1519 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1520 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1521
9937
cd2db9aeeb25 (init_sys_modes): Maybe call tcflow.
Richard M. Stallman <rms@gnu.org>
parents: 9794
diff changeset
1522 #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
1523 #ifdef TCOON
9937
cd2db9aeeb25 (init_sys_modes): Maybe call tcflow.
Richard M. Stallman <rms@gnu.org>
parents: 9794
diff changeset
1524 if (!flow_control) tcflow (input_fd, TCOON);
cd2db9aeeb25 (init_sys_modes): Maybe call tcflow.
Richard M. Stallman <rms@gnu.org>
parents: 9794
diff changeset
1525 #endif
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
1526 #endif
9937
cd2db9aeeb25 (init_sys_modes): Maybe call tcflow.
Richard M. Stallman <rms@gnu.org>
parents: 9794
diff changeset
1527
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
1528 #ifdef AIXHFT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1529 hft_init ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1530 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1531 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1532 /* 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
1533 to be only LF. This is the way that is done. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1534 struct termio tty;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1535
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1536 if (ioctl (1, HFTGETID, &tty) != -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1537 write (1, "\033[20l", 5);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1538 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1539 #endif
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
1540 #endif /* AIXHFT */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1541
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1542 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1543 /* Appears to do nothing when in PASTHRU mode.
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1544 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
1545 interrupt_signal, oob_chars, 0, 0, 0, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1546 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1547 queue_kbd_input (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1548 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1549 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1550
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1551 #ifdef F_SETFL
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1552 #ifndef F_SETOWN_BUG
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
1553 #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
1554 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
1555 && ! read_socket_hook && EQ (Vwindow_system, Qnil))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1556 {
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1557 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
1558 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
1559 init_sigio (input_fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1560 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1561 #endif /* F_GETOWN */
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1562 #endif /* F_SETOWN_BUG */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1563 #endif /* F_SETFL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1564
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1565 #ifdef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1566 if (interrupt_input)
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
1567 init_sigio (input_fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1568 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1569
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1570 #ifdef VMS /* VMS sometimes has this symbol but lacks setvbuf. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1571 #undef _IOFBF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1572 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1573 #ifdef _IOFBF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1574 /* This symbol is defined on recent USG systems.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1575 Someone says without this call USG won't really buffer the file
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1576 even with a call to setbuf. */
22336
0af99a2dc706 (sys_subshell): Cast arg to chdir.
Karl Heuer <kwzh@gnu.org>
parents: 21843
diff changeset
1577 setvbuf (stdout, (char *) _sobuf, _IOFBF, sizeof _sobuf);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1578 #else
22336
0af99a2dc706 (sys_subshell): Cast arg to chdir.
Karl Heuer <kwzh@gnu.org>
parents: 21843
diff changeset
1579 setbuf (stdout, (char *) _sobuf);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1580 #endif
13416
58e22ceabff4 [HAVE_NTGUI] (init_sys_modes, reset_sys_modes):
Geoff Voelker <voelker@cs.washington.edu>
parents: 13174
diff changeset
1581 #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
1582 /* 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
1583 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
1584 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
1585 #ifndef WINDOWSNT
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1586 /* 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
1587 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
1588 && (! read_socket_hook)
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1589 #endif
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1590 )
13174
d9170c4ec837 (init_sys_modes) [!HAVE_X_WINDOWS (MSDOS)]: Always call set_terminal_modes.
Kim F. Storm <storm@cua.dk>
parents: 12988
diff changeset
1591 #endif
7878
546334ab3974 (init_sys_modes): Don't call set_terminal_modes
Richard M. Stallman <rms@gnu.org>
parents: 7559
diff changeset
1592 set_terminal_modes ();
546334ab3974 (init_sys_modes): Don't call set_terminal_modes
Richard M. Stallman <rms@gnu.org>
parents: 7559
diff changeset
1593
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1594 if (term_initted && no_redraw_on_reenter)
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 (display_completed)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1597 direct_output_forward_char (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1598 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1599 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1600 {
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1601 frame_garbaged = 1;
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1602 if (FRAMEP (Vterminal_frame))
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1603 FRAME_GARBAGED_P (XFRAME (Vterminal_frame)) = 1;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1604 }
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1605
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1606 term_initted = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1607 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1608
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1609 /* Return nonzero if safe to use tabs in output.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1610 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
1611
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1612 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1613 tabs_safe_p ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1614 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1615 struct emacs_tty tty;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1616
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1617 EMACS_GET_TTY (input_fd, &tty);
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1618 return EMACS_TTY_TABS_OK (&tty);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1619 }
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1620
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1621 /* Get terminal size from system.
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1622 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
1623 We store 0 if there's no valid information. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1624
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1625 void
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1626 get_frame_size (widthp, heightp)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1627 int *widthp, *heightp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1628 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1629
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1630 #ifdef TIOCGWINSZ
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1631
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1632 /* BSD-style. */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1633 struct winsize size;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1634
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1635 if (ioctl (input_fd, TIOCGWINSZ, &size) == -1)
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1636 *widthp = *heightp = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1637 else
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1638 {
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1639 *widthp = size.ws_col;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1640 *heightp = size.ws_row;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1641 }
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1642
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1643 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1644 #ifdef TIOCGSIZE
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1645
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1646 /* SunOS - style. */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1647 struct ttysize size;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1648
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1649 if (ioctl (input_fd, TIOCGSIZE, &size) == -1)
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1650 *widthp = *heightp = 0;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1651 else
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1652 {
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1653 *widthp = size.ts_cols;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1654 *heightp = size.ts_lines;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1655 }
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1656
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1657 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1658 #ifdef VMS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1659
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1660 struct sensemode tty;
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1661
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1662 SYS$QIOW (0, input_fd, IO$_SENSEMODE, &tty, 0, 0,
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1663 &tty.class, 12, 0, 0, 0, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1664 *widthp = tty.scr_wid;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1665 *heightp = tty.scr_len;
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1666
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1667 #else
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1668 #ifdef MSDOS
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1669 *widthp = ScreenCols ();
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1670 *heightp = ScreenRows ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1671 #else /* system doesn't know size */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1672 *widthp = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1673 *heightp = 0;
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1674 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1675
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1676 #endif /* not VMS */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1677 #endif /* not SunOS-style */
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1678 #endif /* not BSD-style */
491
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
6829
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1681 /* 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
1682 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
1683
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1684 int
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1685 set_window_size (fd, height, width)
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1686 int fd, height, width;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1687 {
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1688 #ifdef TIOCSWINSZ
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1689
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1690 /* BSD-style. */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1691 struct winsize size;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1692 size.ws_row = height;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1693 size.ws_col = width;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1694
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1695 if (ioctl (fd, TIOCSWINSZ, &size) == -1)
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1696 return 0; /* error */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1697 else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1698 return 1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1699
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1700 #else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1701 #ifdef TIOCSSIZE
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1702
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1703 /* SunOS - style. */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1704 struct ttysize size;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1705 size.ts_lines = height;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1706 size.ts_cols = width;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1707
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1708 if (ioctl (fd, TIOCGSIZE, &size) == -1)
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1709 return 0;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1710 else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1711 return 1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1712 #else
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1713 return -1;
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1714 #endif /* not SunOS-style */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1715 #endif /* not BSD-style */
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1716 }
684201f9fa7f (set_window_size): New function.
Richard M. Stallman <rms@gnu.org>
parents: 6799
diff changeset
1717
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1718
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1719 /* 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
1720 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
1721 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1722 reset_sys_modes ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1723 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1724 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1725 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1726 fflush (stdout);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1727 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1728 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1729 if (!term_initted)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1730 return;
13416
58e22ceabff4 [HAVE_NTGUI] (init_sys_modes, reset_sys_modes):
Geoff Voelker <voelker@cs.washington.edu>
parents: 13174
diff changeset
1731 #ifdef HAVE_WINDOW_SYSTEM
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1732 /* Emacs' window system on MSDOG uses the `internal terminal' and therefore
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1733 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
1734 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
1735 #ifndef WINDOWSNT
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1736 /* 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
1737 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
1738 || read_socket_hook
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1739 #endif
ce0b47a57e23 (sys_subshell) [DOS_NT]: Save and restore parent's
Geoff Voelker <voelker@cs.washington.edu>
parents: 19639
diff changeset
1740 )
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1741 return;
9572
b36d5e88cccc *** empty log message ***
Morten Welinder <terra@diku.dk>
parents: 9532
diff changeset
1742 #endif
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1743 cursor_to (FRAME_HEIGHT (selected_frame) - 1, 0);
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1744 clear_end_of_line (FRAME_WIDTH (selected_frame));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1745 /* clear_end_of_line may move the cursor */
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
1746 cursor_to (FRAME_HEIGHT (selected_frame) - 1, 0);
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
1747 #if defined (IBMR2AIX) && defined (AIXHFT)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1748 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1749 /* HFT devices normally use ^J as a LF/CR. We forced it to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1750 do the LF only. Now, we need to reset it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1751 struct termio tty;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1752
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1753 if (ioctl (1, HFTGETID, &tty) != -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1754 write (1, "\033[20h", 5);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1755 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1756 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1757
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1758 reset_terminal_modes ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1759 fflush (stdout);
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
1760 #ifdef BSD_SYSTEM
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1761 #ifndef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1762 /* Avoid possible loss of output when changing terminal modes. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1763 fsync (fileno (stdout));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1764 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1765 #endif
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1766
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1767 #ifdef F_SETFL
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1768 #ifndef F_SETOWN_BUG
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
1769 #ifdef F_SETOWN /* F_SETFL does not imply existence of F_SETOWN */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1770 if (interrupt_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1771 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1772 reset_sigio ();
4681
6945d02dd725 (stuff_char): Use input_fd.
Richard M. Stallman <rms@gnu.org>
parents: 4643
diff changeset
1773 fcntl (input_fd, F_SETOWN, old_fcntl_owner);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1774 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1775 #endif /* F_SETOWN */
4142
6cdfdbe5058b * xterm.c, sysdep.c (F_SETOWN_BUG): Defined.
Jim Blandy <jimb@redhat.com>
parents: 3842
diff changeset
1776 #endif /* F_SETOWN_BUG */
6489
6c138b61c8b4 (reset_sys_modes): Turn off O_NDELAY.
Karl Heuer <kwzh@gnu.org>
parents: 6102
diff changeset
1777 #ifdef O_NDELAY
6c138b61c8b4 (reset_sys_modes): Turn off O_NDELAY.
Karl Heuer <kwzh@gnu.org>
parents: 6102
diff changeset
1778 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
1779 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1780 #endif /* F_SETFL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1781 #ifdef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1782 if (interrupt_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1783 reset_sigio ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1784 #endif /* BSD4_1 */
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1785
12070
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1786 if (old_tty_valid)
305d8df294a5 (old_tty_valid): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11951
diff changeset
1787 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
1788 ;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1789
5498
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1790 #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
1791 dos_ttcooked ();
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1792 #endif
636e4507b52b [MSDOS]: #include <dos.h>, "dosfns.h", "msdos.h", and
Richard M. Stallman <rms@gnu.org>
parents: 5420
diff changeset
1793
10108
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1794 #ifdef SET_LINE_DISCIPLINE
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1795 /* 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
1796 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
1797 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
1798 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
1799 #endif
2844db63605f (child_setup_tty): Use CDISABLE for setting VERASE, VKILL.
Richard M. Stallman <rms@gnu.org>
parents: 10049
diff changeset
1800
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
1801 #ifdef AIXHFT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1802 hft_reset ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1803 #endif
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1804
5964
1b850ec1a5e2 (init_sys_modes, reset_sys_modes): Test BSD_PGRPS.
Richard M. Stallman <rms@gnu.org>
parents: 5960
diff changeset
1805 #ifdef BSD_PGRPS
3655
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1806 widen_foreground_group ();
3e6cc11cfe9f Interact properly with shells lacking job control (sh, rc, es...)
Jim Blandy <jimb@redhat.com>
parents: 3604
diff changeset
1807 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1808 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1809
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1810 #ifdef HAVE_PTYS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1811
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1812 /* Set up the proper status flags for use of a pty. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1813
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
1814 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1815 setup_pty (fd)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1816 int fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1817 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1818 /* I'm told that TOICREMOTE does not mean control chars
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1819 "can't be sent" but rather that they don't have
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1820 input-editing or signaling effects.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1821 That should be good, because we have other ways
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1822 to do those things in Emacs.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1823 However, telnet mode seems not to work on 4.2.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1824 So TIOCREMOTE is turned off now. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1825
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1826 /* Under hp-ux, if TIOCREMOTE is turned on, some calls
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1827 will hang. In particular, the "timeout" feature (which
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1828 causes a read to return if there is no data available)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1829 does this. Also it is known that telnet mode will hang
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1830 in such a way that Emacs must be stopped (perhaps this
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1831 is the same problem).
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1832
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1833 If TIOCREMOTE is turned off, then there is a bug in
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1834 hp-ux which sometimes loses data. Apparently the
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1835 code which blocks the master process when the internal
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1836 buffer fills up does not work. Other than this,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1837 though, everything else seems to work fine.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1838
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1839 Since the latter lossage is more benign, we may as well
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1840 lose that way. -- cph */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1841 #ifdef FIONBIO
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1842 #ifdef SYSV_PTYS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1843 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1844 int on = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1845 ioctl (fd, FIONBIO, &on);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1846 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1847 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1848 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1849 #ifdef IBMRTAIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1850 /* 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
1851 /* 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
1852 /* 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
1853 /* tty goes away. I've complained to the AIX developers, and they may */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1854 /* change this behavior, but I'm not going to hold my breath. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1855 signal (SIGHUP, SIG_IGN);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1856 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1857 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1858 #endif /* HAVE_PTYS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1859
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1860 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1861
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1862 /* Assigning an input channel is done at the start of Emacs execution.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1863 This is called each time Emacs is resumed, also, but does nothing
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1864 because input_chain is no longer zero. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1865
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1866 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1867 init_vms_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1868 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1869 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1870
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1871 if (input_fd == 0)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1872 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1873 status = SYS$ASSIGN (&input_dsc, &input_fd, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1874 if (! (status & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1875 LIB$STOP (status);
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
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1879 /* Deassigning the input channel is done before exiting. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1880
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1881 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1882 stop_vms_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1883 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1884 return SYS$DASSGN (input_fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1885 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1886
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1887 short input_buffer;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1888
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1889 /* Request reading one character into the keyboard buffer.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1890 This is done as soon as the buffer becomes empty. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1891
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1892 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1893 queue_kbd_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1894 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1895 int status;
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
1896 extern kbd_input_ast ();
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
1897
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1898 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1899 stop_input = 0;
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
1900 status = SYS$QIO (0, input_fd, IO$_READVBLK,
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1901 &input_iosb, kbd_input_ast, 1,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1902 &input_buffer, 1, 0, terminator_mask, 0, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1903 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1904
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1905 int input_count;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1906
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1907 /* Ast routine that is called when keyboard input comes in
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1908 in accord with the SYS$QIO above. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1909
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1910 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1911 kbd_input_ast ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1912 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1913 register int c = -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1914 int old_errno = errno;
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
1915 extern EMACS_TIME *input_available_clear_time;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1916
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1917 if (waiting_for_ast)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1918 SYS$SETEF (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1919 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1920 input_count++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1921 #ifdef ASTDEBUG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1922 if (input_count == 25)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1923 exit (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1924 printf ("Ast # %d,", input_count);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1925 printf (" iosb = %x, %x, %x, %x",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1926 input_iosb.offset, input_iosb.status, input_iosb.termlen,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1927 input_iosb.term);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1928 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1929 if (input_iosb.offset)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1930 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1931 c = input_buffer;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1932 #ifdef ASTDEBUG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1933 printf (", char = 0%o", c);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1934 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1935 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1936 #ifdef ASTDEBUG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1937 printf ("\n");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1938 fflush (stdout);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1939 sleep (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1940 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1941 if (! stop_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1942 queue_kbd_input ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1943 if (c >= 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1944 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1945 struct input_event e;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1946 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
1947 XSETINT (e.code, c);
2382e2f3884e (kbd_input_ast, read_input_waiting): Use new accessor macros instead of
Karl Heuer <kwzh@gnu.org>
parents: 9239
diff changeset
1948 XSETFRAME (e.frame_or_window, selected_frame);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1949 kbd_buffer_store_event (&e);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1950 }
648
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
1951 if (input_available_clear_time)
70b112526394 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 638
diff changeset
1952 EMACS_SET_SECS_USECS (*input_available_clear_time, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1953 errno = old_errno;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1954 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1955
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1956 /* Wait until there is something in kbd_buffer. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1957
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
1958 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1959 wait_for_kbd_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1960 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1961 extern int have_process_input, process_exited;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1962
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1963 /* If already something, avoid doing system calls. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1964 if (detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1965 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1966 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1967 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1968 /* Clear a flag, and tell ast routine above to set it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1969 SYS$CLREF (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1970 waiting_for_ast = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1971 /* Check for timing error: ast happened while we were doing that. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1972 if (!detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1973 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1974 /* No timing error: wait for flag to be set. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1975 set_waiting_for_input (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1976 SYS$WFLOR (input_ef, input_eflist);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1977 clear_waiting_for_input (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1978 if (!detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1979 /* Check for subprocess input availability */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1980 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1981 int dsp = have_process_input || process_exited;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1982
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1983 SYS$CLREF (process_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1984 if (have_process_input)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1985 process_command_input ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1986 if (process_exited)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1987 process_exit ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1988 if (dsp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1989 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1990 update_mode_lines++;
5253
1846f03ac8f3 [VMS] (wait_for_kbd_input): Call prepare_menu_bars.
Richard M. Stallman <rms@gnu.org>
parents: 5189
diff changeset
1991 prepare_menu_bars ();
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1992 redisplay_preserve_echo_area ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1993 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1994 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1995 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1996 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1997 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1998
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
1999 /* Get rid of any pending QIO, when we are about to suspend
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2000 or when we want to throw away pending input.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2001 We wait for a positive sign that the AST routine has run
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2002 and therefore there is no I/O request queued when we return.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2003 SYS$SETAST is used to avoid a timing error. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2004
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2005 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2006 end_kbd_input ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2007 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2008 #ifdef ASTDEBUG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2009 printf ("At end_kbd_input.\n");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2010 fflush (stdout);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2011 sleep (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2012 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2013 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
2014 {
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
2015 SYS$CANCEL (input_fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2016 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2017 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2018
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2019 SYS$SETAST (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2020 /* Clear a flag, and tell ast routine above to set it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2021 SYS$CLREF (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2022 waiting_for_ast = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2023 stop_input = 1;
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
2024 SYS$CANCEL (input_fd);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2025 SYS$SETAST (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2026 SYS$WAITFR (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2027 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2028 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2029
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2030 /* Wait for either input available or time interval expiry. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2031
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2032 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2033 input_wait_timeout (timeval)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2034 int timeval; /* Time to wait, in seconds */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2035 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2036 int time [2];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2037 static int zero = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2038 static int large = -10000000;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2039
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2040 LIB$EMUL (&timeval, &large, &zero, time); /* Convert to VMS format */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2041
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2042 /* If already something, avoid doing system calls. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2043 if (detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2044 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2045 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2046 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2047 /* Clear a flag, and tell ast routine above to set it. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2048 SYS$CLREF (input_ef);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2049 waiting_for_ast = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2050 /* Check for timing error: ast happened while we were doing that. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2051 if (!detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2052 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2053 /* No timing error: wait for flag to be set. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2054 SYS$CANTIM (1, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2055 if (SYS$SETIMR (timer_ef, time, 0, 1) & 1) /* Set timer */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2056 SYS$WFLOR (timer_ef, timer_eflist); /* Wait for timer expiry or input */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2057 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2058 waiting_for_ast = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2059 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2060
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2061 /* The standard `sleep' routine works some other way
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2062 and it stops working if you have ever quit out of it.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2063 This one continues to work. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2064
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2065 sys_sleep (timeval)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2066 int timeval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2067 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2068 int time [2];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2069 static int zero = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2070 static int large = -10000000;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2071
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2072 LIB$EMUL (&timeval, &large, &zero, time); /* Convert to VMS format */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2073
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2074 SYS$CANTIM (1, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2075 if (SYS$SETIMR (timer_ef, time, 0, 1) & 1) /* Set timer */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2076 SYS$WAITFR (timer_ef); /* Wait for timer expiry only */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2077 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2078
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2079 void
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
2080 init_sigio (fd)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
2081 int fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2082 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2083 request_sigio ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2084 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2085
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2086 reset_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2087 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2088 unrequest_sigio ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2089 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2090
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2091 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2092 request_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2093 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2094 croak ("request sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2095 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2096
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2097 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2098 unrequest_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2099 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2100 croak ("unrequest sigio");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2101 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2102
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2103 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2104
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2105 /* Note that VMS compiler won't accept defined (CANNOT_DUMP). */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2106 #ifndef CANNOT_DUMP
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2107 #define NEED_STARTS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2108 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2109
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2110 #ifndef SYSTEM_MALLOC
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2111 #ifndef NEED_STARTS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2112 #define NEED_STARTS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2113 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2114 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2115
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2116 #ifdef NEED_STARTS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2117 /* Some systems that cannot dump also cannot implement these. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2118
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2119 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2120 * Return the address of the start of the text segment prior to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2121 * doing an unexec. After unexec the return value is undefined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2122 * See crt0.c for further explanation and _start.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2123 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2124 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2125
9039
22e5c594d59d (start_of_text): Don't test CANNOT_UNEXEC.
Richard M. Stallman <rms@gnu.org>
parents: 9036
diff changeset
2126 #ifndef HAVE_TEXT_START
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2127 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2128 start_of_text ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2129 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2130 #ifdef TEXT_START
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2131 return ((char *) TEXT_START);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2132 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2133 #ifdef GOULD
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2134 extern csrt ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2135 return ((char *) csrt);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2136 #else /* not GOULD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2137 extern int _start ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2138 return ((char *) _start);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2139 #endif /* GOULD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2140 #endif /* TEXT_START */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2141 }
9039
22e5c594d59d (start_of_text): Don't test CANNOT_UNEXEC.
Richard M. Stallman <rms@gnu.org>
parents: 9036
diff changeset
2142 #endif /* not HAVE_TEXT_START */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2143
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2144 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2145 * Return the address of the start of the data segment prior to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2146 * doing an unexec. After unexec the return value is undefined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2147 * See crt0.c for further information and definition of data_start.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2148 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2149 * Apparently, on BSD systems this is etext at startup. On
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2150 * USG systems (swapping) this is highly mmu dependent and
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2151 * is also dependent on whether or not the program is running
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2152 * with shared text. Generally there is a (possibly large)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2153 * gap between end of text and start of data with shared text.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2154 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2155 * On Uniplus+ systems with shared text, data starts at a
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2156 * fixed address. Each port (from a given oem) is generally
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2157 * different, and the specific value of the start of data can
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2158 * be obtained via the UniPlus+ specific "uvar" system call,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2159 * however the method outlined in crt0.c seems to be more portable.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2160 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2161 * Probably what will have to happen when a USG unexec is available,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2162 * at least on UniPlus, is temacs will have to be made unshared so
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2163 * that text and data are contiguous. Then once loadup is complete,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2164 * 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
2165 * at the normal shared text boundary and the startofdata variable
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2166 * will be patched by unexec to the correct value.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2167 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2168 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2169
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2170 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2171 start_of_data ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2172 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2173 #ifdef DATA_START
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2174 return ((char *) DATA_START);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2175 #else
2121
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2176 #ifdef ORDINARY_LINK
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2177 /*
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2178 * 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
2179 * 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
2180 * 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
2181 * 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
2182 */
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2183 extern char **environ;
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2184
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2185 return((char *) &environ);
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2186 #else
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2187 extern int data_start;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2188 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
2189 #endif /* ORDINARY_LINK */
ebc56bb13048 * sysdep.c (read_input_waiting): Set e.frame_or_window, not
Jim Blandy <jimb@redhat.com>
parents: 1927
diff changeset
2190 #endif /* DATA_START */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2191 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2192 #endif /* NEED_STARTS (not CANNOT_DUMP or not SYSTEM_MALLOC) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2193
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2194 #ifndef CANNOT_DUMP
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2195 /* Some systems that cannot dump also cannot implement these. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2196
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2197 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2198 * Return the address of the end of the text segment prior to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2199 * doing an unexec. After unexec the return value is undefined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2200 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2201
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2202 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2203 end_of_text ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2204 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2205 #ifdef TEXT_END
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2206 return ((char *) TEXT_END);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2207 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2208 extern int etext;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2209 return ((char *) &etext);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2210 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2211 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2212
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2213 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2214 * Return the address of the end of the data segment prior to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2215 * doing an unexec. After unexec the return value is undefined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2216 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2217
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2218 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2219 end_of_data ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2220 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2221 #ifdef DATA_END
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2222 return ((char *) DATA_END);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2223 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2224 extern int edata;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2225 return ((char *) &edata);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2226 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2227 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2228
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2229 #endif /* not CANNOT_DUMP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2230
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2231 /* 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
2232 system-name to return. */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2233
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2234 #ifdef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2235 #include <whoami.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2236 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2237
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2238 extern Lisp_Object Vsystem_name;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2239
3150
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2240 #ifndef BSD4_1
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2241 #ifndef VMS
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2242 #ifdef HAVE_SOCKETS
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2243 #include <sys/socket.h>
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2244 #include <netdb.h>
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2245 #endif /* HAVE_SOCKETS */
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2246 #endif /* not VMS */
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2247 #endif /* not BSD4_1 */
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2248
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2249 void
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2250 init_system_name ()
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2251 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2252 #ifdef BSD4_1
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2253 Vsystem_name = build_string (sysname);
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2254 #else
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2255 #ifdef VMS
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2256 char *sp, *end;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2257 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
2258 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
2259 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
2260 Vsystem_name = build_string (sp);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2261 else
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2262 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
2263 #else
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2264 #ifndef HAVE_GETHOSTNAME
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2265 struct utsname uts;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2266 uname (&uts);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2267 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
2268 #else /* HAVE_GETHOSTNAME */
11800
a2f009e1b85b (init_system_name): Clean up signedness mismatch.
Karl Heuer <kwzh@gnu.org>
parents: 11722
diff changeset
2269 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
2270 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
2271
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2272 /* 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
2273 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
2274 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
2275 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
2276 for (;;)
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2277 {
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2278 gethostname (hostname, hostname_size - 1);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2279 hostname[hostname_size - 1] = '\0';
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2280
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2281 /* 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
2282 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
2283 break;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2284
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2285 hostname_size <<= 1;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2286 hostname = (char *) alloca (hostname_size);
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2287 }
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2288 #ifdef HAVE_SOCKETS
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2289 /* 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
2290 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
2291 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
2292 #ifndef CANNOT_DUMP
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2293 if (initialized)
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2294 #endif /* not CANNOT_DUMP */
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2295 if (! index (hostname, '.'))
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2296 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2297 struct hostent *hp;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2298 int count;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2299 for (count = 0;; count++)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2300 {
8330
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
2301 #ifdef TRY_AGAIN
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2302 h_errno = 0;
8330
60adc323cfe7 [!HAVE_H_ERRNO]: Declare h_errno.
Richard M. Stallman <rms@gnu.org>
parents: 8285
diff changeset
2303 #endif
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2304 hp = gethostbyname (hostname);
8285
6609af160f16 (init_system_name): Retry gethostbyname after TRY_AGAIN failure.
Richard M. Stallman <rms@gnu.org>
parents: 8104
diff changeset
2305 #ifdef TRY_AGAIN
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2306 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
2307 #endif
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2308 break;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2309 if (count >= 5)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2310 break;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2311 Fsleep_for (make_number (1), Qnil);
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2312 }
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2313 if (hp)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2314 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2315 char *fqdn = (char *) hp->h_name;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2316 char *p;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2317
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2318 if (!index (fqdn, '.'))
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2319 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2320 /* 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
2321 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
2322 char **alias = hp->h_aliases;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2323 while (*alias && !index (*alias, '.'))
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2324 alias++;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2325 if (*alias)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2326 fqdn = *alias;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2327 }
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2328 hostname = fqdn;
6799
1f45c2d4ff2c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 6489
diff changeset
2329 #if 0
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2330 /* 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
2331 /* 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
2332 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
2333 p = hostname;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2334 while (*p)
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2335 {
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2336 if (*p >= 'A' && *p <= 'Z')
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2337 *p += 'a' - 'A';
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2338 p++;
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2339 }
6799
1f45c2d4ff2c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 6489
diff changeset
2340 #endif
20202
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2341 }
de9483a63b12 (init_system_name): If gethostname gives a proper
Karl Heuer <kwzh@gnu.org>
parents: 19699
diff changeset
2342 }
3150
afc59d5d30c6 [HAVE_SOCKETS]: Include socket.h, netdb.h.
Richard M. Stallman <rms@gnu.org>
parents: 3106
diff changeset
2343 #endif /* HAVE_SOCKETS */
20293
31035eff741a (init_system_name): Don't use sysinfo.
Karl Heuer <kwzh@gnu.org>
parents: 20288
diff changeset
2344 /* We used to try using getdomainname here,
31035eff741a (init_system_name): Don't use sysinfo.
Karl Heuer <kwzh@gnu.org>
parents: 20288
diff changeset
2345 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
2346 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
2347 as in Internet domain name. */
20293
31035eff741a (init_system_name): Don't use sysinfo.
Karl Heuer <kwzh@gnu.org>
parents: 20288
diff changeset
2348 #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
2349 correct Internet domain. */
19639
fb3c3590498e (init_system_name): Don't try to use getdomainname.
Richard M. Stallman <rms@gnu.org>
parents: 19258
diff changeset
2350 #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
2351 if (! index (hostname, '.'))
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2352 {
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2353 /* 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
2354
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2355 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
2356 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
2357
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2358 for (;;)
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2359 {
18660
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2360 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
2361 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
2362 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
2363 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
2364 break;
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2365 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
2366 {
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2367 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
2368 continue;
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2369 }
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2370 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
2371 if (domain[0] == '.')
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2372 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
2373 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
2374 {
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2375 fqdn[hostlen] = '.';
42cf8e9273ee (ospeed): Define as short, unless HAVE_TERMIOS_H and LINUX.
Richard M. Stallman <rms@gnu.org>
parents: 18613
diff changeset
2376 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
2377 }
16003
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2378 hostname = fqdn;
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2379 break;
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2380 }
96349e2b7511 (<sys/systeminfo.h>): Include if HAVE_SYS_SYSTEMINFO_H is defined.
Paul Eggert <eggert@twinsun.com>
parents: 15718
diff changeset
2381 }
19639
fb3c3590498e (init_system_name): Don't try to use getdomainname.
Richard M. Stallman <rms@gnu.org>
parents: 19258
diff changeset
2382 #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
2383 #endif /* 0 */
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2384 Vsystem_name = build_string (hostname);
5734
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2385 #endif /* HAVE_GETHOSTNAME */
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2386 #endif /* VMS */
3c8ae6c720d8 (get_system_name): Remove restriction on hostname size.
Karl Heuer <kwzh@gnu.org>
parents: 5682
diff changeset
2387 #endif /* BSD4_1 */
7908
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2388 {
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2389 unsigned char *p;
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2390 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
2391 if (*p == ' ' || *p == '\t')
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2392 *p = '-';
2d605a73a1fd (init_system_name): New function, replaces get_system_name.
Karl Heuer <kwzh@gnu.org>
parents: 7889
diff changeset
2393 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2394 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2395
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
2396 #ifndef MSDOS
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2397 #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
2398 #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
2399
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2400 #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
2401 #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
2402
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2403 #if defined (HAVE_X_WINDOWS) && !defined (HAVE_SELECT)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2404 /* Cause explanatory error message at compile time,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2405 since the select emulation is not good enough for X. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2406 int *x = &x_windows_lose_if_no_select_system_call;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2407 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2408
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2409 /* 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
2410 * Only checks read descriptors.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2411 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2412 /* How long to wait between checking fds in select */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2413 #define SELECT_PAUSE 1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2414 int select_alarmed;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2415
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2416 /* For longjmp'ing back to read_input_waiting. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2417
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2418 jmp_buf read_alarm_throw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2419
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2420 /* Nonzero if the alarm signal should throw back to read_input_waiting.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2421 The read_socket_hook function sets this to 1 while it is waiting. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2422
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2423 int read_alarm_should_throw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2424
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2425 SIGTYPE
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2426 select_alarm ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2427 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2428 select_alarmed = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2429 #ifdef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2430 sigrelse (SIGALRM);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2431 #else /* not BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2432 signal (SIGALRM, SIG_IGN);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2433 #endif /* not BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2434 if (read_alarm_should_throw)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2435 longjmp (read_alarm_throw, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2436 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2437
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
2438 #ifndef WINDOWSNT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2439 /* Only rfds are checked. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2440 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
2441 sys_select (nfds, rfds, wfds, efds, timeout)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2442 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
2443 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
2444 EMACS_TIME *timeout;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2445 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2446 int ravail = 0, old_alarm;
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2447 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
2448 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
2449 int *local_timeout;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2450 extern int proc_buffered_char[];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2451 #ifndef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2452 int process_tick = 0, update_tick = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2453 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2454 extern int process_tick, update_tick;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2455 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2456 SIGTYPE (*old_trap) ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2457 unsigned char buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2458
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2459 #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
2460 /* 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
2461 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
2462 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
2463 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
2464 #endif
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2465 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
2466 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
2467 FD_ZERO (&orfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2468 if (rfds)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2469 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2470 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
2471 FD_ZERO (rfds);
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 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
2474 FD_ZERO (wfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2475 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
2476 FD_ZERO (efds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2477
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2478 /* If we are looking only for the terminal, with no timeout,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2479 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
2480 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
2481 && FD_ISSET (0, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2482 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2483 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
2484 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
2485 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
2486 goto hardway;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2487 if (! detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2488 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
2489 FD_SET (0, rfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2490 return 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2491 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2492
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2493 hardway:
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2494 /* Once a second, till the timer expires, check all the flagged read
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2495 * descriptors to see if any input is available. If there is some then
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2496 * set the corresponding bit in the return copy of rfds.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2497 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2498 while (1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2499 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2500 register int to_check, fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2501
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2502 if (rfds)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2503 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2504 for (to_check = nfds, fd = 0; --to_check >= 0; fd++)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2505 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2506 if (FD_ISSET (fd, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2507 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2508 int avail = 0, status = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2509
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2510 if (fd == 0)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2511 avail = detect_input_pending (); /* Special keyboard handler */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2512 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2513 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2514 #ifdef FIONREAD
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2515 status = ioctl (fd, FIONREAD, &avail);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2516 #else /* no FIONREAD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2517 /* Hoping it will return -1 if nothing available
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2518 or 0 if all 0 chars requested are read. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2519 if (proc_buffered_char[fd] >= 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2520 avail = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2521 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2522 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2523 avail = read (fd, &buf, 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2524 if (avail > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2525 proc_buffered_char[fd] = buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2526 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2527 #endif /* no FIONREAD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2528 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2529 if (status >= 0 && avail > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2530 {
10528
e020d8d5dc2c (sys_select): Renamed from select. Use SELECT_TYPE instead of int. Defer to
Karl Heuer <kwzh@gnu.org>
parents: 10486
diff changeset
2531 FD_SET (fd, rfds);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2532 ravail++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2533 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2534 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2535 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2536 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2537 if (*local_timeout == 0 || ravail != 0 || process_tick != update_tick)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2538 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2539 old_alarm = alarm (0);
1014
6e25f9b75841 * sysdep.c (select): There's no need to cast the return value of
Jim Blandy <jimb@redhat.com>
parents: 766
diff changeset
2540 old_trap = signal (SIGALRM, select_alarm);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2541 select_alarmed = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2542 alarm (SELECT_PAUSE);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2543 /* Wait for a SIGALRM (or maybe a SIGTINT) */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2544 while (select_alarmed == 0 && *local_timeout != 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2545 && process_tick == update_tick)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2546 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2547 /* If we are interested in terminal input,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2548 wait by reading the terminal.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2549 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
2550 if (FD_ISSET (0, &orfds))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2551 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2552 read_input_waiting ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2553 if (detect_input_pending ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2554 select_alarmed = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2555 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2556 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2557 pause ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2558 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2559 (*local_timeout) -= SELECT_PAUSE;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2560 /* Reset the old alarm if there was one */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2561 alarm (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2562 signal (SIGALRM, old_trap);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2563 if (old_alarm != 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2564 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2565 /* Reset or forge an interrupt for the original handler. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2566 old_alarm -= SELECT_PAUSE;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2567 if (old_alarm <= 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2568 kill (getpid (), SIGALRM); /* Fake an alarm with the orig' handler */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2569 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2570 alarm (old_alarm);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2571 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2572 if (*local_timeout == 0) /* Stop on timer being cleared */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2573 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2574 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2575 return ravail;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2576 }
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
2577 #endif /* not WINDOWSNT */
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 /* Read keyboard input into the standard buffer,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2580 waiting for at least one character. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2581
13416
58e22ceabff4 [HAVE_NTGUI] (init_sys_modes, reset_sys_modes):
Geoff Voelker <voelker@cs.washington.edu>
parents: 13174
diff changeset
2582 /* 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
2583 #ifdef HAVE_WINDOW_SYSTEM
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2584 #define BUFFER_SIZE_FACTOR 16
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2585 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2586 #define BUFFER_SIZE_FACTOR 1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2587 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2588
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2589 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2590 read_input_waiting ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2591 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2592 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
2593 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
2594 extern int quit_char;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2595
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2596 if (read_socket_hook)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2597 {
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2598 struct input_event buf[256];
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2599
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2600 read_alarm_should_throw = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2601 if (! setjmp (read_alarm_throw))
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2602 nread = (*read_socket_hook) (0, buf, 256, 1, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2603 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2604 nread = -1;
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2605
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2606 /* 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
2607 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
2608 {
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2609 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
2610 /* 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
2611 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
2612 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
2613 && 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
2614 break;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2615 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2616 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2617 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2618 {
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2619 char buf[3];
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2620 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
2621
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2622 /* 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
2623 e.kind = ascii_keystroke;
9532
e71667634f07 (read_input_waiting): Set e.frame_or_window w/ XSETFRAME.
Richard M. Stallman <rms@gnu.org>
parents: 9426
diff changeset
2624 XSETFRAME (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
2625 e.modifiers = 0;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2626 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
2627 {
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2628 /* 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
2629 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
2630 if (read_socket_hook == 0)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2631 {
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2632 /* 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
2633 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
2634 e.modifiers = meta_modifier;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2635 if (meta_key != 2)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2636 buf[i] &= ~0x80;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2637 }
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2638
9279
2382e2f3884e (kbd_input_ast, read_input_waiting): Use new accessor macros instead of
Karl Heuer <kwzh@gnu.org>
parents: 9239
diff changeset
2639 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
2640 kbd_buffer_store_event (&e);
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2641 /* 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
2642 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
2643 if (buf[i] == quit_char)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
2644 break;
4952
0c973730e476 (read_input_waiting): Don't mess with meta bit
Richard M. Stallman <rms@gnu.org>
parents: 4916
diff changeset
2645 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2646 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2647 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2648
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2649 #endif /* not HAVE_SELECT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2650 #endif /* not VMS */
12988
4ccd1ffa8b33 (sys_subshell) [MSDOS]: Handle SUSPEND env var.
Richard M. Stallman <rms@gnu.org>
parents: 12547
diff changeset
2651 #endif /* not MSDOS */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2652
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2653 #ifdef BSD4_1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2654 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2655 * Partially emulate 4.2 open call.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2656 * open is defined as this in 4.1.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2657 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2658 * - added by Michael Bloom @ Citicorp/TTI
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2659 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2660 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2661
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2662 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2663 sys_open (path, oflag, mode)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2664 char *path;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2665 int oflag, mode;
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 (oflag & O_CREAT)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2668 return creat (path, mode);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2669 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2670 return open (path, oflag);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2671 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2672
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2673 void
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
2674 init_sigio (fd)
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
2675 int fd;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2676 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2677 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2678 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2679 lmode = LINTRUP | lmode;
9688
31f317386c4c Never use input_fd if using X.
Richard M. Stallman <rms@gnu.org>
parents: 9651
diff changeset
2680 ioctl (fd, TIOCLSET, &lmode);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2681 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2682
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2683 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2684 reset_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2685 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2686 if (noninteractive)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2687 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2688 lmode = ~LINTRUP & lmode;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2689 ioctl (0, TIOCLSET, &lmode);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2690 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2691
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2692 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2693 request_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2694 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2695 sigrelse (SIGTINT);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2696
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2697 interrupts_deferred = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2698 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2699
20367
3d1939f30ec6 (discard_tty_input, init_baud_rate,
Kenichi Handa <handa@m17n.org>
parents: 20348
diff changeset
2700 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2701 unrequest_sigio ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2702 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2703 sighold (SIGTINT);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2704
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2705 interrupts_deferred = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2706 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2707
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2708 /* still inside #ifdef BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2709 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2710
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2711 int sigheld; /* Mask of held signals */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2712
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2713 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2714 sigholdx (signum)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2715 int signum;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2716 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2717 sigheld |= sigbit (signum);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2718 sighold (signum);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2719 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2720
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2721 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2722 sigisheld (signum)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2723 int signum;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2724 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2725 sigheld |= sigbit (signum);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2726 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2727
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2728 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2729 sigunhold (signum)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2730 int signum;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2731 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2732 sigheld &= ~sigbit (signum);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2733 sigrelse (signum);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2734 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2735
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2736 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2737 sigfree () /* Free all held signals */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2738 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2739 int i;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2740 for (i = 0; i < NSIG; i++)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2741 if (sigheld & sigbit (i))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2742 sigrelse (i);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2743 sigheld = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2744 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2745
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2746 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2747 sigbit (i)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2748 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2749 return 1 << (i - 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2750 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2751 #endif /* subprocesses */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2752 #endif /* BSD4_1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2753
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2754 /* POSIX signals support - DJB */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2755 /* Anyone with POSIX signals should have ANSI C declarations */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2756
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2757 #ifdef POSIX_SIGNALS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2758
20948
a9a9a13079b4 (sys_sigpause): Removed.
Andreas Schwab <schwab@suse.de>
parents: 20498
diff changeset
2759 sigset_t empty_mask, full_mask;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2760
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
2761 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2762 init_signals ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2763 {
2913
409c1022bad5 Some changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents: 2873
diff changeset
2764 sigemptyset (&empty_mask);
409c1022bad5 Some changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents: 2873
diff changeset
2765 sigfillset (&full_mask);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2766 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2767
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2768 signal_handler_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2769 sys_signal (int signal_number, signal_handler_t action)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2770 {
20948
a9a9a13079b4 (sys_sigpause): Removed.
Andreas Schwab <schwab@suse.de>
parents: 20498
diff changeset
2771 struct sigaction new_action, old_action;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2772 sigemptyset (&new_action.sa_mask);
20498
22dd2d861e36 (sys_signal): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 20456
diff changeset
2773 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
2774 #ifdef SA_RESTART
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
2775 /* 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
2776 * 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
2777 */
f97415a8cf41 (request_sigio, unrequest_sigio): Add new versions of
Richard M. Stallman <rms@gnu.org>
parents: 5573
diff changeset
2778 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
2779 #else
3292
6209d0e98e35 (sys_signal): Use 0, not NULL, to set sa_flags.
Richard M. Stallman <rms@gnu.org>
parents: 3268
diff changeset
2780 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
2781 #endif
709
829ba8707e86 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 692
diff changeset
2782 sigaction (signal_number, &new_action, &old_action);
20498
22dd2d861e36 (sys_signal): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 20456
diff changeset
2783 return (old_action.sa_handler);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2784 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2785
638
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2786 #ifndef __GNUC__
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2787 /* 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
2788 can be written as a macro. */
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2789 sigset_t
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2790 sys_sigmask (int sig)
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2791 {
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2792 sigset_t mask;
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2793 sigemptyset (&mask);
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2794 sigaddset (&mask, sig);
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2795 return mask;
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2796 }
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2797 #endif
40b255f55df3 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 624
diff changeset
2798
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2799 /* 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
2800 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
2801 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
2802 anyhow. - DJB */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2803
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2804 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2805 sys_sigblock (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2806 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2807 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2808 sigprocmask (SIG_BLOCK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2809 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2810 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2811
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2812 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2813 sys_sigunblock (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2814 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2815 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2816 sigprocmask (SIG_UNBLOCK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2817 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2818 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2819
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2820 sigset_t
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2821 sys_sigsetmask (sigset_t new_mask)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2822 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2823 sigset_t old_mask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2824 sigprocmask (SIG_SETMASK, &new_mask, &old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2825 return (old_mask);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2826 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2827
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2828 #endif /* POSIX_SIGNALS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2829
2332
bc2f7dc78412 * sysdep.c (random, srandom): Don't define these if HAVE_RANDOM is
Jim Blandy <jimb@redhat.com>
parents: 2287
diff changeset
2830 #ifndef HAVE_RANDOM
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2831 #ifdef random
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2832 #define HAVE_RANDOM
8368
0c30bec316c6 (random): Use rand differently, and distinguish BSD/USG.
Richard M. Stallman <rms@gnu.org>
parents: 8358
diff changeset
2833 #endif
8358
f9d8f778f73b (random, srandom): Obey HAVE_RAND48 flag.
Richard M. Stallman <rms@gnu.org>
parents: 8330
diff changeset
2834 #endif
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2835
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2836 /* 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
2837 `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
2838 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
2839 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
2840
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2841 #ifndef RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2842 # ifdef HAVE_RANDOM
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2843 # define RAND_BITS 31
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2844 # else /* !HAVE_RANDOM */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2845 # ifdef HAVE_LRAND48
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2846 # define RAND_BITS 31
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2847 # define random lrand48
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2848 # else /* !HAVE_LRAND48 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2849 # define RAND_BITS 15
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2850 # if RAND_MAX == 32767
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2851 # define random rand
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2852 # else /* RAND_MAX != 32767 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2853 # if RAND_MAX == 2147483647
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2854 # define random() (rand () >> 16)
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2855 # else /* RAND_MAX != 2147483647 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2856 # ifdef USG
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2857 # define random rand
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2858 # else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2859 # define random() (rand () >> 16)
16240
b448d7632094 Replaced symbol BSD with BSD_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 16117
diff changeset
2860 # endif /* !USG */
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2861 # endif /* RAND_MAX != 2147483647 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2862 # endif /* RAND_MAX != 32767 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2863 # endif /* !HAVE_LRAND48 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2864 # endif /* !HAVE_RANDOM */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2865 #endif /* !RAND_BITS */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2866
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2867 void
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2868 seed_random (arg)
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2869 long arg;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2870 {
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2871 #ifdef HAVE_RANDOM
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2872 srandom ((unsigned int)arg);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2873 #else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2874 # ifdef HAVE_LRAND48
8702
097fe97274e9 (srandom): Pass arg to srand48; no return value.
Karl Heuer <kwzh@gnu.org>
parents: 8699
diff changeset
2875 srand48 (arg);
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2876 # else
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2877 srand ((unsigned int)arg);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2878 # endif
8358
f9d8f778f73b (random, srandom): Obey HAVE_RAND48 flag.
Richard M. Stallman <rms@gnu.org>
parents: 8330
diff changeset
2879 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2880 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2881
10486
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2882 /*
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2883 * 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
2884 * 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
2885 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2886 long
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2887 get_random ()
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2888 {
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2889 long val = random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2890 #if VALBITS > RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2891 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2892 #if VALBITS > 2*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2893 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2894 #if VALBITS > 3*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2895 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2896 #if VALBITS > 4*RAND_BITS
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2897 val = (val << RAND_BITS) ^ random ();
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2898 #endif /* need at least 5 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2899 #endif /* need at least 4 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2900 #endif /* need at least 3 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2901 #endif /* need at least 2 */
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2902 return val & ((1L << VALBITS) - 1);
0028c532b70b (seed_random): Renamed from srandom.
Karl Heuer <kwzh@gnu.org>
parents: 10356
diff changeset
2903 }
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2904
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2905 #ifdef WRONG_NAME_INSQUE
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2906
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2907 insque (q,p)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2908 caddr_t q,p;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2909 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2910 _insque (q,p);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2911 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2912
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2913 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2914
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2915 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2916
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2917 #ifdef getenv
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2918 /* If any place else asks for the TERM variable,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2919 allow it to be overridden with the EMACS_TERM variable
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2920 before attempting to translate the logical name TERM. As a last
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2921 resort, ask for VAX C's special idea of the TERM variable. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2922 #undef getenv
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2923 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2924 sys_getenv (name)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2925 char *name;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2926 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2927 register char *val;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2928 static char buf[256];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2929 static struct dsc$descriptor_s equiv
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2930 = {sizeof (buf), DSC$K_DTYPE_T, DSC$K_CLASS_S, buf};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2931 static struct dsc$descriptor_s d_name
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2932 = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2933 short eqlen;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2934
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2935 if (!strcmp (name, "TERM"))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2936 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2937 val = (char *) getenv ("EMACS_TERM");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2938 if (val)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2939 return val;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2940 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2941
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2942 d_name.dsc$w_length = strlen (name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2943 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
2944 if (LIB$SYS_TRNLOG (&d_name, &eqlen, &equiv) == 1)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2945 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2946 char *str = (char *) xmalloc (eqlen + 1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2947 bcopy (buf, str, eqlen);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2948 str[eqlen] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2949 /* This is a storage leak, but a pain to fix. With luck,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2950 no one will ever notice. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2951 return str;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2952 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2953 return (char *) getenv (name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2954 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2955 #endif /* getenv */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2956
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2957 #ifdef abort
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2958 /* 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
2959 to force a call on the debugger from within the image. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2960 #undef abort
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2961 sys_abort ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2962 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2963 reset_sys_modes ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2964 LIB$SIGNAL (SS$_DEBUG);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2965 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2966 #endif /* abort */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2967 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2968
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2969 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2970 #ifdef LINK_CRTL_SHARE
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
2971 #ifdef SHARABLE_LIB_BUG
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
2972 /* Variables declared noshare and initialized in sharable libraries
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2973 cannot be shared. The VMS linker incorrectly forces you to use a private
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2974 version which is uninitialized... If not for this "feature", we
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2975 could use the C library definition of sys_nerr and sys_errlist. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2976 int sys_nerr = 35;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2977 char *sys_errlist[] =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2978 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2979 "error 0",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2980 "not owner",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2981 "no such file or directory",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2982 "no such process",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2983 "interrupted system call",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2984 "i/o error",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2985 "no such device or address",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2986 "argument list too long",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2987 "exec format error",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2988 "bad file number",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2989 "no child process",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2990 "no more processes",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2991 "not enough memory",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2992 "permission denied",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2993 "bad address",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2994 "block device required",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2995 "mount devices busy",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2996 "file exists",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2997 "cross-device link",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2998 "no such device",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
2999 "not a directory",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3000 "is a directory",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3001 "invalid argument",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3002 "file table overflow",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3003 "too many open files",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3004 "not a typewriter",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3005 "text file busy",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3006 "file too big",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3007 "no space left on device",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3008 "illegal seek",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3009 "read-only file system",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3010 "too many links",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3011 "broken pipe",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3012 "math argument",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3013 "result too large",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3014 "I/O stream empty",
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3015 "vax/vms specific error code nontranslatable error"
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3016 };
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3017 #endif /* SHARABLE_LIB_BUG */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3018 #endif /* LINK_CRTL_SHARE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3019 #endif /* VMS */
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3020
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3021 #ifndef HAVE_STRERROR
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3022 #ifndef WINDOWSNT
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3023 char *
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3024 strerror (errnum)
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3025 int errnum;
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3026 {
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3027 extern char *sys_errlist[];
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3028 extern int sys_nerr;
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3029
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3030 if (errnum >= 0 && errnum < sys_nerr)
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3031 return sys_errlist[errnum];
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3032 return (char *) "Unknown error";
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3033 }
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3034 #endif /* not WINDOWSNT */
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3035 #endif /* ! HAVE_STRERROR */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3036
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3037 #ifdef INTERRUPTIBLE_OPEN
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3038
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3039 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3040 /* VARARGS 2 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3041 sys_open (path, oflag, mode)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3042 char *path;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3043 int oflag, mode;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3044 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3045 register int rtnval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3046
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3047 while ((rtnval = open (path, oflag, mode)) == -1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3048 && (errno == EINTR));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3049 return (rtnval);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3050 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3051
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3052 #endif /* INTERRUPTIBLE_OPEN */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3053
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3054 #ifdef INTERRUPTIBLE_CLOSE
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3055
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
3056 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3057 sys_close (fd)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3058 int fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3059 {
12547
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
3060 int did_retry = 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3061 register int rtnval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3062
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3063 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
3064 && (errno == EINTR))
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
3065 did_retry = 1;
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
3066
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
3067 /* 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
3068 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
3069 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
3070 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
3071 return 0;
63cdecbd7af4 (sys_close): Handle Sunos 4.1 bug in close errno value.
Karl Heuer <kwzh@gnu.org>
parents: 12326
diff changeset
3072
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3073 return rtnval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3074 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3075
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3076 #endif /* INTERRUPTIBLE_CLOSE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3077
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3078 #ifdef INTERRUPTIBLE_IO
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3079
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3080 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3081 sys_read (fildes, buf, nbyte)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3082 int fildes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3083 char *buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3084 unsigned int nbyte;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3085 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3086 register int rtnval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3087
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3088 while ((rtnval = read (fildes, buf, nbyte)) == -1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3089 && (errno == EINTR));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3090 return (rtnval);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3091 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3092
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3093 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3094 sys_write (fildes, buf, nbyte)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3095 int fildes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3096 char *buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3097 unsigned int nbyte;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3098 {
4772
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3099 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
3100
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3101 bytes_written = 0;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3102
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3103 while (nbyte > 0)
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3104 {
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3105 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
3106
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3107 if (rtnval == -1)
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3108 {
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3109 if (errno == EINTR)
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3110 continue;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3111 else
5954
02f406110e4b (sys_write): If any bytes were written, return how many.
Richard M. Stallman <rms@gnu.org>
parents: 5937
diff changeset
3112 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
3113 }
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3114
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3115 buf += rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3116 nbyte -= rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3117 bytes_written += rtnval;
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3118 }
2c6033bfb871 (sys_write): Keep trying to write out the data until
Brian Fox <bfox@gnu.org>
parents: 4708
diff changeset
3119 return (bytes_written);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3120 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3121
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3122 #endif /* INTERRUPTIBLE_IO */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3123
4430
ecac48eaacce (vfork): Move this outside the USG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 4142
diff changeset
3124 #ifndef HAVE_VFORK
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3125 #ifndef WINDOWSNT
4430
ecac48eaacce (vfork): Move this outside the USG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 4142
diff changeset
3126 /*
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3127 * Substitute fork for vfork on USG flavors.
4430
ecac48eaacce (vfork): Move this outside the USG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 4142
diff changeset
3128 */
ecac48eaacce (vfork): Move this outside the USG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 4142
diff changeset
3129
11951
00a37f7ba63c (VFORK_RETURN_TYPE): Use int if not already defined.
Karl Heuer <kwzh@gnu.org>
parents: 11800
diff changeset
3130 VFORK_RETURN_TYPE
4430
ecac48eaacce (vfork): Move this outside the USG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 4142
diff changeset
3131 vfork ()
ecac48eaacce (vfork): Move this outside the USG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 4142
diff changeset
3132 {
ecac48eaacce (vfork): Move this outside the USG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 4142
diff changeset
3133 return (fork ());
ecac48eaacce (vfork): Move this outside the USG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 4142
diff changeset
3134 }
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3135 #endif /* not WINDOWSNT */
4430
ecac48eaacce (vfork): Move this outside the USG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 4142
diff changeset
3136 #endif /* not HAVE_VFORK */
ecac48eaacce (vfork): Move this outside the USG conditional.
Richard M. Stallman <rms@gnu.org>
parents: 4142
diff changeset
3137
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3138 #ifdef USG
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3139 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3140 * All of the following are for USG.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3141 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3142 * On USG systems the system calls are INTERRUPTIBLE by signals
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3143 * that the user program has elected to catch. Thus the system call
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3144 * must be retried in these cases. To handle this without massive
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3145 * changes in the source code, we remap the standard system call names
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3146 * 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
3147 * with retries. Actually, for portability reasons, it is good
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3148 * 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
3149 * system calls to a single occurrence in the source. Sure, this
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3150 * adds an extra level of function call overhead but it is almost
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3151 * always negligible. Fred Fish, Unisoft Systems Inc.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3152 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3153
2913
409c1022bad5 Some changes from Michael K. Johnson for Linux.
Jim Blandy <jimb@redhat.com>
parents: 2873
diff changeset
3154 #ifndef HAVE_SYS_SIGLIST
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3155 char *sys_siglist[NSIG + 1] =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3156 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3157 #ifdef AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3158 /* AIX has changed the signals a bit */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3159 "bogus signal", /* 0 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3160 "hangup", /* 1 SIGHUP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3161 "interrupt", /* 2 SIGINT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3162 "quit", /* 3 SIGQUIT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3163 "illegal instruction", /* 4 SIGILL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3164 "trace trap", /* 5 SIGTRAP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3165 "IOT instruction", /* 6 SIGIOT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3166 "crash likely", /* 7 SIGDANGER */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3167 "floating point exception", /* 8 SIGFPE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3168 "kill", /* 9 SIGKILL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3169 "bus error", /* 10 SIGBUS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3170 "segmentation violation", /* 11 SIGSEGV */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3171 "bad argument to system call", /* 12 SIGSYS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3172 "write on a pipe with no one to read it", /* 13 SIGPIPE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3173 "alarm clock", /* 14 SIGALRM */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3174 "software termination signum", /* 15 SIGTERM */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3175 "user defined signal 1", /* 16 SIGUSR1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3176 "user defined signal 2", /* 17 SIGUSR2 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3177 "death of a child", /* 18 SIGCLD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3178 "power-fail restart", /* 19 SIGPWR */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3179 "bogus signal", /* 20 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3180 "bogus signal", /* 21 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3181 "bogus signal", /* 22 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3182 "bogus signal", /* 23 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3183 "bogus signal", /* 24 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3184 "LAN I/O interrupt", /* 25 SIGAIO */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3185 "PTY I/O interrupt", /* 26 SIGPTY */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3186 "I/O intervention required", /* 27 SIGIOINT */
10138
2a0a17f1043e (sys_siglist) [AIX]: Add AIXHFT conditional.
Richard M. Stallman <rms@gnu.org>
parents: 10108
diff changeset
3187 #ifdef AIXHFT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3188 "HFT grant", /* 28 SIGGRANT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3189 "HFT retract", /* 29 SIGRETRACT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3190 "HFT sound done", /* 30 SIGSOUND */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3191 "HFT input ready", /* 31 SIGMSG */
10138
2a0a17f1043e (sys_siglist) [AIX]: Add AIXHFT conditional.
Richard M. Stallman <rms@gnu.org>
parents: 10108
diff changeset
3192 #endif
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3193 #else /* not AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3194 "bogus signal", /* 0 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3195 "hangup", /* 1 SIGHUP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3196 "interrupt", /* 2 SIGINT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3197 "quit", /* 3 SIGQUIT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3198 "illegal instruction", /* 4 SIGILL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3199 "trace trap", /* 5 SIGTRAP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3200 "IOT instruction", /* 6 SIGIOT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3201 "EMT instruction", /* 7 SIGEMT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3202 "floating point exception", /* 8 SIGFPE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3203 "kill", /* 9 SIGKILL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3204 "bus error", /* 10 SIGBUS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3205 "segmentation violation", /* 11 SIGSEGV */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3206 "bad argument to system call", /* 12 SIGSYS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3207 "write on a pipe with no one to read it", /* 13 SIGPIPE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3208 "alarm clock", /* 14 SIGALRM */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3209 "software termination signum", /* 15 SIGTERM */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3210 "user defined signal 1", /* 16 SIGUSR1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3211 "user defined signal 2", /* 17 SIGUSR2 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3212 "death of a child", /* 18 SIGCLD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3213 "power-fail restart", /* 19 SIGPWR */
5573
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3214 #ifdef sun
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3215 "window size change", /* 20 SIGWINCH */
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3216 "urgent socket condition", /* 21 SIGURG */
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3217 "pollable event occurred", /* 22 SIGPOLL */
5573
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3218 "stop (cannot be caught or ignored)", /* 23 SIGSTOP */
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3219 "user stop requested from tty", /* 24 SIGTSTP */
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3220 "stopped process has been continued", /* 25 SIGCONT */
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3221 "background tty read attempted", /* 26 SIGTTIN */
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3222 "background tty write attempted", /* 27 SIGTTOU */
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3223 "virtual timer expired", /* 28 SIGVTALRM */
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3224 "profiling timer expired", /* 29 SIGPROF */
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3225 "exceeded cpu limit", /* 30 SIGXCPU */
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3226 "exceeded file size limit", /* 31 SIGXFSZ */
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3227 "process's lwps are blocked", /* 32 SIGWAITING */
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3228 "special signal used by thread library", /* 33 SIGLWP */
6895
4b8dc0a39b47 (sys_siglist) [sun]: Check SIGFREEZE and SIGTHAW defined.
Richard M. Stallman <rms@gnu.org>
parents: 6829
diff changeset
3229 #ifdef SIGFREEZE
5573
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3230 "Special Signal Used By CPR", /* 34 SIGFREEZE */
6895
4b8dc0a39b47 (sys_siglist) [sun]: Check SIGFREEZE and SIGTHAW defined.
Richard M. Stallman <rms@gnu.org>
parents: 6829
diff changeset
3231 #endif
4b8dc0a39b47 (sys_siglist) [sun]: Check SIGFREEZE and SIGTHAW defined.
Richard M. Stallman <rms@gnu.org>
parents: 6829
diff changeset
3232 #ifdef SIGTHAW
5573
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3233 "Special Signal Used By CPR", /* 35 SIGTHAW */
6895
4b8dc0a39b47 (sys_siglist) [sun]: Check SIGFREEZE and SIGTHAW defined.
Richard M. Stallman <rms@gnu.org>
parents: 6829
diff changeset
3234 #endif
5573
47fecb8960d8 (sys_siglist) [sun]: Additional Sun-specific signal names.
Richard M. Stallman <rms@gnu.org>
parents: 5533
diff changeset
3235 #endif /* sun */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3236 #endif /* not AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3237 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3238 };
3268
760a82a8767e * sysdep.c (sys_siglist): Comment out #endif trailer.
Jim Blandy <jimb@redhat.com>
parents: 3239
diff changeset
3239 #endif /* HAVE_SYS_SIGLIST */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3240
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3241 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3242 * Warning, this function may not duplicate 4.2 action properly
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3243 * under error conditions.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3244 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3245
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3246 #ifndef MAXPATHLEN
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3247 /* In 4.1, param.h fails to define this. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3248 #define MAXPATHLEN 1024
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3249 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3250
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3251 #ifndef HAVE_GETWD
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3252
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3253 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3254 getwd (pathname)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3255 char *pathname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3256 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3257 char *npath, *spath;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3258 extern char *getcwd ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3259
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
3260 BLOCK_INPUT; /* getcwd uses malloc */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3261 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
3262 if (spath == 0)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
3263 return spath;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3264 /* On Altos 3068, getcwd can return @hostname/dir, so discard
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3265 up to first slash. Should be harmless on other systems. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3266 while (*npath && *npath != '/')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3267 npath++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3268 strcpy (pathname, npath);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3269 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
3270 UNBLOCK_INPUT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3271 return pathname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3272 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3273
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3274 #endif /* HAVE_GETWD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3275
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3276 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3277 * Emulate rename using unlink/link. Note that this is
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3278 * only partially correct. Also, doesn't enforce restriction
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3279 * that files be of same type (regular->regular, dir->dir, etc).
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3280 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3281
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
3282 #ifndef HAVE_RENAME
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
3283
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3284 rename (from, to)
3842
e8bcf96f1418 * sysdep.c (rename): Make arguments const. autoconf #defines
Jim Blandy <jimb@redhat.com>
parents: 3826
diff changeset
3285 const char *from;
e8bcf96f1418 * sysdep.c (rename): Make arguments const. autoconf #defines
Jim Blandy <jimb@redhat.com>
parents: 3826
diff changeset
3286 const char *to;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3287 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3288 if (access (from, 0) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3289 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3290 unlink (to);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3291 if (link (from, to) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3292 if (unlink (from) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3293 return (0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3294 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3295 return (-1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3296 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3297
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
3298 #endif
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 579
diff changeset
3299
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3300
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3301 #ifdef HPUX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3302 #ifndef HAVE_PERROR
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3303
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3304 /* HPUX curses library references perror, but as far as we know
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3305 it won't be called. Anyway this definition will do for now. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3306
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3307 perror ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3308 {
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 #endif /* not HAVE_PERROR */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3312 #endif /* HPUX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3313
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3314 #ifndef HAVE_DUP2
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3315
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3316 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3317 * Emulate BSD dup2. First close newd if it already exists.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3318 * Then, attempt to dup oldd. If not successful, call dup2 recursively
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3319 * until we are, then close the unsuccessful ones.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3320 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3321
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3322 dup2 (oldd, newd)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3323 int oldd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3324 int newd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3325 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3326 register int fd, ret;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3327
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3328 sys_close (newd);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3329
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3330 #ifdef F_DUPFD
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3331 fd = fcntl (oldd, F_DUPFD, newd);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3332 if (fd != newd)
5518
df05c1e7abe1 [! VMS]: Don't declare sys_errlist here.
Roland McGrath <roland@gnu.org>
parents: 5498
diff changeset
3333 error ("can't dup2 (%i,%i) : %s", oldd, newd, strerror (errno));
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3334 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3335 fd = dup (old);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3336 if (fd == -1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3337 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3338 if (fd == new)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3339 return new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3340 ret = dup2 (old,new);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3341 sys_close (fd);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3342 return ret;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3343 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3344 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3345
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3346 #endif /* not HAVE_DUP2 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3347
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3348 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3349 * Gettimeofday. Simulate as much as possible. Only accurate
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3350 * to nearest second. Emacs doesn't use tzp so ignore it for now.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3351 * Only needed when subprocesses are defined.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3352 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3353
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3354 #ifdef subprocesses
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3355 #ifndef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3356 #ifndef HAVE_GETTIMEOFDAY
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3357 #ifdef HAVE_TIMEVAL
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3358
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3359 /* ARGSUSED */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
3360 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3361 gettimeofday (tp, tzp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3362 struct timeval *tp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3363 struct timezone *tzp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3364 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3365 extern long time ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3366
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3367 tp->tv_sec = time ((long *)0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3368 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
3369 if (tzp != 0)
2e4882a32671 (gettimeofday): Don't store in *tzp if tzp is 0.
Richard M. Stallman <rms@gnu.org>
parents: 3157
diff changeset
3370 tzp->tz_minuteswest = -1;
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
3371 return 0;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3372 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3373
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3374 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3375 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3376 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3377 #endif /* subprocess && !HAVE_GETTIMEOFDAY && HAVE_TIMEVAL && !VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3378
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3379 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3380 * This function will go away as soon as all the stubs fixed. (fnf)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3381 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3382
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
3383 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3384 croak (badfunc)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3385 char *badfunc;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3386 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3387 printf ("%s not yet implemented\r\n", badfunc);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3388 reset_sys_modes ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3389 exit (1);
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 /* USG */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3393
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3394 #ifdef DGUX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3395
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3396 char *sys_siglist[NSIG + 1] =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3397 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3398 "null signal", /* 0 SIGNULL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3399 "hangup", /* 1 SIGHUP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3400 "interrupt", /* 2 SIGINT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3401 "quit", /* 3 SIGQUIT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3402 "illegal instruction", /* 4 SIGILL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3403 "trace trap", /* 5 SIGTRAP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3404 "abort termination", /* 6 SIGABRT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3405 "SIGEMT", /* 7 SIGEMT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3406 "floating point exception", /* 8 SIGFPE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3407 "kill", /* 9 SIGKILL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3408 "bus error", /* 10 SIGBUS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3409 "segmentation violation", /* 11 SIGSEGV */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3410 "bad argument to system call", /* 12 SIGSYS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3411 "write on a pipe with no reader", /* 13 SIGPIPE */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3412 "alarm clock", /* 14 SIGALRM */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3413 "software termination signal", /* 15 SIGTERM */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3414 "user defined signal 1", /* 16 SIGUSR1 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3415 "user defined signal 2", /* 17 SIGUSR2 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3416 "child stopped or terminated", /* 18 SIGCLD */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3417 "power-fail restart", /* 19 SIGPWR */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3418 "window size changed", /* 20 SIGWINCH */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3419 "undefined", /* 21 */
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
3420 "pollable event occurred", /* 22 SIGPOLL */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3421 "sendable stop signal not from tty", /* 23 SIGSTOP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3422 "stop signal from tty", /* 24 SIGSTP */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3423 "continue a stopped process", /* 25 SIGCONT */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3424 "attempted background tty read", /* 26 SIGTTIN */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3425 "attempted background tty write", /* 27 SIGTTOU */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3426 "undefined", /* 28 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3427 "undefined", /* 29 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3428 "undefined", /* 30 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3429 "undefined", /* 31 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3430 "undefined", /* 32 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3431 "socket (TCP/IP) urgent data arrival", /* 33 SIGURG */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3432 "I/O is possible", /* 34 SIGIO */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3433 "exceeded cpu time limit", /* 35 SIGXCPU */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3434 "exceeded file size limit", /* 36 SIGXFSZ */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3435 "virtual time alarm", /* 37 SIGVTALRM */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3436 "profiling time alarm", /* 38 SIGPROF */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3437 "undefined", /* 39 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3438 "file record locks revoked", /* 40 SIGLOST */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3439 "undefined", /* 41 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3440 "undefined", /* 42 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3441 "undefined", /* 43 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3442 "undefined", /* 44 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3443 "undefined", /* 45 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3444 "undefined", /* 46 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3445 "undefined", /* 47 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3446 "undefined", /* 48 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3447 "undefined", /* 49 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3448 "undefined", /* 50 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3449 "undefined", /* 51 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3450 "undefined", /* 52 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3451 "undefined", /* 53 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3452 "undefined", /* 54 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3453 "undefined", /* 55 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3454 "undefined", /* 56 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3455 "undefined", /* 57 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3456 "undefined", /* 58 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3457 "undefined", /* 59 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3458 "undefined", /* 60 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3459 "undefined", /* 61 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3460 "undefined", /* 62 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3461 "undefined", /* 63 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3462 "notification message in mess. queue", /* 64 SIGDGNOTIFY */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3463 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3464 };
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3465
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3466 #endif /* DGUX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3467
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3468 /* Directory routines for systems that don't have them. */
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 SYSV_SYSTEM_DIR
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3471
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3472 #include <dirent.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3473
5189
af88471e6799 (closedir): Test BROKEN_CLOSEDIR, not INTERRUPTIBLE_CLOSE.
Richard M. Stallman <rms@gnu.org>
parents: 5167
diff changeset
3474 #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
3475
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3476 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3477 closedir (dirp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3478 register DIR *dirp; /* stream from opendir */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3479 {
5158
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
3480 int rtnval;
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
3481
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
3482 rtnval = sys_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
3483
3797
68807e370e9d Changes for correct pgrp behavior; approach suggested by Bob
Jim Blandy <jimb@redhat.com>
parents: 3760
diff changeset
3484 /* 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
3485 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
3486 anyway? */
68807e370e9d Changes for correct pgrp behavior; approach suggested by Bob
Jim Blandy <jimb@redhat.com>
parents: 3760
diff changeset
3487 #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
3488 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
3489 #endif
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
3490 xfree ((char *) dirp);
5158
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
3491
035f80625c5e (closedir): Pass on the value from sys_closedir.
Richard M. Stallman <rms@gnu.org>
parents: 5136
diff changeset
3492 return rtnval;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3493 }
5189
af88471e6799 (closedir): Test BROKEN_CLOSEDIR, not INTERRUPTIBLE_CLOSE.
Richard M. Stallman <rms@gnu.org>
parents: 5167
diff changeset
3494 #endif /* BROKEN_CLOSEDIR or not HAVE_CLOSEDIR */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3495 #endif /* SYSV_SYSTEM_DIR */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3496
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3497 #ifdef NONSYSTEM_DIR_LIBRARY
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3498
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3499 DIR *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3500 opendir (filename)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3501 char *filename; /* name of directory */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3502 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3503 register DIR *dirp; /* -> malloc'ed storage */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3504 register int fd; /* file descriptor for read */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3505 struct stat sbuf; /* result of fstat */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3506
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3507 fd = sys_open (filename, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3508 if (fd < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3509 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3510
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
3511 BLOCK_INPUT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3512 if (fstat (fd, &sbuf) < 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3513 || (sbuf.st_mode & S_IFMT) != S_IFDIR
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3514 || (dirp = (DIR *) malloc (sizeof (DIR))) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3515 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3516 sys_close (fd);
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
3517 UNBLOCK_INPUT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3518 return 0; /* bad luck today */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3519 }
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
3520 UNBLOCK_INPUT;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3521
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3522 dirp->dd_fd = fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3523 dirp->dd_loc = dirp->dd_size = 0; /* refill needed */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3524
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3525 return dirp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3526 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3527
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3528 void
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3529 closedir (dirp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3530 register DIR *dirp; /* stream from opendir */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3531 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3532 sys_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
3533 xfree ((char *) dirp);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3534 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3535
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3536
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3537 #ifndef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3538 #define DIRSIZ 14
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3539 struct olddir
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3540 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3541 ino_t od_ino; /* inode */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3542 char od_name[DIRSIZ]; /* filename */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3543 };
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3544 #endif /* not VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3545
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3546 struct direct dir_static; /* simulated directory contents */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3547
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3548 /* ARGUSED */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3549 struct direct *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3550 readdir (dirp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3551 register DIR *dirp; /* stream from opendir */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3552 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3553 #ifndef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3554 register struct olddir *dp; /* -> directory data */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3555 #else /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3556 register struct dir$_name *dp; /* -> directory data */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3557 register struct dir$_version *dv; /* -> version data */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3558 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3559
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3560 for (; ;)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3561 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3562 if (dirp->dd_loc >= dirp->dd_size)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3563 dirp->dd_loc = dirp->dd_size = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3564
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3565 if (dirp->dd_size == 0 /* refill buffer */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3566 && (dirp->dd_size = sys_read (dirp->dd_fd, dirp->dd_buf, DIRBLKSIZ)) <= 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3567 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3568
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3569 #ifndef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3570 dp = (struct olddir *) &dirp->dd_buf[dirp->dd_loc];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3571 dirp->dd_loc += sizeof (struct olddir);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3572
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3573 if (dp->od_ino != 0) /* not deleted entry */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3574 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3575 dir_static.d_ino = dp->od_ino;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3576 strncpy (dir_static.d_name, dp->od_name, DIRSIZ);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3577 dir_static.d_name[DIRSIZ] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3578 dir_static.d_namlen = strlen (dir_static.d_name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3579 dir_static.d_reclen = sizeof (struct direct)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3580 - MAXNAMLEN + 3
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3581 + dir_static.d_namlen - dir_static.d_namlen % 4;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3582 return &dir_static; /* -> simulated structure */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3583 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3584 #else /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3585 dp = (struct dir$_name *) dirp->dd_buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3586 if (dirp->dd_loc == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3587 dirp->dd_loc = (dp->dir$b_namecount&1) ? dp->dir$b_namecount + 1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3588 : dp->dir$b_namecount;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3589 dv = (struct dir$_version *)&dp->dir$t_name[dirp->dd_loc];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3590 dir_static.d_ino = dv->dir$w_fid_num;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3591 dir_static.d_namlen = dp->dir$b_namecount;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3592 dir_static.d_reclen = sizeof (struct direct)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3593 - MAXNAMLEN + 3
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3594 + dir_static.d_namlen - dir_static.d_namlen % 4;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3595 strncpy (dir_static.d_name, dp->dir$t_name, dp->dir$b_namecount);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3596 dir_static.d_name[dir_static.d_namlen] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3597 dirp->dd_loc = dirp->dd_size; /* only one record at a time */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3598 return &dir_static;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3599 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3600 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3601 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3602
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3603 #ifdef VMS
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3604 /* readdirver is just like readdir except it returns all versions of a file
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3605 as separate entries. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3606
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3607 /* ARGUSED */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3608 struct direct *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3609 readdirver (dirp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3610 register DIR *dirp; /* stream from opendir */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3611 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3612 register struct dir$_name *dp; /* -> directory data */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3613 register struct dir$_version *dv; /* -> version data */
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 (dirp->dd_loc >= dirp->dd_size - sizeof (struct dir$_name))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3616 dirp->dd_loc = dirp->dd_size = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3617
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3618 if (dirp->dd_size == 0 /* refill buffer */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3619 && (dirp->dd_size = sys_read (dirp->dd_fd, dirp->dd_buf, DIRBLKSIZ)) <= 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3620 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3621
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3622 dp = (struct dir$_name *) dirp->dd_buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3623 if (dirp->dd_loc == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3624 dirp->dd_loc = (dp->dir$b_namecount & 1) ? dp->dir$b_namecount + 1
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3625 : dp->dir$b_namecount;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3626 dv = (struct dir$_version *) &dp->dir$t_name[dirp->dd_loc];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3627 strncpy (dir_static.d_name, dp->dir$t_name, dp->dir$b_namecount);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3628 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
3629 dir_static.d_namlen = strlen (dir_static.d_name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3630 dir_static.d_ino = dv->dir$w_fid_num;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3631 dir_static.d_reclen = sizeof (struct direct) - MAXNAMLEN + 3
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3632 + dir_static.d_namlen - dir_static.d_namlen % 4;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3633 dirp->dd_loc = ((char *) (++dv) - dp->dir$t_name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3634 return &dir_static;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3635 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3636
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3637 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3638
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3639 #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
3640
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3641
8934
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3642 int
9082
2c6875700c9f (set_file_times): Fix typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9081
diff changeset
3643 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
3644 char *filename;
8934
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3645 EMACS_TIME atime, mtime;
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3646 {
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3647 #ifdef HAVE_UTIMES
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3648 struct timeval tv[2];
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3649 tv[0] = atime;
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3650 tv[1] = mtime;
9081
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
3651 return utimes (filename, tv);
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
3652 #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
3653 struct utimbuf utb;
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3654 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
3655 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
3656 return utime (filename, &utb);
b85ea5d23089 (set_file_times): Don't test HAVE_UTIME.
Richard M. Stallman <rms@gnu.org>
parents: 9075
diff changeset
3657 #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
3658 }
e743d2957399 (set_file_times): Move this out of the USG conditional.
Karl Heuer <kwzh@gnu.org>
parents: 8881
diff changeset
3659
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3660 /* 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
3661
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3662 #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
3663 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3664 * 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
3665 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3666 * 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
3667 * 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
3668 * a copy.
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3669 * 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
3670 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3671 * 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
3672 * 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
3673 *
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3674 * 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
3675 * 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
3676 */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3677
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3678 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3679 * 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
3680 */
5682
9204cb4fdad9 (mkdir): Use MKDIR_PROTOTYPE if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5594
diff changeset
3681 #ifdef MKDIR_PROTOTYPE
9204cb4fdad9 (mkdir): Use MKDIR_PROTOTYPE if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5594
diff changeset
3682 MKDIR_PROTOTYPE
9204cb4fdad9 (mkdir): Use MKDIR_PROTOTYPE if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5594
diff changeset
3683 #else
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3684 int
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3685 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
3686 char *dpath;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3687 int dmode;
5682
9204cb4fdad9 (mkdir): Use MKDIR_PROTOTYPE if defined.
Richard M. Stallman <rms@gnu.org>
parents: 5594
diff changeset
3688 #endif
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3689 {
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3690 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
3691 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
3692
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3693 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
3694 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3695 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
3696 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3697 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3698
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3699 /* 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
3700 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
3701 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3702
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3703 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
3704 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
3705 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3706
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3707 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
3708 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
3709
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3710 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
3711 /*
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3712 * 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
3713 * 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
3714 * 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
3715 * 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
3716 */
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3717 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
3718 status = umask (status | (0777 & ~dmode)); /* Set for mkdir */
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3719 fd = sys_open("/dev/null", 2);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3720 if (fd >= 0)
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3721 {
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3722 dup2 (fd, 0);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3723 dup2 (fd, 1);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3724 dup2 (fd, 2);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3725 }
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3726 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
3727 _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
3728
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3729 default: /* Parent process */
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3730 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
3731 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3732
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3733 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
3734 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3735 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
3736 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
3737 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3738
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3739 return 0;
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 #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
3742
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3743 #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
3744 int
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3745 rmdir (dpath)
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3746 char *dpath;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3747 {
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3748 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
3749 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
3750
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3751 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
3752 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3753 /* 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
3754 return -1;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3755 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3756
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3757 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
3758 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
3759 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3760
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3761 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
3762 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
3763
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3764 case 0: /* Child process */
4643
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3765 fd = sys_open("/dev/null", 2);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3766 if (fd >= 0)
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3767 {
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3768 dup2 (fd, 0);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3769 dup2 (fd, 1);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3770 dup2 (fd, 2);
004c38daf0ae (mkdir, rmdir): Use wait_for_termination to wait.
Richard M. Stallman <rms@gnu.org>
parents: 4640
diff changeset
3771 }
12326
b99947e6b447 (rmdir): Fix up Aug 19 1993 change that wasn't done right.
Richard M. Stallman <rms@gnu.org>
parents: 12231
diff changeset
3772 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
3773 _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
3774
4438
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3775 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
3776 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
3777 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3778
12326
b99947e6b447 (rmdir): Fix up Aug 19 1993 change that wasn't done right.
Richard M. Stallman <rms@gnu.org>
parents: 12231
diff changeset
3779 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
3780 {
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3781 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
3782 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
3783 }
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 return 0;
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3786 }
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3787 #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
3788
aaab60c46bff * config.h.in: Add #undefs for HAVE_MKDIR and HAVE_RMDIR, for
Jim Blandy <jimb@redhat.com>
parents: 4430
diff changeset
3789
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3790
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3791 /* Functions for VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3792 #ifdef VMS
579
e2782df984a2 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 525
diff changeset
3793 #include "vms-pwd.h"
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3794 #include <acldef.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3795 #include <chpdef.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3796 #include <jpidef.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3797
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3798 /* Return as a string the VMS error string pertaining to STATUS.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3799 Reuses the same static buffer each time it is called. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3800
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3801 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3802 vmserrstr (status)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3803 int status; /* VMS status code */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3804 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3805 int bufadr[2];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3806 short len;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3807 static char buf[257];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3808
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3809 bufadr[0] = sizeof buf - 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3810 bufadr[1] = (int) buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3811 if (! (SYS$GETMSG (status, &len, bufadr, 0x1, 0) & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3812 return "untranslatable VMS error status";
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3813 buf[len] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3814 return buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3815 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3816
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3817 #ifdef access
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3818 #undef access
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3819
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3820 /* The following is necessary because 'access' emulation by VMS C (2.0) does
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3821 * not work correctly. (It also doesn't work well in version 2.3.)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3822 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3823
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3824 #ifdef VMS4_4
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3825
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3826 #define DESCRIPTOR(name,string) struct dsc$descriptor_s name = \
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3827 { strlen (string), DSC$K_DTYPE_T, DSC$K_CLASS_S, string }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3828
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3829 typedef union {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3830 struct {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3831 unsigned short s_buflen;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3832 unsigned short s_code;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3833 char *s_bufadr;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3834 unsigned short *s_retlenadr;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3835 } s;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3836 int end;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3837 } item;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3838 #define buflen s.s_buflen
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3839 #define code s.s_code
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3840 #define bufadr s.s_bufadr
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3841 #define retlenadr s.s_retlenadr
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3842
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3843 #define R_OK 4 /* test for read permission */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3844 #define W_OK 2 /* test for write permission */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3845 #define X_OK 1 /* test for execute (search) permission */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3846 #define F_OK 0 /* test for presence of file */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3847
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3848 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3849 sys_access (path, mode)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3850 char *path;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3851 int mode;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3852 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3853 static char *user = NULL;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3854 char dir_fn[512];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3855
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3856 /* translate possible directory spec into .DIR file name, so brain-dead
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3857 * access can treat the directory like a file. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3858 if (directory_file_name (path, dir_fn))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3859 path = dir_fn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3860
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3861 if (mode == F_OK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3862 return access (path, mode);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3863 if (user == NULL && (user = (char *) getenv ("USER")) == NULL)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3864 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3865 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3866 int stat;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3867 int flags;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3868 int acces;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3869 unsigned short int dummy;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3870 item itemlst[3];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3871 static int constant = ACL$C_FILE;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3872 DESCRIPTOR (path_desc, path);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3873 DESCRIPTOR (user_desc, user);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3874
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3875 flags = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3876 acces = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3877 if ((mode & X_OK) && ((stat = access (path, mode)) < 0 || mode == X_OK))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3878 return stat;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3879 if (mode & R_OK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3880 acces |= CHP$M_READ;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3881 if (mode & W_OK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3882 acces |= CHP$M_WRITE;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3883 itemlst[0].buflen = sizeof (int);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3884 itemlst[0].code = CHP$_FLAGS;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3885 itemlst[0].bufadr = (char *) &flags;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3886 itemlst[0].retlenadr = &dummy;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3887 itemlst[1].buflen = sizeof (int);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3888 itemlst[1].code = CHP$_ACCESS;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3889 itemlst[1].bufadr = (char *) &acces;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3890 itemlst[1].retlenadr = &dummy;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3891 itemlst[2].end = CHP$_END;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3892 stat = SYS$CHECK_ACCESS (&constant, &path_desc, &user_desc, itemlst);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3893 return stat == SS$_NORMAL ? 0 : -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3894 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3895 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3896
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3897 #else /* not VMS4_4 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3898
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3899 #include <prvdef.h>
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3900 #define ACE$M_WRITE 2
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3901 #define ACE$C_KEYID 1
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3902
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3903 static unsigned short memid, grpid;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3904 static unsigned int uic;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3905
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3906 /* Called from init_sys_modes, so it happens not very often
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3907 but at least each time Emacs is loaded. */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
3908 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3909 sys_access_reinit ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3910 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3911 uic = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3912 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3913
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3914 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3915 sys_access (filename, type)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3916 char * filename;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3917 int type;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3918 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3919 struct FAB fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3920 struct XABPRO xab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3921 int status, size, i, typecode, acl_controlled;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3922 unsigned int *aclptr, *aclend, aclbuf[60];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3923 union prvdef prvmask;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3924
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3925 /* Get UIC and GRP values for protection checking. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3926 if (uic == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3927 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3928 status = LIB$GETJPI (&JPI$_UIC, 0, 0, &uic, 0, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3929 if (! (status & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3930 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3931 memid = uic & 0xFFFF;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3932 grpid = uic >> 16;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3933 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3934
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3935 if (type != 2) /* not checking write access */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3936 return access (filename, type);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3937
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3938 /* Check write protection. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3939
9794
64a874af5a58 [WINDOWSNT]: Add includes for NT.
Richard M. Stallman <rms@gnu.org>
parents: 9688
diff changeset
3940 #define CHECKPRIV(bit) (prvmask.bit)
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3941 #define WRITABLE(field) (! ((xab.xab$w_pro >> field) & XAB$M_NOWRITE))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3942
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3943 /* 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
3944 status = SYS$SETPRV (0, 0, 0, prvmask);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3945 if (! (status & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3946 error ("Unable to find privileges: %s", vmserrstr (status));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3947 if (CHECKPRIV (PRV$V_BYPASS))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3948 return 0; /* BYPASS enabled */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3949 fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3950 fab.fab$b_fac = FAB$M_GET;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3951 fab.fab$l_fna = filename;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3952 fab.fab$b_fns = strlen (filename);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3953 fab.fab$l_xab = &xab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3954 xab = cc$rms_xabpro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3955 xab.xab$l_aclbuf = aclbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3956 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
3957 status = SYS$OPEN (&fab, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3958 if (! (status & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3959 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
3960 SYS$CLOSE (&fab, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3961 /* Check system access */
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3962 if (CHECKPRIV (PRV$V_SYSPRV) && WRITABLE (XAB$V_SYS))
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3963 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3964 /* Check ACL entries, if any */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3965 acl_controlled = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3966 if (xab.xab$w_acllen > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3967 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3968 aclptr = aclbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3969 aclend = &aclbuf[xab.xab$w_acllen / 4];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3970 while (*aclptr && aclptr < aclend)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3971 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3972 size = (*aclptr & 0xff) / 4;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3973 typecode = (*aclptr >> 8) & 0xff;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3974 if (typecode == ACE$C_KEYID)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3975 for (i = size - 1; i > 1; i--)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3976 if (aclptr[i] == uic)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3977 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3978 acl_controlled = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3979 if (aclptr[1] & ACE$M_WRITE)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3980 return 0; /* Write access through ACL */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3981 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3982 aclptr = &aclptr[size];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3983 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3984 if (acl_controlled) /* ACL specified, prohibits write access */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3985 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3986 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3987 /* No ACL entries specified, check normal protection */
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3988 if (WRITABLE (XAB$V_WLD)) /* World writable */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3989 return 0;
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3990 if (WRITABLE (XAB$V_GRP) &&
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3991 (unsigned short) (xab.xab$l_uic >> 16) == grpid)
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3992 return 0; /* Group writable */
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3993 if (WRITABLE (XAB$V_OWN) &&
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3994 (xab.xab$l_uic & 0xFFFF) == memid)
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3995 return 0; /* Owner writable */
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3996
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
3997 return -1; /* Not writable */
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3998 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3999 #endif /* not VMS4_4 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4000 #endif /* access */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4001
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4002 static char vtbuf[NAM$C_MAXRSS+1];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4003
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4004 /* translate a vms file spec to a unix path */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4005 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4006 sys_translate_vms (vfile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4007 char * vfile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4008 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4009 char * p;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4010 char * targ;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4011
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4012 if (!vfile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4013 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4014
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4015 targ = vtbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4016
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4017 /* leading device or logical name is a root directory */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4018 if (p = strchr (vfile, ':'))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4019 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4020 *targ++ = '/';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4021 while (vfile < p)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4022 *targ++ = *vfile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4023 vfile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4024 *targ++ = '/';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4025 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4026 p = vfile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4027 if (*p == '[' || *p == '<')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4028 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4029 while (*++vfile != *p + 2)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4030 switch (*vfile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4031 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4032 case '.':
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4033 if (vfile[-1] == *p)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4034 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4035 *targ++ = '/';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4036 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4037
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4038 case '-':
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4039 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4040 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4041 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4042
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4043 default:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4044 *targ++ = *vfile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4045 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4046 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4047 vfile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4048 *targ++ = '/';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4049 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4050 while (*vfile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4051 *targ++ = *vfile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4052
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4053 return vtbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4054 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4055
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4056 static char utbuf[NAM$C_MAXRSS+1];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4057
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4058 /* translate a unix path to a VMS file spec */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4059 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4060 sys_translate_unix (ufile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4061 char * ufile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4062 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4063 int slash_seen = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4064 char *p;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4065 char * targ;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4066
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4067 if (!ufile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4068 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4069
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4070 targ = utbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4071
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4072 if (*ufile == '/')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4073 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4074 ufile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4075 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4076
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4077 while (*ufile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4078 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4079 switch (*ufile)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4080 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4081 case '/':
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4082 if (slash_seen)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4083 if (index (&ufile[1], '/'))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4084 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4085 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4086 *targ++ = ']';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4087 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4088 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4089 *targ++ = ':';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4090 if (index (&ufile[1], '/'))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4091 *targ++ = '[';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4092 slash_seen = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4093 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4094 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4095
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4096 case '.':
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4097 if (strncmp (ufile, "./", 2) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4098 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4099 if (!slash_seen)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4100 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4101 *targ++ = '[';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4102 slash_seen = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4103 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4104 ufile++; /* skip the dot */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4105 if (index (&ufile[1], '/'))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4106 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4107 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4108 *targ++ = ']';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4109 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4110 else if (strncmp (ufile, "../", 3) == 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 if (!slash_seen)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4113 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4114 *targ++ = '[';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4115 slash_seen = 1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4116 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4117 *targ++ = '-';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4118 ufile += 2; /* skip the dots */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4119 if (index (&ufile[1], '/'))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4120 *targ++ = '.';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4121 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4122 *targ++ = ']';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4123 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4124 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4125 *targ++ = *ufile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4126 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4127
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4128 default:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4129 *targ++ = *ufile;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4130 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4131 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4132 ufile++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4133 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4134 *targ = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4135
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4136 return utbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4137 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4138
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4139 char *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4140 getwd (pathname)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4141 char *pathname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4142 {
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4143 char *ptr, *val;
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4144 extern char *getcwd ();
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4145
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4146 #define MAXPATHLEN 1024
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4147
2439
b6c62e4abf59 Put interrupt input blocking in a separate file from xterm.h.
Jim Blandy <jimb@redhat.com>
parents: 2332
diff changeset
4148 ptr = xmalloc (MAXPATHLEN);
5136
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4149 val = getcwd (ptr, MAXPATHLEN);
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4150 if (val == 0)
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4151 {
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4152 xfree (ptr);
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4153 return val;
500f269bf0a8 (getwd): If getcwd returns 0, we return 0.
Richard M. Stallman <rms@gnu.org>
parents: 4958
diff changeset
4154 }
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4155 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
4156 xfree (ptr);
2264
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4157
87934d212841 Some VMS changes from Richard Levitte <levitte@e.kth.se>:
Jim Blandy <jimb@redhat.com>
parents: 2121
diff changeset
4158 return pathname;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4159 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4160
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4161 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4162 getppid ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4163 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4164 long item_code = JPI$_OWNER;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4165 unsigned long parent_id;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4166 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4167
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4168 if (((status = LIB$GETJPI (&item_code, 0, 0, &parent_id)) & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4169 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4170 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4171 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4172 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4173 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4174 return parent_id;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4175 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4176
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4177 #undef getuid
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4178 unsigned
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4179 sys_getuid ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4180 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4181 return (getgid () << 16) | getuid ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4182 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4183
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4184 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4185 sys_read (fildes, buf, nbyte)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4186 int fildes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4187 char *buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4188 unsigned int nbyte;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4189 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4190 return read (fildes, buf, (nbyte < MAXIOSIZE ? nbyte : MAXIOSIZE));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4191 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4192
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4193 #if 0
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4194 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4195 sys_write (fildes, buf, nbyte)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4196 int fildes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4197 char *buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4198 unsigned int nbyte;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4199 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4200 register int nwrote, rtnval = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4201
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4202 while (nbyte > MAXIOSIZE && (nwrote = write (fildes, buf, MAXIOSIZE)) > 0) {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4203 nbyte -= nwrote;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4204 buf += nwrote;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4205 rtnval += nwrote;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4206 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4207 if (nwrote < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4208 return rtnval ? rtnval : -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4209 if ((nwrote = write (fildes, buf, nbyte)) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4210 return rtnval ? rtnval : -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4211 return (rtnval + nwrote);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4212 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4213 #endif /* 0 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4214
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4215 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4216 * VAX/VMS VAX C RTL really loses. It insists that records
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4217 * end with a newline (carriage return) character, and if they
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4218 * don't it adds one (nice of it isn't it!)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4219 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4220 * Thus we do this stupidity below.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4221 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4222
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4223 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4224 sys_write (fildes, buf, nbytes)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4225 int fildes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4226 char *buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4227 unsigned int nbytes;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4228 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4229 register char *p;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4230 register char *e;
525
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4231 int sum = 0;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4232 struct stat st;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4233
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4234 fstat (fildes, &st);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4235 p = buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4236 while (nbytes > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4237 {
525
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4238 int len, retval;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4239
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4240 /* Handle fixed-length files with carriage control. */
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4241 if (st.st_fab_rfm == FAB$C_FIX
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4242 && ((st.st_fab_rat & (FAB$M_FTN | FAB$M_CR)) != 0))
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4243 {
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4244 len = st.st_fab_mrs;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4245 retval = write (fildes, p, min (len, nbytes));
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4246 if (retval != len)
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4247 return -1;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4248 retval++; /* This skips the implied carriage control */
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4249 }
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4250 else
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4251 {
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4252 e = p + min (MAXIOSIZE, nbytes) - 1;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4253 while (*e != '\n' && e > p) e--;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4254 if (p == e) /* Ok.. so here we add a newline... sigh. */
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4255 e = p + min (MAXIOSIZE, nbytes) - 1;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4256 len = e + 1 - p;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4257 retval = write (fildes, p, len);
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4258 if (retval != len)
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4259 return -1;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4260 }
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4261 p += retval;
44213fc1fbb6 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 491
diff changeset
4262 sum += retval;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4263 nbytes -= retval;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4264 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4265 return sum;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4266 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4267
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4268 /* Create file NEW copying its attributes from file OLD. If
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4269 OLD is 0 or does not exist, create based on the value of
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4270 vms_stmlf_recfm. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4271
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4272 /* Protection value the file should ultimately have.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4273 Set by create_copy_attrs, and use by rename_sansversions. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4274 static unsigned short int fab_final_pro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4275
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4276 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4277 creat_copy_attrs (old, new)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4278 char *old, *new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4279 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4280 struct FAB fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4281 struct XABPRO xabpro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4282 char aclbuf[256]; /* Choice of size is arbitrary. See below. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4283 extern int vms_stmlf_recfm;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4284
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4285 if (old)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4286 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4287 fab.fab$b_fac = FAB$M_GET;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4288 fab.fab$l_fna = old;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4289 fab.fab$b_fns = strlen (old);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4290 fab.fab$l_xab = (char *) &xabpro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4291 xabpro = cc$rms_xabpro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4292 xabpro.xab$l_aclbuf = aclbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4293 xabpro.xab$w_aclsiz = sizeof aclbuf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4294 /* 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
4295 if (SYS$OPEN (&fab, 0, 0) & 1)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4296 {
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4297 SYS$CLOSE (&fab, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4298 fab.fab$l_alq = 0; /* zero the allocation quantity */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4299 if (xabpro.xab$w_acllen > 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4300 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4301 if (xabpro.xab$w_acllen > sizeof aclbuf)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4302 /* If the acl buffer was too short, redo open with longer one.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4303 Wouldn't need to do this if there were some system imposed
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4304 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
4305 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4306 xabpro.xab$l_aclbuf = (char *) alloca (xabpro.xab$w_acllen);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4307 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
4308 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
4309 SYS$CLOSE (&fab, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4310 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4311 old = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4312 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4313 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4314 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4315 xabpro.xab$l_aclbuf = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4316 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4317 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4318 old = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4319 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4320 fab.fab$l_fna = new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4321 fab.fab$b_fns = strlen (new);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4322 if (!old)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4323 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4324 fab.fab$l_xab = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4325 fab.fab$b_rfm = vms_stmlf_recfm ? FAB$C_STMLF : FAB$C_VAR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4326 fab.fab$b_rat = FAB$M_CR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4327 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4328
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4329 /* Set the file protections such that we will be able to manipulate
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4330 this file. Once we are done writing and renaming it, we will set
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4331 the protections back. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4332 if (old)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4333 fab_final_pro = xabpro.xab$w_pro;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4334 else
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4335 SYS$SETDFPROT (0, &fab_final_pro);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4336 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
4337
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4338 /* Create the new file with either default attrs or attrs copied
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4339 from old file. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4340 if (!(SYS$CREATE (&fab, 0, 0) & 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4341 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
4342 SYS$CLOSE (&fab, 0, 0);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4343 /* As this is a "replacement" for creat, return a file descriptor
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4344 opened for writing. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4345 return open (new, O_WRONLY);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4346 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4347
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4348 #ifdef creat
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4349 #undef creat
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4350 #include <varargs.h>
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4351 #ifdef __GNUC__
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4352 #ifndef va_count
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4353 #define va_count(X) ((X) = *(((int *) &(va_alist)) - 1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4354 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4355 #endif
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4356
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4357 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4358 sys_creat (va_alist)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4359 va_dcl
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4360 {
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4361 va_list list_incrementer;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4362 char *name;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4363 int mode;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4364 int rfd; /* related file descriptor */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4365 int fd; /* Our new file descriptor */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4366 int count;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4367 struct stat st_buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4368 char rfm[12];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4369 char rat[15];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4370 char mrs[13];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4371 char fsz[13];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4372 extern int vms_stmlf_recfm;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4373
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4374 va_count (count);
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4375 va_start (list_incrementer);
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4376 name = va_arg (list_incrementer, char *);
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4377 mode = va_arg (list_incrementer, int);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4378 if (count > 2)
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4379 rfd = va_arg (list_incrementer, int);
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3559
diff changeset
4380 va_end (list_incrementer);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4381 if (count > 2)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4382 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4383 /* Use information from the related file descriptor to set record
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4384 format of the newly created file. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4385 fstat (rfd, &st_buf);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4386 switch (st_buf.st_fab_rfm)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4387 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4388 case FAB$C_FIX:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4389 strcpy (rfm, "rfm = fix");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4390 sprintf (mrs, "mrs = %d", st_buf.st_fab_mrs);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4391 strcpy (rat, "rat = ");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4392 if (st_buf.st_fab_rat & FAB$M_CR)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4393 strcat (rat, "cr");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4394 else if (st_buf.st_fab_rat & FAB$M_FTN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4395 strcat (rat, "ftn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4396 else if (st_buf.st_fab_rat & FAB$M_PRN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4397 strcat (rat, "prn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4398 if (st_buf.st_fab_rat & FAB$M_BLK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4399 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
4400 strcat (rat, ", blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4401 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4402 strcat (rat, "blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4403 return creat (name, 0, rfm, rat, mrs);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4404
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4405 case FAB$C_VFC:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4406 strcpy (rfm, "rfm = vfc");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4407 sprintf (fsz, "fsz = %d", st_buf.st_fab_fsz);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4408 strcpy (rat, "rat = ");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4409 if (st_buf.st_fab_rat & FAB$M_CR)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4410 strcat (rat, "cr");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4411 else if (st_buf.st_fab_rat & FAB$M_FTN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4412 strcat (rat, "ftn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4413 else if (st_buf.st_fab_rat & FAB$M_PRN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4414 strcat (rat, "prn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4415 if (st_buf.st_fab_rat & FAB$M_BLK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4416 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
4417 strcat (rat, ", blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4418 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4419 strcat (rat, "blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4420 return creat (name, 0, rfm, rat, fsz);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4421
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4422 case FAB$C_STM:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4423 strcpy (rfm, "rfm = stm");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4424 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4425
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4426 case FAB$C_STMCR:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4427 strcpy (rfm, "rfm = stmcr");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4428 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4429
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4430 case FAB$C_STMLF:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4431 strcpy (rfm, "rfm = stmlf");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4432 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4433
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4434 case FAB$C_UDF:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4435 strcpy (rfm, "rfm = udf");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4436 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4437
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4438 case FAB$C_VAR:
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4439 strcpy (rfm, "rfm = var");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4440 break;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4441 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4442 strcpy (rat, "rat = ");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4443 if (st_buf.st_fab_rat & FAB$M_CR)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4444 strcat (rat, "cr");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4445 else if (st_buf.st_fab_rat & FAB$M_FTN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4446 strcat (rat, "ftn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4447 else if (st_buf.st_fab_rat & FAB$M_PRN)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4448 strcat (rat, "prn");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4449 if (st_buf.st_fab_rat & FAB$M_BLK)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4450 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
4451 strcat (rat, ", blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4452 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4453 strcat (rat, "blk");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4454 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4455 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4456 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4457 strcpy (rfm, vms_stmlf_recfm ? "rfm = stmlf" : "rfm=var");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4458 strcpy (rat, "rat=cr");
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4459 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4460 /* Until the VAX C RTL fixes the many bugs with modes, always use
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4461 mode 0 to get the user's default protection. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4462 fd = creat (name, 0, rfm, rat);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4463 if (fd < 0 && errno == EEXIST)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4464 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4465 if (unlink (name) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4466 report_file_error ("delete", build_string (name));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4467 fd = creat (name, 0, rfm, rat);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4468 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4469 return fd;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4470 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4471 #endif /* creat */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4472
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4473 /* 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
4474 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4475 sys_fwrite (ptr, size, num, fp)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4476 register char * ptr;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4477 FILE * fp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4478 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4479 register int tot = num * size;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4480
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4481 while (tot--)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4482 fputc (*ptr++, fp);
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4483 return num;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4484 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4485
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4486 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4487 * The VMS C library routine creat actually creates a new version of an
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4488 * existing file rather than truncating the old version. There are times
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4489 * when this is not the desired behavior, for instance, when writing an
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4490 * 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
4491 * write permission in the directory containing the file (but the file
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4492 * itself is writable). Hence this routine, which is equivalent to
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4493 * "close (creat (fn, 0));" on Unix if fn already exists.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4494 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4495 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4496 vms_truncate (fn)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4497 char *fn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4498 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4499 struct FAB xfab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4500 struct RAB xrab = cc$rms_rab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4501 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4502
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4503 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
4504 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
4505 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
4506 xfab.fab$l_fna = fn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4507 xfab.fab$b_fns = strlen (fn);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4508 xfab.fab$l_dna = ";0"; /* default to latest version of the file */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4509 xfab.fab$b_dns = 2;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4510 xrab.rab$l_fab = &xfab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4511
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4512 /* This gibberish opens the file, positions to the first record, and
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4513 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
4514 if ((SYS$OPEN (&xfab) & 01) == 01)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4515 {
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4516 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
4517 (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
4518 (SYS$TRUNCATE (&xrab) & 01) == 01)
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4519 status = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4520 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4521 status = -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4522 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4523 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4524 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
4525 SYS$CLOSE (&xfab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4526 return status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4527 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4528
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4529 /* Define this symbol to actually read SYSUAF.DAT. This requires either
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4530 SYSPRV or a readable SYSUAF.DAT. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4531
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4532 #ifdef READ_SYSUAF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4533 /*
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4534 * getuaf.c
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4535 *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4536 * Routine to read the VMS User Authorization File and return
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4537 * a specific user's record.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4538 */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4539
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4540 static struct UAF retuaf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4541
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4542 struct UAF *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4543 get_uaf_name (uname)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4544 char * uname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4545 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4546 register status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4547 struct FAB uaf_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4548 struct RAB uaf_rab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4549
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4550 uaf_fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4551 uaf_rab = cc$rms_rab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4552 /* initialize fab fields */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4553 uaf_fab.fab$l_fna = "SYS$SYSTEM:SYSUAF.DAT";
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4554 uaf_fab.fab$b_fns = 21;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4555 uaf_fab.fab$b_fac = FAB$M_GET;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4556 uaf_fab.fab$b_org = FAB$C_IDX;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4557 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
4558 /* initialize rab fields */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4559 uaf_rab.rab$l_fab = &uaf_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4560 /* 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
4561 status = SYS$OPEN (&uaf_fab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4562 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4563 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4564 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4565 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4566 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4567 }
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4568 status = SYS$CONNECT (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4569 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4570 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4571 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4572 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4573 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4574 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4575 /* read the requested record - index is in uname */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4576 uaf_rab.rab$l_kbf = uname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4577 uaf_rab.rab$b_ksz = strlen (uname);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4578 uaf_rab.rab$b_rac = RAB$C_KEY;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4579 uaf_rab.rab$l_ubf = (char *)&retuaf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4580 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
4581 status = SYS$GET (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4582 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4583 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4584 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4585 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4586 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4587 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4588 /* 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
4589 status = SYS$DISCONNECT (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4590 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4591 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4592 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4593 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4594 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4595 }
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4596 status = SYS$CLOSE (&uaf_fab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4597 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4598 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4599 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4600 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4601 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4602 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4603 return &retuaf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4604 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4605
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4606 struct UAF *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4607 get_uaf_uic (uic)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4608 unsigned long uic;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4609 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4610 register status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4611 struct FAB uaf_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4612 struct RAB uaf_rab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4613
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4614 uaf_fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4615 uaf_rab = cc$rms_rab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4616 /* initialize fab fields */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4617 uaf_fab.fab$l_fna = "SYS$SYSTEM:SYSUAF.DAT";
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4618 uaf_fab.fab$b_fns = 21;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4619 uaf_fab.fab$b_fac = FAB$M_GET;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4620 uaf_fab.fab$b_org = FAB$C_IDX;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4621 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
4622 /* initialize rab fields */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4623 uaf_rab.rab$l_fab = &uaf_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4624 /* 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
4625 status = SYS$OPEN (&uaf_fab);
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 }
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4632 status = SYS$CONNECT (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4633 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4634 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4635 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4636 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4637 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4638 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4639 /* read the requested record - index is in uic */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4640 uaf_rab.rab$b_krf = 1; /* 1st alternate key */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4641 uaf_rab.rab$l_kbf = (char *) &uic;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4642 uaf_rab.rab$b_ksz = sizeof uic;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4643 uaf_rab.rab$b_rac = RAB$C_KEY;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4644 uaf_rab.rab$l_ubf = (char *)&retuaf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4645 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
4646 status = SYS$GET (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4647 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4648 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4649 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4650 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4651 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4652 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4653 /* 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
4654 status = SYS$DISCONNECT (&uaf_rab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4655 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4656 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4657 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4658 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4659 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4660 }
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4661 status = SYS$CLOSE (&uaf_fab);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4662 if (!(status&1))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4663 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4664 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4665 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4666 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4667 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4668 return &retuaf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4669 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4670
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4671 static struct passwd retpw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4672
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4673 struct passwd *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4674 cnv_uaf_pw (up)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4675 struct UAF * up;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4676 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4677 char * ptr;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4678
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4679 /* copy these out first because if the username is 32 chars, the next
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4680 section will overwrite the first byte of the UIC */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4681 retpw.pw_uid = up->uaf$w_mem;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4682 retpw.pw_gid = up->uaf$w_grp;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4683
13943
f3c41057bf41 (WRITABLE): Renamed from WRITEABLE.
Karl Heuer <kwzh@gnu.org>
parents: 13416
diff changeset
4684 /* I suppose this is not the best style, to possibly overwrite one
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4685 byte beyond the end of the field, but what the heck... */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4686 ptr = &up->uaf$t_username[UAF$S_USERNAME];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4687 while (ptr[-1] == ' ')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4688 ptr--;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4689 *ptr = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4690 strcpy (retpw.pw_name, up->uaf$t_username);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4691
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4692 /* the rest of these are counted ascii strings */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4693 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
4694 retpw.pw_gecos[up->uaf$t_owner[0]] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4695 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
4696 retpw.pw_dir[up->uaf$t_defdev[0]] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4697 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
4698 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
4699 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
4700 retpw.pw_shell[up->uaf$t_defcli[0]] = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4701
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4702 return &retpw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4703 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4704 #else /* not READ_SYSUAF */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4705 static struct passwd retpw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4706 #endif /* not READ_SYSUAF */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4707
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4708 struct passwd *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4709 getpwnam (name)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4710 char * name;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4711 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4712 #ifdef READ_SYSUAF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4713 struct UAF *up;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4714 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4715 char * user;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4716 char * dir;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4717 unsigned char * full;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4718 #endif /* READ_SYSUAF */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4719 char *ptr = name;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4720
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4721 while (*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 if ('a' <= *ptr && *ptr <= 'z')
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4724 *ptr -= 040;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4725 ptr++;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4726 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4727 #ifdef READ_SYSUAF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4728 if (!(up = get_uaf_name (name)))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4729 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4730 return cnv_uaf_pw (up);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4731 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4732 if (strcmp (name, getenv ("USER")) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4733 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4734 retpw.pw_uid = getuid ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4735 retpw.pw_gid = getgid ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4736 strcpy (retpw.pw_name, name);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4737 if (full = egetenv ("FULLNAME"))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4738 strcpy (retpw.pw_gecos, full);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4739 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4740 *retpw.pw_gecos = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4741 strcpy (retpw.pw_dir, egetenv ("HOME"));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4742 *retpw.pw_shell = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4743 return &retpw;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4744 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4745 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4746 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4747 #endif /* not READ_SYSUAF */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4748 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4749
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4750 struct passwd *
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4751 getpwuid (uid)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4752 unsigned long uid;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4753 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4754 #ifdef READ_SYSUAF
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4755 struct UAF * up;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4756
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4757 if (!(up = get_uaf_uic (uid)))
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4758 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4759 return cnv_uaf_pw (up);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4760 #else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4761 if (uid == sys_getuid ())
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4762 return getpwnam (egetenv ("USER"));
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4763 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4764 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4765 #endif /* not READ_SYSUAF */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4766 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4767
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4768 /* return total address space available to the current process. This is
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4769 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
4770 available. */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4771 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4772 vlimit ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4773 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4774 int item_code;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4775 unsigned long free_pages;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4776 unsigned long frep0va;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4777 unsigned long frep1va;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4778 register status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4779
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4780 item_code = JPI$_FREPTECNT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4781 if (((status = LIB$GETJPI (&item_code, 0, 0, &free_pages)) & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4782 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4783 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4784 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4785 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4786 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4787 free_pages *= 512;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4788
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4789 item_code = JPI$_FREP0VA;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4790 if (((status = LIB$GETJPI (&item_code, 0, 0, &frep0va)) & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4791 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4792 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4793 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4794 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4795 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4796 item_code = JPI$_FREP1VA;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4797 if (((status = LIB$GETJPI (&item_code, 0, 0, &frep1va)) & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4798 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4799 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4800 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4801 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4802 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4803
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4804 return free_pages + frep0va + (0x7fffffff - frep1va);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4805 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4806
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4807 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4808 define_logical_name (varname, string)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4809 char *varname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4810 char *string;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4811 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4812 struct dsc$descriptor_s strdsc =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4813 {strlen (string), DSC$K_DTYPE_T, DSC$K_CLASS_S, string};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4814 struct dsc$descriptor_s envdsc =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4815 {strlen (varname), DSC$K_DTYPE_T, DSC$K_CLASS_S, varname};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4816 struct dsc$descriptor_s lnmdsc =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4817 {7, DSC$K_DTYPE_T, DSC$K_CLASS_S, "LNM$JOB"};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4818
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4819 return LIB$SET_LOGICAL (&envdsc, &strdsc, &lnmdsc, 0, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4820 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4821
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4822 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4823 delete_logical_name (varname)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4824 char *varname;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4825 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4826 struct dsc$descriptor_s envdsc =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4827 {strlen (varname), DSC$K_DTYPE_T, DSC$K_CLASS_S, varname};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4828 struct dsc$descriptor_s lnmdsc =
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4829 {7, DSC$K_DTYPE_T, DSC$K_CLASS_S, "LNM$JOB"};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4830
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4831 return LIB$DELETE_LOGICAL (&envdsc, &lnmdsc);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4832 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4833
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4834 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4835 ulimit ()
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4836 {
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4837 return 0;
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4838 }
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4839
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4840 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4841 setpgrp ()
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4842 {
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4843 return 0;
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4844 }
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4845
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4846 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4847 execvp ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4848 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4849 error ("execvp system call not implemented");
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4850 return -1;
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4851 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4852
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4853 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4854 rename (from, to)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4855 char *from, *to;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4856 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4857 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4858 struct FAB from_fab = cc$rms_fab, to_fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4859 struct NAM from_nam = cc$rms_nam, to_nam = cc$rms_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4860 char from_esn[NAM$C_MAXRSS];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4861 char to_esn[NAM$C_MAXRSS];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4862
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4863 from_fab.fab$l_fna = from;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4864 from_fab.fab$b_fns = strlen (from);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4865 from_fab.fab$l_nam = &from_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4866 from_fab.fab$l_fop = FAB$M_NAM;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4867
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4868 from_nam.nam$l_esa = from_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4869 from_nam.nam$b_ess = sizeof from_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4870
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4871 to_fab.fab$l_fna = to;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4872 to_fab.fab$b_fns = strlen (to);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4873 to_fab.fab$l_nam = &to_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4874 to_fab.fab$l_fop = FAB$M_NAM;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4875
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4876 to_nam.nam$l_esa = to_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4877 to_nam.nam$b_ess = sizeof to_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4878
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4879 status = SYS$RENAME (&from_fab, 0, 0, &to_fab);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4880
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4881 if (status & 1)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4882 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4883 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4884 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4885 if (status == RMS$_DEV)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4886 errno = EXDEV;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4887 else
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4888 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4889 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4890 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4891 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4892 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4893
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4894 /* This function renames a file like `rename', but it strips
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4895 the version number from the "to" filename, such that the "to" file is
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4896 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
4897 finished. The protection that we will use is stored in fab_final_pro,
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4898 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
4899 are renaming.
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4900
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4901 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
4902 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
4903 bits). To maintain portability, the VMS implementation of `chmod' wires
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4904 the W and D bits together. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4905
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4906
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4907 static struct fibdef fib; /* We need this initialized to zero */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4908 char vms_file_written[NAM$C_MAXRSS];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4909
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4910 int
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4911 rename_sans_version (from,to)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4912 char *from, *to;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4913 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4914 short int chan;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4915 int stat;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4916 short int iosb[4];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4917 int status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4918 struct FAB to_fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4919 struct NAM to_nam = cc$rms_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4920 struct dsc$descriptor fib_d ={sizeof (fib),0,0,(char*) &fib};
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4921 struct dsc$descriptor fib_attr[2]
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4922 = {{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
4923 char to_esn[NAM$C_MAXRSS];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4924
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4925 $DESCRIPTOR (disk,to_esn);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4926
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4927 to_fab.fab$l_fna = to;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4928 to_fab.fab$b_fns = strlen (to);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4929 to_fab.fab$l_nam = &to_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4930 to_fab.fab$l_fop = FAB$M_NAM;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4931
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4932 to_nam.nam$l_esa = to_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4933 to_nam.nam$b_ess = sizeof to_esn;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4934
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4935 status = SYS$PARSE (&to_fab, 0, 0); /* figure out the full file name */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4936
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4937 if (to_nam.nam$l_fnb && NAM$M_EXP_VER)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4938 *(to_nam.nam$l_ver) = '\0';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4939
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4940 stat = rename (from, to_esn);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4941 if (stat < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4942 return stat;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4943
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4944 strcpy (vms_file_written, to_esn);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4945
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4946 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
4947 to_fab.fab$b_fns = strlen (vms_file_written);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4948
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4949 /* 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
4950 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
4951
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4952 /* Copy these fields into the fib */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4953 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
4954 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
4955 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
4956
1596
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4957 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
4958
0e105bd23f44 * systty.h, process.c, buffer.h, callproc.c, sysdep.c, dired.c:
Jim Blandy <jimb@redhat.com>
parents: 1570
diff changeset
4959 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
4960 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
4961 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
4962 stat = SYS$QIOW (0, chan, IO$_MODIFY, iosb, 0, 0, &fib_d,
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4963 0, 0, 0, &fib_attr, 0);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4964 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
4965 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
4966 stat = SYS$DASSGN (chan);
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4967 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
4968 LIB$SIGNAL (stat);
766
b9e81bfc7ad9 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 709
diff changeset
4969 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
4970 return 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4971 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4972
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
4973 int
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4974 link (file, new)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4975 char * file, * new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4976 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4977 register status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4978 struct FAB fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4979 struct NAM nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4980 unsigned short fid[3];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4981 char esa[NAM$C_MAXRSS];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4982
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4983 fab = cc$rms_fab;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4984 fab.fab$l_fop = FAB$M_OFP;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4985 fab.fab$l_fna = file;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4986 fab.fab$b_fns = strlen (file);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4987 fab.fab$l_nam = &nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4988
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4989 nam = cc$rms_nam;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4990 nam.nam$l_esa = esa;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4991 nam.nam$b_ess = NAM$C_MAXRSS;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4992
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4993 status = SYS$PARSE (&fab);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4994 if ((status & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4995 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4996 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4997 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4998 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4999 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5000 status = SYS$SEARCH (&fab);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5001 if ((status & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5002 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5003 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5004 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5005 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5006 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5007
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5008 fid[0] = nam.nam$w_fid[0];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5009 fid[1] = nam.nam$w_fid[1];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5010 fid[2] = nam.nam$w_fid[2];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5011
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5012 fab.fab$l_fna = new;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5013 fab.fab$b_fns = strlen (new);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5014
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5015 status = SYS$PARSE (&fab);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5016 if ((status & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5017 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5018 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5019 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5020 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5021 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5022
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5023 nam.nam$w_fid[0] = fid[0];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5024 nam.nam$w_fid[1] = fid[1];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5025 nam.nam$w_fid[2] = fid[2];
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5026
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5027 nam.nam$l_esa = nam.nam$l_name;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5028 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
5029
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5030 status = SYS$ENTER (&fab);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5031 if ((status & 1) == 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5032 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5033 errno = EVMSERR;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5034 vaxc$errno = status;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5035 return -1;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5036 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5037
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5038 return 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
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
5041 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5042 croak (badfunc)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5043 char *badfunc;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5044 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5045 printf ("%s not yet implemented\r\n", badfunc);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5046 reset_sys_modes ();
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5047 exit (1);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5048 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5049
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5050 long
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5051 random ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5052 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5053 /* Arrange to return a range centered on zero. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5054 return rand () - (1 << 30);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5055 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5056
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
5057 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5058 srandom (seed)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5059 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5060 srand (seed);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5061 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5062 #endif /* VMS */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5063
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
5064 #ifdef AIXHFT
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5065
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5066 /* Called from init_sys_modes. */
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
5067 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5068 hft_init ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5069 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5070 int junk;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5071
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5072 /* 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
5073 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
5074 call fails, we're not on an HFT. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5075 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5076 if (ioctl (0, HFQERROR, &junk) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5077 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5078 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5079 if (ioctl (0, HFQEIO, 0) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5080 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5081 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5082
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5083 /* On AIX the default hft keyboard mapping uses backspace rather than delete
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5084 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
5085 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
5086 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
5087 code also doesn't help if on a terminal emulator which doesn't understand
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5088 HFT VTD's. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5089 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5090 struct hfbuf buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5091 struct hfkeymap keymap;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5092
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5093 buf.hf_bufp = (char *)&keymap;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5094 buf.hf_buflen = sizeof (keymap);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5095 keymap.hf_nkeys = 2;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5096 keymap.hfkey[0].hf_kpos = 15;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5097 keymap.hfkey[0].hf_kstate = HFMAPCHAR | HFSHFNONE;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5098 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5099 keymap.hfkey[0].hf_keyidh = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5100 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5101 keymap.hfkey[0].hf_page = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5102 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5103 keymap.hfkey[0].hf_char = 127;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5104 keymap.hfkey[1].hf_kpos = 15;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5105 keymap.hfkey[1].hf_kstate = HFMAPCHAR | HFSHFSHFT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5106 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5107 keymap.hfkey[1].hf_keyidh = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5108 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5109 keymap.hfkey[1].hf_page = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5110 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5111 keymap.hfkey[1].hf_char = 127;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5112 hftctl (0, HFSKBD, &buf);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5113 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5114 /* 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
5115 at times. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5116 line_ins_del_ok = char_ins_del_ok = 0;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5117 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5118
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5119 /* Reset the rubout key to backspace. */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5120
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
5121 void
491
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5122 hft_reset ()
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5123 {
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5124 struct hfbuf buf;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5125 struct hfkeymap keymap;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5126 int junk;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5127
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5128 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5129 if (ioctl (0, HFQERROR, &junk) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5130 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5131 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5132 if (ioctl (0, HFQEIO, 0) < 0)
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5133 return;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5134 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5135
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5136 buf.hf_bufp = (char *)&keymap;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5137 buf.hf_buflen = sizeof (keymap);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5138 keymap.hf_nkeys = 2;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5139 keymap.hfkey[0].hf_kpos = 15;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5140 keymap.hfkey[0].hf_kstate = HFMAPCHAR | HFSHFNONE;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5141 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5142 keymap.hfkey[0].hf_keyidh = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5143 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5144 keymap.hfkey[0].hf_page = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5145 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5146 keymap.hfkey[0].hf_char = 8;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5147 keymap.hfkey[1].hf_kpos = 15;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5148 keymap.hfkey[1].hf_kstate = HFMAPCHAR | HFSHFSHFT;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5149 #ifdef IBMR2AIX
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5150 keymap.hfkey[1].hf_keyidh = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5151 #else /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5152 keymap.hfkey[1].hf_page = '<';
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5153 #endif /* not IBMR2AIX */
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5154 keymap.hfkey[1].hf_char = 8;
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5155 hftctl (0, HFSKBD, &buf);
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5156 }
77c38d1bc8a8 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5157
10049
aef1cc7e56a0 (init_sys_modes): Tes AIXHFT, not AIX.
Richard M. Stallman <rms@gnu.org>
parents: 9937
diff changeset
5158 #endif /* AIXHFT */
9075
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5159
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5160 #ifdef USE_DL_STUBS
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5161
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5162 /* 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
5163 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
5164 actually call them. */
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5165
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5166 void *
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5167 dlopen ()
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5168 {
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5169 return 0;
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5170 }
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5171
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5172 void *
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5173 dlsym ()
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5174 {
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5175 return 0;
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5176 }
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5177
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5178 int
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5179 dlclose ()
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5180 {
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5181 return -1;
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5182 }
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5183
04b461c99a96 [USE_DL_STUBS] (dlopen, dlsym, dlclose): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 9039
diff changeset
5184 #endif /* USE_DL_STUBS */
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5185
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5186 #ifndef BSTRING
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5187
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5188 #ifndef bzero
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5189
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5190 void
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5191 bzero (b, length)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5192 register char *b;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5193 register int length;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5194 {
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5195 #ifdef VMS
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5196 short zero = 0;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5197 long max_str = 65535;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5198
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5199 while (length > max_str) {
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5200 (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
5201 length -= max_str;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5202 b += max_str;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5203 }
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5204 max_str = length;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5205 (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
5206 #else
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5207 while (length-- > 0)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5208 *b++ = 0;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5209 #endif /* not VMS */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5210 }
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5211
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5212 #endif /* no bzero */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5213 #endif /* BSTRING */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5214
11722
d7089b2620fb (bcmp, bcopy): Fix backward BSTRING conditionals.
Richard M. Stallman <rms@gnu.org>
parents: 11624
diff changeset
5215 #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
5216 #undef bcopy
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5217
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5218 /* 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
5219 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
5220 bcopy (b1, b2, length)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5221 register char *b1;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5222 register char *b2;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5223 register int length;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5224 {
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5225 #ifdef VMS
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5226 long max_str = 65535;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5227
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5228 while (length > max_str) {
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5229 (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
5230 length -= max_str;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5231 b1 += max_str;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5232 b2 += max_str;
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 max_str = length;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5235 (void) LIB$MOVC3 (&length, b1, b2);
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5236 #else
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5237 while (length-- > 0)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5238 *b2++ = *b1++;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5239 #endif /* not VMS */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5240 }
21514
fa9ff387d260 Fix -Wimplicit warnings.
Andreas Schwab <schwab@suse.de>
parents: 20948
diff changeset
5241 #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
5242
11722
d7089b2620fb (bcmp, bcopy): Fix backward BSTRING conditionals.
Richard M. Stallman <rms@gnu.org>
parents: 11624
diff changeset
5243 #ifndef BSTRING
11258
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5244 #ifndef bcmp
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5245 int
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5246 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
5247 register char *b1;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5248 register char *b2;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5249 register int length;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5250 {
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5251 #ifdef VMS
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5252 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
5253 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
5254
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5255 return STR$COMPARE (&src1, &src2);
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5256 #else
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5257 while (length-- > 0)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5258 if (*b1++ != *b2++)
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5259 return 1;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5260
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5261 return 0;
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5262 #endif /* not VMS */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5263 }
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5264 #endif /* no bcmp */
eff46f465625 (bcopy): If NEED_BCOPY, do compile this.
Richard M. Stallman <rms@gnu.org>
parents: 10946
diff changeset
5265 #endif /* not BSTRING */