annotate src/s/gnu.h @ 369:1d62742628b6 r21-1-14

Import from CVS: tag r21-1-14
author cvs
date Mon, 13 Aug 2007 11:01:51 +0200
parents a4f53d9b3154
children cc15677e0335
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
1 /* Definitions file for GNU Emacs running on the GNU Hurd.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
2 Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
3
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
4 This file is part of GNU Emacs.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
5
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
9 any later version.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
10
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
14 GNU General Public License for more details.
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
15
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
17 along with XEmacs; see the file COPYING. If not, write to
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
19 Boston, MA 02111-1307, USA. */
272
c5d627a313b1 Import from CVS: tag r21-0b34
cvs
parents: 175
diff changeset
20
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
21 /* Synched up with: FSF 19.31. */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
22
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
23 /* Get most of the stuff from bsd4.3 */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
24 #include "bsd4-3.h"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
25
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
26 /* For mem-limits.h. */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
27 #define BSD4_2
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
28
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
29 #undef SYSTEM_TYPE
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
30 #define SYSTEM_TYPE "gnu"
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
31
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
32 /* XXX should getloadavg be in libc? Should we have a libutil?
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
33 #define HAVE_GETLOADAVG */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
34
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
35 #define LIBS_DEBUG
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
36
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
37 /* XXX emacs should not expect TAB3 to be defined. */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
38 #define TABDLY OXTABS
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
39 #define TAB3 OXTABS
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
40
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
41 /* GNU needs its own crt0, and libc defines data_start. */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
42 #define ORDINARY_LINK
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
43 #define DATA_START ({ extern int data_start; (char *) &data_start; })
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
44
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
45 /* GNU now always uses the ELF format. */
163
0132846995bd Import from CVS: tag r20-3b8
cvs
parents: 155
diff changeset
46 #define UNEXEC "unexelf.o"
0
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
47
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
48 /* Some losing code fails to include this and then assumes
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
49 that because it is braindead that O_RDONLY==0. */
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
50 #ifndef NOT_C_CODE
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
51 #include <fcntl.h>
376386a54a3c Import from CVS: tag r19-14
cvs
parents:
diff changeset
52 #endif
365
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
53
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
54 #if defined(HAVE_GRANTPT) && defined(HAVE_UNLOCKPT) && defined(HAVE_PTSNAME)
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
55 /* UNIX98 PTYs are available.
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
56 Added by Florian Weimer <Florian.Weimer@RUS.Uni-Stuttgart.DE>,
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
57 RUS-CERT, University of Stuttgart. Based on Emacs code for DGUX. */
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
58
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
59 #define PTY_ITERATION for (i = 0; i < 1; i++)
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
60 /* no iteration at all */
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
61
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
62 /* Use getpt() if it's available, because it provides Unix98 PTY
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
63 emulation for kernels which doesn't support it natively. */
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
64
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
65 #ifdef HAVE_GETPT
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
66 #define PTY_OPEN \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
67 do { \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
68 fd = getpt(); \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
69 if (fcntl (fd, F_SETFL, O_NDELAY) == -1) \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
70 fatal ("could not set master PTY to non-block mode"); \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
71 } while (0)
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
72
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
73 #else
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
74 /* the master PTY device */
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
75 #define PTY_NAME_SPRINTF strcpy (pty_name, "/dev/ptmx");
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
76 #endif
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
77
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
78 /* This sets the name of the slave side of the PTY. grantpt(3) and
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
79 unlockpt(3) may fork a subprocess, so keep sigchld_handler() from
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
80 intercepting that death. */
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
81
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
82 #define PTY_TTY_NAME_SPRINTF \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
83 { \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
84 char *ptsname(), *ptyname; \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
85 \
367
a4f53d9b3154 Import from CVS: tag r21-1-13
cvs
parents: 365
diff changeset
86 EMACS_BLOCK_SIGNAL (SIGCHLD); \
365
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
87 if (grantpt(fd) == -1) \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
88 fatal("could not grant slave pty"); \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
89 if (unlockpt(fd) == -1) \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
90 fatal("could not unlock slave pty"); \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
91 if (!(ptyname = ptsname(fd))) \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
92 fatal ("could not enable slave pty"); \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
93 strncpy(pty_name, ptyname, sizeof(pty_name)); \
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
94 pty_name[sizeof(pty_name) - 1] = 0; \
367
a4f53d9b3154 Import from CVS: tag r21-1-13
cvs
parents: 365
diff changeset
95 EMACS_UNBLOCK_SIGNAL (SIGCHLD); \
365
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
96 }
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
97
30d2cfa1092a Import from CVS: tag r21-1-12
cvs
parents: 272
diff changeset
98 #endif