From 21b42e462b99502e8df54d1cf9cd98a37a1e95a0 Mon Sep 17 00:00:00 2001 From: Dmitry Maksyoma Date: Fri, 6 Aug 2021 21:27:06 +1200 Subject: [PATCH] vncserver: extract CheckCliOptionsForBeingValid() --- unix/vncserver | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/unix/vncserver b/unix/vncserver index f3ad686..2aba58e 100755 --- a/unix/vncserver +++ b/unix/vncserver @@ -78,7 +78,9 @@ chop($host = `uname -n`); # Create the user's vnc directory if necessary. &CreateDotVncDir(); -&DetectDisplayNumberFromCliArgs(); +$displayNumber = &DetectDisplayNumberFromCliArgs() || + &GetLowestAvailableDisplayNumber(); +&CheckCliOptionsForBeingValid(); $vncPort = 5900 + $displayNumber; $desktopName = $opt{'-name'} || "$host:$displayNumber ($ENV{USER})"; @@ -793,21 +795,35 @@ sub AskUserToChooseDeOrManualXstartup { sub DetectDisplayNumberFromCliArgs { if (@ARGV == 0) { - $displayNumber = &GetLowestAvailableDisplayNumber(); return; } + my $displayNumber; if ($ARGV[0] =~ /^:(\d+)$/) { $displayNumber = $1; shift(@ARGV); if (!&CheckDisplayNumber($displayNumber)) { die "A VNC server is already running as :$displayNumber\n"; } - } elsif (($ARGV[0] !~ /^-/) && ($ARGV[0] !~ /^\+/)) { - &Usage(); - } else { - $displayNumber = &GetLowestAvailableDisplayNumber(); } + + $displayNumber; +} + +sub CheckCliOptionsForBeingValid { + if (@ARGV == 0) { + return; + } + + if (! &IsCliOption($ARGV[0])) { + &Usage(); + } +} + +sub IsCliOption { + my $arg = shift; + + ($arg =~ /^-/) || ($arg =~ /^\+/); } sub SetReasonabeDefaults {