Deprecate fgetwln() This function has the same problems as fgetln() which is already marked as deprecated.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
diff --git a/man/libbsd.7 b/man/libbsd.7
index 0521f93..7d58c19 100644
--- a/man/libbsd.7
+++ b/man/libbsd.7
@@ -1,6 +1,6 @@
.\" libbsd man page
.\"
-.\" Copyright © 2017 Gullem Jover <guillem@hadrons.org>
+.\" Copyright © 2017-2018 Gullem Jover <guillem@hadrons.org>
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
@@ -24,7 +24,7 @@
.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd May 31 2017
+.Dd May 21 2018
.Dt LIBBSD 7
.Os
.Sh NAME
@@ -143,6 +143,17 @@ Use
.Fn getline 3
instead, which is available in many systems and required by
.St -p1003.1-2008 .
+.It Fn fgetwln
+Unportable, requires assistance from the stdio layer.
+An implementation has to choose between leaking buffers or being reentrant
+for a limited amount of streams (this implementation chose the latter with
+a limit of 32).
+Use
+.Fn fgetwc 3
+instead, which is available in many systems and required by
+.St -isoC-99
+and
+.St -p1003.1-2001 .
.It Fn funopen
Unportable, requires assistance from the stdio layer or some hook framework.
On GNU systems the
diff --git a/src/fgetwln.c b/src/fgetwln.c
index aa3f927..1127655 100644
--- a/src/fgetwln.c
+++ b/src/fgetwln.c
@@ -30,6 +30,8 @@
#include <stdio.h>
#include <wchar.h>
+#include "local-link.h"
+
struct filewbuf {
FILE *fp;
wchar_t *wbuf;
@@ -85,3 +87,6 @@ fgetwln(FILE *stream, size_t *lenp)
*lenp = wused;
return wused ? fb->wbuf : NULL;
}
+libbsd_link_warning(fgetwln,
+ "This function cannot be safely ported, use fgetwc(3) "
+ "instead, as it is supported by C99 and POSIX.1-2001.")