[X2Go-Commits] [x2goserver] 18/30: x2goserver/lib/x2goupdateoptionsstring: add helper function for transform string interpretation.

git-admin at x2go.org git-admin at x2go.org
Thu Dec 13 11:22:48 CET 2018


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2goserver.

commit 5517537c1174eefab820f4c14bbe4d8651e406e2
Author: Mihai Moldovan <ionic at ionic.de>
Date:   Wed Dec 12 09:49:22 2018 +0100

    x2goserver/lib/x2goupdateoptionsstring: add helper function for transform string interpretation.
---
 debian/changelog                       |  2 ++
 x2goserver/lib/x2goupdateoptionsstring | 51 ++++++++++++++++++++++++++++++++++
 2 files changed, 53 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index bb6bea6..e7d59b9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -44,6 +44,8 @@ x2goserver (4.1.0.4-0x2go1) UNRELEASED; urgency=medium
     - x2goserver/lib/x2goupdateoptionsstring: ignore some very noisy
       Perl::Critic warnings that we're going to ignore anyway.
     - x2goserver/lib/x2goupdateoptionsstring: fix interpolated string warning.
+    - x2goserver/lib/x2goupdateoptionsstring: add helper function for
+      transform string interpretation.
   * debian/control:
     + Build-depend upon lsb-release for distro version detection.
   * debian/x2goserver.manpages:
diff --git a/x2goserver/lib/x2goupdateoptionsstring b/x2goserver/lib/x2goupdateoptionsstring
index 9f64bfd..811bf6d 100755
--- a/x2goserver/lib/x2goupdateoptionsstring
+++ b/x2goserver/lib/x2goupdateoptionsstring
@@ -28,6 +28,7 @@ use English qw (-no_match_vars);
 use Getopt::Long;
 use Pod::Usage;
 use Storable qw (dclone);
+use Switch qw (fallthrough);
 use Data::Dumper qw (Dumper);
 
 # Accepts an option string and returns a reference to an array of hashes
@@ -616,6 +617,56 @@ sub transform_intermediate {
   return $ret;
 }
 
+# Helper function "interpreting" a transformation string.
+#
+# Takes the raw transformation string as its only parameter.
+#
+# Returns an array reference containing two elements: the transformation mode
+# and a sanitized version of the transformation string, suitable for passing to
+# transform_intermediate ().
+#
+# On error, returns undef.
+sub interpret_transform {
+  my $ret = undef;
+
+  my $transform = shift;
+
+  if (defined ($transform)) {
+    my $mode = 0;
+    my $sanitized_transform = $transform;
+
+    # Check if non-empty, empty transform strings can only mean an
+    # append/modify operation.
+    if ($transform) {
+      switch (substr ($transform, 0, 1)) {
+        case (q{-}) {
+                      # Option starts with a dash, so must be a removal
+                      # operation.
+                      $mode = 1;
+                   }
+        case (q{+}) {
+                      # Options starting with a plus character are add/modify
+                      # operations. The default mode option here is fine, but
+                      # we'll need to strip the initial character.
+                      # Careful: switch-fallthrough, even for the previous
+                      # case(s)!
+                      $sanitized_transform = substr ($sanitized_transform, 1);
+                      last;
+                    }
+        else {
+                      # Everything else does not feature an explicit modifier,
+                      # so we can take the transformation string verbatim.
+                      # No need to actually do anything here, handled by the
+                      # initialization.
+        }
+      }
+    }
+    # Set up return value accordingly.
+    $ret = [ $mode, $sanitized_transform ];
+  }
+  return $ret;
+}
+
 Getopt::Long::Configure('gnu_getopt', 'no_auto_abbrev');
 
 my $help = 0;

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goserver.git


More information about the x2go-commits mailing list