diff options
author | Jon TURNEY <jon.turney@dronecode.org.uk> | 2013-03-11 14:34:32 +0000 |
---|---|---|
committer | Jon TURNEY <jon.turney@dronecode.org.uk> | 2014-03-27 14:34:34 +0000 |
commit | bc348bd2c42f3f18786085ccef2f010eff5bf3d2 (patch) | |
tree | 76e763e6bb3f6a05dd07be123f5d8a6c2cf44e50 /os | |
parent | a3730271d52542757ec0f41acc29e7730501f666 (diff) |
Handle -displayfd and an explicit display number sensibly
Handle -displayfd and an explicit display number sensibly, e.g. use the
explicitly specified display number, and write it to the displayfd
v2: displayfd might be 0, so use -1 as invalid value
v3: Rebase for addition of NoListenAll flag
Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
Diffstat (limited to 'os')
-rw-r--r-- | os/connection.c | 12 | ||||
-rw-r--r-- | os/utils.c | 2 |
2 files changed, 7 insertions, 7 deletions
diff --git a/os/connection.c b/os/connection.c index b3640b8e4..e914d9d94 100644 --- a/os/connection.c +++ b/os/connection.c @@ -352,8 +352,8 @@ void NotifyParentProcess(void) { #if !defined(WIN32) - if (dynamic_display[0]) { - write(displayfd, dynamic_display, strlen(dynamic_display)); + if (displayfd >= 0) { + write(displayfd, display, strlen(display)); write(displayfd, "\n", 1); close(displayfd); } @@ -405,18 +405,18 @@ CreateWellKnownSockets(void) FD_ZERO(&WellKnownConnections); /* display is initialized to "0" by main(). It is then set to the display - * number if specified on the command line, or to NULL when the -displayfd - * option is used. */ + * number if specified on the command line. */ + if (NoListenAll) { ListenTransCount = 0; } - else if (display) { + else if ((displayfd < 0) || explicit_display) { if (TryCreateSocket(atoi(display), &partial) && ListenTransCount >= 1) if (!PartialNetwork && partial) FatalError ("Failed to establish all listening sockets"); } - else { /* -displayfd */ + else { /* -displayfd and no explicit display number */ Bool found = 0; for (i = 0; i < 65535 - X_TCP_PORT; i++) { if (TryCreateSocket(i, &partial) && !partial) { diff --git a/os/utils.c b/os/utils.c index c513968ad..6e6974e89 100644 --- a/os/utils.c +++ b/os/utils.c @@ -666,6 +666,7 @@ ProcessCommandLine(int argc, char *argv[]) else if (argv[i][0] == ':') { /* initialize display */ display = argv[i]; + explicit_display = TRUE; display++; if (!VerifyDisplayName(display)) { ErrorF("Bad display name: %s\n", display); @@ -736,7 +737,6 @@ ProcessCommandLine(int argc, char *argv[]) else if (strcmp(argv[i], "-displayfd") == 0) { if (++i < argc) { displayfd = atoi(argv[i]); - display = NULL; #ifdef LOCK_SERVER nolock = TRUE; #endif |