From d8abe312d0ddd7b345d05707a3fb8e3236245453 Mon Sep 17 00:00:00 2001 From: Jan Kupec Date: Fri, 19 Sep 2008 21:10:37 +0000 Subject: [PATCH] - 'versioncmp' now uses zypp::Edition::compare() by default and match() if --match option is used. --- doc/zypper.8 | 12 ++++++++++++ src/Zypper.cc | 27 +++++++++------------------ 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/doc/zypper.8 b/doc/zypper.8 index 1b56d91..c5ea86d 100644 --- a/doc/zypper.8 +++ b/doc/zypper.8 @@ -919,6 +919,18 @@ is used, the result is an integer number, negative/positive if version1 is older/newer than version2, zero if they match. .TP +.I \-m, \-\-match +Takes missing release number as any release. For example +.br +$ zypper vcmp -m 0.15.3 0.15.3-2 +.br +0.15.3 matches 0.15.3-2 +.br +$ zypper vcmp 0.15.3 0.15.3-2 +.br +0.15.3 is older than 0.15.3-2 + +.TP .B targetos (tos) Shows the ID string of the target operating system. The string has a form of \fBdistroname-arch\fR. The string is determined by libzypp, the \fBdistroname\fR diff --git a/src/Zypper.cc b/src/Zypper.cc index c644596..a937ef5 100644 --- a/src/Zypper.cc +++ b/src/Zypper.cc @@ -1931,12 +1931,13 @@ void Zypper::processCommandOptions() ); break; } - + case ZypperCommand::VERSION_CMP_e: { static struct option options[] = { {"help", no_argument, 0, 'h'}, + {"match", no_argument, 0, 'm'}, {0, 0, 0, 0} }; specific_options = options; @@ -1945,7 +1946,8 @@ void Zypper::processCommandOptions() "\n" "Compare the versions supplied as arguments.\n" "\n" - "This command has no additional options.\n" + " Command options:\n" + "-m, --match Takes missing release number as any release.\n" ); break; } @@ -3680,24 +3682,13 @@ void Zypper::doCommand() Edition lhs(_arguments[0]); Edition rhs(_arguments[1]); - - if (lhs.empty()) - { - out().info(str::form( - _("'%s' is not a valid version number."), _arguments[0].c_str())); - setExitCode(ZYPPER_EXIT_ERR_INVALID_ARGS); - return; - } - if (rhs.empty()) - { - out().info(str::form( - _("'%s' is not a valid version number."), _arguments[1].c_str())); - setExitCode(ZYPPER_EXIT_ERR_INVALID_ARGS); - return; - } + int result; - int result = lhs.match(rhs); + if (_copts.count("match")) + result = lhs.match(rhs); + else + result = lhs.compare(rhs); // be terse when talking to machines if (_gopts.machine_readable) -- 2.7.4