X-Git-Url: http://git.droids-corp.org/?p=dpdk.git;a=blobdiff_plain;f=buildtools%2Fpmdinfogen%2Fpmdinfogen.c;h=0f35ca46bb0bc4ef75d34fcdd2e9a26d3026adea;hp=45b267346ffd70421ab4d5ecbfaaac294865df1d;hb=ac7f4af813c5cc63b070029b08fe82f1e67e1998;hpb=028e4b1dbc4acb54db9188a81d7644bccc542c74 diff --git a/buildtools/pmdinfogen/pmdinfogen.c b/buildtools/pmdinfogen/pmdinfogen.c index 45b267346f..0f35ca46bb 100644 --- a/buildtools/pmdinfogen/pmdinfogen.c +++ b/buildtools/pmdinfogen/pmdinfogen.c @@ -50,20 +50,24 @@ static void *grab_file(const char *filename, unsigned long *size) /* from stdin, use a temporary file to mmap */ FILE *infile; char buffer[1024]; - size_t n; + int n; infile = tmpfile(); if (infile == NULL) { perror("tmpfile"); return NULL; } - while (!feof(stdin)) { - n = fread(buffer, 1, sizeof(buffer), stdin); - if (fwrite(buffer, 1, n, infile) != n) + fd = dup(fileno(infile)); + fclose(infile); + if (fd < 0) + return NULL; + + n = read(STDIN_FILENO, buffer, sizeof(buffer)); + while (n > 0) { + if (write(fd, buffer, n) != n) goto failed; + n = read(STDIN_FILENO, buffer, sizeof(buffer)); } - fflush(infile); - fd = fileno(infile); } if (fstat(fd, &st))