Use Bindings::{get,need} instead of find

This commit is contained in:
Eelco Dolstra 2021-09-13 13:53:24 +02:00
parent a73be28717
commit eadb45c4db

View file

@ -199,26 +199,24 @@ static int main_nix_prefetch_url(int argc, char * * argv)
state->forceAttrs(v); state->forceAttrs(v);
/* Extract the URL. */ /* Extract the URL. */
auto attr = v.attrs->find(state->symbols.create("urls")); auto & attr = v.attrs->need(state->symbols.create("urls"));
if (attr == v.attrs->end()) state->forceList(*attr.value);
throw Error("attribute set does not contain a 'urls' attribute"); if (attr.value->listSize() < 1)
state->forceList(*attr->value);
if (attr->value->listSize() < 1)
throw Error("'urls' list is empty"); throw Error("'urls' list is empty");
url = state->forceString(*attr->value->listElems()[0]); url = state->forceString(*attr.value->listElems()[0]);
/* Extract the hash mode. */ /* Extract the hash mode. */
attr = v.attrs->find(state->symbols.create("outputHashMode")); auto attr2 = v.attrs->get(state->symbols.create("outputHashMode"));
if (attr == v.attrs->end()) if (!attr2)
printInfo("warning: this does not look like a fetchurl call"); printInfo("warning: this does not look like a fetchurl call");
else else
unpack = state->forceString(*attr->value) == "recursive"; unpack = state->forceString(*attr2->value) == "recursive";
/* Extract the name. */ /* Extract the name. */
if (!name) { if (!name) {
attr = v.attrs->find(state->symbols.create("name")); auto attr3 = v.attrs->get(state->symbols.create("name"));
if (attr != v.attrs->end()) if (!attr3)
name = state->forceString(*attr->value); name = state->forceString(*attr3->value);
} }
} }