*/
struct ul_env_list *env_from_fd(int fd)
{
- char *buf = NULL;
- size_t rc = 0;
+ char *buf = NULL, *p;
+ ssize_t rc = 0;
struct ul_env_list *ls = NULL;
if ((rc = read_all_alloc(fd, &buf)) < 1)
return NULL;
buf[rc] = '\0';
+ p = buf;
while (rc > 0) {
- ls = env_list_add(ls, buf);
- buf += strlen(buf) + 1;
- rc -= strlen(buf) + 1;
+ ls = env_list_add(ls, p);
+ p += strlen(p) + 1;
+ rc -= strlen(p) + 1;
}
+
+ free(buf);
return ls;
}
if (strncmp(*cur, *bad, strlen(*bad)) == 0) {
if (org)
*org = env_list_add(*org, *cur);
- last = remote_entry(envp, cur - envp, last);
+ last = remove_entry(envp, cur - envp, last);
cur--;
break;
}
continue; /* OK */
if (org)
*org = env_list_add(*org, *cur);
- last = remote_entry(envp, cur - envp, last);
+ last = remove_entry(envp, cur - envp, last);
cur--;
break;
}