فهرست منبع

(EILSEQ): Include <time.h> and <wchar.h> if <errno.h> does not define
EILSEQ, because BSD/OS 4.1 defines EILSEQ in <wchar.h>, which requires
<time.h>. Define a replacement EILSEQ to be ENOENT, not EINVAL, since
callers may want to distinguish EINVAL and EILSEQ.

Paul Eggert 23 سال پیش
والد
کامیت
1ad624bbbc
1فایلهای تغییر یافته به همراه18 افزوده شده و 1 حذف شده
  1. 18 1
      lib/unicodeio.c

+ 18 - 1
lib/unicodeio.c

@@ -37,8 +37,25 @@
 #ifndef errno
 extern int errno;
 #endif
+
+/* Define EILSEQ and ENOTSUP as portably as possible.  Some
+   nonstandard systems, like SunOS 4, don't have EILSEQ.  Others, like
+   BSD/OS 4.1, define it in <wchar.h>.  Callers that use EILSEQ and/or
+   ENOTSUP and that want to be portable to these nonstandard systems
+   should mimic the following includes and defines.  */
+
+/* BSD/OS 4.1 wchar.h defines EILSEQ, but it requires FILE (defined in
+   <stdio.h>, included above) and struct tm (defined in <time.h>) to
+   be declared.  */
+#if HAVE_WCHAR_H && ! defined EILSEQ
+# include <time.h>
+# include <wchar.h>
+#endif
+
+/* Do not define EILSEQ to be EINVAL, since callers may want to
+   distinguish EINVAL and EILSEQ.  */
 #ifndef EILSEQ
-# define EILSEQ EINVAL
+# define EILSEQ ENOENT
 #endif
 #ifndef ENOTSUP
 # define ENOTSUP EINVAL