diff options
Diffstat (limited to 'os')
-rw-r--r-- | os/utils.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/os/utils.c b/os/utils.c index 2d02f92ed..80415c4b0 100644 --- a/os/utils.c +++ b/os/utils.c @@ -557,6 +557,7 @@ UseMsg(void) ErrorF("-nolock disable the locking mechanism\n"); #endif ErrorF("-nolisten string don't listen on protocol\n"); + ErrorF("-listen string listen on protocol\n"); ErrorF("-noreset don't reset after last client exists\n"); ErrorF("-background [none] create root window with no background\n"); ErrorF("-reset reset after last client exists\n"); @@ -646,6 +647,19 @@ VerifyDisplayName(const char *d) return 1; } +static const char *defaultNoListenList[] = { +#ifndef LISTEN_TCP + "tcp", +#endif +#ifndef LISTEN_UNIX + "unix", +#endif +#ifndef LISTEN_LOCAL + "local", +#endif + NULL +}; + /* * This function parses the command line. Handles device-independent fields * and allows ddx to handle additional fields. It is not allowed to modify @@ -664,6 +678,12 @@ ProcessCommandLine(int argc, char *argv[]) PartialNetwork = TRUE; #endif + for (i = 0; defaultNoListenList[i] != NULL; i++) { + if (_XSERVTransNoListen(defaultNoListenList[i])) + ErrorF("Failed to disable listen for %s transport", + defaultNoListenList[i]); + } + for (i = 1; i < argc; i++) { /* call ddx first, so it can peek/override if it wants */ if ((skip = ddxProcessArgument(argc, argv, i))) { @@ -849,6 +869,15 @@ ProcessCommandLine(int argc, char *argv[]) else UseMsg(); } + else if (strcmp(argv[i], "-listen") == 0) { + if (++i < argc) { + if (_XSERVTransListen(argv[i])) + ErrorF("Failed to enable listen for %s transport", + argv[i]); + } + else + UseMsg(); + } else if (strcmp(argv[i], "-noreset") == 0) { dispatchExceptionAtReset = 0; } |