diff options
Diffstat (limited to 'libio/iogetwline.c')
-rw-r--r-- | libio/iogetwline.c | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/libio/iogetwline.c b/libio/iogetwline.c index b2e11bcec3..d69be5a979 100644 --- a/libio/iogetwline.c +++ b/libio/iogetwline.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993-2016 Free Software Foundation, Inc. +/* Copyright (C) 1993-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -28,12 +28,8 @@ #include <string.h> #include <wchar.h> -#ifdef _LIBC -# define wmemcpy __wmemcpy -#endif - -_IO_size_t -_IO_getwline (_IO_FILE *fp, wchar_t *buf, _IO_size_t n, wint_t delim, +size_t +_IO_getwline (FILE *fp, wchar_t *buf, size_t n, wint_t delim, int extract_delim) { return _IO_getwline_info (fp, buf, n, delim, extract_delim, (wint_t *) 0); @@ -47,8 +43,8 @@ _IO_getwline (_IO_FILE *fp, wchar_t *buf, _IO_size_t n, wint_t delim, If extract_delim < 0, leave delimiter unread. If extract_delim > 0, insert delim in output. */ -_IO_size_t -_IO_getwline_info (_IO_FILE *fp, wchar_t *buf, _IO_size_t n, wint_t delim, +size_t +_IO_getwline_info (FILE *fp, wchar_t *buf, size_t n, wint_t delim, int extract_delim, wint_t *eof) { wchar_t *ptr = buf; @@ -58,8 +54,8 @@ _IO_getwline_info (_IO_FILE *fp, wchar_t *buf, _IO_size_t n, wint_t delim, _IO_fwide (fp, 1); while (n != 0) { - _IO_ssize_t len = (fp->_wide_data->_IO_read_end - - fp->_wide_data->_IO_read_ptr); + ssize_t len = (fp->_wide_data->_IO_read_end + - fp->_wide_data->_IO_read_ptr); if (len <= 0) { wint_t wc = __wuflow (fp); @@ -85,12 +81,12 @@ _IO_getwline_info (_IO_FILE *fp, wchar_t *buf, _IO_size_t n, wint_t delim, else { wchar_t *t; - if ((_IO_size_t) len >= n) + if ((size_t) len >= n) len = n; t = wmemchr ((void *) fp->_wide_data->_IO_read_ptr, delim, len); if (t != NULL) { - _IO_size_t old_len = ptr - buf; + size_t old_len = ptr - buf; len = t - fp->_wide_data->_IO_read_ptr; if (extract_delim >= 0) { @@ -98,12 +94,12 @@ _IO_getwline_info (_IO_FILE *fp, wchar_t *buf, _IO_size_t n, wint_t delim, if (extract_delim > 0) ++len; } - wmemcpy ((void *) ptr, (void *) fp->_wide_data->_IO_read_ptr, - len); + __wmemcpy ((void *) ptr, (void *) fp->_wide_data->_IO_read_ptr, + len); fp->_wide_data->_IO_read_ptr = t; return old_len + len; } - wmemcpy ((void *) ptr, (void *) fp->_wide_data->_IO_read_ptr, len); + __wmemcpy ((void *) ptr, (void *) fp->_wide_data->_IO_read_ptr, len); fp->_wide_data->_IO_read_ptr += len; ptr += len; n -= len; |