diff options
| author | Karl Heuer | 1994-09-17 00:02:50 +0000 |
|---|---|---|
| committer | Karl Heuer | 1994-09-17 00:02:50 +0000 |
| commit | b38bab94e52c86754b6fb35799823991256c20d2 (patch) | |
| tree | ab92a4ac708f4be3c3747a58e785119b3f8904c3 /lib-src | |
| parent | 2bb240a98c8a15533f3bc7540e06eab93f7ea2eb (diff) | |
| download | emacs-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.c | 36 |
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 | ||
| 59 | extern int errno; | 59 | extern 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 | |||
| 61 | main () | 83 | main () |
| 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); |