Skip to content

Commit

Permalink
Merge pull request #21 from obsidiansystems/undo-compareVersions-split
Browse files Browse the repository at this point in the history
Revert "Move compareVersions to libutil"
  • Loading branch information
Ericson2314 authored Jun 18, 2020
2 parents cf0fbca + d360846 commit b7e39e0
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 78 deletions.
2 changes: 1 addition & 1 deletion src/libstore/ipfs-binary-cache-store.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include "binary-cache-store.hh"
#include "filetransfer.hh"
#include "nar-info-disk-cache.hh"
#include "versions.hh"
#include "names.hh"

namespace nix {

Expand Down
56 changes: 55 additions & 1 deletion src/libstore/names.cc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#include "names.hh"
#include "versions.hh"
#include "util.hh"


namespace nix {
Expand Down Expand Up @@ -41,6 +41,60 @@ bool DrvName::matches(DrvName & n)
}


string nextComponent(string::const_iterator & p,
const string::const_iterator end)
{
/* Skip any dots and dashes (component separators). */
while (p != end && (*p == '.' || *p == '-')) ++p;

if (p == end) return "";

/* If the first character is a digit, consume the longest sequence
of digits. Otherwise, consume the longest sequence of
non-digit, non-separator characters. */
string s;
if (isdigit(*p))
while (p != end && isdigit(*p)) s += *p++;
else
while (p != end && (!isdigit(*p) && *p != '.' && *p != '-'))
s += *p++;

return s;
}


static bool componentsLT(const string & c1, const string & c2)
{
int n1, n2;
bool c1Num = string2Int(c1, n1), c2Num = string2Int(c2, n2);

if (c1Num && c2Num) return n1 < n2;
else if (c1 == "" && c2Num) return true;
else if (c1 == "pre" && c2 != "pre") return true;
else if (c2 == "pre") return false;
/* Assume that `2.3a' < `2.3.1'. */
else if (c2Num) return true;
else if (c1Num) return false;
else return c1 < c2;
}


int compareVersions(const string & v1, const string & v2)
{
string::const_iterator p1 = v1.begin();
string::const_iterator p2 = v2.begin();

while (p1 != v1.end() || p2 != v2.end()) {
string c1 = nextComponent(p1, v1.end());
string c2 = nextComponent(p2, v2.end());
if (componentsLT(c1, c2)) return -1;
else if (componentsLT(c2, c1)) return 1;
}

return 0;
}


DrvNames drvNamesFromArgs(const Strings & opArgs)
{
DrvNames result;
Expand Down
4 changes: 3 additions & 1 deletion src/libstore/names.hh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
#include <memory>

#include "types.hh"
#include "versions.hh"
#include <regex>

namespace nix {
Expand All @@ -25,6 +24,9 @@ private:

typedef list<DrvName> DrvNames;

string nextComponent(string::const_iterator & p,
const string::const_iterator end);
int compareVersions(const string & v1, const string & v2);
DrvNames drvNamesFromArgs(const Strings & opArgs);

}
61 changes: 0 additions & 61 deletions src/libutil/versions.cc

This file was deleted.

14 changes: 0 additions & 14 deletions src/libutil/versions.hh

This file was deleted.

0 comments on commit b7e39e0

Please sign in to comment.