On 12/9/15 9:39 PM, Daniel Kahn Gillmor wrote: > +static notmuch_bool_t > +_find_in_path(const char* path) > +{ > + char *c = NULL, *save = NULL, *tok; > + size_t n; > + int dfd = -1; > + notmuch_bool_t ret = FALSE; > + > + n = confstr(_CS_PATH, NULL, 0); > + c = (char*)talloc_size(NULL, n); > + if (!c) > + return FALSE; > + confstr(_CS_PATH, c, n); > + > + tok = strtok_r(c, ":", &save); > + while (tok) { > + dfd = open(tok, O_DIRECTORY | O_RDONLY); > + if (dfd != -1) { > + if (!faccessat(dfd, path, X_OK, 0)) { > + ret = TRUE; > + goto done; > + } > + close(dfd); > + } > + tok = strtok_r(NULL, ":", &save); > + } > +done: > + if (dfd != -1) > + close(dfd); > + if (c) > + talloc_free(c); > + return ret; > +} I guess I still don't get it. Why even have a _find_in_path function? Why not just expect the gpg executable path to have already been specified somehow (e.g. Notmuch configuration file, build-time constant, or environment variable)? Regards, Lewis