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
930bd283
Unverified
Commit
930bd283
authored
Aug 24, 2018
by
Mike Gabriel
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'uli42-pr/decode_options' into 3.6.x
Attributes GH PR #725:
https://github.com/ArcticaProject/nx-libs/pull/725
parents
fad80bc4
30a96273
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
54 additions
and
14 deletions
+54
-14
Args.c
nx-X11/programs/Xserver/hw/nxagent/Args.c
+49
-14
nxagent.1
nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1
+5
-0
No files found.
nx-X11/programs/Xserver/hw/nxagent/Args.c
View file @
930bd283
...
...
@@ -1037,17 +1037,52 @@ int ddxProcessArgument(int argc, char *argv[], int i)
return
0
;
}
static
void
nxagentParseOptions
(
char
*
name
,
char
*
value
)
/* copy from nxcomp's Loop.cpp */
static
int
hexval
(
char
c
)
{
if
((
c
>=
'0'
)
&&
(
c
<=
'9'
))
return
c
-
'0'
;
if
((
c
>=
'a'
)
&&
(
c
<=
'f'
))
return
c
-
'a'
+
10
;
if
((
c
>=
'A'
)
&&
(
c
<=
'F'
))
return
c
-
'A'
+
10
;
return
-
1
;
}
static
void
URLDecodeInPlace
(
char
*
str
)
{
if
(
str
)
{
char
*
to
=
str
;
while
(
str
[
0
])
{
if
((
str
[
0
]
==
'%'
)
&&
(
hexval
(
str
[
1
])
>=
0
)
&&
(
hexval
(
str
[
2
])
>=
0
))
{
*
(
to
++
)
=
hexval
(
str
[
1
])
*
16
+
hexval
(
str
[
2
]);
str
+=
3
;
}
else
*
(
to
++
)
=
*
(
str
++
);
}
*
to
=
'\0'
;
}
}
static
void
nxagentParseSingleOption
(
char
*
name
,
char
*
value
)
{
int
size
,
argc
;
char
*
argv
[
2
]
=
{
NULL
,
NULL
};
#ifdef TEST
fprintf
(
stderr
,
"nxagentParse
Options
: Processing option '%s' = '%s'.
\n
"
,
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Processing option '%s' = '%s'.
\n
"
,
validateString
(
name
),
validateString
(
value
));
#endif
URLDecodeInPlace
(
value
);
if
(
!
strcmp
(
name
,
"kbtype"
)
||
!
strcmp
(
name
,
"keyboard"
)
||
!
strcmp
(
name
,
"id"
)
||
...
...
@@ -1081,7 +1116,7 @@ static void nxagentParseOptions(char *name, char *value)
if
(
nxagentReconnectTrap
==
True
)
{
#ifdef DEBUG
fprintf
(
stderr
,
"nxagentParse
Options
: Ignoring option 'render' at reconnection.
\n
"
);
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Ignoring option 'render' at reconnection.
\n
"
);
#endif
}
else
if
(
nxagentRenderEnable
==
UNDEFINED
)
...
...
@@ -1113,7 +1148,7 @@ static void nxagentParseOptions(char *name, char *value)
if
(
nxagentReconnectTrap
==
True
)
{
#ifdef DEBUG
fprintf
(
stderr
,
"nxagentParse
Options
: Ignoring option 'fullscreen' at reconnection.
\n
"
);
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Ignoring option 'fullscreen' at reconnection.
\n
"
);
#endif
}
else
if
(
!
strcmp
(
value
,
"1"
))
...
...
@@ -1283,7 +1318,7 @@ static void nxagentParseOptions(char *name, char *value)
if
(
nxagentReconnectTrap
==
True
)
{
#ifdef DEBUG
fprintf
(
stderr
,
"nxagentParse
Options
: Ignoring option 'autodpi' at reconnection.
\n
"
);
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Ignoring option 'autodpi' at reconnection.
\n
"
);
#endif
}
else
if
(
!
strcmp
(
value
,
"0"
))
...
...
@@ -1368,7 +1403,7 @@ static void nxagentParseOptions(char *name, char *value)
if
((
errno
)
&&
(
0
==
sleep_parse
))
{
fprintf
(
stderr
,
"nxagentParse
Options
: Unable to convert value [%s] of option [%s]. "
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Unable to convert value [%s] of option [%s]. "
"Ignoring option.
\n
"
,
validateString
(
value
),
validateString
(
name
));
...
...
@@ -1379,7 +1414,7 @@ static void nxagentParseOptions(char *name, char *value)
{
sleep_parse
=
UINT_MAX
;
fprintf
(
stderr
,
"nxagentParse
Options
: Warning: value [%s] of option [%s] "
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Warning: value [%s] of option [%s] "
"out of range, clamped to [%lu].
\n
"
,
validateString
(
value
),
validateString
(
name
),
sleep_parse
);
}
...
...
@@ -1388,7 +1423,7 @@ static void nxagentParseOptions(char *name, char *value)
{
sleep_parse
=
0
;
fprintf
(
stderr
,
"nxagentParse
Options
: Warning: value [%s] of option [%s] "
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Warning: value [%s] of option [%s] "
"out of range, clamped to [%lu].
\n
"
,
validateString
(
value
),
validateString
(
name
),
sleep_parse
);
}
...
...
@@ -1427,7 +1462,7 @@ static void nxagentParseOptions(char *name, char *value)
if
((
errno
)
&&
(
0
==
tolerance_parse
))
{
fprintf
(
stderr
,
"nxagentParse
Options
: Unable to convert value [%s] of option [%s]. "
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Unable to convert value [%s] of option [%s]. "
"Ignoring option.
\n
"
,
validateString
(
value
),
validateString
(
name
));
...
...
@@ -1438,7 +1473,7 @@ static void nxagentParseOptions(char *name, char *value)
{
tolerance_parse
=
UINT_MAX
;
fprintf
(
stderr
,
"nxagentParse
Options
: Warning: value [%s] of option [%s] "
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Warning: value [%s] of option [%s] "
"out of range, clamped to [%lu].
\n
"
,
validateString
(
value
),
validateString
(
name
),
tolerance_parse
);
}
...
...
@@ -1447,7 +1482,7 @@ static void nxagentParseOptions(char *name, char *value)
{
tolerance_parse
=
0
;
fprintf
(
stderr
,
"nxagentParse
Options
: Warning: value [%s] of option [%s] "
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Warning: value [%s] of option [%s] "
"out of range, clamped to [%lu].
\n
"
,
validateString
(
value
),
validateString
(
name
),
tolerance_parse
);
}
...
...
@@ -1460,7 +1495,7 @@ static void nxagentParseOptions(char *name, char *value)
case
ToleranceChecksBypass
:
break
;
default:
fprintf
(
stderr
,
"nxagentParse
Options
: Warning: value [%s] of "
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Warning: value [%s] of "
"option [%s] unknown, will be mapped to "
"
\"
Bypass
\"
[%u] value internally.
\n
"
,
validateString
(
value
),
validateString
(
name
),
...
...
@@ -1495,7 +1530,7 @@ static void nxagentParseOptions(char *name, char *value)
else
{
#ifdef DEBUG
fprintf
(
stderr
,
"nxagentParse
Options
: Ignored option [%s] with value [%s].
\n
"
,
fprintf
(
stderr
,
"nxagentParse
SingleOption
: Ignored option [%s] with value [%s].
\n
"
,
validateString
(
name
),
validateString
(
value
));
#endif
...
...
@@ -1563,7 +1598,7 @@ static void nxagentParseOptionString(char *string)
value
=
NULL
;
}
nxagentParse
Options
(
option
,
value
);
nxagentParse
SingleOption
(
option
,
value
);
}
}
...
...
nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1
View file @
930bd283
...
...
@@ -480,6 +480,11 @@ As <proxy-port> you can pick an arbitrary (unused) TCP port or Unix
socket file path. This is the port / socket that you have to connect to
with the \fBnxproxy\fR application.
.PP
The right hand side of an option (the part following the "=" character)
can include URL encoded characters. It is required to URL encode at
least "," (as %2D) and "=" (as %3D) to avoid wrong parsing of the
options string.
.PP
Available \fBnxagent\fR options (as an addition to nx/nx options supported
by nxcomp already):
.TP 8
...
...
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