char *p = data;
int ret = 0;
FILE *fp;
+ int dupfd;
- fp = fdopen(dup(fd), "r");
- if (!fp)
+ dupfd = dup(fd);
+ if (dupfd < 0)
return errno;
+ fp = fdopen(dupfd, "r");
+ if (!fp) {
+ ret = errno;
+ close(dupfd);
+ goto out;
+ }
+
while (1) {
ssize_t len;
char buf[OPT_LEN_MAX+1], *sub;
}
fclose(fp);
+out:
return ret;
}