Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nx-libs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dimbor
nx-libs
Commits
4c2fe0d9
Commit
4c2fe0d9
authored
Feb 05, 2017
by
Bernard Cafarelli
Committed by
Mike Gabriel
Apr 07, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nxproxy: Support communication over stdin. Allow nxcl to use standard ssh instead of nxssh.
Fixes ArcticaProject/nx-libs#98.
parent
1441b02f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
64 additions
and
13 deletions
+64
-13
Main.c
nxproxy/Main.c
+64
-13
No files found.
nxproxy/Main.c
View file @
4c2fe0d9
...
...
@@ -19,6 +19,8 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <limits.h>
#include "NX.h"
...
...
@@ -27,6 +29,8 @@
#undef TEST
#undef DEBUG
extern
const
char
*
__progname
;
/*
* Entry point when running nxproxy stand-alone.
*/
...
...
@@ -37,27 +41,74 @@ int main(int argc, const char **argv)
char
*
options
=
NULL
;
char
*
nx_commfd_str
=
NULL
;
options
=
getenv
(
"NX_DISPLAY"
);
if
(
NXTransParseCommandLine
(
argc
,
argv
)
<
0
)
if
(
(
nx_commfd_str
=
getenv
(
"NX_COMMFD"
))
!=
NULL
)
{
NXTransCleanup
()
;
}
errno
=
0
;
unsigned
long
int
nx_commfd
=
strtoul
(
nx_commfd_str
,
NULL
,
10
);
if
(
NXTransParseEnvironment
(
options
,
0
)
<
0
)
{
NXTransCleanup
();
if
((
errno
)
&&
(
0
==
nx_commfd
))
{
fprintf
(
stderr
,
"%s: NX_COMMFD environment variable's value [%s] is not a file descriptor number. "
"Aborting...
\n
"
,
__progname
,
nx_commfd_str
);
NXTransCleanup
();
}
else
if
((
unsigned
long
int
)
INT_MAX
<
nx_commfd
)
{
fprintf
(
stderr
,
"%s: NX_COMMFD environment variable's value [%lu] is out of range for a file descriptor number. "
"Aborting...
\n
"
,
__progname
,
nx_commfd
);
NXTransCleanup
();
}
else
{
result
=
NXTransCreate
(
nx_commfd
,
NX_MODE_SERVER
,
options
);
if
(
result
!=
1
)
{
fprintf
(
stderr
,
"%s: NXTransCreate failed for FD#%lu
\n
"
"Aborting..."
,
__progname
,
nx_commfd
);
NXTransCleanup
();
}
}
// go into endless loop
if
(
result
==
1
)
{
while
(
NXTransRunning
(
NX_FD_ANY
))
result
=
NXTransContinue
(
NULL
);
}
}
else
{
/*
* This should not return...
*/
if
(
NXTransParseCommandLine
(
argc
,
argv
)
<
0
)
{
NXTransCleanup
();
}
#ifdef TEST
fprintf
(
stderr
,
"Main: Yielding control to NX entry point.
\n
"
);
#endif
if
(
NXTransParseEnvironment
(
options
,
0
)
<
0
)
{
NXTransCleanup
();
}
result
=
NXTransProxy
(
NX_FD_ANY
,
NX_MODE_ANY
,
NX_DISPLAY_ANY
);
/*
* This should not return...
*/
#ifdef TEST
fprintf
(
stderr
,
"%s: Yielding control to NX entry point.
\n
"
,
__progname
);
#endif
result
=
NXTransProxy
(
NX_FD_ANY
,
NX_MODE_ANY
,
NX_DISPLAY_ANY
);
}
/*
* ...So these should not be called.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment