This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goserver. commit fd76f96dfda718585e88287c7f7f09996b2c8aa1 Author: Mihai Moldovan <ionic@ionic.de> Date: Mon Nov 23 23:58:51 2020 +0100 x2goserver/bin/x2goupdateoptionsstring: generalize code looping through program arguments and split out transformation operation into own subroutine. --- debian/changelog | 3 + x2goserver/bin/x2goupdateoptionsstring | 134 +++++++++++++++++++++++---------- 2 files changed, 97 insertions(+), 40 deletions(-) diff --git a/debian/changelog b/debian/changelog index d5528dd6..93fa7fc5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -325,6 +325,9 @@ x2goserver (4.1.0.4-0x2go1.2) UNRELEASED; urgency=medium adjust/fix the comments. - x2goserver/bin/x2goupdateoptionsstring: more typo fixes in output messages only. + - x2goserver/bin/x2goupdateoptionsstring: generalize code looping through + program arguments and split out transformation operation into own + subroutine. * debian/control: + Build-depend upon lsb-release for distro version detection. * debian/x2goserver.manpages: diff --git a/x2goserver/bin/x2goupdateoptionsstring b/x2goserver/bin/x2goupdateoptionsstring index 82577e74..cb3470ad 100755 --- a/x2goserver/bin/x2goupdateoptionsstring +++ b/x2goserver/bin/x2goupdateoptionsstring @@ -326,6 +326,78 @@ sub handle_mode { return $ret; } +# Helper function applying a transformation to an intermediate options string. +# +# Takes an intermediate options string, a transformation string and a boolean +# value indicating whether debugging is turned on or off as its parameters. +# +# Returns a modified intermediate options string. +# +# On error, returns undef. +sub apply_transformation { + my $ret = undef; + my $error_detected = 0; + + my $intermediate = shift; + my $transform = shift; + my $debug = shift; + + if (!(defined ($intermediate))) { + print {*STDERR} "Invalid intermediate argument passed to transformation helper, erroring out.\n"; + $error_detected = 1; + } + + if ((!($error_detected)) && (!(defined ($transform)))) { + print {*STDERR} "Invalid transformation argument passed to transformation helper, erroring out.\n"; + $error_detected = 1; + } + + if ((!($error_detected)) && (!(defined ($debug)))) { + print {*STDERR} "Invalid debug argument passed to transformation helper, erroring out.\n"; + $error_detected = 1; + } + + my $interpreted_transform_ref = undef; + + if (!($error_detected)) { + if ($debug) { + print {*STDERR} 'Parsing current raw transformation option: ' . Dumper ($transform); + } + + $interpreted_transform_ref = X2Go::Server::Agent::NX::Options::interpret_transform ($transform); + + if (!(defined ($interpreted_transform_ref))) { + print {*STDERR} "Invalid transformation passed, aborting.\n"; + $error_detected = 1; + } + } + + if (!($error_detected)) { + my ($transform_mode, $sanitized_transform) = @{$interpreted_transform_ref}; + + if ($debug) { + print {*STDERR} 'Parsed raw transformation option into mode \'' . $transform_mode . '\' and sanitized transform option \'' . Dumper ($sanitized_transform) . "'\n"; + } + + $intermediate = X2Go::Server::Agent::NX::Options::transform_intermediate ($intermediate, $transform_mode, $sanitized_transform); + + if (!(defined ($intermediate))) { + print {*STDERR} "Error while transforming intermediate representation, aborting.\n"; + $error_detected = 1; + } + } + + if (!($error_detected)) { + if ($debug) { + print {*STDERR} 'Dumping transformed intermediate array: ' . Dumper ($intermediate); + } + + $ret = $intermediate; + } + + return $ret; +} + # Main function, no code outside of it shall be executed. # # Expects @ARGV to be passed in. @@ -453,44 +525,26 @@ sub Main { } } + my $out = undef; + if (!($error_detected)) { $found_separator |= (0 + shift (@{$sanitized_options})); $sanitized_options = shift (@{$sanitized_options}); @program_arguments = @{$sanitized_options}; - my $transformed = 0; - - while (defined (my $cur_transform = shift (@program_arguments))) { - $transformed = 1; + my $operation = 0; - if ($debug) { - print {*STDERR} 'Parsing current raw transformation option: ' . Dumper ($cur_transform); - } + while (defined (my $cur_arg = shift (@program_arguments))) { + $operation = 1; - my $interpreted_transform_ref = X2Go::Server::Agent::NX::Options::interpret_transform ($cur_transform); + if ((MODE_TRANSFORM_DATA)[1] == $mode) { + $intermediate = apply_transformation ($intermediate, $cur_arg, $debug); - if (!(defined ($interpreted_transform_ref))) { - print {*STDERR} "Invalid transformation passed, aborting.\n"; - $error_detected = 10; - last; - } - - my ($transform_mode, $sanitized_transform) = @{$interpreted_transform_ref}; - - if ($debug) { - print {*STDERR} 'Parsed raw transformation option into mode \'' . $transform_mode . '\' and sanitized transform option \'' . Dumper ($sanitized_transform) . "'\n"; - } - - $intermediate = X2Go::Server::Agent::NX::Options::transform_intermediate ($intermediate, $transform_mode, $sanitized_transform); - - if (!(defined ($intermediate))) { - print {*STDERR} "Error while transforming intermediate representation, aborting.\n"; - $error_detected = 11; - last; - } - - if ($debug) { - print {*STDERR} 'Dumping transformed intermediate array: ' . Dumper ($intermediate); + if (!(defined ($intermediate))) { + print {*STDERR} 'Unable to apply transformation "' . $cur_arg . '"' . ", aborting.\n"; + $error_detected = 10; + last; + } } # Skip pseudo-option, if necessary. @@ -498,7 +552,7 @@ sub Main { if (!(defined ($sanitized_options))) { pod2usage (-exitval => 'NOEXIT'); - $error_detected = 12; + $error_detected = 11; last; } elsif ($debug) { @@ -510,20 +564,20 @@ sub Main { @program_arguments = @{$sanitized_options}; } - if ((!($error_detected)) && (!($transformed))) { - print {*STDERR} "No transformation passed, aborting.\n"; - $error_detected = 13; + if ((!($error_detected)) && (!($operation))) { + print {*STDERR} "No operation carried out, aborting.\n"; + $error_detected = 12; } } - my $out = undef; - if (!($error_detected)) { - $out = X2Go::Server::Agent::NX::Options::intermediate_to_string ($intermediate); + if ((MODE_TRANSFORM_DATA)[1] == $mode) { + $out = X2Go::Server::Agent::NX::Options::intermediate_to_string ($intermediate); - if (!(defined ($out))) { - print {*STDERR} "Unable to transform intermediate back into string, aborting.\n"; - $error_detected = 14; + if (!(defined ($out))) { + print {*STDERR} "Unable to transform intermediate back into string, aborting.\n"; + $error_detected = 13; + } } } -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git