summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2017-03-31 18:27:25 +0200
committermakefu <github@syntax-fehler.de>2017-03-31 18:27:25 +0200
commitc7cfb0a5ab66c8c9b54a54032b85c4b82fd16d30 (patch)
tree6649813ed277a191038938e151cbc3c8d3f5deac
parent9a5cd35de345db85480df7f7dabe561439cf2e69 (diff)
parenta673125fbbf24b3a5abfe397396d5fc32360be09 (diff)
Merge remote-tracking branch 'tv/master'
-rw-r--r--krebs/5pkgs/exim.nix19
-rw-r--r--lib/types.nix20
2 files changed, 10 insertions, 29 deletions
diff --git a/krebs/5pkgs/exim.nix b/krebs/5pkgs/exim.nix
deleted file mode 100644
index 4bb69267..00000000
--- a/krebs/5pkgs/exim.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/pkgs/servers/mail/exim/default.nix b/pkgs/servers/mail/exim/default.nix
-index 0918e30..5b7a587 100644
---- a/pkgs/servers/mail/exim/default.nix
-+++ b/pkgs/servers/mail/exim/default.nix
-@@ -1,11 +1,11 @@
- { coreutils, fetchurl, db, openssl, pcre, perl, pkgconfig, stdenv }:
-
- stdenv.mkDerivation rec {
-- name = "exim-4.87";
-+ name = "exim-4.88";
-
- src = fetchurl {
-- url = "http://mirror.switch.ch/ftp/mirror/exim/exim/exim4/${name}.tar.bz2";
-- sha256 = "1jbxn13shq90kpn0s73qpjnx5xm8jrpwhcwwgqw5s6sdzw6iwsbl";
-+ url = "ftp://ftp.exim.org/pub/exim/exim4/${name}.tar.bz2";
-+ sha256 = "0bca3wb45hl7h8m8bpvsmrmqa07jhbhqyigs9pl29hhzwgbmz78i";
- };
-
- buildInputs = [ coreutils db openssl pcre perl pkgconfig ];
diff --git a/lib/types.nix b/lib/types.nix
index edd48c35..8a3c7648 100644
--- a/lib/types.nix
+++ b/lib/types.nix
@@ -5,7 +5,7 @@ let
all any concatMapStringsSep concatStringsSep const filter flip genid
hasSuffix head isInt isString length match mergeOneOption mkOption
mkOptionType optional optionalAttrs optionals range splitString
- stringLength tail typeOf;
+ stringLength substring typeOf;
inherit (lib.types)
attrsOf bool either enum int listOf nullOr path str string submodule;
in
@@ -430,23 +430,23 @@ rec {
};
# POSIX.1‐2013, 3.2 Absolute Pathname
- # TODO normalize slashes
- # TODO two slashes
absolute-pathname = mkOptionType {
name = "POSIX absolute pathname";
- check = x: let xs = splitString "/" x; xa = head xs; in
- isString x
- && stringLength x > 0
- && (xa == "/" || (xa == "" && all filename.check (tail xs)));
+ check = x: isString x && substring 0 1 x == "/" && pathname.check x;
merge = mergeOneOption;
};
# POSIX.1‐2013, 3.267 Pathname
- # TODO normalize slashes
pathname = mkOptionType {
name = "POSIX pathname";
- check = x: let xs = splitString "/" x; in
- isString x && all filename.check (if head xs == "" then tail xs else xs);
+ check = x:
+ let
+ # The filter is used to normalize paths, i.e. to remove duplicated and
+ # trailing slashes. It also removes leading slashes, thus we have to
+ # check for "/" explicitly below.
+ xs = filter (s: stringLength s > 0) (splitString "/" x);
+ in
+ isString x && (x == "/" || (length xs > 0 && all filename.check xs));
merge = mergeOneOption;
};