diff options
Diffstat (limited to 'unix/xserver/hw/vnc/xvnc.c')
-rw-r--r-- | unix/xserver/hw/vnc/xvnc.c | 42 |
1 files changed, 13 insertions, 29 deletions
diff --git a/unix/xserver/hw/vnc/xvnc.c b/unix/xserver/hw/vnc/xvnc.c index ddb24993..5cf673aa 100644 --- a/unix/xserver/hw/vnc/xvnc.c +++ b/unix/xserver/hw/vnc/xvnc.c @@ -110,7 +110,6 @@ static VncScreenInfo vncScreenInfo = { static Bool vncPixmapDepths[33]; static Bool Render = TRUE; -static Bool displaySpecified = FALSE; static char displayNumStr[16]; static int vncVerbose = 0; @@ -187,6 +186,9 @@ AbortDDX(enum ExitCode error) void OsVendorInit(void) { + /* At this point, display has been set, so we can use it to + * initialize UnixPasswordValidator */ + vncSetDisplayName(display); } void @@ -278,7 +280,7 @@ ddxProcessArgument(int argc, char *argv[], int i) } if (argv[i][0] == ':') - displaySpecified = TRUE; + return 0; #if XORG_OLDER_THAN(1, 21, 1) #define CHECK_FOR_REQUIRED_ARGUMENTS(num) \ @@ -386,7 +388,7 @@ ddxProcessArgument(int argc, char *argv[], int i) dup2(nullfd, 2); close(nullfd); - if (!displaySpecified) { + if (!explicit_display) { int port = vncGetSocketPort(vncInetdSock); int displayNum = port - 5900; @@ -400,9 +402,9 @@ ddxProcessArgument(int argc, char *argv[], int i) FatalError ("Xvnc error: No free display number for -inetd\n"); } - - display = displayNumStr; sprintf(displayNumStr, "%d", displayNum); + display = displayNumStr; + explicit_display = TRUE; } return 1; @@ -446,30 +448,11 @@ ddxProcessArgument(int argc, char *argv[], int i) } if (!strcmp(argv[i], "-showconfig") || !strcmp(argv[i], "-version")) { - /* Already shown at start */ + vncPrintBanner(); exit(0); } - /* We need to resolve an ambiguity for booleans */ - if (argv[i][0] == '-' && i + 1 < argc && vncIsParamBool(&argv[i][1])) { - if ((strcasecmp(argv[i + 1], "0") == 0) || - (strcasecmp(argv[i + 1], "1") == 0) || - (strcasecmp(argv[i + 1], "true") == 0) || - (strcasecmp(argv[i + 1], "false") == 0) || - (strcasecmp(argv[i + 1], "yes") == 0) || - (strcasecmp(argv[i + 1], "no") == 0)) { - vncSetParam(&argv[i][1], argv[i + 1]); - return 2; - } - } - - int ret; - - ret = vncHandleParamArg(argc, argv, i); - if (ret != 0) - return ret; - - return 0; + return vncHandleParamArg(argc, argv, i); } static Bool @@ -1171,8 +1154,11 @@ InitOutput(ScreenInfo * scrInfo, int argc, char **argv) int i; int NumFormats = 0; - if (serverGeneration == 1) + if (serverGeneration == 1) { + vncPrintBanner(); + LoadExtensionList(vncExtensions, ARRAY_SIZE(vncExtensions), TRUE); + } #if XORG_AT_LEAST(1, 20, 0) xorgGlxCreateVendor(); @@ -1266,7 +1252,5 @@ vncClientGone(int fd) int main(int argc, char *argv[], char *envp[]) { - vncPrintBanner(); - return dix_main(argc, argv, envp); } |