aboutsummaryrefslogtreecommitdiffstats
path: root/lib-src
diff options
context:
space:
mode:
authorKarl Heuer1994-09-17 00:02:50 +0000
committerKarl Heuer1994-09-17 00:02:50 +0000
commitb38bab94e52c86754b6fb35799823991256c20d2 (patch)
treeab92a4ac708f4be3c3747a58e785119b3f8904c3 /lib-src
parent2bb240a98c8a15533f3bc7540e06eab93f7ea2eb (diff)
downloademacs-b38bab94e52c86754b6fb35799823991256c20d2.tar.gz
emacs-b38bab94e52c86754b6fb35799823991256c20d2.zip
(FD_*) [HAVE_SOCKETS & !HAVE_SYSVIPC]: If not already defined, use simple
32-bit versions of these macros. (main) [HAVE_SOCKETS & !HAVE_SYSVIPC]: Use these macros.
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/emacsserver.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/lib-src/emacsserver.c b/lib-src/emacsserver.c
index ed3493b76ce..b6d3abbd032 100644
--- a/lib-src/emacsserver.c
+++ b/lib-src/emacsserver.c
@@ -58,6 +58,28 @@ main ()
58 58
59extern int errno; 59extern int errno;
60 60
61/* Copied from src/process.c */
62#ifdef FD_SET
63/* We could get this from param.h, but better not to depend on finding that.
64 And better not to risk that it might define other symbols used in this
65 file. */
66#ifdef FD_SETSIZE
67#define MAXDESC FD_SETSIZE
68#else
69#define MAXDESC 64
70#endif
71#define SELECT_TYPE fd_set
72#else /* no FD_SET */
73#define MAXDESC 32
74#define SELECT_TYPE int
75
76/* Define the macros to access a single-int bitmap of descriptors. */
77#define FD_SET(n, p) (*(p) |= (1 << (n)))
78#define FD_CLR(n, p) (*(p) &= ~(1 << (n)))
79#define FD_ISSET(n, p) (*(p) & (1 << (n)))
80#define FD_ZERO(p) (*(p) = 0)
81#endif /* no FD_SET */
82
61main () 83main ()
62{ 84{
63 char system_name[32]; 85 char system_name[32];
@@ -129,15 +151,17 @@ main ()
129 signal (SIGPIPE, SIG_IGN); 151 signal (SIGPIPE, SIG_IGN);
130 for (;;) 152 for (;;)
131 { 153 {
132 int rmask = (1 << s) + 1; 154 SELECT_TYPE rmask;
133 if (select (s + 1, (fd_set *)&rmask, 0, 0, 0) < 0) 155 FD_ZERO (rmask);
156 FD_SET (rmask, 0);
157 FD_SET (rmask, s);
158 if (select (s + 1, &rmask, 0, 0, 0) < 0)
134 perror ("select"); 159 perror ("select");
135 if (rmask & (1 << s)) /* client sends list of filenames */ 160 if (FD_ISSET (rmask, s)) /* client sends list of filenames */
136 { 161 {
137 fromlen = sizeof (fromunix); 162 fromlen = sizeof (fromunix);
138 fromunix.sun_family = AF_UNIX; 163 fromunix.sun_family = AF_UNIX;
139 infd = accept (s, (struct sockaddr *) &fromunix, 164 infd = accept (s, (struct sockaddr *) &fromunix, &fromlen);
140 (size_t *) &fromlen);
141 if (infd < 0) 165 if (infd < 0)
142 { 166 {
143 if (errno == EMFILE || errno == ENFILE) 167 if (errno == EMFILE || errno == ENFILE)
@@ -186,7 +210,7 @@ main ()
186 fflush (infile); 210 fflush (infile);
187 continue; 211 continue;
188 } 212 }
189 else if (rmask & 1) /* emacs sends codeword, fd, and string message */ 213 else if (FD_ISSET (rmask, 0)) /* emacs sends codeword, fd, and string message */
190 { 214 {
191 /* Read command codeword and fd */ 215 /* Read command codeword and fd */
192 clearerr (stdin); 216 clearerr (stdin);