+static int path_open(const char *name, const char *search)
+{
+ char buf[2*NAME_MAX+2];
+ const char *s=search, *z;
+ int l, fd;
+ for (;;) {
+ while (*s==':') s++;
+ if (!*s) return -1;
+ z = strchr(s, ':');
+ l = z ? z-s : strlen(s);
+ snprintf(buf, sizeof buf, "%.*s/%s", l, s, name);
+ if ((fd = open(buf, O_RDONLY))>=0) return fd;
+ s += l;
+ }
+}
+