aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/manual/expressions/builtins.xml29
-rw-r--r--doc/manual/expressions/language-values.xml11
-rw-r--r--shell.nix1
-rw-r--r--src/libutil/hash.cc8
4 files changed, 47 insertions, 2 deletions
diff --git a/doc/manual/expressions/builtins.xml b/doc/manual/expressions/builtins.xml
index 9517f2010..063bc04be 100644
--- a/doc/manual/expressions/builtins.xml
+++ b/doc/manual/expressions/builtins.xml
@@ -210,6 +210,35 @@ if builtins ? getEnv then builtins.getEnv "PATH" else ""</programlisting>
</varlistentry>
+ <varlistentry><term><function>builtins.match</function>
+ <replaceable>regex</replaceable> <replaceable>str</replaceable></term>
+
+ <listitem><para>Returns a list if
+ <replaceable>regex</replaceable> matches
+ <replaceable>str</replaceable> precisely, otherwise returns <literal>null</literal>.
+ Each item in the list is a regex group.
+
+<programlisting>
+builtins.match "ab" "abc"
+</programlisting>
+
+Evaluates to <literal>null</literal>.
+
+<programlisting>
+builtins.match "abc" "abc"
+</programlisting>
+
+Evaluates to <literal>[ ]</literal>.
+
+<programlisting>
+builtins.match "a(b)(c)" "abc"
+</programlisting>
+
+Evaluates to <literal>[ "b" "c" ]</literal>.
+
+
+ </para></listitem>
+ </varlistentry>
<varlistentry><term><function>builtins.elem</function>
<replaceable>x</replaceable> <replaceable>xs</replaceable></term>
diff --git a/doc/manual/expressions/language-values.xml b/doc/manual/expressions/language-values.xml
index b90baac50..67da688a4 100644
--- a/doc/manual/expressions/language-values.xml
+++ b/doc/manual/expressions/language-values.xml
@@ -167,7 +167,16 @@ stdenv.mkDerivation {
user's home directory. e.g. <filename>~/foo</filename> would be
equivalent to <filename>/home/edolstra/foo</filename> for a user
whose home directory is <filename>/home/edolstra</filename>.
- </para></listitem>
+ </para>
+
+ <para>Paths can also be specified between angle brackets, e.g.
+ <literal>&lt;nixpkgs&gt;</literal>. This means that the directories
+ listed in the environment variable
+ <envar linkend="env-NIX_PATH">NIX_PATH</envar> will be searched
+ for the given file or directory name.
+ </para>
+
+ </listitem>
<listitem><para><emphasis>Booleans</emphasis> with values
<literal>true</literal> and
diff --git a/shell.nix b/shell.nix
index 1a6ec6b88..7e945023e 100644
--- a/shell.nix
+++ b/shell.nix
@@ -14,6 +14,7 @@ stdenv.mkDerivation {
customMemoryManagement = false;
})
autoreconfHook
+ perlPackages.DBDSQLite
];
configureFlags =
diff --git a/src/libutil/hash.cc b/src/libutil/hash.cc
index 81aced0fd..aa50fceb9 100644
--- a/src/libutil/hash.cc
+++ b/src/libutil/hash.cc
@@ -165,7 +165,13 @@ Hash parseHash32(HashType ht, const string & s)
unsigned int i = b / 8;
unsigned int j = b % 8;
hash.hash[i] |= digit << j;
- if (i < hash.hashSize - 1) hash.hash[i + 1] |= digit >> (8 - j);
+
+ if (i < hash.hashSize - 1) {
+ hash.hash[i + 1] |= digit >> (8 - j);
+ } else {
+ if (digit >> (8 - j))
+ throw BadHash(format("invalid base-32 hash ‘%1%’") % s);
+ }
}
return hash;