#include "config.h" #include #include #include "hash.hh" #include "archive.hh" #include "util.hh" #include #include #include namespace nix { Hash::Hash() { type = htUnknown; hashSize = 0; memset(hash, 0, maxHashSize); } Hash::Hash(HashType type) { this->type = type; hashSize = gcry_md_get_algo_dlen(type); if (hashSize == 0) throw Error("unknown hash type"); assert(hashSize <= maxHashSize); memset(hash, 0, maxHashSize); } bool Hash::operator == (const Hash & h2) const { if (hashSize != h2.hashSize) return false; for (unsigned int i = 0; i < hashSize; i++) if (hash[i] != h2.hash[i]) return false; return true; } bool Hash::operator != (const Hash & h2) const { return !(*this == h2); } bool Hash::operator < (const Hash & h) const { for (unsigned int i = 0; i < hashSize; i++) { if (hash[i] < h.hash[i]) return true; if (hash[i] > h.hash[i]) return false; } return false; }
aboutsummaryrefslogtreecommitdiff
blob: 2fa604340bfdb13228402fe4787cce77d0ccbc81 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# GNU Guix --- Functional package management for GNU
# Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
# Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
# Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2024 gemmaro <gemmaro.dev@gmail.com>
#
# This file is part of GNU Guix.
#
# GNU Guix is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or (at
# your option) any later version.
#
# GNU Guix is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

DOC_PO_FILES =					\
  %D%/guix-manual.de.po				\
  %D%/guix-manual.es.po				\
  %D%/guix-manual.fr.po				\
  %D%/guix-manual.pt_BR.po			\
  %D%/guix-manual.ru.po				\
  %D%/guix-manual.zh_CN.po

DOC_COOKBOOK_PO_FILES =				\
  %D%/guix-cookbook.de.po			\
  %D%/guix-cookbook.fr.po			\
  %D%/guix-cookbook.ko.po			\
  %D%/guix-cookbook.pt_BR.po			\
  %D%/guix-cookbook.sk.po			\
  %D%/guix-cookbook.sv.po

EXTRA_DIST = \
  %D%/guix-manual.pot \
  %D%/guix-cookbook.pot \
  $(DOC_PO_FILES) \
  $(DOC_COOKBOOK_PO_FILES)

%D%/%.pot: $(srcdir)/doc/%.texi
	$(AM_V_PO4A)$(PO4A) --no-translations -M UTF-8			\
	    --package-version "$(VERSION)"				\
	    --variable master="$<"					\
	    --variable pot="$@-t"					\
	    --variable po=/dev/null					\
	    --variable localized=/dev/null				\
	    $(POT_OPTIONS) %D%/po4a.cfg
	date="$$(git log --pretty=format:%ci -n 1 -- $< 2>/dev/null	\
		|| echo $(SOURCE_DATE_EPOCH))"				\
	sed -ri -e "s,^(.POT-Creation-Date: )[^\]*,\1$$date," "$@-t"
	mv "$@-t" "$@"

%D%/guix-manual.pot: %D%/guix.pot %D%/contributing.pot
	msgcat $^ > "$@-t"
	date="$$(git log --pretty=format:%ci -n 1 -- $< 2>/dev/null	\
		|| echo $(SOURCE_DATE_EPOCH))"				\
	sed -ri "s,^(.POT-Creation-Date: )[^\]*,\1$$date," "$@-t"
	mv "$@-t" "$@"

doc-pot-update: %D%/guix-manual.pot %D%/guix-cookbook.pot
.PHONY: doc-pot-update
eturn "sha512"; else if (ht == htSHA3_256) return "sha3-256"; else if (ht == htSHA3_512) return "sha3-512"; else if (ht == htBLAKE2s_256) return "blake2s-256"; else throw Error("cannot print unknown hash type"); } }