[PATCH v3] libio: Flush stream at freopen (BZ#21037)
Andreas Schwab
schwab@suse.de
Tue Oct 2 15:13:00 GMT 2018
On Okt 01 2018, Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote:
> diff --git a/sysdeps/unix/sysv/linux/fd_to_filename.h b/sysdeps/unix/sysv/linux/fd_to_filename.h
> index 297716b0ae..62bc9916b0 100644
> --- a/sysdeps/unix/sysv/linux/fd_to_filename.h
> +++ b/sysdeps/unix/sysv/linux/fd_to_filename.h
> @@ -16,30 +16,20 @@
> License along with the GNU C Library; if not, see
> <http://www.gnu.org/licenses/>. */
>
> -#include <stdlib.h>
> -#include <string.h>
> #include <sys/stat.h>
> -#include <_itoa.h>
> +
> +#define FD_TO_FILENAME_SIZE ((sizeof ("/proc/self/fd/") - 1) \
> + + (sizeof ("4294967295") - 1) + 1)
>
> static inline const char *
> -fd_to_filename (int fd)
> +fd_to_filename (unsigned int fd, char *buf)
> {
> - char *ret = malloc (30);
> -
> - if (ret != NULL)
> - {
> - struct stat64 st;
> -
> - *_fitoa_word (fd, __stpcpy (ret, "/proc/self/fd/"), 10, 0) = '\0';
> -
> - /* We must make sure the file exists. */
> - if (__lxstat64 (_STAT_VER, ret, &st) < 0)
> - {
> - /* /proc is not mounted or something else happened. Don't
> - return the file name. */
> - free (ret);
> - ret = NULL;
> - }
> - }
> - return ret;
> + *_fitoa_word (fd, __stpcpy (buf, "/proc/self/fd/"), 10, 0) = '\0';
> +
> + /* We must make sure the file exists. */
> + struct stat64 st;
> + if (__lxstat64 (_STAT_VER, buf, &st) < 0)
> + /* /proc is not mounted or something else happened. */
> + return NULL;
> + return buf;
> }
In file included from freopen.c:33:
../sysdeps/unix/sysv/linux/fd_to_filename.h: In function âfd_to_filenameâ:
../sysdeps/unix/sysv/linux/fd_to_filename.h:27:4: error: implicit declaration of function â_fitoa_wordâ [-Werror=implicit-function-declaration]
*_fitoa_word (fd, __stpcpy (buf, "/proc/self/fd/"), 10, 0) = '\0';
^~~~~~~~~~~
../sysdeps/unix/sysv/linux/fd_to_filename.h:27:21: error: implicit declaration of function â__stpcpyâ; did you mean â__setpgidâ? [-Werror=implicit-function-declaration]
*_fitoa_word (fd, __stpcpy (buf, "/proc/self/fd/"), 10, 0) = '\0';
^~~~~~~~
__setpgid
../sysdeps/unix/sysv/linux/fd_to_filename.h:27:3: error: invalid type argument of unary â*â (have âintâ)
*_fitoa_word (fd, __stpcpy (buf, "/proc/self/fd/"), 10, 0) = '\0';
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[2]: *** [../o-iterator.mk:9: /suse/schwab/src/libc/n-riscv64/libio/freopen.o] Error 1
Andreas.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
More information about the Libc-alpha
mailing list