From 32c8bd8b6225a191c1ab8406c61d30afabcc495b Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 19 Nov 2017 01:57:30 +0100 Subject: [PATCH 01/14] Args.c: Fix warnings containing function name Warnings that are guarded by ifdefs are for the users. Therefore they must not contain the function name. Also some of the messages had not been prefixed by "Warning". --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index 262c1dfdb3..8c779a15fb 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -1368,7 +1368,7 @@ static void nxagentParseOptions(char *name, char *value) if ((errno) && (0 == sleep_parse)) { - fprintf(stderr, "nxagentParseOptions: Unable to convert value [%s] of option [%s]. " + fprintf(stderr, "Warning: Unable to convert value [%s] of option [%s]. " "Ignoring option.\n", validateString(value), validateString(name)); @@ -1379,7 +1379,7 @@ static void nxagentParseOptions(char *name, char *value) { sleep_parse = UINT_MAX; - fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of option [%s] " + fprintf(stderr, "Warning: value [%s] of option [%s] " "out of range, clamped to [%lu].\n", validateString(value), validateString(name), sleep_parse); } @@ -1388,7 +1388,7 @@ static void nxagentParseOptions(char *name, char *value) { sleep_parse = 0; - fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of option [%s] " + fprintf(stderr, "Warning: value [%s] of option [%s] " "out of range, clamped to [%lu].\n", validateString(value), validateString(name), sleep_parse); } @@ -1427,7 +1427,7 @@ static void nxagentParseOptions(char *name, char *value) if ((errno) && (0 == tolerance_parse)) { - fprintf(stderr, "nxagentParseOptions: Unable to convert value [%s] of option [%s]. " + fprintf(stderr, "Warning: Unable to convert value [%s] of option [%s]. " "Ignoring option.\n", validateString(value), validateString(name)); @@ -1438,7 +1438,7 @@ static void nxagentParseOptions(char *name, char *value) { tolerance_parse = UINT_MAX; - fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of option [%s] " + fprintf(stderr, "Warning: value [%s] of option [%s] " "out of range, clamped to [%lu].\n", validateString(value), validateString(name), tolerance_parse); } @@ -1447,7 +1447,7 @@ static void nxagentParseOptions(char *name, char *value) { tolerance_parse = 0; - fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of option [%s] " + fprintf(stderr, "Warning: value [%s] of option [%s] " "out of range, clamped to [%lu].\n", validateString(value), validateString(name), tolerance_parse); } From e4b134850f6faa22cb05b496ed0a0540bb5253a9 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 19 Nov 2017 02:13:57 +0100 Subject: [PATCH 02/14] Args.c: re-use name variable for warnings --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 28 +++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index 8c779a15fb..fd74351c48 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -1081,7 +1081,7 @@ static void nxagentParseOptions(char *name, char *value) if (nxagentReconnectTrap == True) { #ifdef DEBUG - fprintf(stderr, "nxagentParseOptions: Ignoring option 'render' at reconnection.\n"); + fprintf(stderr, "nxagentParseOptions: Ignoring option '%s' at reconnection.\n", name); #endif } else if (nxagentRenderEnable == UNDEFINED) @@ -1096,8 +1096,8 @@ static void nxagentParseOptions(char *name, char *value) } else { - fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'render'.\n", - validateString(value)); + fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", + validateString(value), name); } } @@ -1113,7 +1113,7 @@ static void nxagentParseOptions(char *name, char *value) if (nxagentReconnectTrap == True) { #ifdef DEBUG - fprintf(stderr, "nxagentParseOptions: Ignoring option 'fullscreen' at reconnection.\n"); + fprintf(stderr, "nxagentParseOptions: Ignoring option '%s' at reconnection.\n", name); #endif } else if (!strcmp(value, "1")) @@ -1148,8 +1148,8 @@ static void nxagentParseOptions(char *name, char *value) } else { - fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'shpix'.\n", - validateString(value)); + fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", + validateString(value), name); } return; @@ -1166,8 +1166,8 @@ static void nxagentParseOptions(char *name, char *value) } else { - fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'shmem'.\n", - validateString(value)); + fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", + validateString(value), name); } return; @@ -1184,8 +1184,8 @@ static void nxagentParseOptions(char *name, char *value) } else { - fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'composite'.\n", - validateString(value)); + fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", + validateString(value), name); } return; @@ -1215,8 +1215,8 @@ static void nxagentParseOptions(char *name, char *value) } else { - fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'xinerama'.\n", - validateString(value)); + fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", + validateString(value), name); } return; #endif @@ -1233,8 +1233,8 @@ static void nxagentParseOptions(char *name, char *value) } else { - fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'resize'.\n", - validateString(value)); + fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", + validateString(value), name); } return; From 19142bd014f42508ba54e857fdad29bca38d2fa6 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 19 Nov 2017 02:14:55 +0100 Subject: [PATCH 03/14] Args.c: remove variable validation we already know the exact value of the name variable so there's no need to validate it. --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index fd74351c48..e88e5d3c92 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -1370,7 +1370,7 @@ static void nxagentParseOptions(char *name, char *value) { fprintf(stderr, "Warning: Unable to convert value [%s] of option [%s]. " "Ignoring option.\n", - validateString(value), validateString(name)); + validateString(value), name); return; } @@ -1381,7 +1381,7 @@ static void nxagentParseOptions(char *name, char *value) fprintf(stderr, "Warning: value [%s] of option [%s] " "out of range, clamped to [%lu].\n", - validateString(value), validateString(name), sleep_parse); + validateString(value), name, sleep_parse); } if (0 > sleep_parse) @@ -1390,7 +1390,7 @@ static void nxagentParseOptions(char *name, char *value) fprintf(stderr, "Warning: value [%s] of option [%s] " "out of range, clamped to [%lu].\n", - validateString(value), validateString(name), sleep_parse); + validateString(value), name, sleep_parse); } nxagentChangeOption(SleepTime, sleep_parse); @@ -1429,7 +1429,7 @@ static void nxagentParseOptions(char *name, char *value) { fprintf(stderr, "Warning: Unable to convert value [%s] of option [%s]. " "Ignoring option.\n", - validateString(value), validateString(name)); + validateString(value), name); return; } @@ -1440,7 +1440,7 @@ static void nxagentParseOptions(char *name, char *value) fprintf(stderr, "Warning: value [%s] of option [%s] " "out of range, clamped to [%lu].\n", - validateString(value), validateString(name), tolerance_parse); + validateString(value), name, tolerance_parse); } if (0 > tolerance_parse) @@ -1449,7 +1449,7 @@ static void nxagentParseOptions(char *name, char *value) fprintf(stderr, "Warning: value [%s] of option [%s] " "out of range, clamped to [%lu].\n", - validateString(value), validateString(name), tolerance_parse); + validateString(value), name, tolerance_parse); } #ifdef TEST @@ -1463,7 +1463,7 @@ static void nxagentParseOptions(char *name, char *value) fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of " "option [%s] unknown, will be mapped to " "\"Bypass\" [%u] value internally.\n", - validateString(value), validateString(name), + validateString(value), name, (unsigned int)ToleranceChecksBypass); } #endif From e6f7dcee2dffcab0313a64d145474c18c5608a2c Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 19 Nov 2017 02:22:17 +0100 Subject: [PATCH 04/14] Args.c: do not use [] for warnings Within Args.c values in messages are not enclosed by [] but ''. The [] format is only used for debugging/testing messages. --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index e88e5d3c92..fab3bacb79 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -1368,7 +1368,7 @@ static void nxagentParseOptions(char *name, char *value) if ((errno) && (0 == sleep_parse)) { - fprintf(stderr, "Warning: Unable to convert value [%s] of option [%s]. " + fprintf(stderr, "Warning: Unable to convert value '%s' of option '%s'. " "Ignoring option.\n", validateString(value), name); @@ -1379,8 +1379,8 @@ static void nxagentParseOptions(char *name, char *value) { sleep_parse = UINT_MAX; - fprintf(stderr, "Warning: value [%s] of option [%s] " - "out of range, clamped to [%lu].\n", + fprintf(stderr, "Warning: value '%s' of option '%s' " + "out of range, clamped to '%lu'.\n", validateString(value), name, sleep_parse); } @@ -1388,8 +1388,8 @@ static void nxagentParseOptions(char *name, char *value) { sleep_parse = 0; - fprintf(stderr, "Warning: value [%s] of option [%s] " - "out of range, clamped to [%lu].\n", + fprintf(stderr, "Warning: value '%s' of option '%s' " + "out of range, clamped to '%lu'.\n", validateString(value), name, sleep_parse); } @@ -1427,7 +1427,7 @@ static void nxagentParseOptions(char *name, char *value) if ((errno) && (0 == tolerance_parse)) { - fprintf(stderr, "Warning: Unable to convert value [%s] of option [%s]. " + fprintf(stderr, "Warning: Unable to convert value '%s' of option '%s'. " "Ignoring option.\n", validateString(value), name); @@ -1438,8 +1438,8 @@ static void nxagentParseOptions(char *name, char *value) { tolerance_parse = UINT_MAX; - fprintf(stderr, "Warning: value [%s] of option [%s] " - "out of range, clamped to [%lu].\n", + fprintf(stderr, "Warning: value '%s' of option '%s' " + "out of range, clamped to '%lu'.\n", validateString(value), name, tolerance_parse); } @@ -1447,8 +1447,8 @@ static void nxagentParseOptions(char *name, char *value) { tolerance_parse = 0; - fprintf(stderr, "Warning: value [%s] of option [%s] " - "out of range, clamped to [%lu].\n", + fprintf(stderr, "Warning: value '%s' of option '%s' " + "out of range, clamped to '%lu'.\n", validateString(value), name, tolerance_parse); } @@ -2415,7 +2415,7 @@ void nxagentSetDeferLevel(void) } default: { - fprintf(stderr, "Warning: Unknown link type [%d] processing the defer option.\n", + fprintf(stderr, "Warning: Unknown link type '%d' processing the defer option.\n", nxagentOption(LinkType)); deferLevel = 0; @@ -2569,7 +2569,7 @@ void nxagentSetBufferSize(void) if (NXSetDisplayBuffer(nxagentDisplay, nxagentBuffer) < 0) { - fprintf(stderr, "Warning: Can't set the display buffer size to [%d].\n", + fprintf(stderr, "Warning: Can't set the display buffer size to '%d'.\n", nxagentBuffer); } } From 101189585f1deeb966fbf3a46ab99d38ddb76b7d Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 19 Nov 2017 13:57:45 +0100 Subject: [PATCH 05/14] Args.c: shorten string allocations and abort on failure Use strndup instead of malloc + strncpy. Don't issue just a warning if that fails but issue a FatalError. --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 75 +++++++++-------------- 1 file changed, 28 insertions(+), 47 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index fab3bacb79..3b75719511 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -219,35 +219,25 @@ int ddxProcessArgument(int argc, char *argv[], int i) { if ((!strcmp(argv[j], "-display")) && (j + 1 < argc)) { - envOptions = strdup(argv[j + 1]); - - #ifdef WARNING - if (envOptions == NULL) + if ((envOptions = strdup(argv[j+1])) == NULL) { - fprintf(stderr, "ddxProcessArgument: WARNING! failed string allocation.\n"); + FatalError("malloc for -display failed"); } - #endif - break; } } if ((envOptions == NULL) && (envDisplay != NULL)) { - envOptions = strdup(envDisplay); - - #ifdef WARNING - if (envOptions == NULL) + if ((envOptions = strdup(envDisplay)) == NULL) { - fprintf(stderr, "ddxProcessArgument: WARNING! failed string allocation.\n"); + FatalError("malloc for envoptions failed"); } - #endif } if (envOptions != NULL) { nxagentParseOptionString(envOptions); - free(envOptions); } @@ -255,26 +245,11 @@ int ddxProcessArgument(int argc, char *argv[], int i) { if ((!strcmp(argv[j], "-options") || !strcmp(argv[j], "-option")) && j + 1 < argc) { - if (nxagentOptionsFilenameOrString) - { - nxagentOptionsFilenameOrString = (char *) realloc(nxagentOptionsFilenameOrString, strlen(argv[j + 1]) + 1); - } - else - { - nxagentOptionsFilenameOrString = (char *) malloc(strlen(argv[j + 1]) +1); - } - - if (nxagentOptionsFilenameOrString != NULL) - { - nxagentOptionsFilenameOrString = strcpy(nxagentOptionsFilenameOrString, argv[j + 1]); - } - #ifdef WARNING - else + free(nxagentOptionsFilenameOrString); + if ((nxagentOptionsFilenameOrString = strdup(argv[j + 1])) == NULL) { - fprintf(stderr, "ddxProcessArgument: WARNING! failed string allocation.\n"); + FatalError("malloc for -options failed"); } - #endif - break; } } @@ -359,9 +334,13 @@ int ddxProcessArgument(int argc, char *argv[], int i) free(nxagentOptionsFilenameOrString); nxagentOptionsFilenameOrString = NULL; - if (-1 == asprintf(&nxagentOptionsFilenameOrString, "%s", argv[i])) + /* FIXME: why limit 10 1024 bytes? */ + if ((size = strlen(argv[i])) < 1024) { - FatalError("malloc failed"); + if ((nxagentOptionsFilenameOrString = strndup(argv[i], size)) == NULL) + { + FatalError("malloc for -options failed"); + } } return 2; } @@ -705,10 +684,13 @@ int ddxProcessArgument(int argc, char *argv[], int i) free(nxagentKeyboard); nxagentKeyboard = NULL; - nxagentKeyboard = strdup(argv[i]); - if (nxagentKeyboard == NULL) + /* FIXME: why limit to 256? */ + if ((size = strlen(argv[i])) < 256) { - FatalError("malloc failed"); + if ((nxagentKeyboard = strndup(argv[i], size)) == NULL) + { + FatalError("malloc for -keyboard failed"); + } } return 2; @@ -1017,12 +999,11 @@ int ddxProcessArgument(int argc, char *argv[], int i) { if (i + 1 < argc) { - if (NULL != (nxagentKeystrokeFile = strdup(argv[i + 1]))) + if ((nxagentKeystrokeFile = strdup(argv[i + 1])) == NULL) { - return 2; - } else { - FatalError("malloc failed"); + FatalError("malloc for -keystrokefile failed"); } + return 2; } return 0; } @@ -1458,13 +1439,13 @@ static void nxagentParseOptions(char *name, char *value) case ToleranceChecksSafe: case ToleranceChecksRisky: case ToleranceChecksBypass: - break; + break; default: - fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of " - "option [%s] unknown, will be mapped to " - "\"Bypass\" [%u] value internally.\n", - validateString(value), name, - (unsigned int)ToleranceChecksBypass); + fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of " + "option [%s] unknown, will be mapped to " + "\"Bypass\" [%u] value internally.\n", + validateString(value), name, + (unsigned int)ToleranceChecksBypass); } #endif From 2ee5b55157467a7000448ff49531cc76de5fed1b Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 19 Nov 2017 14:04:32 +0100 Subject: [PATCH 06/14] Args.c: formatting and whitespace improvements --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 273 ++++++---------------- 1 file changed, 66 insertions(+), 207 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index 3b75719511..f7f9dd7215 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -266,9 +266,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) if (nxagentCheckBinder(argc, argv, i) > 0) { /* - * We are going to run the agent with the - * 'binder' option. Go straight to the - * proxy loop. + * We are going to run the agent with the 'binder' option. Go + * straight to the proxy loop. */ #ifdef TEST @@ -277,19 +276,11 @@ int ddxProcessArgument(int argc, char *argv[], int i) nxagentBinderLoop(); - /* - * This will make an exit. - */ - - nxagentBinderExit(0); + nxagentBinderExit(0); /* This will make an exit.*/ } else { - /* - * Exit with an error. - */ - - nxagentBinderExit(1); + nxagentBinderExit(1); /* Exit with an error.*/ } } @@ -300,7 +291,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) snprintf(nxagentDisplayName, NXAGENTDISPLAYNAMELENGTH, "%s", argv[i]); return 2; } - return 0; } @@ -311,7 +301,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) snprintf(nxagentSessionId, NXAGENTSESSIONIDLENGTH, "%s", argv[i]); return 2; } - return 0; } @@ -344,7 +333,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) } return 2; } - return 0; } @@ -413,9 +401,9 @@ int ddxProcessArgument(int argc, char *argv[], int i) if (++i < argc && sscanf(argv[i], "%i", &nxagentDefaultClass) == 1) { if (nxagentDefaultClass >= 0 && nxagentDefaultClass <= 5) { nxagentUserDefaultClass = True; - /* lex the OS layer process it as well, so return 0 */ } } + /* let the OS layer process it as well, so return 0 */ return 0; } @@ -441,8 +429,7 @@ int ddxProcessArgument(int argc, char *argv[], int i) !strcmp(argv[i], "-sss")) { fprintf(stderr, "Warning: Ignoring deprecated command line option '%s'.\n", - argv[i]); - + argv[i]); return 1; } @@ -458,12 +445,10 @@ int ddxProcessArgument(int argc, char *argv[], int i) { nxagentChangeOption(BackingStore, BackingStoreForce); } - return 2; } - return 0; - } + } if (!strcmp(argv[i], "-streaming")) { @@ -477,10 +462,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) { nxagentChangeOption(Streaming, 1); } - return 2; } - return 0; } @@ -504,10 +487,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) nxagentLockDeferLevel = 1; } - return 2; } - return 0; } @@ -519,11 +500,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) sscanf(argv[i], "%i", &limit) == 1) { nxagentChangeOption(ImageRateLimit, limit); - - return 2; } - return 0; } @@ -535,13 +513,11 @@ int ddxProcessArgument(int argc, char *argv[], int i) if (++i < argc && sscanf(argv[i], "%ix%i", &width, &height) == 2 && width >= 32 && height >= 32) - { + { nxagentChangeOption(TileWidth, width); nxagentChangeOption(TileHeight, height); - return 2; } - return 0; } @@ -549,7 +525,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) { if(++i < argc) { - #ifdef TEST fprintf(stderr, "ddxProcessArgument: User defined font path [%s].\n", argv[i]); #endif @@ -571,32 +546,29 @@ int ddxProcessArgument(int argc, char *argv[], int i) if (!strcmp(argv[i],"fullscreen")) { nxagentChangeOption(Fullscreen, True); - nxagentChangeOption(AllScreens, True); } else if (!strcmp(argv[i],"ipaq")) { nxagentChangeOption(Fullscreen, True); - nxagentChangeOption(AllScreens, True); nxagentIpaq = True; } else - { - if (nxagentUserGeometry.flag == 0) + { + if (nxagentUserGeometry.flag == 0) { - nxagentUserGeometry.flag = XParseGeometry(argv[i], - &nxagentUserGeometry.X, - &nxagentUserGeometry.Y, - &nxagentUserGeometry.Width, + nxagentUserGeometry.flag = XParseGeometry(argv[i], + &nxagentUserGeometry.X, + &nxagentUserGeometry.Y, + &nxagentUserGeometry.Width, &nxagentUserGeometry.Height); } } if (nxagentUserGeometry.flag || (nxagentOption(Fullscreen) == 1)) return 2; } - return 0; } @@ -615,7 +587,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) return 2; } } - return 0; } @@ -626,7 +597,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) snprintf(nxagentWindowName, NXAGENTWINDOWNAMELENGTH, "%s", argv[i]); return 2; } - return 0; } @@ -695,7 +665,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) return 2; } - return 0; } @@ -708,7 +677,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) if (!strcmp(argv[i], "-norender")) { nxagentRenderEnable = False; - return 1; } #endif @@ -716,14 +684,12 @@ int ddxProcessArgument(int argc, char *argv[], int i) if (!strcmp(argv[i], "-nocomposite")) { nxagentChangeOption(Composite, 0); - return 1; } if (!strcmp(argv[i], "-nodamage")) { nxagentChangeOption(UseDamage, 0); - return 1; } @@ -742,65 +708,55 @@ int ddxProcessArgument(int argc, char *argv[], int i) if (!strcmp(argv[i], "-reset")) { nxagentChangeOption(Reset, True); - return 1; } if (!strcmp(argv[i], "-persistent")) { nxagentChangeOption(Persistent, True); - return 1; } if (!strcmp(argv[i], "-nopersistent")) { nxagentChangeOption(Persistent, False); - return 1; } if (!strcmp(argv[i], "-noshmem")) { nxagentChangeOption(SharedMemory, False); - return 1; } if (!strcmp(argv[i], "-shmem")) { nxagentChangeOption(SharedMemory, True); - return 1; } if (!strcmp(argv[i], "-noignore")) { nxagentChangeOption(DeviceControl, True); - nxagentChangeOption(DeviceControlUserDefined , True); - return 1; } if (!strcmp(argv[i], "-nokbreset")) { nxagentChangeOption(ResetKeyboardAtResume, False); - return 1; } if (!strcmp(argv[i], "-noxkblock")) { nxagentChangeOption(InhibitXkb, 0); - return 1; } /* * Enable pseudo-rootless mode. */ - if (!strcmp(argv[i], "-R")) { if (nxagentOption(Binder) == UNDEFINED || @@ -815,29 +771,24 @@ int ddxProcessArgument(int argc, char *argv[], int i) } /* - * Enable the "desktop" mode. This is - * the default. + * Enable the "desktop" mode. This is the default. */ - if (!strcmp(argv[i], "-D")) { nxagentChangeOption(Binder, False); nxagentChangeOption(Rootless, False); nxagentChangeOption(Desktop, True); - return 1; } /* * Enable the "shadow" mode. */ - if (!strcmp(argv[i], "-S")) { nxagentChangeOption(Shadow, 1); nxagentChangeOption(DeferLevel, 0); nxagentChangeOption(Persistent, 0); - return 1; } @@ -854,7 +805,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) return 2; } - return 0; } @@ -871,10 +821,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) { nxagentChangeOption(ViewOnly, 0); } - return 2; } - return 0; } @@ -894,13 +842,10 @@ int ddxProcessArgument(int argc, char *argv[], int i) { seconds = 60; } - nxagentChangeOption(Timeout, seconds); - return 2; } } - return 0; } @@ -917,7 +862,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) nxagentChangeOption(Xdmcp, True); nxagentMaxAllowedResets = 0; - return 0; } @@ -928,7 +872,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) nxagentChangeOption(Xdmcp, True); nxagentMaxAllowedResets = 0; - return 0; } @@ -938,21 +881,18 @@ int ddxProcessArgument(int argc, char *argv[], int i) nxagentChangeOption(Xdmcp, True); nxagentMaxAllowedResets = 1; - return 0; } if (!strcmp(argv[i], "-noshpix")) { nxagentChangeOption(SharedPixmaps, False); - return 1; } if (!strcmp(argv[i], "-shpix")) { nxagentChangeOption(SharedPixmaps, True); - return 1; } @@ -978,7 +918,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) { nxagentChangeOption(Clipboard, ClipboardBoth); } - return 2; } @@ -991,7 +930,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) if (!strcmp(argv[i], "-verbose")) { nxagentVerbose = 1; - return 1; } @@ -1026,7 +964,7 @@ static void nxagentParseOptions(char *name, char *value) #ifdef TEST fprintf(stderr, "nxagentParseOptions: Processing option '%s' = '%s'.\n", - validateString(name), validateString(value)); + validateString(name), validateString(value)); #endif if (!strcmp(name, "kbtype") || @@ -1044,7 +982,6 @@ static void nxagentParseOptions(char *name, char *value) !strcmp(name, "tile")) { argv[1] = value; - argc = 2; } else if (!strcmp(name, "R") && !strcmp(value, "1")) @@ -1054,7 +991,6 @@ static void nxagentParseOptions(char *name, char *value) else if (!strcmp(name, "fast") || !strcmp(name, "slow")) { fprintf(stderr, "Warning: Ignoring deprecated option '%s'.\n", name); - return; } else if (!strcmp(name, "render")) @@ -1078,10 +1014,9 @@ static void nxagentParseOptions(char *name, char *value) else { fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", - validateString(value), name); + validateString(value), name); } } - return; } else if (!strcmp(name, "state")) @@ -1100,21 +1035,18 @@ static void nxagentParseOptions(char *name, char *value) else if (!strcmp(value, "1")) { nxagentChangeOption(Fullscreen, True); - nxagentChangeOption(AllScreens, True); } else if (!strcmp(value, "0")) { nxagentChangeOption(Fullscreen, False); - nxagentChangeOption(AllScreens, False); } else { fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'fullscreen'.\n", - validateString(value)); + validateString(value)); } - return; } else if (!strcmp(name, "shpix")) @@ -1130,9 +1062,8 @@ static void nxagentParseOptions(char *name, char *value) else { fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", - validateString(value), name); + validateString(value), name); } - return; } else if (!strcmp(name, "shmem")) @@ -1148,9 +1079,8 @@ static void nxagentParseOptions(char *name, char *value) else { fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", - validateString(value), name); + validateString(value), name); } - return; } else if (!strcmp(name, "composite")) @@ -1166,9 +1096,8 @@ static void nxagentParseOptions(char *name, char *value) else { fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", - validateString(value), name); + validateString(value), name); } - return; } else if (!strcmp(name, "xinerama")) @@ -1197,7 +1126,7 @@ static void nxagentParseOptions(char *name, char *value) else { fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", - validateString(value), name); + validateString(value), name); } return; #endif @@ -1215,9 +1144,8 @@ static void nxagentParseOptions(char *name, char *value) else { fprintf(stderr, "Warning: Ignoring bad value '%s' for option '%s'.\n", - validateString(value), name); + validateString(value), name); } - return; } else if (!strcmp(name, "backingstore")) @@ -1230,7 +1158,6 @@ static void nxagentParseOptions(char *name, char *value) { nxagentChangeOption(BackingStore, BackingStoreForce); } - return; } else if (!strcmp(name, "menu")) @@ -1243,7 +1170,6 @@ static void nxagentParseOptions(char *name, char *value) { nxagentChangeOption(Menu, 1); } - return; } else if (!strcmp(name, "magicpixel")) @@ -1281,13 +1207,11 @@ static void nxagentParseOptions(char *name, char *value) else if (strcmp(name, "shadowuid") == 0) { nxagentShadowUid = atoi(value); - return; } else if (strcmp(name, "clients") == 0) { snprintf(nxagentClientsLogName, NXAGENTCLIENTSLOGNAMELENGTH, "%s", value); - return; } else if (strcmp(name, "client") == 0) @@ -1308,13 +1232,11 @@ static void nxagentParseOptions(char *name, char *value) { nxagentChangeOption(ClientOs, ClientOsMac); } - return; } else if (strcmp(name, "copysize") == 0) { nxagentChangeOption(CopyBufferSize, atoi(value)); - return; } else if (strcmp(name, "clipboard") == 0) @@ -1352,7 +1274,6 @@ static void nxagentParseOptions(char *name, char *value) fprintf(stderr, "Warning: Unable to convert value '%s' of option '%s'. " "Ignoring option.\n", validateString(value), name); - return; } @@ -1373,9 +1294,7 @@ static void nxagentParseOptions(char *name, char *value) "out of range, clamped to '%lu'.\n", validateString(value), name, sleep_parse); } - nxagentChangeOption(SleepTime, sleep_parse); - return; } else if (!strcmp(name, "tolerancechecks")) @@ -1411,7 +1330,6 @@ static void nxagentParseOptions(char *name, char *value) fprintf(stderr, "Warning: Unable to convert value '%s' of option '%s'. " "Ignoring option.\n", validateString(value), name); - return; } @@ -1451,7 +1369,6 @@ static void nxagentParseOptions(char *name, char *value) nxagentChangeOption(ReconnectTolerance, tolerance_parse); } - return; } else if (!strcmp(name, "keyconv")) @@ -1477,9 +1394,8 @@ static void nxagentParseOptions(char *name, char *value) { #ifdef DEBUG fprintf(stderr, "nxagentParseOptions: Ignored option [%s] with value [%s].\n", - validateString(name), validateString(value)); + validateString(name), validateString(value)); #endif - return; } @@ -1494,8 +1410,7 @@ static void nxagentParseOptions(char *name, char *value) if ((argv[0] = malloc(size + 1)) == NULL) { fprintf(stderr, "Warning: Ignoring option '%s' due to lack of memory.\n", - name); - + name); return; } @@ -1543,7 +1458,6 @@ static void nxagentParseOptionString(char *string) { value = NULL; } - nxagentParseOptions(option, value); } } @@ -1555,7 +1469,7 @@ void nxagentProcessOptions(char * string) #ifdef DEBUG fprintf(stderr, "%s: Going to process option string/filename [%s].\n", - __func__, validateString(string)); + __func__, validateString(string)); #endif /* if the "filename" starts with an nx marker treat it @@ -1589,7 +1503,7 @@ void nxagentProcessOptionsFile(char * filename) #ifdef DEBUG fprintf(stderr, "nxagentProcessOptionsFile: Going to process option file [%s].\n", - validateString(filename)); + validateString(filename)); #endif /* @@ -1605,30 +1519,27 @@ void nxagentProcessOptionsFile(char * filename) if ((file = fopen(filename, "r")) == NULL) { fprintf(stderr, "Warning: Couldn't open option file '%s'. Error is '%s'.\n", - validateString(filename), strerror(errno)); - + validateString(filename), strerror(errno)); goto nxagentProcessOptionsFileExit; } if (fseek(file, 0, SEEK_END) != 0) { fprintf(stderr, "Warning: Couldn't position inside option file '%s'. Error is '%s'.\n", - validateString(filename), strerror(errno)); - + validateString(filename), strerror(errno)); goto nxagentProcessOptionsFileExit; } if ((sizeOfFile = ftell(file)) == -1) { fprintf(stderr, "Warning: Couldn't get the size of option file '%s'. Error is '%s'.\n", - validateString(filename), strerror(errno)); - + validateString(filename), strerror(errno)); goto nxagentProcessOptionsFileExit; } #ifdef DEBUG fprintf(stderr, "nxagentProcessOptionsFile: Processing option file [%s].\n", - validateString(filename)); + validateString(filename)); #endif rewind(file); @@ -1636,16 +1547,14 @@ void nxagentProcessOptionsFile(char * filename) if (sizeOfFile > maxFileSize) { fprintf(stderr, "Warning: Maximum file size exceeded for options '%s'.\n", - validateString(filename)); - + validateString(filename)); goto nxagentProcessOptionsFileExit; } if ((data = malloc(sizeOfFile + 1)) == NULL) { fprintf(stderr, "Warning: Memory allocation failed processing file '%s'.\n", - validateString(filename)); - + validateString(filename)); goto nxagentProcessOptionsFileExit; } @@ -1659,8 +1568,7 @@ void nxagentProcessOptionsFile(char * filename) if (ferror(file) != 0) { fprintf(stderr, "Warning: Error reading the option file '%s'.\n", - validateString(filename)); - + validateString(filename)); goto nxagentProcessOptionsFileExit; } @@ -1676,8 +1584,7 @@ void nxagentProcessOptionsFile(char * filename) if (size != sizeOfFile) { fprintf(stderr, "Warning: Premature end of option file '%s' while reading.\n", - validateString(filename)); - + validateString(filename)); goto nxagentProcessOptionsFileExit; } @@ -1700,10 +1607,9 @@ void nxagentProcessOptionsFile(char * filename) if (fclose(file) != 0) { fprintf(stderr, "Warning: Couldn't close option file '%s'. Error is '%s'.\n", - validateString(filename), strerror(errno)); + validateString(filename), strerror(errno)); } } - return; } @@ -1824,16 +1730,13 @@ N/A #ifdef TEST fprintf(stderr, "nxagentPostProcessArgs: Got local version [%d.%d.%d] remote version [%d.%d.%d].\n", - localMajor, localMinor, localPatch, remoteMajor, remoteMinor, remotePatch); - + localMajor, localMinor, localPatch, remoteMajor, remoteMinor, remotePatch); fprintf(stderr, "nxagentPostProcessArgs: Got split timeout [%d] motion timeout [%d].\n", - splitTimeout, motionTimeout); - + splitTimeout, motionTimeout); fprintf(stderr, "nxagentPostProcessArgs: Got split mode [%d] split size [%d].\n", - splitMode, splitSize); - + splitMode, splitSize); fprintf(stderr, "nxagentPostProcessArgs: Got preferred pack method [%d] and quality [%d].\n", - packMethod, packQuality); + packMethod, packQuality); #endif if (remoteMajor < 2) @@ -1885,7 +1788,7 @@ N/A enableServer = 1; if (NXGetShmemParameters(dpy, &enableClient, &enableServer, &clientSegment, - &serverSegment, &clientSize, &serverSize) == 0) + &serverSegment, &clientSize, &serverSize) == 0) { fprintf(stderr, "Warning: Failed to get the shared memory parameters.\n"); } @@ -1893,13 +1796,13 @@ N/A if (enableServer == 1) { fprintf(stderr, "Info: Using shared memory parameters %d/%d/%d/%dK.\n", - nxagentOption(SharedMemory), nxagentOption(SharedPixmaps), - enableServer, serverSize / 1024); + nxagentOption(SharedMemory), nxagentOption(SharedPixmaps), + enableServer, serverSize / 1024); } else { fprintf(stderr, "Info: Using shared memory parameters %d/%d/0/0K.\n", - nxagentOption(SharedMemory), nxagentOption(SharedPixmaps)); + nxagentOption(SharedMemory), nxagentOption(SharedPixmaps)); } /* @@ -1914,7 +1817,6 @@ N/A /* * We don't have a proxy on the remote side. */ - nxagentChangeOption(LinkType, LINK_TYPE_NONE); } @@ -2007,12 +1909,12 @@ FIXME: In rootless mode the backing-store support is not functional yet. * command line as this has the priority * over the option file. */ - + if (nxagentRenderEnable == UNDEFINED) { nxagentRenderEnable = True; } - + if (nxagentRenderEnable == True) { nxagentAlphaEnabled = True; @@ -2046,7 +1948,7 @@ FIXME: In rootless mode the backing-store support is not functional yet. /* * We skip server reset by default. This should * be equivalent to passing the -noreset option - * to a standard XFree86 server. + * to a standard XOrg server. */ if (nxagentOption(Reset) == False) @@ -2059,14 +1961,14 @@ FIXME: In rootless mode the backing-store support is not functional yet. } /* - * Check if the user activated the auto-disconect + * Check if the user activated the auto-disconnect * feature. */ if (nxagentOption(Timeout) > 0) { fprintf(stderr, "Info: Using auto-disconnect timeout of %d seconds.\n", - nxagentOption(Timeout)); + nxagentOption(Timeout)); nxagentAutoDisconnectTimeout = nxagentOption(Timeout) * MILLI_PER_SECOND; } @@ -2170,7 +2072,6 @@ void nxagentSetPackMethod(void) nxagentPackLossless = PACK_NONE; nxagentSplitThreshold = 0; - return; } @@ -2187,7 +2088,6 @@ void nxagentSetPackMethod(void) #ifdef TEST fprintf(stderr, "nxagentSetPackMethod: Using adaptive mode for image compression.\n"); #endif - nxagentChangeOption(Adaptive, 1); } else @@ -2195,10 +2095,9 @@ void nxagentSetPackMethod(void) #ifdef TEST fprintf(stderr, "nxagentSetPackMethod: Not using adaptive mode for image compression.\n"); #endif - nxagentChangeOption(Adaptive, 0); } - + if (method == PACK_LOSSY || method == PACK_ADAPTIVE) { nxagentPackMethod = PACK_JPEG_16M_COLORS; @@ -2213,20 +2112,17 @@ void nxagentSetPackMethod(void) case LINK_TYPE_WAN: { nxagentPackMethod = PACK_BITMAP_16M_COLORS; - break; } case LINK_TYPE_LAN: { nxagentPackMethod = PACK_RLE_16M_COLORS; - break; } default: { fprintf(stderr, "Warning: Unknown link type '%d' while setting the pack method.\n", - nxagentOption(LinkType)); - + nxagentOption(LinkType)); break; } } @@ -2280,11 +2176,9 @@ void nxagentSetPackMethod(void) if (supportedMethods[nxagentPackMethod] == 0) { fprintf(stderr, "Warning: Pack method '%d' not supported by the proxy.\n", - nxagentPackMethod); - + nxagentPackMethod); fprintf(stderr, "Warning: Replacing with lossless pack method '%d'.\n", - nxagentPackLossless); - + nxagentPackLossless); nxagentPackMethod = nxagentPackLossless; } } @@ -2332,7 +2226,6 @@ void nxagentSetDeferLevel(void) if (nxagentOption(Streaming) == 1) { fprintf(stderr, "Warning: Streaming of images not available in this agent.\n"); - nxagentChangeOption(Streaming, 0); } @@ -2341,71 +2234,52 @@ void nxagentSetDeferLevel(void) case LINK_TYPE_MODEM: { deferLevel = 2; - tileWidth = 64; tileHeight = 64; - deferTimeout = 200; - break; } case LINK_TYPE_ISDN: { deferLevel = 2; - tileWidth = 64; tileHeight = 64; - deferTimeout = 200; - break; } case LINK_TYPE_ADSL: { deferLevel = 2; - deferTimeout = 200; - tileWidth = 4096; tileHeight = 4096; - break; } case LINK_TYPE_WAN: { deferLevel = 1; - deferTimeout = 200; - tileWidth = 4096; tileHeight = 4096; - break; } case LINK_TYPE_NONE: case LINK_TYPE_LAN: { deferLevel = 0; - deferTimeout = 200; - tileWidth = 4096; tileHeight = 4096; - break; } default: { fprintf(stderr, "Warning: Unknown link type '%d' processing the defer option.\n", - nxagentOption(LinkType)); - + nxagentOption(LinkType)); deferLevel = 0; - tileWidth = 64; tileHeight = 64; - deferTimeout = 200; - break; } } @@ -2439,8 +2313,8 @@ void nxagentSetDeferLevel(void) { #ifdef TEST fprintf(stderr, "nxagentSetDeferLevel: Not overriding the [defer] option " - "with value [%d]. Defer timeout is [%ld] ms.\n", nxagentOption(DeferLevel), - nxagentOption(DeferTimeout)); + "with value [%d]. Defer timeout is [%ld] ms.\n", + nxagentOption(DeferLevel), nxagentOption(DeferTimeout)); #endif } else @@ -2449,7 +2323,7 @@ void nxagentSetDeferLevel(void) #ifdef TEST fprintf(stderr, "nxagentSetDeferLevel: Assuming defer level [%d] with timeout of [%ld] ms.\n", - nxagentOption(DeferLevel), nxagentOption(DeferTimeout)); + nxagentOption(DeferLevel), nxagentOption(DeferTimeout)); #endif } @@ -2461,7 +2335,7 @@ void nxagentSetDeferLevel(void) { #ifdef TEST fprintf(stderr, "nxagentSetDeferLevel: Not overriding the [tile] option " - "width value [%d].\n", nxagentOption(TileWidth)); + "width value [%d].\n", nxagentOption(TileWidth)); #endif } else @@ -2470,19 +2344,19 @@ void nxagentSetDeferLevel(void) #ifdef TEST fprintf(stderr, "nxagentSetDeferLevel: Assuming tile width [%d].\n", - nxagentOption(TileWidth)); + nxagentOption(TileWidth)); #endif } /* * Set the tile height. */ - + if (nxagentOption(TileHeight) != UNDEFINED) { #ifdef TEST fprintf(stderr, "nxagentSetDeferLevel: Not overriding the [tile] option " - "height value [%d].\n", nxagentOption(TileHeight)); + "height value [%d].\n", nxagentOption(TileHeight)); #endif } else @@ -2491,7 +2365,7 @@ void nxagentSetDeferLevel(void) #ifdef TEST fprintf(stderr, "nxagentSetDeferLevel: Assuming tile height [%d].\n", - nxagentOption(TileHeight)); + nxagentOption(TileHeight)); #endif } } @@ -2505,41 +2379,34 @@ void nxagentSetBufferSize(void) case LINK_TYPE_MODEM: { size = 4096; - break; } case LINK_TYPE_ISDN: { size = 4096; - break; } case LINK_TYPE_ADSL: { size = 8192; - break; } case LINK_TYPE_WAN: { size = 16384; - break; } case LINK_TYPE_NONE: case LINK_TYPE_LAN: { size = 16384; - break; } default: { fprintf(stderr, "Warning: Unknown link type '%d' while setting the display buffer size.\n", - nxagentOption(LinkType)); - + nxagentOption(LinkType)); size = 16384; - break; } } @@ -2551,7 +2418,7 @@ void nxagentSetBufferSize(void) if (NXSetDisplayBuffer(nxagentDisplay, nxagentBuffer) < 0) { fprintf(stderr, "Warning: Can't set the display buffer size to '%d'.\n", - nxagentBuffer); + nxagentBuffer); } } @@ -2566,7 +2433,6 @@ void nxagentSetScheduler(void) #ifdef TEST fprintf(stderr, "nxagentSetScheduler: Using the dumb scheduler in shadow mode.\n"); #endif - nxagentDisableTimer(); } } @@ -2580,48 +2446,41 @@ void nxagentSetCoalescence(void) case LINK_TYPE_MODEM: { timeout = 50; - break; } case LINK_TYPE_ISDN: { timeout = 20; - break; } case LINK_TYPE_ADSL: { timeout = 10; - break; } case LINK_TYPE_WAN: { timeout = 5; - break; } case LINK_TYPE_NONE: case LINK_TYPE_LAN: { timeout = 0; - break; } default: { fprintf(stderr, "Warning: Unknown link type '%d' while setting the display coalescence.\n", - nxagentOption(LinkType)); - + nxagentOption(LinkType)); timeout = 0; - break; } } #ifdef TEST fprintf(stderr, "nxagentSetCoalescence: Using coalescence timeout of [%d] ms.\n", - timeout); + timeout); #endif nxagentChangeOption(DisplayCoalescence, timeout); From 5c0345fdd6bb51625d96590dcd32eb7aa875fa52 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 19 Nov 2017 14:04:54 +0100 Subject: [PATCH 07/14] Args.c: swap comparison order We use (variable == constant) everywhere. --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index f7f9dd7215..a4eb715c4d 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -1269,7 +1269,7 @@ static void nxagentParseOptions(char *name, char *value) errno = 0; sleep_parse = strtol(value, NULL, 10); - if ((errno) && (0 == sleep_parse)) + if ((errno) && (sleep_parse == 0)) { fprintf(stderr, "Warning: Unable to convert value '%s' of option '%s'. " "Ignoring option.\n", @@ -1325,7 +1325,7 @@ static void nxagentParseOptions(char *name, char *value) errno = 0; tolerance_parse = strtol(value, NULL, 10); - if ((errno) && (0 == tolerance_parse)) + if ((errno) && (tolerance_parse == 0)) { fprintf(stderr, "Warning: Unable to convert value '%s' of option '%s'. " "Ignoring option.\n", From 426cd2ff578b72dd0c7ac1b4aca1c4eaf52d2ccb Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 19 Nov 2017 14:05:46 +0100 Subject: [PATCH 08/14] Args.c, Binder.c: replace deprecated (r)index() by str(r)chr() --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 4 ++-- nx-X11/programs/Xserver/hw/nxagent/Binder.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index a4eb715c4d..f258fb535e 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -1434,7 +1434,7 @@ static void nxagentParseOptionString(char *string) * Remove the port specification. */ - delimiter = rindex(string, ':'); + delimiter = strrchr(string, ':'); if (delimiter) { @@ -1447,7 +1447,7 @@ static void nxagentParseOptionString(char *string) while ((option = strtok(option ? NULL : string, ","))) { - delimiter = rindex(option, '='); + delimiter = strrchr(option, '='); if (delimiter) { diff --git a/nx-X11/programs/Xserver/hw/nxagent/Binder.c b/nx-X11/programs/Xserver/hw/nxagent/Binder.c index 1a6c4e9690..45400c1e70 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Binder.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Binder.c @@ -58,7 +58,7 @@ int nxagentCheckBinder(int argc, char *argv[], int i) * the -B switch. */ - found = rindex(display, ':'); + found = strrchr(display, ':'); if (found == NULL || *(found + 1) == '\0' || isdigit(*(found + 1)) == 0) @@ -91,7 +91,7 @@ int nxagentCheckBinder(int argc, char *argv[], int i) return 0; } - found = rindex(display, ':'); + found = strrchr(display, ':'); if (found == NULL || *(found + 1) == '\0' || isdigit(*(found + 1)) == 0 || atoi(found + 1) != port) From 19ef57dbc3d383a5e598e73521c2dd6667c36d95 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Mon, 20 Nov 2017 19:19:30 +0100 Subject: [PATCH 09/14] Args.c: use char '\0' instead of 0 where appropriate --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index f258fb535e..7e6856c5b0 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -1438,7 +1438,7 @@ static void nxagentParseOptionString(char *string) if (delimiter) { - *delimiter = 0; + *delimiter = '\0'; } else { @@ -1451,7 +1451,7 @@ static void nxagentParseOptionString(char *string) if (delimiter) { - *delimiter = 0; + *delimiter = '\0'; value = delimiter + 1; } else @@ -1594,7 +1594,7 @@ void nxagentProcessOptionsFile(char * filename) for (offset = 0; (offset < sizeOfFile) && (data[offset] != '\n'); offset++); - data[offset] = 0; + data[offset] = '\0'; nxagentParseOptionString(data); From dda7d422bab7eedbf6befc96517a745c979c2666 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Mon, 20 Nov 2017 19:24:21 +0100 Subject: [PATCH 10/14] hw/nxagent: make nxagentVerbose a Boolean --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 4 ++-- nx-X11/programs/Xserver/hw/nxagent/Error.c | 2 +- nx-X11/programs/Xserver/hw/nxagent/Error.h | 2 +- nx-X11/programs/Xserver/hw/nxagent/Events.c | 2 +- nx-X11/programs/Xserver/hw/nxagent/Font.c | 4 ++-- nx-X11/programs/Xserver/hw/nxagent/Reconnect.c | 4 ++-- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index 7e6856c5b0..c5ac74e1eb 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -177,7 +177,7 @@ static void nxagentParseOptionString(char*); static int nxagentGetDialogName(void); -char nxagentVerbose = 0; +Bool nxagentVerbose = False; char *nxagentKeystrokeFile = NULL; @@ -929,7 +929,7 @@ int ddxProcessArgument(int argc, char *argv[], int i) if (!strcmp(argv[i], "-verbose")) { - nxagentVerbose = 1; + nxagentVerbose = True; return 1; } diff --git a/nx-X11/programs/Xserver/hw/nxagent/Error.c b/nx-X11/programs/Xserver/hw/nxagent/Error.c index bc58ef8490..431708d69c 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Error.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Error.c @@ -108,7 +108,7 @@ static int nxagentPrintError(Display *dpy, XErrorEvent *event, FILE *fp); int nxagentErrorHandler(Display *dpy, XErrorEvent *event) { - if (nxagentVerbose == 1) + if (nxagentVerbose == True) { nxagentPrintError(dpy, event, stderr); } diff --git a/nx-X11/programs/Xserver/hw/nxagent/Error.h b/nx-X11/programs/Xserver/hw/nxagent/Error.h index f23385e0a5..05890fd2c6 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Error.h +++ b/nx-X11/programs/Xserver/hw/nxagent/Error.h @@ -33,7 +33,7 @@ #define NXAGENTCLIENTSLOGNAMELENGTH 256 extern char nxagentClientsLogName[NXAGENTCLIENTSLOGNAMELENGTH]; -extern char nxagentVerbose; +extern Bool nxagentVerbose; int nxagentErrorHandler(Display *dpy, XErrorEvent *event); diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c index 071e93b328..12f1acd702 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Events.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c @@ -1923,7 +1923,7 @@ FIXME: Don't enqueue the KeyRelease event if the key was if (nxagentExposeQueue.exposures[nxagentExposeQueue.start].serial != X.xconfigure.x) { #ifdef WARNING - if (nxagentVerbose == 1) + if (nxagentVerbose == True) { fprintf(stderr, "nxagentDispatchEvents: Requested ConfigureNotify changes didn't take place.\n"); } diff --git a/nx-X11/programs/Xserver/hw/nxagent/Font.c b/nx-X11/programs/Xserver/hw/nxagent/Font.c index a1690ebb81..0347d7f1a3 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Font.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Font.c @@ -775,7 +775,7 @@ static XFontStruct *nxagentLoadBestQueryFont(Display* dpy, char *fontName, FontP if (numFontFields <= FIELDS) { #ifdef WARNING - if (nxagentVerbose == 1) + if (nxagentVerbose == True) { fprintf(stderr, "nxagentLoadBestQueryFont: WARNING! Font name in non standard format. \n"); } @@ -844,7 +844,7 @@ static XFontStruct *nxagentLoadBestQueryFont(Display* dpy, char *fontName, FontP } #ifdef WARNING - if (nxagentVerbose == 1) + if (nxagentVerbose == True) { fprintf(stderr, "nxagentLoadBestQueryFont: WARNING! Failed to load font '%s'. Replacing with '%s'.\n", fontName, substFontBuf); diff --git a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c index 9a6cbf28b8..c279018e4e 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c @@ -592,7 +592,7 @@ Bool nxagentReconnectSession(void) if (nxagentResetKeyboard() == 0) { #ifdef WARNING - if (nxagentVerbose == 1) + if (nxagentVerbose == True) { fprintf(stderr, "nxagentReconnectSession: Failed to reset keyboard device.\n"); } @@ -693,7 +693,7 @@ Bool nxagentReconnectSession(void) if (*nxagentGetReconnectError() == '\0') { #ifdef WARNING - if (nxagentVerbose == 1) + if (nxagentVerbose == True) { fprintf(stderr, "nxagentReconnectSession: WARNING! The reconnect error message is not set. Failed step is [%d].\n", failedStep); From ea9a20657a7c05b5245a0596fd21bcce06431ee2 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 21 Nov 2017 00:20:32 +0100 Subject: [PATCH 11/14] Args.c: add some comments and FIXMEs --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 31 +++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index c5ac74e1eb..272f2461f2 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -181,6 +181,9 @@ Bool nxagentVerbose = False; char *nxagentKeystrokeFile = NULL; +/* + * This is the entry point, called from os/utils.c + */ int ddxProcessArgument(int argc, char *argv[], int i) { /* @@ -191,6 +194,11 @@ int ddxProcessArgument(int argc, char *argv[], int i) static Bool resetOptions = True; + /* + * the first call of ddxProcessArgument is used to setup defaults + * and read/process the options from environment and/or the options + * file. + */ if (resetOptions == True) { char *envOptions = NULL; @@ -202,10 +210,9 @@ int ddxProcessArgument(int argc, char *argv[], int i) resetOptions = False; /* - * Ensure the correct order of options evaluation: - * the environment first, then those included in - * the options file and, last, the command line - * options. + * Ensure the correct order of options evaluation: the -display + * option first, then the environment, then those included in the + * options file and, last, the command line options. */ envDisplay = getenv("DISPLAY"); @@ -237,6 +244,7 @@ int ddxProcessArgument(int argc, char *argv[], int i) if (envOptions != NULL) { + /* envOptions will be modified! */ nxagentParseOptionString(envOptions); free(envOptions); } @@ -668,6 +676,7 @@ int ddxProcessArgument(int argc, char *argv[], int i) return 0; } + /* FIXME: seems to be ignored; is not documented */ if (!strcmp(argv[i], "-extensions")) { return 1; @@ -967,6 +976,10 @@ static void nxagentParseOptions(char *name, char *value) validateString(name), validateString(value)); #endif + /* + * these options are also command line options (prefixed with "-") + * and require an argument. They are handled by ddxProcessArgument() + */ if (!strcmp(name, "kbtype") || !strcmp(name, "keyboard") || !strcmp(name, "id") || @@ -986,6 +999,10 @@ static void nxagentParseOptions(char *name, char *value) } else if (!strcmp(name, "R") && !strcmp(value, "1")) { + /* + * this option is a command line option and requires no + * argument. It is handled by ddxProcessArgument() + */ argc = 1; } else if (!strcmp(name, "fast") || !strcmp(name, "slow")) @@ -993,6 +1010,10 @@ static void nxagentParseOptions(char *name, char *value) fprintf(stderr, "Warning: Ignoring deprecated option '%s'.\n", name); return; } + /* + * the following options are only allowed in the options parameter and + * always require an argument. + */ else if (!strcmp(name, "render")) { if (nxagentReconnectTrap == True) @@ -1499,7 +1520,7 @@ void nxagentProcessOptionsFile(char * filename) int size; int sizeOfFile; - int maxFileSize = 1024; + int maxFileSize = 1024; /* FIXME: why? */ #ifdef DEBUG fprintf(stderr, "nxagentProcessOptionsFile: Going to process option file [%s].\n", From e187f548fb36aa17e23110e681e6be493c2441b0 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 21 Nov 2017 00:24:04 +0100 Subject: [PATCH 12/14] Args.c: do not handle -options twice An options string/filename can only be provided via the command line or environment. Both are handled in the one-time init part of ddxProcessArguments() and will not change during runtime. As we do not want an options file to include another "options" option there's no need to handle that a second time. Due to the (kind of crazy) way nxagent handles all this option stuff we cannot remove the second check completely. This also removes the 1024 byte limit for nxagentOptionsFilenameOrString. --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 37 ++++++++++------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index 272f2461f2..43ea9d12cf 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -251,6 +251,13 @@ int ddxProcessArgument(int argc, char *argv[], int i) for (j = 0; j < argc; j++) { + /* + * Read the _last_ options file only and only at startup. + + * This had to be '-options' since the beginning + * but was '-option' by mistake. Now we have to + * handle the backward compatibility. + */ if ((!strcmp(argv[j], "-options") || !strcmp(argv[j], "-option")) && j + 1 < argc) { free(nxagentOptionsFilenameOrString); @@ -258,7 +265,7 @@ int ddxProcessArgument(int argc, char *argv[], int i) { FatalError("malloc for -options failed"); } - break; + j++; } } @@ -319,29 +326,17 @@ int ddxProcessArgument(int argc, char *argv[], int i) } /* - * This had to be '-options' since the beginning - * but was '-option' by mistake. Now we have to - * handle the backward compatibility. + * an options string/filename can only be provided via the command + * line or environment. Both are handled above in the one-time init + * part and will not change during runtime. As we do not want an + * options file to include another "options" option we skip this + * here. Due to the way nxagent handles all this option stuff we + * cannot remove the check completely. */ - if (!strcmp(argv[i], "-options") || !strcmp(argv[i], "-option")) { - if (++i < argc) - { - free(nxagentOptionsFilenameOrString); - nxagentOptionsFilenameOrString = NULL; - - /* FIXME: why limit 10 1024 bytes? */ - if ((size = strlen(argv[i])) < 1024) - { - if ((nxagentOptionsFilenameOrString = strndup(argv[i], size)) == NULL) - { - FatalError("malloc for -options failed"); - } - } - return 2; - } - return 0; + /* skip -options and its argument */ + return 2; } if (!strcmp(argv[i], "-sync")) { From 1e89e2bebe3b4b03545f360ea9f4ca395a612fe0 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Tue, 21 Nov 2017 01:00:49 +0100 Subject: [PATCH 13/14] nxagent manpage: add copysize option --- nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 b/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 index b9c81cdb42..3869a769db 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 +++ b/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 @@ -567,6 +567,10 @@ enable using shared memory .B shpix= enable shared pixmaps support .TP 8 +.B copysize= +limit to the amount of data that can be pasted from an NX session into +an external application. Default is unlimited. +.TP 8 .B client= type of connecting operating system (supported: \fIlinux\fR, \fIwindows\fR, \fIsolaris\fR and \fImacosx\fR) From 19126affdd1c8343e1661beb79f344f63d39d220 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Thu, 23 Nov 2017 15:39:45 +0100 Subject: [PATCH 14/14] Args.c: drop 255 byte limit for -keyboard option Could not find a reason to limit that string. --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index 43ea9d12cf..e754dbc6cb 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -655,15 +655,10 @@ int ddxProcessArgument(int argc, char *argv[], int i) if (++i < argc) { free(nxagentKeyboard); - nxagentKeyboard = NULL; - /* FIXME: why limit to 256? */ - if ((size = strlen(argv[i])) < 256) + if ((nxagentKeyboard = strdup(argv[i])) == NULL) { - if ((nxagentKeyboard = strndup(argv[i], size)) == NULL) - { - FatalError("malloc for -keyboard failed"); - } + FatalError("malloc for -keyboard failed"); } return 2;