diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2021-10-30 21:16:27 +0200 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2021-10-30 21:16:27 +0200 |
commit | 1ef24c379f8d142180f77ecfe2ab43093c3b7a64 (patch) | |
tree | f0a05973c863d58dc8db08a365ed840e97635889 | |
parent | c26b9b291562ea2cd3b021db7f81cf086c99bd2c (diff) | |
parent | 3d76ed45e22f7a71de3ca0e918da01bb5936f0cf (diff) | |
download | nx-libs-1ef24c379f8d142180f77ecfe2ab43093c3b7a64.tar.gz nx-libs-1ef24c379f8d142180f77ecfe2ab43093c3b7a64.tar.bz2 nx-libs-1ef24c379f8d142180f77ecfe2ab43093c3b7a64.zip |
Merge branch 'uli42-pr/extend_x2go_check' into 3.6.x
Attributes GH PR #1024: https://github.com/ArcticaProject/nx-libs/pull/1024
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Args.c | 2 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Init.c | 38 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Init.h | 2 |
3 files changed, 37 insertions, 5 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index ea17e4813..e2dc8c083 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -201,7 +201,7 @@ int ddxProcessArgument(int argc, char *argv[], int i) /* * Check if we are running as X2Go Agent */ - checkX2goAgent(); + checkX2goAgent(argc, argv); #endif } diff --git a/nx-X11/programs/Xserver/hw/nxagent/Init.c b/nx-X11/programs/Xserver/hw/nxagent/Init.c index 8a9964154..fe51b595a 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Init.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c @@ -183,20 +183,52 @@ Bool nxagentX2go; /* * Check if agent is X2goAgent */ -void checkX2goAgent(void) +void checkX2goAgent(int argc, char * argv[]) { #ifdef TEST fprintf(stderr, "%s: nxagentProgName [%s]\n", __func__, nxagentProgName); #endif + nxagentX2go = False; + if (strcasecmp(nxagentProgName,"x2goagent") == 0) { - fprintf(stderr, "\nrunning as X2Go Agent\n"); nxagentX2go = True; } else - nxagentX2go = False; + { + char *envDisplay = getenv("DISPLAY"); + + /* x2go DISPLAY variable contains ".x2go" */ + if (envDisplay && strstr(envDisplay, ".x2go-")) + { + nxagentX2go = True; + } + else + { + for (int i = 1; i < argc; i++) + { + /* x2go session names are passed with -name and start with "X2GO-" */ + if (argv[i] && strncmp(argv[i], "-name", 5) == 0) + { + if (i < argc - 1) + { + if (strstr(argv[i+1], "X2GO-")) + { + nxagentX2go = True; + break; + } + } + } + } + } + } + + if (nxagentX2go) + fprintf(stderr, "\nrunning as X2Go Agent\n"); } + + #endif /* diff --git a/nx-X11/programs/Xserver/hw/nxagent/Init.h b/nx-X11/programs/Xserver/hw/nxagent/Init.h index ec0bb3483..d08517771 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Init.h +++ b/nx-X11/programs/Xserver/hw/nxagent/Init.h @@ -47,7 +47,7 @@ extern Bool nxagentSaveUnder; #ifdef X2GO extern Bool nxagentX2go; -void checkX2goAgent(void); +void checkX2goAgent(int argc, char *argv[]); #endif extern ServerGrabInfoRec nxagentGrabServerInfo; |