Unverified Commit db74c07e authored by Mike Gabriel's avatar Mike Gabriel

Merge branch 'uli42-pr/args_fixes' into 3.6.x

parents 1ae0ceb7 6ef35a94
...@@ -216,28 +216,25 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -216,28 +216,25 @@ int ddxProcessArgument(int argc, char *argv[], int i)
if (resetOptions == True) if (resetOptions == True)
{ {
char *envOptions = NULL; char *envOptions = NULL;
char *envDisplay = NULL;
int j;
nxagentInitOptions(); nxagentInitOptions();
resetOptions = False; resetOptions = False;
/* /*
* Ensure the correct order of options evaluation: * Ensure the correct order of options evaluation: the environment
* the environment first, then those included in * first, then those included in the options file and, last, the
* the options file and, last, the command line * command line options.
* options.
*/ */
envDisplay = getenv("DISPLAY"); char *envDisplay = getenv("DISPLAY");
if (envDisplay != NULL && strlen(envDisplay) == 0) if (envDisplay != NULL && strlen(envDisplay) == 0)
{ {
envDisplay = NULL; envDisplay = NULL;
} }
for (j = 0; j < argc; j++) for (int j = 0; j < argc; j++)
{ {
if ((!strcmp(argv[j], "-display")) && (j + 1 < argc)) if ((!strcmp(argv[j], "-display")) && (j + 1 < argc))
{ {
...@@ -273,36 +270,22 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -273,36 +270,22 @@ int ddxProcessArgument(int argc, char *argv[], int i)
SAFE_free(envOptions); SAFE_free(envOptions);
} }
for (j = 0; j < argc; j++) for (int j = 0; j < argc; j++)
{ {
if ((!strcmp(argv[j], "-options") || !strcmp(argv[j], "-option")) && j + 1 < argc) if ((!strcmp(argv[j], "-options") || !strcmp(argv[j], "-option")) && j + 1 < argc)
{ {
if (nxagentOptionsFilenameOrString) SAFE_free(nxagentOptionsFilenameOrString);
{
nxagentOptionsFilenameOrString = (char *) realloc(nxagentOptionsFilenameOrString, strlen(argv[j + 1]) + 1);
}
else
{
nxagentOptionsFilenameOrString = (char *) malloc(strlen(argv[j + 1]) +1);
}
if (nxagentOptionsFilenameOrString != NULL) if (-1 == asprintf(&nxagentOptionsFilenameOrString, "%s", argv[j + 1]))
{
nxagentOptionsFilenameOrString = strcpy(nxagentOptionsFilenameOrString, argv[j + 1]);
}
#ifdef WARNING
else
{ {
fprintf(stderr, "ddxProcessArgument: WARNING! failed string allocation.\n"); FatalError("malloc failed");
} }
#endif
break; break;
} }
} }
nxagentProcessOptions(nxagentOptionsFilenameOrString); nxagentProcessOptions(nxagentOptionsFilenameOrString);
} } /* if (resetOptions == True) */
if (!strcmp(argv[i], "-B")) if (!strcmp(argv[i], "-B"))
{ {
...@@ -313,9 +296,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -313,9 +296,8 @@ int ddxProcessArgument(int argc, char *argv[], int i)
if (nxagentCheckBinder(argc, argv, i) > 0) if (nxagentCheckBinder(argc, argv, i) > 0)
{ {
/* /*
* We are going to run the agent with the * We are going to run the agent with the 'binder' option. Go
* 'binder' option. Go straight to the * straight to the proxy loop.
* proxy loop.
*/ */
#ifdef TEST #ifdef TEST
...@@ -347,7 +329,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -347,7 +329,6 @@ int ddxProcessArgument(int argc, char *argv[], int i)
snprintf(nxagentDisplayName, NXAGENTDISPLAYNAMELENGTH, "%s", argv[i]); snprintf(nxagentDisplayName, NXAGENTDISPLAYNAMELENGTH, "%s", argv[i]);
return 2; return 2;
} }
return 0; return 0;
} }
...@@ -358,7 +339,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -358,7 +339,6 @@ int ddxProcessArgument(int argc, char *argv[], int i)
snprintf(nxagentSessionId, NXAGENTSESSIONIDLENGTH, "%s", argv[i]); snprintf(nxagentSessionId, NXAGENTSESSIONIDLENGTH, "%s", argv[i]);
return 2; return 2;
} }
return 0; return 0;
} }
...@@ -386,7 +366,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -386,7 +366,6 @@ int ddxProcessArgument(int argc, char *argv[], int i)
} }
return 2; return 2;
} }
return 0; return 0;
} }
...@@ -455,7 +434,7 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -455,7 +434,7 @@ int ddxProcessArgument(int argc, char *argv[], int i)
if (++i < argc && sscanf(argv[i], "%i", &nxagentDefaultClass) == 1) { if (++i < argc && sscanf(argv[i], "%i", &nxagentDefaultClass) == 1) {
if (nxagentDefaultClass >= 0 && nxagentDefaultClass <= 5) { if (nxagentDefaultClass >= 0 && nxagentDefaultClass <= 5) {
nxagentUserDefaultClass = True; 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; return 0;
...@@ -472,9 +451,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -472,9 +451,8 @@ int ddxProcessArgument(int argc, char *argv[], int i)
} }
/* /*
* These options are now useless and are * These options are now useless and are parsed only for
* parsed only for compatibility with * compatibility with older versions.
* older versions.
*/ */
if (!strcmp(argv[i], "-fast") || if (!strcmp(argv[i], "-fast") ||
...@@ -484,7 +462,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -484,7 +462,6 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
fprintf(stderr, "Warning: Ignoring deprecated command line option '%s'.\n", fprintf(stderr, "Warning: Ignoring deprecated command line option '%s'.\n",
argv[i]); argv[i]);
return 1; return 1;
} }
...@@ -500,10 +477,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -500,10 +477,8 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
nxagentChangeOption(BackingStore, BackingStoreForce); nxagentChangeOption(BackingStore, BackingStoreForce);
} }
return 2; return 2;
} }
return 0; return 0;
} }
...@@ -519,10 +494,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -519,10 +494,8 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
nxagentChangeOption(Streaming, 1); nxagentChangeOption(Streaming, 1);
} }
return 2; return 2;
} }
return 0; return 0;
} }
...@@ -539,17 +512,13 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -539,17 +512,13 @@ int ddxProcessArgument(int argc, char *argv[], int i)
nxagentChangeOption(DeferLevel, level); nxagentChangeOption(DeferLevel, level);
/* /*
* The defer level set with the command * The defer level set with the command line is not changed
* line is not changed when the session * when the session is resumed.
* is resumed.
*/ */
nxagentLockDeferLevel = 1; nxagentLockDeferLevel = 1;
} }
return 2; return 2;
} }
return 0; return 0;
} }
...@@ -561,18 +530,14 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -561,18 +530,14 @@ int ddxProcessArgument(int argc, char *argv[], int i)
sscanf(argv[i], "%i", &limit) == 1) sscanf(argv[i], "%i", &limit) == 1)
{ {
nxagentChangeOption(ImageRateLimit, limit); nxagentChangeOption(ImageRateLimit, limit);
return 2; return 2;
} }
return 0; return 0;
} }
if (!strcmp(argv[i], "-tile")) if (!strcmp(argv[i], "-tile"))
{ {
int width; int width, height;
int height;
if (++i < argc && if (++i < argc &&
sscanf(argv[i], "%ix%i", &width, &height) == 2 && sscanf(argv[i], "%ix%i", &width, &height) == 2 &&
...@@ -580,10 +545,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -580,10 +545,8 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
nxagentChangeOption(TileWidth, width); nxagentChangeOption(TileWidth, width);
nxagentChangeOption(TileHeight, height); nxagentChangeOption(TileHeight, height);
return 2; return 2;
} }
return 0; return 0;
} }
...@@ -591,13 +554,11 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -591,13 +554,11 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
if(++i < argc) if(++i < argc)
{ {
#ifdef TEST #ifdef TEST
fprintf(stderr, "ddxProcessArgument: User defined font path [%s].\n", argv[i]); fprintf(stderr, "ddxProcessArgument: User defined font path [%s].\n", argv[i]);
#endif #endif
nxagentUserDefinedFontPath = 1; nxagentUserDefinedFontPath = 1;
defaultFontPath = argv[i]; defaultFontPath = argv[i];
} }
else else
...@@ -628,28 +589,28 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -628,28 +589,28 @@ int ddxProcessArgument(int argc, char *argv[], int i)
} }
} }
if (nxagentUserGeometry.flag || (nxagentOption(Fullscreen) == 1)) return 2; if (nxagentUserGeometry.flag || (nxagentOption(Fullscreen) == 1))
{
return 2;
}
} }
return 0; return 0;
} }
if (!strcmp(argv[i], "-bw")) if (!strcmp(argv[i], "-bw"))
{ {
int BorderWidth; int bw;
if (++i < argc && sscanf(argv[i], "%i", &BorderWidth) == 1) if (++i < argc && sscanf(argv[i], "%i", &bw) == 1)
{ {
nxagentChangeOption(BorderWidth, BorderWidth); nxagentChangeOption(BorderWidth, bw);
if (nxagentOption(BorderWidth) >= 0) if (bw >= 0)
{ {
nxagentUserBorderWidth = True; nxagentUserBorderWidth = True;
return 2; return 2;
} }
} }
return 0; return 0;
} }
...@@ -660,14 +621,17 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -660,14 +621,17 @@ int ddxProcessArgument(int argc, char *argv[], int i)
snprintf(nxagentWindowName, NXAGENTWINDOWNAMELENGTH, "%s", argv[i]); snprintf(nxagentWindowName, NXAGENTWINDOWNAMELENGTH, "%s", argv[i]);
return 2; return 2;
} }
return 0; return 0;
} }
if (!strcmp(argv[i], "-scrns")) { if (!strcmp(argv[i], "-scrns"))
if (++i < argc && sscanf(argv[i], "%i", &nxagentNumScreens) == 1) { {
if (nxagentNumScreens > 0) { if (++i < argc && sscanf(argv[i], "%i", &nxagentNumScreens) == 1)
if (nxagentNumScreens > MAXSCREENS) { {
if (nxagentNumScreens > 0)
{
if (nxagentNumScreens > MAXSCREENS)
{
ErrorF("Maximum number of screens is %d.\n", MAXSCREENS); ErrorF("Maximum number of screens is %d.\n", MAXSCREENS);
nxagentNumScreens = MAXSCREENS; nxagentNumScreens = MAXSCREENS;
} }
...@@ -677,37 +641,43 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -677,37 +641,43 @@ int ddxProcessArgument(int argc, char *argv[], int i)
return 0; return 0;
} }
if (!strcmp(argv[i], "-install")) { if (!strcmp(argv[i], "-install"))
{
nxagentDoDirectColormaps = True; nxagentDoDirectColormaps = True;
return 1; return 1;
} }
if (!strcmp(argv[i], "-parent")) { if (!strcmp(argv[i], "-parent"))
if (++i < argc) { {
if (++i < argc)
{
nxagentParentWindow = (XID) strtol (argv[i], (char**)NULL, 0); nxagentParentWindow = (XID) strtol (argv[i], (char**)NULL, 0);
return 2; return 2;
} }
} }
if (!strcmp(argv[i], "-forcenx")) { if (!strcmp(argv[i], "-forcenx"))
{
nxagentForceNXTrans = True; nxagentForceNXTrans = True;
return 1; return 1;
} }
if (!strcmp(argv[i], "-norootlessexit")) { if (!strcmp(argv[i], "-norootlessexit"))
{
nxagentChangeOption(NoRootlessExit, True); nxagentChangeOption(NoRootlessExit, True);
return 1; return 1;
} }
if (!strcmp(argv[i], "-nomagicpixel")) { if (!strcmp(argv[i], "-nomagicpixel"))
{
nxagentChangeOption(MagicPixel, 0); nxagentChangeOption(MagicPixel, 0);
return 1; return 1;
} }
if (!strcmp(argv[i], "-noonce")) if (!strcmp(argv[i], "-noonce"))
{ {
nxagentOnce = False; nxagentOnce = False;
return 1; return 1;
} }
if (!strcmp(argv[i], "-kbtype") || if (!strcmp(argv[i], "-kbtype") ||
...@@ -722,23 +692,20 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -722,23 +692,20 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
FatalError("malloc failed"); FatalError("malloc failed");
} }
return 2; return 2;
} }
return 0; return 0;
} }
if (!strcmp(argv[i], "-extensions")) if (!strcmp(argv[i], "-extensions"))
{ {
return 1; return 1;
} }
#ifdef RENDER #ifdef RENDER
if (!strcmp(argv[i], "-norender")) if (!strcmp(argv[i], "-norender"))
{ {
nxagentRenderEnable = False; nxagentRenderEnable = False;
return 1; return 1;
} }
#endif #endif
...@@ -746,14 +713,12 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -746,14 +713,12 @@ int ddxProcessArgument(int argc, char *argv[], int i)
if (!strcmp(argv[i], "-nocomposite")) if (!strcmp(argv[i], "-nocomposite"))
{ {
nxagentChangeOption(Composite, 0); nxagentChangeOption(Composite, 0);
return 1; return 1;
} }
if (!strcmp(argv[i], "-nodamage")) if (!strcmp(argv[i], "-nodamage"))
{ {
nxagentChangeOption(UseDamage, 0); nxagentChangeOption(UseDamage, 0);
return 1; return 1;
} }
...@@ -763,67 +728,57 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -763,67 +728,57 @@ int ddxProcessArgument(int argc, char *argv[], int i)
} }
/* /*
* The original -noreset option, disabling * The original -noreset option, disabling dispatchExceptionAtReset,
* dispatchExceptionAtReset, is the default. * is the default. Use this option to restore the original
* Use this option to restore the original
* behaviour. * behaviour.
*/ */
if (!strcmp(argv[i], "-reset")) if (!strcmp(argv[i], "-reset"))
{ {
nxagentChangeOption(Reset, True); nxagentChangeOption(Reset, True);
return 1; return 1;
} }
if (!strcmp(argv[i], "-persistent")) if (!strcmp(argv[i], "-persistent"))
{ {
nxagentChangeOption(Persistent, True); nxagentChangeOption(Persistent, True);
return 1; return 1;
} }
if (!strcmp(argv[i], "-nopersistent")) if (!strcmp(argv[i], "-nopersistent"))
{ {
nxagentChangeOption(Persistent, False); nxagentChangeOption(Persistent, False);
return 1; return 1;
} }
if (!strcmp(argv[i], "-noshmem")) if (!strcmp(argv[i], "-noshmem"))
{ {
nxagentChangeOption(SharedMemory, False); nxagentChangeOption(SharedMemory, False);
return 1; return 1;
} }
if (!strcmp(argv[i], "-shmem")) if (!strcmp(argv[i], "-shmem"))
{ {
nxagentChangeOption(SharedMemory, True); nxagentChangeOption(SharedMemory, True);
return 1; return 1;
} }
if (!strcmp(argv[i], "-noignore")) if (!strcmp(argv[i], "-noignore"))
{ {
nxagentChangeOption(DeviceControl, True); nxagentChangeOption(DeviceControl, True);
nxagentChangeOption(DeviceControlUserDefined , True); nxagentChangeOption(DeviceControlUserDefined , True);
return 1; return 1;
} }
if (!strcmp(argv[i], "-nokbreset")) if (!strcmp(argv[i], "-nokbreset"))
{ {
nxagentChangeOption(ResetKeyboardAtResume, False); nxagentChangeOption(ResetKeyboardAtResume, False);
return 1; return 1;
} }
if (!strcmp(argv[i], "-noxkblock")) if (!strcmp(argv[i], "-noxkblock"))
{ {
nxagentChangeOption(InhibitXkb, 0); nxagentChangeOption(InhibitXkb, 0);
return 1; return 1;
} }
...@@ -845,8 +800,7 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -845,8 +800,7 @@ int ddxProcessArgument(int argc, char *argv[], int i)
} }
/* /*
* Enable the "desktop" mode. This is * Enable the "desktop" mode. This is the default.
* the default.
*/ */
if (!strcmp(argv[i], "-D")) if (!strcmp(argv[i], "-D"))
...@@ -854,7 +808,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -854,7 +808,6 @@ int ddxProcessArgument(int argc, char *argv[], int i)
nxagentChangeOption(Binder, False); nxagentChangeOption(Binder, False);
nxagentChangeOption(Rootless, False); nxagentChangeOption(Rootless, False);
nxagentChangeOption(Desktop, True); nxagentChangeOption(Desktop, True);
return 1; return 1;
} }
...@@ -867,7 +820,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -867,7 +820,6 @@ int ddxProcessArgument(int argc, char *argv[], int i)
nxagentChangeOption(Shadow, 1); nxagentChangeOption(Shadow, 1);
nxagentChangeOption(DeferLevel, 0); nxagentChangeOption(DeferLevel, 0);
nxagentChangeOption(Persistent, 0); nxagentChangeOption(Persistent, 0);
return 1; return 1;
} }
...@@ -881,10 +833,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -881,10 +833,8 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
FatalError("Invalid shadow display option"); FatalError("Invalid shadow display option");
} }
return 2; return 2;
} }
return 0; return 0;
} }
...@@ -901,10 +851,8 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -901,10 +851,8 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
nxagentChangeOption(ViewOnly, 0); nxagentChangeOption(ViewOnly, 0);
} }
return 2; return 2;
} }
return 0; return 0;
} }
...@@ -926,18 +874,15 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -926,18 +874,15 @@ int ddxProcessArgument(int argc, char *argv[], int i)
} }
nxagentChangeOption(Timeout, seconds); nxagentChangeOption(Timeout, seconds);
return 2; return 2;
} }
} }
return 0; return 0;
} }
/* /*
* The return value for -query, -broadcast and * The return value for -query, -broadcast and -indirect must be 0
* -indirect must be 0 to let the dix layer pro- * to let the dix layer process these options.
* cess these options.
*/ */
if (!strcmp(argv[i], "-query")) if (!strcmp(argv[i], "-query"))
...@@ -945,9 +890,7 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -945,9 +890,7 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
nxagentChangeOption(Desktop, True); nxagentChangeOption(Desktop, True);
nxagentChangeOption(Xdmcp, True); nxagentChangeOption(Xdmcp, True);
nxagentMaxAllowedResets = 0; nxagentMaxAllowedResets = 0;
return 0; return 0;
} }
...@@ -956,9 +899,7 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -956,9 +899,7 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
nxagentChangeOption(Desktop, True); nxagentChangeOption(Desktop, True);
nxagentChangeOption(Xdmcp, True); nxagentChangeOption(Xdmcp, True);
nxagentMaxAllowedResets = 0; nxagentMaxAllowedResets = 0;
return 0; return 0;
} }
...@@ -966,23 +907,19 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -966,23 +907,19 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
nxagentChangeOption(Desktop, True); nxagentChangeOption(Desktop, True);
nxagentChangeOption(Xdmcp, True); nxagentChangeOption(Xdmcp, True);
nxagentMaxAllowedResets = 1; nxagentMaxAllowedResets = 1;
return 0; return 0;
} }
if (!strcmp(argv[i], "-noshpix")) if (!strcmp(argv[i], "-noshpix"))
{ {
nxagentChangeOption(SharedPixmaps, False); nxagentChangeOption(SharedPixmaps, False);
return 1; return 1;
} }
if (!strcmp(argv[i], "-shpix")) if (!strcmp(argv[i], "-shpix"))
{ {
nxagentChangeOption(SharedPixmaps, True); nxagentChangeOption(SharedPixmaps, True);
return 1; return 1;
} }
...@@ -1000,7 +937,7 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -1000,7 +937,7 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
nxagentChangeOption(Clipboard, ClipboardServer); nxagentChangeOption(Clipboard, ClipboardServer);
} }
else if ((!strcmp(argv[i+1], "none")) || (!strcmp(argv[i+1], "1"))) else if ((!strcmp(argv[i+1], "none")) || (!strcmp(argv[i+1], "0")))
{ {
nxagentChangeOption(Clipboard, ClipboardNone); nxagentChangeOption(Clipboard, ClipboardNone);
} }
...@@ -1008,7 +945,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -1008,7 +945,6 @@ int ddxProcessArgument(int argc, char *argv[], int i)
{ {
nxagentChangeOption(Clipboard, ClipboardBoth); nxagentChangeOption(Clipboard, ClipboardBoth);
} }
return 2; return 2;
} }
...@@ -1021,7 +957,6 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -1021,7 +957,6 @@ int ddxProcessArgument(int argc, char *argv[], int i)
if (!strcmp(argv[i], "-verbose")) if (!strcmp(argv[i], "-verbose"))
{ {
nxagentVerbose = 1; nxagentVerbose = 1;
return 1; return 1;
} }
...@@ -1042,11 +977,9 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -1042,11 +977,9 @@ int ddxProcessArgument(int argc, char *argv[], int i)
if (!strcmp(argv[i], "-autograb")) if (!strcmp(argv[i], "-autograb"))
{ {
nxagentChangeOption(AutoGrab, True); nxagentChangeOption(AutoGrab, True);
return 1; return 1;
} }
/* /*
* Disable Xinerama (i.e. fake it in Screen.c) if somehow Xinerama support * Disable Xinerama (i.e. fake it in Screen.c) if somehow Xinerama support
* has been disabled on the cmdline. * has been disabled on the cmdline.
...@@ -1058,21 +991,21 @@ int ddxProcessArgument(int argc, char *argv[], int i) ...@@ -1058,21 +991,21 @@ int ddxProcessArgument(int argc, char *argv[], int i)
} }
/* copy from nxcomp's Loop.cpp */ /* copy from nxcomp's Loop.cpp */
static int static int hexval(char c)
hexval(char c) { {
if ((c >= '0') && (c <= '9')) if ((c >= '0') && (c <= '9'))
return c - '0'; return c - '0';
if ((c >= 'a') && (c <= 'f')) if ((c >= 'a') && (c <= 'f'))
return c - 'a' + 10; return c - 'a' + 10;
if ((c >= 'A') && (c <= 'F')) if ((c >= 'A') && (c <= 'F'))
return c - 'A' + 10; return c - 'A' + 10;
return -1; return -1;
} }
static void static void URLDecodeInPlace(char *str)
URLDecodeInPlace(char *str)
{ {
if (str) { if (str)
{
char *to = str; char *to = str;
while (str[0]) while (str[0])
{ {
...@@ -1092,7 +1025,7 @@ URLDecodeInPlace(char *str) ...@@ -1092,7 +1025,7 @@ URLDecodeInPlace(char *str)
static void nxagentParseSingleOption(char *name, char *value) static void nxagentParseSingleOption(char *name, char *value)
{ {
int size, argc; int argc;
char *argv[2] = { NULL, NULL }; char *argv[2] = { NULL, NULL };
...@@ -1121,7 +1054,6 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1121,7 +1054,6 @@ static void nxagentParseSingleOption(char *name, char *value)
!strcmp(name, "tile")) !strcmp(name, "tile"))
{ {
argv[1] = value; argv[1] = value;
argc = 2; argc = 2;
} }
else if (!strcmp(name, "R") && !strcmp(value, "1")) else if (!strcmp(name, "R") && !strcmp(value, "1"))
...@@ -1131,7 +1063,6 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1131,7 +1063,6 @@ static void nxagentParseSingleOption(char *name, char *value)
else if (!strcmp(name, "fast") || !strcmp(name, "slow")) else if (!strcmp(name, "fast") || !strcmp(name, "slow"))
{ {
fprintf(stderr, "Warning: Ignoring deprecated option '%s'.\n", name); fprintf(stderr, "Warning: Ignoring deprecated option '%s'.\n", name);
return; return;
} }
else if (!strcmp(name, "render")) else if (!strcmp(name, "render"))
...@@ -1158,7 +1089,6 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1158,7 +1089,6 @@ static void nxagentParseSingleOption(char *name, char *value)
validateString(value)); validateString(value));
} }
} }
return; return;
} }
else if (!strcmp(name, "state")) else if (!strcmp(name, "state"))
...@@ -1177,13 +1107,11 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1177,13 +1107,11 @@ static void nxagentParseSingleOption(char *name, char *value)
else if (!strcmp(value, "1")) else if (!strcmp(value, "1"))
{ {
nxagentChangeOption(Fullscreen, True); nxagentChangeOption(Fullscreen, True);
nxagentChangeOption(AllScreens, True); nxagentChangeOption(AllScreens, True);
} }
else if (!strcmp(value, "0")) else if (!strcmp(value, "0"))
{ {
nxagentChangeOption(Fullscreen, False); nxagentChangeOption(Fullscreen, False);
nxagentChangeOption(AllScreens, False); nxagentChangeOption(AllScreens, False);
} }
else else
...@@ -1209,7 +1137,6 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1209,7 +1137,6 @@ static void nxagentParseSingleOption(char *name, char *value)
fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'shpix'.\n", fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'shpix'.\n",
validateString(value)); validateString(value));
} }
return; return;
} }
else if (!strcmp(name, "shmem")) else if (!strcmp(name, "shmem"))
...@@ -1245,7 +1172,6 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1245,7 +1172,6 @@ static void nxagentParseSingleOption(char *name, char *value)
fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'composite'.\n", fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'composite'.\n",
validateString(value)); validateString(value));
} }
return; return;
} }
else if (!strcmp(name, "xinerama")) else if (!strcmp(name, "xinerama"))
...@@ -1294,7 +1220,6 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1294,7 +1220,6 @@ static void nxagentParseSingleOption(char *name, char *value)
fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'resize'.\n", fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'resize'.\n",
validateString(value)); validateString(value));
} }
return; return;
} }
else if (!strcmp(name, "backingstore")) else if (!strcmp(name, "backingstore"))
...@@ -1307,7 +1232,6 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1307,7 +1232,6 @@ static void nxagentParseSingleOption(char *name, char *value)
{ {
nxagentChangeOption(BackingStore, BackingStoreForce); nxagentChangeOption(BackingStore, BackingStoreForce);
} }
return; return;
} }
else if (!strcmp(name, "menu")) else if (!strcmp(name, "menu"))
...@@ -1320,7 +1244,6 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1320,7 +1244,6 @@ static void nxagentParseSingleOption(char *name, char *value)
{ {
nxagentChangeOption(Menu, 1); nxagentChangeOption(Menu, 1);
} }
return; return;
} }
else if (!strcmp(name, "magicpixel")) else if (!strcmp(name, "magicpixel"))
...@@ -1333,7 +1256,6 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1333,7 +1256,6 @@ static void nxagentParseSingleOption(char *name, char *value)
{ {
nxagentChangeOption(MagicPixel, 1); nxagentChangeOption(MagicPixel, 1);
} }
return; return;
} }
else if (!strcmp(name, "autodpi")) else if (!strcmp(name, "autodpi"))
...@@ -1352,19 +1274,16 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1352,19 +1274,16 @@ static void nxagentParseSingleOption(char *name, char *value)
{ {
nxagentAutoDPI = True; nxagentAutoDPI = True;
} }
return; return;
} }
else if (strcmp(name, "shadowuid") == 0) else if (strcmp(name, "shadowuid") == 0)
{ {
nxagentShadowUid = atoi(value); nxagentShadowUid = atoi(value);
return; return;
} }
else if (strcmp(name, "clients") == 0) else if (strcmp(name, "clients") == 0)
{ {
snprintf(nxagentClientsLogName, NXAGENTCLIENTSLOGNAMELENGTH, "%s", value); snprintf(nxagentClientsLogName, NXAGENTCLIENTSLOGNAMELENGTH, "%s", value);
return; return;
} }
else if (strcmp(name, "client") == 0) else if (strcmp(name, "client") == 0)
...@@ -1385,51 +1304,23 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1385,51 +1304,23 @@ static void nxagentParseSingleOption(char *name, char *value)
{ {
nxagentChangeOption(ClientOs, ClientOsMac); nxagentChangeOption(ClientOs, ClientOsMac);
} }
return; return;
} }
else if (strcmp(name, "copysize") == 0) else if (strcmp(name, "copysize") == 0)
{ {
nxagentChangeOption(CopyBufferSize, atoi(value)); nxagentChangeOption(CopyBufferSize, atoi(value));
return; return;
} }
else if (strcmp(name, "clipboard") == 0)
{
if ((strcmp(value, "both") == 0) || (strcmp(value, "1") == 0))
{
nxagentChangeOption(Clipboard, ClipboardBoth);
}
else if (strcmp(value, "client") == 0)
{
nxagentChangeOption(Clipboard, ClipboardClient);
}
else if (strcmp(value, "server") == 0)
{
nxagentChangeOption(Clipboard, ClipboardServer);
}
else if ((strcmp(value, "none") == 0) || (strcmp(value, "0") == 0))
{
nxagentChangeOption(Clipboard, ClipboardNone);
}
else
{
nxagentChangeOption(Clipboard, ClipboardBoth);
}
}
else if (!strcmp(name, "sleep")) else if (!strcmp(name, "sleep"))
{ {
long sleep_parse = 0;
errno = 0; errno = 0;
sleep_parse = strtol(value, NULL, 10); long sleep_parse = strtol(value, NULL, 10);
if ((errno) && (0 == sleep_parse)) if ((errno) && (0 == sleep_parse))
{ {
fprintf(stderr, "nxagentParseSingleOption: Unable to convert value [%s] of option [%s]. " fprintf(stderr, "Unable to convert value [%s] of option [%s]. "
"Ignoring option.\n", "Ignoring option.\n",
validateString(value), validateString(name)); validateString(value), validateString(name));
return; return;
} }
...@@ -1437,7 +1328,7 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1437,7 +1328,7 @@ static void nxagentParseSingleOption(char *name, char *value)
{ {
sleep_parse = UINT_MAX; sleep_parse = UINT_MAX;
fprintf(stderr, "nxagentParseSingleOption: Warning: value [%s] of option [%s] " fprintf(stderr, "Warning: value [%s] of option [%s] "
"out of range, clamped to [%lu].\n", "out of range, clamped to [%lu].\n",
validateString(value), validateString(name), sleep_parse); validateString(value), validateString(name), sleep_parse);
} }
...@@ -1446,13 +1337,12 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1446,13 +1337,12 @@ static void nxagentParseSingleOption(char *name, char *value)
{ {
sleep_parse = 0; sleep_parse = 0;
fprintf(stderr, "nxagentParseSingleOption: Warning: value [%s] of option [%s] " fprintf(stderr, "Warning: value [%s] of option [%s] "
"out of range, clamped to [%lu].\n", "out of range, clamped to [%lu].\n",
validateString(value), validateString(name), sleep_parse); validateString(value), validateString(name), sleep_parse);
} }
nxagentChangeOption(SleepTime, sleep_parse); nxagentChangeOption(SleepTime, sleep_parse);
return; return;
} }
else if (!strcmp(name, "tolerancechecks")) else if (!strcmp(name, "tolerancechecks"))
...@@ -1478,17 +1368,15 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1478,17 +1368,15 @@ static void nxagentParseSingleOption(char *name, char *value)
/* /*
* Check for a matching integer. Or any integer, really. * Check for a matching integer. Or any integer, really.
*/ */
long tolerance_parse = 0;
errno = 0; errno = 0;
tolerance_parse = strtol(value, NULL, 10); long tolerance_parse = strtol(value, NULL, 10);
if ((errno) && (0 == tolerance_parse)) if ((errno) && (0 == tolerance_parse))
{ {
fprintf(stderr, "nxagentParseSingleOption: Unable to convert value [%s] of option [%s]. " fprintf(stderr, "Unable to convert value [%s] of option [%s]. "
"Ignoring option.\n", "Ignoring option.\n",
validateString(value), validateString(name)); validateString(value), validateString(name));
return; return;
} }
...@@ -1496,7 +1384,7 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1496,7 +1384,7 @@ static void nxagentParseSingleOption(char *name, char *value)
{ {
tolerance_parse = UINT_MAX; tolerance_parse = UINT_MAX;
fprintf(stderr, "nxagentParseSingleOption: Warning: value [%s] of option [%s] " fprintf(stderr, "Warning: value [%s] of option [%s] "
"out of range, clamped to [%lu].\n", "out of range, clamped to [%lu].\n",
validateString(value), validateString(name), tolerance_parse); validateString(value), validateString(name), tolerance_parse);
} }
...@@ -1505,7 +1393,7 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1505,7 +1393,7 @@ static void nxagentParseSingleOption(char *name, char *value)
{ {
tolerance_parse = 0; tolerance_parse = 0;
fprintf(stderr, "nxagentParseSingleOption: Warning: value [%s] of option [%s] " fprintf(stderr, "Warning: value [%s] of option [%s] "
"out of range, clamped to [%lu].\n", "out of range, clamped to [%lu].\n",
validateString(value), validateString(name), tolerance_parse); validateString(value), validateString(name), tolerance_parse);
} }
...@@ -1516,19 +1404,18 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1516,19 +1404,18 @@ static void nxagentParseSingleOption(char *name, char *value)
case ToleranceChecksSafe: case ToleranceChecksSafe:
case ToleranceChecksRisky: case ToleranceChecksRisky:
case ToleranceChecksBypass: case ToleranceChecksBypass:
break; break;
default: default:
fprintf(stderr, "nxagentParseSingleOption: Warning: value [%s] of " fprintf(stderr, "%s: Warning: value [%s] of "
"option [%s] unknown, will be mapped to " "option [%s] unknown, will be mapped to "
"\"Bypass\" [%u] value internally.\n", "\"Bypass\" [%u] value internally.\n",
validateString(value), validateString(name), __func__, validateString(value), validateString(name),
(unsigned int)ToleranceChecksBypass); (unsigned int)ToleranceChecksBypass);
} }
#endif #endif
nxagentChangeOption(ReconnectTolerance, tolerance_parse); nxagentChangeOption(ReconnectTolerance, tolerance_parse);
} }
return; return;
} }
else if (!strcmp(name, "keyconv")) else if (!strcmp(name, "keyconv"))
...@@ -1547,7 +1434,6 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1547,7 +1434,6 @@ static void nxagentParseSingleOption(char *name, char *value)
fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'keyconv'.\n", fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'keyconv'.\n",
validateString(value)); validateString(value));
} }
return; return;
} }
else if (!strcmp(name, "autograb")) else if (!strcmp(name, "autograb"))
...@@ -1560,7 +1446,6 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1560,7 +1446,6 @@ static void nxagentParseSingleOption(char *name, char *value)
{ {
nxagentChangeOption(AutoGrab, True); nxagentChangeOption(AutoGrab, True);
} }
return; return;
} }
else else
...@@ -1569,23 +1454,22 @@ static void nxagentParseSingleOption(char *name, char *value) ...@@ -1569,23 +1454,22 @@ static void nxagentParseSingleOption(char *name, char *value)
fprintf(stderr, "nxagentParseSingleOption: Ignored option [%s] with value [%s].\n", fprintf(stderr, "nxagentParseSingleOption: Ignored option [%s] with value [%s].\n",
validateString(name), validateString(value)); validateString(name), validateString(value));
#endif #endif
return; return;
} }
/* /*
* Before passing the not yet evaluated options * Before passing the not yet evaluated options to
* to ddxProcessArgument(), we have to add a dash * ddxProcessArgument(), we have to add a dash as prefix.
* as prefix.
*/ */
if ((size = strlen(name) + 1) > 1) int size = strlen(name) + 1;
if (size > 1)
{ {
if ((argv[0] = malloc(size + 1)) == NULL) if ((argv[0] = malloc(size + 1)) == NULL)
{ {
fprintf(stderr, "Warning: Ignoring option '%s' due to lack of memory.\n", fprintf(stderr, "Warning: Ignoring option '%s' due to lack of memory.\n",
name); name);
return; return;
} }
...@@ -1603,13 +1487,12 @@ static void nxagentParseOptionString(char *string) ...@@ -1603,13 +1487,12 @@ static void nxagentParseOptionString(char *string)
{ {
char *value = NULL; char *value = NULL;
char *option = NULL; char *option = NULL;
char *delimiter = NULL;
/* /*
* Remove the port specification. * Remove the port specification.
*/ */
delimiter = rindex(string, ':'); char *delimiter = rindex(string, ':');
if (delimiter) if (delimiter)
{ {
...@@ -1671,9 +1554,6 @@ void nxagentProcessOptionsFile(char * filename) ...@@ -1671,9 +1554,6 @@ void nxagentProcessOptionsFile(char * filename)
FILE *file = NULL; FILE *file = NULL;
char *data = NULL; char *data = NULL;
int offset;
int size;
int sizeOfFile; int sizeOfFile;
int maxFileSize = 1024; int maxFileSize = 1024;
...@@ -1696,7 +1576,6 @@ void nxagentProcessOptionsFile(char * filename) ...@@ -1696,7 +1576,6 @@ void nxagentProcessOptionsFile(char * filename)
{ {
fprintf(stderr, "Warning: Couldn't open option file '%s'. Error is '%s'.\n", fprintf(stderr, "Warning: Couldn't open option file '%s'. Error is '%s'.\n",
validateString(filename), strerror(errno)); validateString(filename), strerror(errno));
goto nxagentProcessOptionsFileExit; goto nxagentProcessOptionsFileExit;
} }
...@@ -1704,7 +1583,6 @@ void nxagentProcessOptionsFile(char * filename) ...@@ -1704,7 +1583,6 @@ void nxagentProcessOptionsFile(char * filename)
{ {
fprintf(stderr, "Warning: Couldn't position inside option file '%s'. Error is '%s'.\n", fprintf(stderr, "Warning: Couldn't position inside option file '%s'. Error is '%s'.\n",
validateString(filename), strerror(errno)); validateString(filename), strerror(errno));
goto nxagentProcessOptionsFileExit; goto nxagentProcessOptionsFileExit;
} }
...@@ -1712,7 +1590,6 @@ void nxagentProcessOptionsFile(char * filename) ...@@ -1712,7 +1590,6 @@ void nxagentProcessOptionsFile(char * filename)
{ {
fprintf(stderr, "Warning: Couldn't get the size of option file '%s'. Error is '%s'.\n", 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; goto nxagentProcessOptionsFileExit;
} }
...@@ -1727,7 +1604,6 @@ void nxagentProcessOptionsFile(char * filename) ...@@ -1727,7 +1604,6 @@ void nxagentProcessOptionsFile(char * filename)
{ {
fprintf(stderr, "Warning: Maximum file size exceeded for options '%s'.\n", fprintf(stderr, "Warning: Maximum file size exceeded for options '%s'.\n",
validateString(filename)); validateString(filename));
goto nxagentProcessOptionsFileExit; goto nxagentProcessOptionsFileExit;
} }
...@@ -1735,12 +1611,11 @@ void nxagentProcessOptionsFile(char * filename) ...@@ -1735,12 +1611,11 @@ void nxagentProcessOptionsFile(char * filename)
{ {
fprintf(stderr, "Warning: Memory allocation failed processing file '%s'.\n", fprintf(stderr, "Warning: Memory allocation failed processing file '%s'.\n",
validateString(filename)); validateString(filename));
goto nxagentProcessOptionsFileExit; goto nxagentProcessOptionsFileExit;
} }
offset = 0; int offset = 0;
size = 0; int size = 0;
for (;;) for (;;)
{ {
...@@ -1750,7 +1625,6 @@ void nxagentProcessOptionsFile(char * filename) ...@@ -1750,7 +1625,6 @@ void nxagentProcessOptionsFile(char * filename)
{ {
fprintf(stderr, "Warning: Error reading the option file '%s'.\n", fprintf(stderr, "Warning: Error reading the option file '%s'.\n",
validateString(filename)); validateString(filename));
goto nxagentProcessOptionsFileExit; goto nxagentProcessOptionsFileExit;
} }
...@@ -1767,7 +1641,6 @@ void nxagentProcessOptionsFile(char * filename) ...@@ -1767,7 +1641,6 @@ void nxagentProcessOptionsFile(char * filename)
{ {
fprintf(stderr, "Warning: Premature end of option file '%s' while reading.\n", fprintf(stderr, "Warning: Premature end of option file '%s' while reading.\n",
validateString(filename)); validateString(filename));
goto nxagentProcessOptionsFileExit; goto nxagentProcessOptionsFileExit;
} }
...@@ -1899,9 +1772,6 @@ N/A ...@@ -1899,9 +1772,6 @@ N/A
unsigned int saveCache = 0; unsigned int saveCache = 0;
unsigned int startupCache = 0; unsigned int startupCache = 0;
unsigned int enableClient = 0;
unsigned int enableServer = 0;
unsigned int clientSegment = 0; unsigned int clientSegment = 0;
unsigned int serverSegment = 0; unsigned int serverSegment = 0;
...@@ -1959,8 +1829,7 @@ N/A ...@@ -1959,8 +1829,7 @@ N/A
} }
/* /*
* Set the minimum size of images being * Set the minimum size of images being streamed.
* streamed.
*/ */
if (nxagentSplitThreshold == -1) if (nxagentSplitThreshold == -1)
...@@ -1969,17 +1838,15 @@ N/A ...@@ -1969,17 +1838,15 @@ N/A
} }
/* /*
* Let the remote proxy use the shared memory * Let the remote proxy use the shared memory extension, if
* extension, if supported by the X server. * supported by the X server. The client part is not useful and
* The client part is not useful and not impl- * not implemented. The size of the segment is chosen by the
* emented. The size of the segment is chosen * user. The only purpose of the message is to reserve the XID
* by the user. The only purpose of the message * that will be used by the remote.
* is to reserve the XID that will be used by
* the remote.
*/ */
enableClient = 0; unsigned int enableClient = 0;
enableServer = 1; unsigned int enableServer = 1;
if (NXGetShmemParameters(dpy, &enableClient, &enableServer, &clientSegment, if (NXGetShmemParameters(dpy, &enableClient, &enableServer, &clientSegment,
&serverSegment, &clientSize, &serverSize) == 0) &serverSegment, &clientSize, &serverSize) == 0)
...@@ -2000,8 +1867,8 @@ N/A ...@@ -2000,8 +1867,8 @@ N/A
} }
/* /*
* We don't need the NoExpose events. Block * We don't need the NoExpose events. Block them at the proxy
* them at the proxy side. * side.
*/ */
NXSetExposeParameters(nxagentDisplay, 1, 1, 0); NXSetExposeParameters(nxagentDisplay, 1, 1, 0);
...@@ -2016,17 +1883,15 @@ N/A ...@@ -2016,17 +1883,15 @@ N/A
} }
/* /*
* Set the lossless and lossy pack methods * Set the lossless and lossy pack methods based on the user's
* based on the user's preferences and the * preferences and the selected link type.
* selected link type.
*/ */
nxagentSetPackMethod(); nxagentSetPackMethod();
/* /*
* If not set, set the defer level and the * If not set, set the defer level and the synchronization timeout
* synchronization timeout based on the link * based on the link type.
* type.
*/ */
nxagentSetDeferLevel(); nxagentSetDeferLevel();
...@@ -2100,9 +1965,8 @@ FIXME: In rootless mode the backing-store support is not functional yet. ...@@ -2100,9 +1965,8 @@ FIXME: In rootless mode the backing-store support is not functional yet.
} }
/* /*
* need to check if this was set on the * need to check if this was set on the command line as this has
* command line as this has the priority * the priority over the option file.
* over the option file.
*/ */
if (nxagentRenderEnable == UNDEFINED) if (nxagentRenderEnable == UNDEFINED)
...@@ -2125,8 +1989,7 @@ FIXME: In rootless mode the backing-store support is not functional yet. ...@@ -2125,8 +1989,7 @@ FIXME: In rootless mode the backing-store support is not functional yet.
} }
/* /*
* We enable server reset only for indirect * We enable server reset only for indirect XDMCP sessions.
* XDMCP sessions.
*/ */
if (nxagentOption(Reset) == True && nxagentMaxAllowedResets == 0) if (nxagentOption(Reset) == True && nxagentMaxAllowedResets == 0)
...@@ -2141,9 +2004,8 @@ FIXME: In rootless mode the backing-store support is not functional yet. ...@@ -2141,9 +2004,8 @@ FIXME: In rootless mode the backing-store support is not functional yet.
} }
/* /*
* We skip server reset by default. This should * We skip server reset by default. This should be equivalent to
* be equivalent to passing the -noreset option * passing the -noreset option to a standard XFree86 server.
* to a standard XFree86 server.
*/ */
if (nxagentOption(Reset) == False) if (nxagentOption(Reset) == False)
...@@ -2156,8 +2018,7 @@ FIXME: In rootless mode the backing-store support is not functional yet. ...@@ -2156,8 +2018,7 @@ 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-disconect feature.
* feature.
*/ */
if (nxagentOption(Timeout) > 0) if (nxagentOption(Timeout) > 0)
...@@ -2258,8 +2119,6 @@ void nxagentSetPackMethod(void) ...@@ -2258,8 +2119,6 @@ void nxagentSetPackMethod(void)
unsigned char supportedMethods[NXNumberOfPackMethods]; unsigned char supportedMethods[NXNumberOfPackMethods];
unsigned int entries = NXNumberOfPackMethods; unsigned int entries = NXNumberOfPackMethods;
int method;
if (nxagentOption(LinkType) == LINK_TYPE_NONE) if (nxagentOption(LinkType) == LINK_TYPE_NONE)
{ {
nxagentChangeOption(Streaming, 0); nxagentChangeOption(Streaming, 0);
...@@ -2273,12 +2132,11 @@ void nxagentSetPackMethod(void) ...@@ -2273,12 +2132,11 @@ void nxagentSetPackMethod(void)
} }
/* /*
* Check if we need to select the lossy * Check if we need to select the lossy and lossless pack methods
* and lossless pack methods based on * based on the link type.
* the link type.
*/ */
method = nxagentPackMethod; int method = nxagentPackMethod;
if (method == PACK_ADAPTIVE) if (method == PACK_ADAPTIVE)
{ {
...@@ -2311,29 +2169,25 @@ void nxagentSetPackMethod(void) ...@@ -2311,29 +2169,25 @@ void nxagentSetPackMethod(void)
case LINK_TYPE_WAN: case LINK_TYPE_WAN:
{ {
nxagentPackMethod = PACK_BITMAP_16M_COLORS; nxagentPackMethod = PACK_BITMAP_16M_COLORS;
break; break;
} }
case LINK_TYPE_LAN: case LINK_TYPE_LAN:
{ {
nxagentPackMethod = PACK_RLE_16M_COLORS; nxagentPackMethod = PACK_RLE_16M_COLORS;
break; break;
} }
default: default:
{ {
fprintf(stderr, "Warning: Unknown link type '%d' while setting the pack method.\n", fprintf(stderr, "Warning: Unknown link type '%d' while setting the pack method.\n",
nxagentOption(LinkType)); nxagentOption(LinkType));
break; break;
} }
} }
} }
/* /*
* Query the remote proxy to determine * Query the remote proxy to determine whether the selected methods
* whether the selected methods are * are supported.
* supported.
*/ */
if (NXGetUnpackParameters(nxagentDisplay, &entries, supportedMethods) == 0 || if (NXGetUnpackParameters(nxagentDisplay, &entries, supportedMethods) == 0 ||
...@@ -2416,15 +2270,15 @@ void nxagentSetPackMethod(void) ...@@ -2416,15 +2270,15 @@ void nxagentSetPackMethod(void)
void nxagentSetDeferLevel(void) void nxagentSetDeferLevel(void)
{ {
int deferLevel; /* defaults */
int tileWidth; int deferLevel = 0;
int tileHeight; int tileWidth = 64;
int deferTimeout; int tileHeight = 64;
int deferTimeout = 200;
/* /*
* Streaming is only partly implemented * Streaming is only partly implemented and is not available in this
* and is not available in this version * version of the agent.
* of the agent.
*/ */
if (nxagentOption(Streaming) == 1) if (nxagentOption(Streaming) == 1)
...@@ -2434,76 +2288,18 @@ void nxagentSetDeferLevel(void) ...@@ -2434,76 +2288,18 @@ void nxagentSetDeferLevel(void)
nxagentChangeOption(Streaming, 0); nxagentChangeOption(Streaming, 0);
} }
switch (nxagentOption(LinkType)) switch (nxagentOption(LinkType))
{ {
case LINK_TYPE_MODEM: case LINK_TYPE_MODEM:
{ case LINK_TYPE_ISDN: { deferLevel = 2; tileWidth = 64; tileHeight = 64; break; }
deferLevel = 2; case LINK_TYPE_ADSL: { deferLevel = 2; tileWidth = 4096; tileHeight = 4096; break; }
case LINK_TYPE_WAN: { deferLevel = 1; tileWidth = 4096; tileHeight = 4096; break; }
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_NONE:
case LINK_TYPE_LAN: case LINK_TYPE_LAN: { deferLevel = 0; tileWidth = 4096; tileHeight = 4096; break; }
{
deferLevel = 0;
deferTimeout = 200;
tileWidth = 4096;
tileHeight = 4096;
break;
}
default: 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)); nxagentOption(LinkType));
deferLevel = 0;
tileWidth = 64;
tileHeight = 64;
deferTimeout = 200;
break; break;
} }
} }
...@@ -2596,48 +2392,20 @@ void nxagentSetDeferLevel(void) ...@@ -2596,48 +2392,20 @@ void nxagentSetDeferLevel(void)
void nxagentSetBufferSize(void) void nxagentSetBufferSize(void)
{ {
int size; int size = 16384;
switch (nxagentOption(LinkType)) switch (nxagentOption(LinkType))
{ {
case LINK_TYPE_MODEM: case LINK_TYPE_MODEM: { size = 4096; break; }
{ case LINK_TYPE_ISDN: { size = 4096; break; }
size = 4096; case LINK_TYPE_ADSL: { size = 8192; break; }
case LINK_TYPE_WAN: { size = 16384; break; }
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_NONE:
case LINK_TYPE_LAN: case LINK_TYPE_LAN: { size = 16384; break; }
{
size = 16384;
break;
}
default: default:
{ {
fprintf(stderr, "Warning: Unknown link type '%d' while setting the display buffer size.\n", fprintf(stderr, "Warning: Unknown link type '%d' while setting the display buffer size.\n",
nxagentOption(LinkType)); nxagentOption(LinkType));
size = 16384;
break; break;
} }
} }
...@@ -2671,48 +2439,20 @@ void nxagentSetScheduler(void) ...@@ -2671,48 +2439,20 @@ void nxagentSetScheduler(void)
void nxagentSetCoalescence(void) void nxagentSetCoalescence(void)
{ {
int timeout; int timeout = 0;
switch (nxagentOption(LinkType)) switch (nxagentOption(LinkType))
{ {
case LINK_TYPE_MODEM: case LINK_TYPE_MODEM: { timeout = 50; break; }
{ case LINK_TYPE_ISDN: { timeout = 20; break; }
timeout = 50; case LINK_TYPE_ADSL: { timeout = 10; break; }
case LINK_TYPE_WAN: { timeout = 5; break; }
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_NONE:
case LINK_TYPE_LAN: case LINK_TYPE_LAN: { timeout = 0; break; }
{
timeout = 0;
break;
}
default: default:
{ {
fprintf(stderr, "Warning: Unknown link type '%d' while setting the display coalescence.\n", fprintf(stderr, "Warning: Unknown link type '%d' while setting the display coalescence.\n",
nxagentOption(LinkType)); nxagentOption(LinkType));
timeout = 0;
break; break;
} }
} }
...@@ -2727,5 +2467,5 @@ void nxagentSetCoalescence(void) ...@@ -2727,5 +2467,5 @@ void nxagentSetCoalescence(void)
void nxagentShowVersionInfo(void) void nxagentShowVersionInfo(void)
{ {
ErrorF("NXAGENT - Version " NX_VERSION_CURRENT_STRING "\n"); ErrorF("NXAGENT - Version " NX_VERSION_CURRENT_STRING "\n");
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment