summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.gnulib67
-rw-r--r--tests/Makefile.in222
-rw-r--r--tests/error.c16
-rw-r--r--tests/fcntl.in.h144
-rw-r--r--tests/locale.in.h5
-rw-r--r--tests/open.c137
-rw-r--r--tests/test-dup2.c121
-rw-r--r--tests/test-fcntl.c35
-rw-r--r--tests/test-open.c47
-rw-r--r--tests/test-stddef.c38
-rw-r--r--tests/test-wchar.c8
-rw-r--r--tests/uniconv/test-u16-conv-from-enc.c2
-rw-r--r--tests/uniconv/test-u16-strconv-from-enc.c4
-rw-r--r--tests/uniconv/test-u32-conv-from-enc.c2
-rw-r--r--tests/uniconv/test-u32-strconv-from-enc.c4
-rw-r--r--tests/uniconv/test-u8-conv-from-enc.c2
-rw-r--r--tests/uniconv/test-u8-strconv-from-enc.c4
17 files changed, 774 insertions, 84 deletions
diff --git a/tests/Makefile.gnulib b/tests/Makefile.gnulib
index 454cfe7..f86db50 100644
--- a/tests/Makefile.gnulib
+++ b/tests/Makefile.gnulib
@@ -77,6 +77,14 @@ EXTRA_DIST += test-c-strcase.sh test-c-strcasecmp.c test-c-strncasecmp.c
## end gnulib module c-strcase-tests
+## begin gnulib module dup2-tests
+
+TESTS += test-dup2
+check_PROGRAMS += test-dup2
+EXTRA_DIST += test-dup2.c
+
+## end gnulib module dup2-tests
+
## begin gnulib module environ-tests
TESTS += test-environ
@@ -113,6 +121,38 @@ EXTRA_libtests_a_SOURCES += exitfail.c
## end gnulib module exitfail
+## begin gnulib module fcntl
+
+BUILT_SOURCES += $(FCNTL_H)
+
+# We need the following in order to create <fcntl.h> when the system
+# doesn't have one that works with the given compiler.
+fcntl.h: fcntl.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \
+ -e 's|@''GNULIB_OPEN''@|$(GNULIB_OPEN)|g' \
+ -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \
+ < $(srcdir)/fcntl.in.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += fcntl.h fcntl.h-t
+
+EXTRA_DIST += fcntl.in.h
+
+## end gnulib module fcntl
+
+## begin gnulib module fcntl-tests
+
+TESTS += test-fcntl
+check_PROGRAMS += test-fcntl
+
+EXTRA_DIST += test-fcntl.c
+
+## end gnulib module fcntl-tests
+
## begin gnulib module frexpl-nolibm-tests
TESTS += test-frexpl-nolibm
@@ -273,6 +313,24 @@ EXTRA_DIST += test-memchr.c zerosize-ptr.h
## end gnulib module memchr-tests
+## begin gnulib module open
+
+
+EXTRA_DIST += open.c
+
+EXTRA_libtests_a_SOURCES += open.c
+
+## end gnulib module open
+
+## begin gnulib module open-tests
+
+TESTS += test-open
+check_PROGRAMS += test-open
+
+EXTRA_DIST += test-open.c
+
+## end gnulib module open-tests
+
## begin gnulib module printf-frexp-tests
TESTS += test-printf-frexp
@@ -324,6 +382,15 @@ EXTRA_DIST += test-stdbool.c
## end gnulib module stdbool-tests
+## begin gnulib module stddef-tests
+
+TESTS += test-stddef
+check_PROGRAMS += test-stddef
+
+EXTRA_DIST += test-stddef.c
+
+## end gnulib module stddef-tests
+
## begin gnulib module stdint-tests
TESTS += test-stdint
diff --git a/tests/Makefile.in b/tests/Makefile.in
index fa73457..b1d9e4a 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -49,42 +49,43 @@ host_triplet = @host@
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.gnulib $(srcdir)/Makefile.in
TESTS = test-alloca-opt$(EXEEXT) test-array-mergesort$(EXEEXT) \
- test-c-ctype$(EXEEXT) test-c-strcase.sh test-environ$(EXEEXT) \
- test-errno$(EXEEXT) test-frexpl-nolibm$(EXEEXT) \
- test-fseterr$(EXEEXT) test-iconv$(EXEEXT) \
- test-isnand-nolibm$(EXEEXT) test-isnanf-nolibm$(EXEEXT) \
- test-isnanl-nolibm$(EXEEXT) test-locale$(EXEEXT) \
- test-localename$(EXEEXT) test-malloca$(EXEEXT) \
- test-math$(EXEEXT) test-mbrtowc1.sh test-mbrtowc2.sh \
- test-mbrtowc3.sh test-mbrtowc4.sh test-mbsinit.sh \
- test-memchr$(EXEEXT) test-printf-frexp$(EXEEXT) \
- test-printf-frexpl$(EXEEXT) test-signbit$(EXEEXT) \
- test-stdbool$(EXEEXT) test-stdint$(EXEEXT) \
- test-stdlib$(EXEEXT) test-strerror$(EXEEXT) \
- test-striconveh$(EXEEXT) test-striconveha$(EXEEXT) \
- test-string$(EXEEXT) test-cased$(EXEEXT) \
- test-ignorable$(EXEEXT) unicase/test-locale-language.sh \
- test-uc_tolower$(EXEEXT) test-uc_totitle$(EXEEXT) \
- test-uc_toupper$(EXEEXT) test-u16-casecmp$(EXEEXT) \
- test-u16-casecoll$(EXEEXT) test-u16-casefold$(EXEEXT) \
- test-u16-is-cased$(EXEEXT) test-u16-is-casefolded$(EXEEXT) \
- test-u16-is-lowercase$(EXEEXT) test-u16-is-titlecase$(EXEEXT) \
- test-u16-is-uppercase$(EXEEXT) test-u16-tolower$(EXEEXT) \
- test-u16-totitle$(EXEEXT) test-u16-toupper$(EXEEXT) \
- test-u32-casecmp$(EXEEXT) test-u32-casecoll$(EXEEXT) \
- test-u32-casefold$(EXEEXT) test-u32-is-cased$(EXEEXT) \
- test-u32-is-casefolded$(EXEEXT) test-u32-is-lowercase$(EXEEXT) \
- test-u32-is-titlecase$(EXEEXT) test-u32-is-uppercase$(EXEEXT) \
- test-u32-tolower$(EXEEXT) test-u32-totitle$(EXEEXT) \
- test-u32-toupper$(EXEEXT) test-u8-casecmp$(EXEEXT) \
- test-u8-casecoll$(EXEEXT) test-u8-casefold$(EXEEXT) \
- test-u8-is-cased$(EXEEXT) test-u8-is-casefolded$(EXEEXT) \
- test-u8-is-lowercase$(EXEEXT) test-u8-is-titlecase$(EXEEXT) \
- test-u8-is-uppercase$(EXEEXT) test-u8-tolower$(EXEEXT) \
- test-u8-totitle$(EXEEXT) test-u8-toupper$(EXEEXT) \
- unicase/test-ulc-casecmp1.sh unicase/test-ulc-casecmp2.sh \
- unicase/test-ulc-casecoll1.sh unicase/test-ulc-casecoll2.sh \
- test-u16-conv-from-enc$(EXEEXT) test-u16-conv-to-enc$(EXEEXT) \
+ test-c-ctype$(EXEEXT) test-c-strcase.sh test-dup2$(EXEEXT) \
+ test-environ$(EXEEXT) test-errno$(EXEEXT) test-fcntl$(EXEEXT) \
+ test-frexpl-nolibm$(EXEEXT) test-fseterr$(EXEEXT) \
+ test-iconv$(EXEEXT) test-isnand-nolibm$(EXEEXT) \
+ test-isnanf-nolibm$(EXEEXT) test-isnanl-nolibm$(EXEEXT) \
+ test-locale$(EXEEXT) test-localename$(EXEEXT) \
+ test-malloca$(EXEEXT) test-math$(EXEEXT) test-mbrtowc1.sh \
+ test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh \
+ test-mbsinit.sh test-memchr$(EXEEXT) test-open$(EXEEXT) \
+ test-printf-frexp$(EXEEXT) test-printf-frexpl$(EXEEXT) \
+ test-signbit$(EXEEXT) test-stdbool$(EXEEXT) \
+ test-stddef$(EXEEXT) test-stdint$(EXEEXT) test-stdlib$(EXEEXT) \
+ test-strerror$(EXEEXT) test-striconveh$(EXEEXT) \
+ test-striconveha$(EXEEXT) test-string$(EXEEXT) \
+ test-cased$(EXEEXT) test-ignorable$(EXEEXT) \
+ unicase/test-locale-language.sh test-uc_tolower$(EXEEXT) \
+ test-uc_totitle$(EXEEXT) test-uc_toupper$(EXEEXT) \
+ test-u16-casecmp$(EXEEXT) test-u16-casecoll$(EXEEXT) \
+ test-u16-casefold$(EXEEXT) test-u16-is-cased$(EXEEXT) \
+ test-u16-is-casefolded$(EXEEXT) test-u16-is-lowercase$(EXEEXT) \
+ test-u16-is-titlecase$(EXEEXT) test-u16-is-uppercase$(EXEEXT) \
+ test-u16-tolower$(EXEEXT) test-u16-totitle$(EXEEXT) \
+ test-u16-toupper$(EXEEXT) test-u32-casecmp$(EXEEXT) \
+ test-u32-casecoll$(EXEEXT) test-u32-casefold$(EXEEXT) \
+ test-u32-is-cased$(EXEEXT) test-u32-is-casefolded$(EXEEXT) \
+ test-u32-is-lowercase$(EXEEXT) test-u32-is-titlecase$(EXEEXT) \
+ test-u32-is-uppercase$(EXEEXT) test-u32-tolower$(EXEEXT) \
+ test-u32-totitle$(EXEEXT) test-u32-toupper$(EXEEXT) \
+ test-u8-casecmp$(EXEEXT) test-u8-casecoll$(EXEEXT) \
+ test-u8-casefold$(EXEEXT) test-u8-is-cased$(EXEEXT) \
+ test-u8-is-casefolded$(EXEEXT) test-u8-is-lowercase$(EXEEXT) \
+ test-u8-is-titlecase$(EXEEXT) test-u8-is-uppercase$(EXEEXT) \
+ test-u8-tolower$(EXEEXT) test-u8-totitle$(EXEEXT) \
+ test-u8-toupper$(EXEEXT) unicase/test-ulc-casecmp1.sh \
+ unicase/test-ulc-casecmp2.sh unicase/test-ulc-casecoll1.sh \
+ unicase/test-ulc-casecoll2.sh test-u16-conv-from-enc$(EXEEXT) \
+ test-u16-conv-to-enc$(EXEEXT) \
test-u16-strconv-from-enc$(EXEEXT) \
test-u16-strconv-to-enc$(EXEEXT) \
test-u32-conv-from-enc$(EXEEXT) test-u32-conv-to-enc$(EXEEXT) \
@@ -234,16 +235,17 @@ noinst_PROGRAMS =
check_PROGRAMS = test-alloca-opt$(EXEEXT) \
test-array-mergesort$(EXEEXT) test-c-ctype$(EXEEXT) \
test-c-strcasecmp$(EXEEXT) test-c-strncasecmp$(EXEEXT) \
- test-environ$(EXEEXT) test-errno$(EXEEXT) \
- test-frexpl-nolibm$(EXEEXT) test-fseterr$(EXEEXT) \
- test-iconv$(EXEEXT) test-isnand-nolibm$(EXEEXT) \
- test-isnanf-nolibm$(EXEEXT) test-isnanl-nolibm$(EXEEXT) \
- test-locale$(EXEEXT) test-localename$(EXEEXT) \
- test-malloca$(EXEEXT) test-math$(EXEEXT) test-mbrtowc$(EXEEXT) \
- test-mbsinit$(EXEEXT) test-memchr$(EXEEXT) \
+ test-dup2$(EXEEXT) test-environ$(EXEEXT) test-errno$(EXEEXT) \
+ test-fcntl$(EXEEXT) test-frexpl-nolibm$(EXEEXT) \
+ test-fseterr$(EXEEXT) test-iconv$(EXEEXT) \
+ test-isnand-nolibm$(EXEEXT) test-isnanf-nolibm$(EXEEXT) \
+ test-isnanl-nolibm$(EXEEXT) test-locale$(EXEEXT) \
+ test-localename$(EXEEXT) test-malloca$(EXEEXT) \
+ test-math$(EXEEXT) test-mbrtowc$(EXEEXT) test-mbsinit$(EXEEXT) \
+ test-memchr$(EXEEXT) test-open$(EXEEXT) \
test-printf-frexp$(EXEEXT) test-printf-frexpl$(EXEEXT) \
test-signbit$(EXEEXT) test-stdbool$(EXEEXT) \
- test-stdint$(EXEEXT) test-stdlib$(EXEEXT) \
+ test-stddef$(EXEEXT) test-stdint$(EXEEXT) test-stdlib$(EXEEXT) \
test-strerror$(EXEEXT) test-striconveh$(EXEEXT) \
test-striconveha$(EXEEXT) test-string$(EXEEXT) \
test-cased$(EXEEXT) test-ignorable$(EXEEXT) \
@@ -418,6 +420,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/alloca.m4 \
$(top_srcdir)/gnulib-m4/codeset.m4 \
+ $(top_srcdir)/gnulib-m4/dup2.m4 \
$(top_srcdir)/gnulib-m4/eealloc.m4 \
$(top_srcdir)/gnulib-m4/environ.m4 \
$(top_srcdir)/gnulib-m4/errno_h.m4 \
@@ -427,6 +430,7 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/exponentf.m4 \
$(top_srcdir)/gnulib-m4/exponentl.m4 \
$(top_srcdir)/gnulib-m4/extensions.m4 \
+ $(top_srcdir)/gnulib-m4/fcntl_h.m4 \
$(top_srcdir)/gnulib-m4/float_h.m4 \
$(top_srcdir)/gnulib-m4/fpieee.m4 \
$(top_srcdir)/gnulib-m4/frexp.m4 \
@@ -470,8 +474,10 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/memchr.m4 \
$(top_srcdir)/gnulib-m4/minmax.m4 \
$(top_srcdir)/gnulib-m4/mmap-anon.m4 \
+ $(top_srcdir)/gnulib-m4/mode_t.m4 \
$(top_srcdir)/gnulib-m4/multiarch.m4 \
$(top_srcdir)/gnulib-m4/nocrash.m4 \
+ $(top_srcdir)/gnulib-m4/open.m4 \
$(top_srcdir)/gnulib-m4/printf-frexp.m4 \
$(top_srcdir)/gnulib-m4/printf-frexpl.m4 \
$(top_srcdir)/gnulib-m4/printf.m4 \
@@ -480,6 +486,7 @@ am__aclocal_m4_deps = $(top_srcdir)/gnulib-m4/00gnulib.m4 \
$(top_srcdir)/gnulib-m4/signbit.m4 \
$(top_srcdir)/gnulib-m4/size_max.m4 \
$(top_srcdir)/gnulib-m4/stdbool.m4 \
+ $(top_srcdir)/gnulib-m4/stddef_h.m4 \
$(top_srcdir)/gnulib-m4/stdint.m4 \
$(top_srcdir)/gnulib-m4/stdint_h.m4 \
$(top_srcdir)/gnulib-m4/stdlib_h.m4 \
@@ -923,6 +930,11 @@ test_digit_OBJECTS = $(am_test_digit_OBJECTS)
test_digit_LDADD = $(LDADD)
test_digit_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
$(am__DEPENDENCIES_1)
+test_dup2_SOURCES = test-dup2.c
+test_dup2_OBJECTS = test-dup2.$(OBJEXT)
+test_dup2_LDADD = $(LDADD)
+test_dup2_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
test_environ_SOURCES = test-environ.c
test_environ_OBJECTS = test-environ.$(OBJEXT)
test_environ_LDADD = $(LDADD)
@@ -933,6 +945,11 @@ test_errno_OBJECTS = test-errno.$(OBJEXT)
test_errno_LDADD = $(LDADD)
test_errno_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
$(am__DEPENDENCIES_1)
+test_fcntl_SOURCES = test-fcntl.c
+test_fcntl_OBJECTS = test-fcntl.$(OBJEXT)
+test_fcntl_LDADD = $(LDADD)
+test_fcntl_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
am_test_frexpl_nolibm_OBJECTS = test-frexpl.$(OBJEXT)
test_frexpl_nolibm_OBJECTS = $(am_test_frexpl_nolibm_OBJECTS)
test_frexpl_nolibm_LDADD = $(LDADD)
@@ -1043,6 +1060,11 @@ test_numeric_OBJECTS = $(am_test_numeric_OBJECTS)
test_numeric_LDADD = $(LDADD)
test_numeric_DEPENDENCIES = libtests.a ../lib/libunistring.la \
libtests.a $(am__DEPENDENCIES_1)
+test_open_SOURCES = test-open.c
+test_open_OBJECTS = test-open.$(OBJEXT)
+test_open_LDADD = $(LDADD)
+test_open_DEPENDENCIES = libtests.a ../lib/libunistring.la libtests.a \
+ $(am__DEPENDENCIES_1)
am_test_pr_alphabetic_OBJECTS = unictype/test-pr_alphabetic.$(OBJEXT)
test_pr_alphabetic_OBJECTS = $(am_test_pr_alphabetic_OBJECTS)
test_pr_alphabetic_LDADD = $(LDADD)
@@ -1568,6 +1590,11 @@ test_stdbool_OBJECTS = test-stdbool.$(OBJEXT)
test_stdbool_LDADD = $(LDADD)
test_stdbool_DEPENDENCIES = libtests.a ../lib/libunistring.la \
libtests.a $(am__DEPENDENCIES_1)
+test_stddef_SOURCES = test-stddef.c
+test_stddef_OBJECTS = test-stddef.$(OBJEXT)
+test_stddef_LDADD = $(LDADD)
+test_stddef_DEPENDENCIES = libtests.a ../lib/libunistring.la \
+ libtests.a $(am__DEPENDENCIES_1)
test_stdint_SOURCES = test-stdint.c
test_stdint_OBJECTS = test-stdint.$(OBJEXT)
test_stdint_LDADD = $(LDADD)
@@ -2211,15 +2238,16 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_ctype_space_SOURCES) $(test_ctype_upper_SOURCES) \
$(test_ctype_xdigit_SOURCES) $(test_decdigit_SOURCES) \
$(test_decomposing_form_SOURCES) $(test_decomposition_SOURCES) \
- $(test_digit_SOURCES) test-environ.c test-errno.c \
- $(test_frexpl_nolibm_SOURCES) test-fseterr.c test-iconv.c \
- $(test_ignorable_SOURCES) test-isnand-nolibm.c \
+ $(test_digit_SOURCES) test-dup2.c test-environ.c test-errno.c \
+ test-fcntl.c $(test_frexpl_nolibm_SOURCES) test-fseterr.c \
+ test-iconv.c $(test_ignorable_SOURCES) test-isnand-nolibm.c \
test-isnanf-nolibm.c test-isnanl-nolibm.c test-locale.c \
$(test_locale_language_SOURCES) test-localename.c \
test-malloca.c test-math.c test-mbrtowc.c test-mbsinit.c \
test-memchr.c $(test_mirror_SOURCES) $(test_nfc_SOURCES) \
$(test_nfd_SOURCES) $(test_nfkc_SOURCES) $(test_nfkd_SOURCES) \
- $(test_numeric_SOURCES) $(test_pr_alphabetic_SOURCES) \
+ $(test_numeric_SOURCES) test-open.c \
+ $(test_pr_alphabetic_SOURCES) \
$(test_pr_ascii_hex_digit_SOURCES) \
$(test_pr_bidi_arabic_digit_SOURCES) \
$(test_pr_bidi_arabic_right_to_left_SOURCES) \
@@ -2285,9 +2313,10 @@ SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_pr_xid_start_SOURCES) $(test_pr_zero_width_SOURCES) \
test-printf-frexp.c test-printf-frexpl.c \
$(test_scripts_SOURCES) test-signbit.c test-stdbool.c \
- test-stdint.c test-stdlib.c test-strerror.c test-striconveh.c \
- test-striconveha.c test-string.c $(test_sy_c_ident_SOURCES) \
- $(test_sy_c_whitespace_SOURCES) $(test_sy_java_ident_SOURCES) \
+ test-stddef.c test-stdint.c test-stdlib.c test-strerror.c \
+ test-striconveh.c test-striconveha.c test-string.c \
+ $(test_sy_c_ident_SOURCES) $(test_sy_c_whitespace_SOURCES) \
+ $(test_sy_java_ident_SOURCES) \
$(test_sy_java_whitespace_SOURCES) \
$(test_u16_asnprintf1_SOURCES) $(test_u16_casecmp_SOURCES) \
$(test_u16_casecoll_SOURCES) $(test_u16_casefold_SOURCES) \
@@ -2400,15 +2429,16 @@ DIST_SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_ctype_space_SOURCES) $(test_ctype_upper_SOURCES) \
$(test_ctype_xdigit_SOURCES) $(test_decdigit_SOURCES) \
$(test_decomposing_form_SOURCES) $(test_decomposition_SOURCES) \
- $(test_digit_SOURCES) test-environ.c test-errno.c \
- $(test_frexpl_nolibm_SOURCES) test-fseterr.c test-iconv.c \
- $(test_ignorable_SOURCES) test-isnand-nolibm.c \
+ $(test_digit_SOURCES) test-dup2.c test-environ.c test-errno.c \
+ test-fcntl.c $(test_frexpl_nolibm_SOURCES) test-fseterr.c \
+ test-iconv.c $(test_ignorable_SOURCES) test-isnand-nolibm.c \
test-isnanf-nolibm.c test-isnanl-nolibm.c test-locale.c \
$(test_locale_language_SOURCES) test-localename.c \
test-malloca.c test-math.c test-mbrtowc.c test-mbsinit.c \
test-memchr.c $(test_mirror_SOURCES) $(test_nfc_SOURCES) \
$(test_nfd_SOURCES) $(test_nfkc_SOURCES) $(test_nfkd_SOURCES) \
- $(test_numeric_SOURCES) $(test_pr_alphabetic_SOURCES) \
+ $(test_numeric_SOURCES) test-open.c \
+ $(test_pr_alphabetic_SOURCES) \
$(test_pr_ascii_hex_digit_SOURCES) \
$(test_pr_bidi_arabic_digit_SOURCES) \
$(test_pr_bidi_arabic_right_to_left_SOURCES) \
@@ -2474,9 +2504,10 @@ DIST_SOURCES = $(libtests_a_SOURCES) $(EXTRA_libtests_a_SOURCES) \
$(test_pr_xid_start_SOURCES) $(test_pr_zero_width_SOURCES) \
test-printf-frexp.c test-printf-frexpl.c \
$(test_scripts_SOURCES) test-signbit.c test-stdbool.c \
- test-stdint.c test-stdlib.c test-strerror.c test-striconveh.c \
- test-striconveha.c test-string.c $(test_sy_c_ident_SOURCES) \
- $(test_sy_c_whitespace_SOURCES) $(test_sy_java_ident_SOURCES) \
+ test-stddef.c test-stdint.c test-stdlib.c test-strerror.c \
+ test-striconveh.c test-striconveha.c test-string.c \
+ $(test_sy_c_ident_SOURCES) $(test_sy_c_whitespace_SOURCES) \
+ $(test_sy_java_ident_SOURCES) \
$(test_sy_java_whitespace_SOURCES) \
$(test_u16_asnprintf1_SOURCES) $(test_u16_casecmp_SOURCES) \
$(test_u16_casecoll_SOURCES) $(test_u16_casefold_SOURCES) \
@@ -2649,6 +2680,7 @@ EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
ERRNO_H = @ERRNO_H@
EXEEXT = @EXEEXT@
+FCNTL_H = @FCNTL_H@
FGREP = @FGREP@
FLOAT_H = @FLOAT_H@
GLIBC21 = @GLIBC21@
@@ -2716,6 +2748,7 @@ GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_OPEN = @GNULIB_OPEN@
GNULIB_PUTENV = @GNULIB_PUTENV@
GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
@@ -2748,6 +2781,7 @@ GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
GNULIB_TRUNC = @GNULIB_TRUNC@
GNULIB_TRUNCF = @GNULIB_TRUNCF@
GNULIB_TRUNCL = @GNULIB_TRUNCL@
+GNULIB_UNISTD_H_GETOPT = @GNULIB_UNISTD_H_GETOPT@
GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
GNULIB_UNSETENV = @GNULIB_UNSETENV@
GNULIB_WCRTOMB = @GNULIB_WCRTOMB@
@@ -2846,6 +2880,7 @@ HAVE_UNISTD_H = @HAVE_UNISTD_H@
HAVE_UNSETENV = @HAVE_UNSETENV@
HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
HAVE_WCRTOMB = @HAVE_WCRTOMB@
HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@
HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@
@@ -2886,10 +2921,12 @@ MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NAMESPACING = @NAMESPACING@
NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@
NEXT_AS_FIRST_DIRECTIVE_ICONV_H = @NEXT_AS_FIRST_DIRECTIVE_ICONV_H@
NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@
NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
@@ -2897,10 +2934,12 @@ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@
NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@
NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
NEXT_FLOAT_H = @NEXT_FLOAT_H@
NEXT_ICONV_H = @NEXT_ICONV_H@
NEXT_LOCALE_H = @NEXT_LOCALE_H@
NEXT_MATH_H = @NEXT_MATH_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
NEXT_STDINT_H = @NEXT_STDINT_H@
NEXT_STDLIB_H = @NEXT_STDLIB_H@
NEXT_STRING_H = @NEXT_STRING_H@
@@ -2918,6 +2957,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
@@ -2931,6 +2971,7 @@ REPLACE_CEILF = @REPLACE_CEILF@
REPLACE_CEILL = @REPLACE_CEILL@
REPLACE_CHOWN = @REPLACE_CHOWN@
REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_DUP2 = @REPLACE_DUP2@
REPLACE_FCHDIR = @REPLACE_FCHDIR@
REPLACE_FLOORF = @REPLACE_FLOORF@
REPLACE_FLOORL = @REPLACE_FLOORL@
@@ -2959,6 +3000,8 @@ REPLACE_MEMCHR = @REPLACE_MEMCHR@
REPLACE_MEMMEM = @REPLACE_MEMMEM@
REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
REPLACE_NAN = @REPLACE_NAN@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OPEN = @REPLACE_OPEN@
REPLACE_PUTENV = @REPLACE_PUTENV@
REPLACE_ROUND = @REPLACE_ROUND@
REPLACE_ROUNDF = @REPLACE_ROUNDF@
@@ -2984,10 +3027,12 @@ SHELL = @SHELL@
SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
STDINT_H = @STDINT_H@
STRIP = @STRIP@
TEXI2DVI = @TEXI2DVI@
UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
VERSION = @VERSION@
VOID_UNSETENV = @VOID_UNSETENV@
WCHAR_H = @WCHAR_H@
@@ -3084,16 +3129,17 @@ noinst_LIBRARIES =
check_LIBRARIES = libtests.a
EXTRA_DIST = test-alloca-opt.c test-array-mergesort.c test-c-ctype.c \
test-c-strcase.sh test-c-strcasecmp.c test-c-strncasecmp.c \
- test-environ.c test-errno.c error.c error.h exitfail.c \
- exitfail.h test-frexpl.c test-fseterr.c test-iconv.c \
- intprops.h test-isnand-nolibm.c test-isnand.h nan.h \
- test-isnanf-nolibm.c test-isnanf.h nan.h test-isnanl-nolibm.c \
- test-isnanl.h nan.h locale.in.h test-locale.c \
- test-localename.c test-malloca.c test-math.c test-mbrtowc1.sh \
- test-mbrtowc2.sh test-mbrtowc3.sh test-mbrtowc4.sh \
- test-mbrtowc.c test-mbsinit.sh test-mbsinit.c test-memchr.c \
- zerosize-ptr.h test-printf-frexp.c test-printf-frexpl.c \
- setenv.c test-signbit.c test-stdbool.c test-stdint.c \
+ test-dup2.c test-environ.c test-errno.c error.c error.h \
+ exitfail.c exitfail.h fcntl.in.h test-fcntl.c test-frexpl.c \
+ test-fseterr.c test-iconv.c intprops.h test-isnand-nolibm.c \
+ test-isnand.h nan.h test-isnanf-nolibm.c test-isnanf.h nan.h \
+ test-isnanl-nolibm.c test-isnanl.h nan.h locale.in.h \
+ test-locale.c test-localename.c test-malloca.c test-math.c \
+ test-mbrtowc1.sh test-mbrtowc2.sh test-mbrtowc3.sh \
+ test-mbrtowc4.sh test-mbrtowc.c test-mbsinit.sh test-mbsinit.c \
+ test-memchr.c zerosize-ptr.h open.c test-open.c \
+ test-printf-frexp.c test-printf-frexpl.c setenv.c \
+ test-signbit.c test-stdbool.c test-stddef.c test-stdint.c \
test-stdlib.c strerror.c test-strerror.c test-striconveh.c \
test-striconveha.c test-string.c unicase/test-cased.c \
unicase/test-predicate-part1.h unicase/test-predicate-part2.h \
@@ -3550,9 +3596,10 @@ EXTRA_DIST = test-alloca-opt.c test-array-mergesort.c test-c-ctype.c \
uniwidth/test-uc_width.c uniwidth/test-uc_width2.c \
uniwidth/test-uc_width2.sh unsetenv.c test-wchar.c wctob.c \
test-wctype.c test-wcwidth.c xalloc.h xmalloc.c
-BUILT_SOURCES = $(LOCALE_H)
+BUILT_SOURCES = $(FCNTL_H) $(LOCALE_H)
SUFFIXES =
-MOSTLYCLEANFILES = core *.stackdump locale.h locale.h-t
+MOSTLYCLEANFILES = core *.stackdump fcntl.h fcntl.h-t locale.h \
+ locale.h-t
MOSTLYCLEANDIRS =
CLEANFILES =
DISTCLEANFILES =
@@ -3566,8 +3613,8 @@ LDADD = libtests.a ../lib/libunistring.la libtests.a $(LIBTESTS_LIBDEPS)
libtests_a_SOURCES = gettext.h progname.h progname.c xalloc-die.c
libtests_a_LIBADD = $(gltests_LIBOBJS)
libtests_a_DEPENDENCIES = $(gltests_LIBOBJS)
-EXTRA_libtests_a_SOURCES = error.c exitfail.c setenv.c strerror.c \
- unsetenv.c wctob.c xmalloc.c
+EXTRA_libtests_a_SOURCES = error.c exitfail.c open.c setenv.c \
+ strerror.c unsetenv.c wctob.c xmalloc.c
AM_LIBTOOLFLAGS = --preserve-dup-deps
test_frexpl_nolibm_SOURCES = test-frexpl.c
test_iconv_LDADD = $(LDADD) @LIBICONV@
@@ -4411,12 +4458,18 @@ unictype/test-digit.$(OBJEXT): unictype/$(am__dirstamp) \
test-digit$(EXEEXT): $(test_digit_OBJECTS) $(test_digit_DEPENDENCIES)
@rm -f test-digit$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_digit_OBJECTS) $(test_digit_LDADD) $(LIBS)
+test-dup2$(EXEEXT): $(test_dup2_OBJECTS) $(test_dup2_DEPENDENCIES)
+ @rm -f test-dup2$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_dup2_OBJECTS) $(test_dup2_LDADD) $(LIBS)
test-environ$(EXEEXT): $(test_environ_OBJECTS) $(test_environ_DEPENDENCIES)
@rm -f test-environ$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_environ_OBJECTS) $(test_environ_LDADD) $(LIBS)
test-errno$(EXEEXT): $(test_errno_OBJECTS) $(test_errno_DEPENDENCIES)
@rm -f test-errno$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_errno_OBJECTS) $(test_errno_LDADD) $(LIBS)
+test-fcntl$(EXEEXT): $(test_fcntl_OBJECTS) $(test_fcntl_DEPENDENCIES)
+ @rm -f test-fcntl$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_fcntl_OBJECTS) $(test_fcntl_LDADD) $(LIBS)
test-frexpl-nolibm$(EXEEXT): $(test_frexpl_nolibm_OBJECTS) $(test_frexpl_nolibm_DEPENDENCIES)
@rm -f test-frexpl-nolibm$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_frexpl_nolibm_OBJECTS) $(test_frexpl_nolibm_LDADD) $(LIBS)
@@ -4520,6 +4573,9 @@ unictype/test-numeric.$(OBJEXT): unictype/$(am__dirstamp) \
test-numeric$(EXEEXT): $(test_numeric_OBJECTS) $(test_numeric_DEPENDENCIES)
@rm -f test-numeric$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_numeric_OBJECTS) $(test_numeric_LDADD) $(LIBS)
+test-open$(EXEEXT): $(test_open_OBJECTS) $(test_open_DEPENDENCIES)
+ @rm -f test-open$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_open_OBJECTS) $(test_open_LDADD) $(LIBS)
unictype/test-pr_alphabetic.$(OBJEXT): unictype/$(am__dirstamp) \
unictype/$(DEPDIR)/$(am__dirstamp)
test-pr_alphabetic$(EXEEXT): $(test_pr_alphabetic_OBJECTS) $(test_pr_alphabetic_DEPENDENCIES)
@@ -4942,6 +4998,9 @@ test-signbit$(EXEEXT): $(test_signbit_OBJECTS) $(test_signbit_DEPENDENCIES)
test-stdbool$(EXEEXT): $(test_stdbool_OBJECTS) $(test_stdbool_DEPENDENCIES)
@rm -f test-stdbool$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_stdbool_OBJECTS) $(test_stdbool_LDADD) $(LIBS)
+test-stddef$(EXEEXT): $(test_stddef_OBJECTS) $(test_stddef_DEPENDENCIES)
+ @rm -f test-stddef$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(test_stddef_OBJECTS) $(test_stddef_LDADD) $(LIBS)
test-stdint$(EXEEXT): $(test_stdint_OBJECTS) $(test_stdint_DEPENDENCIES)
@rm -f test-stdint$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(test_stdint_OBJECTS) $(test_stdint_LDADD) $(LIBS)
@@ -5879,6 +5938,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/progname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setenv.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror.Po@am__quote@
@@ -5887,8 +5947,10 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-ctype.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strcasecmp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-c-strncasecmp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dup2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-environ.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-errno.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fcntl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-frexpl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-fseterr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-iconv.Po@am__quote@
@@ -5902,10 +5964,12 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbrtowc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-mbsinit.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-memchr.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-open.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-printf-frexp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-printf-frexpl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-signbit.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdbool.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stddef.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdint.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-stdlib.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-strerror.Po@am__quote@
@@ -6680,6 +6744,20 @@ uninstall-am:
tags-recursive uninstall uninstall-am
+# We need the following in order to create <fcntl.h> when the system
+# doesn't have one that works with the given compiler.
+fcntl.h: fcntl.in.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \
+ -e 's|@''GNULIB_OPEN''@|$(GNULIB_OPEN)|g' \
+ -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \
+ < $(srcdir)/fcntl.in.h; \
+ } > $@-t
+ mv $@-t $@
+
# We need the following in order to create <locale.h> when the system
# doesn't have one that provides all definitions.
locale.h: locale.in.h
diff --git a/tests/error.c b/tests/error.c
index 3177bd5..af2287b 100644
--- a/tests/error.c
+++ b/tests/error.c
@@ -1,5 +1,5 @@
/* Error handler for noninteractive utilities
- Copyright (C) 1990-1998, 2000-2007 Free Software Foundation, Inc.
+ Copyright (C) 1990-1998, 2000-2007, 2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software: you can redistribute it and/or modify
@@ -85,6 +85,8 @@ extern void __error_at_line (int status, int errnum, const char *file_name,
#else /* not _LIBC */
+# include <fcntl.h>
+
# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
# ifndef HAVE_DECL_STRERROR_R
"this configure-time declaration test was not run"
@@ -236,6 +238,12 @@ error (int status, int errnum, const char *message, ...)
0);
#endif
+#if !_LIBC && defined F_GETFL
+ /* POSIX states that fflush (stdout) after fclose is unspecified; it
+ is safe in glibc, but not on all other platforms. fflush (NULL)
+ is always defined, but too draconian. */
+ if (0 <= fcntl (1, F_GETFL))
+#endif
fflush (stdout);
#ifdef _LIBC
_IO_flockfile (stderr);
@@ -295,6 +303,12 @@ error_at_line (int status, int errnum, const char *file_name,
0);
#endif
+#if !_LIBC && defined F_GETFL
+ /* POSIX states that fflush (stdout) after fclose is unspecified; it
+ is safe in glibc, but not on all other platforms. fflush (NULL)
+ is always defined, but too draconian. */
+ if (0 <= fcntl (1, F_GETFL))
+#endif
fflush (stdout);
#ifdef _LIBC
_IO_flockfile (stderr);
diff --git a/tests/fcntl.in.h b/tests/fcntl.in.h
new file mode 100644
index 0000000..fd7520e
--- /dev/null
+++ b/tests/fcntl.in.h
@@ -0,0 +1,144 @@
+/* Like <fcntl.h>, but with non-working flags defined to 0.
+
+ Copyright (C) 2006-2008 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* written by Paul Eggert */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+
+#if defined __need_system_fcntl_h
+/* Special invocation convention. */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#@INCLUDE_NEXT@ @NEXT_FCNTL_H@
+
+#else
+/* Normal invocation convention. */
+
+#ifndef _GL_FCNTL_H
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_FCNTL_H@
+
+#ifndef _GL_FCNTL_H
+#define _GL_FCNTL_H
+
+
+/* Declare overridden functions. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if @GNULIB_OPEN@
+# if @REPLACE_OPEN@
+# undef open
+# define open rpl_open
+extern int open (const char *filename, int flags, ...);
+# endif
+#endif
+
+#ifdef FCHDIR_REPLACEMENT
+/* gnulib internal function. */
+extern void _gl_register_fd (int fd, const char *filename);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* Fix up the O_* macros. */
+
+#if !defined O_DIRECT && defined O_DIRECTIO
+/* Tru64 spells it `O_DIRECTIO'. */
+# define O_DIRECT O_DIRECTIO
+#endif
+
+#ifndef O_DIRECT
+# define O_DIRECT 0
+#endif
+
+#ifndef O_DIRECTORY
+# define O_DIRECTORY 0
+#endif
+
+#ifndef O_DSYNC
+# define O_DSYNC 0
+#endif
+
+#ifndef O_NDELAY
+# define O_NDELAY 0
+#endif
+
+#ifndef O_NOATIME
+# define O_NOATIME 0
+#endif
+
+#ifndef O_NONBLOCK
+# define O_NONBLOCK O_NDELAY
+#endif
+
+#ifndef O_NOCTTY
+# define O_NOCTTY 0
+#endif
+
+#ifndef O_NOFOLLOW
+# define O_NOFOLLOW 0
+#endif
+
+#ifndef O_NOLINKS
+# define O_NOLINKS 0
+#endif
+
+#ifndef O_RSYNC
+# define O_RSYNC 0
+#endif
+
+#ifndef O_SYNC
+# define O_SYNC 0
+#endif
+
+/* For systems that distinguish between text and binary I/O.
+ O_BINARY is usually declared in fcntl.h */
+#if !defined O_BINARY && defined _O_BINARY
+ /* For MSC-compatible compilers. */
+# define O_BINARY _O_BINARY
+# define O_TEXT _O_TEXT
+#endif
+
+#if defined __BEOS__ || defined __HAIKU__
+ /* BeOS 5 and Haiku have O_BINARY and O_TEXT, but they have no effect. */
+# undef O_BINARY
+# undef O_TEXT
+#endif
+
+#ifndef O_BINARY
+# define O_BINARY 0
+# define O_TEXT 0
+#endif
+
+
+#endif /* _GL_FCNTL_H */
+#endif /* _GL_FCNTL_H */
+#endif
diff --git a/tests/locale.in.h b/tests/locale.in.h
index 10629f6..0557c9f 100644
--- a/tests/locale.in.h
+++ b/tests/locale.in.h
@@ -1,5 +1,5 @@
/* A POSIX <locale.h>.
- Copyright (C) 2007-2008 Free Software Foundation, Inc.
+ Copyright (C) 2007-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -26,6 +26,9 @@
#ifndef _GL_LOCALE_H
#define _GL_LOCALE_H
+/* NetBSD 5.0 mis-defines NULL. */
+#include <stddef.h>
+
/* The LC_MESSAGES locale category is specified in POSIX, but not in ISO C.
On systems that don't define it, use the same value as GNU libintl. */
#if !defined LC_MESSAGES
diff --git a/tests/open.c b/tests/open.c
new file mode 100644
index 0000000..326e6d1
--- /dev/null
+++ b/tests/open.c
@@ -0,0 +1,137 @@
+/* Open a descriptor to a file.
+ Copyright (C) 2007-2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+/* Get the original definition of open. It might be defined as a macro. */
+#define __need_system_fcntl_h
+#include <fcntl.h>
+#undef __need_system_fcntl_h
+#include <sys/types.h>
+
+static inline int
+orig_open (const char *filename, int flags, mode_t mode)
+{
+ return open (filename, flags, mode);
+}
+
+/* Specification. */
+#include <fcntl.h>
+
+#include <errno.h>
+#include <stdarg.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+int
+open (const char *filename, int flags, ...)
+{
+ mode_t mode;
+ int fd;
+
+ mode = 0;
+ if (flags & O_CREAT)
+ {
+ va_list arg;
+ va_start (arg, flags);
+
+ /* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4
+ creates crashing code when 'mode_t' is smaller than 'int'. */
+ mode = va_arg (arg, PROMOTED_MODE_T);
+
+ va_end (arg);
+ }
+
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+ if (strcmp (filename, "/dev/null") == 0)
+ filename = "NUL";
+#endif
+
+#if OPEN_TRAILING_SLASH_BUG
+ /* If the filename ends in a slash and one of O_CREAT, O_WRONLY, O_RDWR
+ is specified, then fail.
+ Rationale: POSIX <http://www.opengroup.org/susv3/basedefs/xbd_chap04.html>
+ says that
+ "A pathname that contains at least one non-slash character and that
+ ends with one or more trailing slashes shall be resolved as if a
+ single dot character ( '.' ) were appended to the pathname."
+ and
+ "The special filename dot shall refer to the directory specified by
+ its predecessor."
+ If the named file already exists as a directory, then
+ - if O_CREAT is specified, open() must fail because of the semantics
+ of O_CREAT,
+ - if O_WRONLY or O_RDWR is specified, open() must fail because POSIX
+ <http://www.opengroup.org/susv3/functions/open.html> says that it
+ fails with errno = EISDIR in this case.
+ If the named file does not exist or does not name a directory, then
+ - if O_CREAT is specified, open() must fail since open() cannot create
+ directories,
+ - if O_WRONLY or O_RDWR is specified, open() must fail because the
+ file does not contain a '.' directory. */
+ if (flags & (O_CREAT | O_WRONLY | O_RDWR))
+ {
+ size_t len = strlen (filename);
+ if (len > 0 && filename[len - 1] == '/')
+ {
+ errno = EISDIR;
+ return -1;
+ }
+ }
+#endif
+
+ fd = orig_open (filename, flags, mode);
+
+#if OPEN_TRAILING_SLASH_BUG
+ /* If the filename ends in a slash and fd does not refer to a directory,
+ then fail.
+ Rationale: POSIX <http://www.opengroup.org/susv3/basedefs/xbd_chap04.html>
+ says that
+ "A pathname that contains at least one non-slash character and that
+ ends with one or more trailing slashes shall be resolved as if a
+ single dot character ( '.' ) were appended to the pathname."
+ and
+ "The special filename dot shall refer to the directory specified by
+ its predecessor."
+ If the named file without the slash is not a directory, open() must fail
+ with ENOTDIR. */
+ if (fd >= 0)
+ {
+ size_t len = strlen (filename);
+ if (len > 0 && filename[len - 1] == '/')
+ {
+ struct stat statbuf;
+
+ if (fstat (fd, &statbuf) >= 0 && !S_ISDIR (statbuf.st_mode))
+ {
+ close (fd);
+ errno = ENOTDIR;
+ return -1;
+ }
+ }
+ }
+#endif
+
+#ifdef FCHDIR_REPLACEMENT
+ if (fd >= 0)
+ _gl_register_fd (fd, filename);
+#endif
+
+ return fd;
+}
diff --git a/tests/test-dup2.c b/tests/test-dup2.c
new file mode 100644
index 0000000..2009aaa
--- /dev/null
+++ b/tests/test-dup2.c
@@ -0,0 +1,121 @@
+/* Test duplicating file descriptors.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Eric Blake <ebb9@byu.net>, 2009. */
+
+#include <config.h>
+
+#include <unistd.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+/* Get declarations of the Win32 API functions. */
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+#endif
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+/* Return non-zero if FD is open. */
+static int
+is_open (int fd)
+{
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+ /* On Win32, the initial state of unassigned standard file
+ descriptors is that they are open but point to an
+ INVALID_HANDLE_VALUE, and there is no fcntl. */
+ return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE;
+#else
+# ifndef F_GETFL
+# error Please port fcntl to your platform
+# endif
+ return 0 <= fcntl (fd, F_GETFL);
+#endif
+}
+
+int
+main ()
+{
+ const char *file = "test-dup2.tmp";
+ char buffer[1];
+ int fd = open (file, O_CREAT | O_RDWR, 0600);
+
+ /* Assume std descriptors were provided by invoker. */
+ ASSERT (STDERR_FILENO < fd);
+ ASSERT (is_open (fd));
+ /* Ignore any other fd's leaked into this process. */
+ close (fd + 1);
+ close (fd + 2);
+ ASSERT (!is_open (fd + 1));
+ ASSERT (!is_open (fd + 2));
+
+ /* Assigning to self must be a no-op. */
+ ASSERT (dup2 (fd, fd) == fd);
+ ASSERT (is_open (fd));
+
+ /* If the source is not open, then the destination is unaffected. */
+ errno = 0;
+ ASSERT (dup2 (fd + 1, fd + 1) == -1);
+ ASSERT (errno == EBADF);
+ ASSERT (!is_open (fd + 1));
+ errno = 0;
+ ASSERT (dup2 (fd + 1, fd) == -1);
+ ASSERT (errno == EBADF);
+ ASSERT (is_open (fd));
+
+ /* The destination must be valid. */
+ errno = 0;
+ ASSERT (dup2 (fd, -2) == -1);
+ ASSERT (errno == EBADF);
+
+ /* Using dup2 can skip fds. */
+ ASSERT (dup2 (fd, fd + 2) == fd + 2);
+ ASSERT (is_open (fd));
+ ASSERT (!is_open (fd + 1));
+ ASSERT (is_open (fd + 2));
+
+ /* Prove that dup2 closes the previous occupant of a fd. */
+ ASSERT (open ("/dev/null", O_WRONLY, 0600) == fd + 1);
+ ASSERT (dup2 (fd + 1, fd) == fd);
+ ASSERT (close (fd + 1) == 0);
+ ASSERT (write (fd, "1", 1) == 1);
+ ASSERT (dup2 (fd + 2, fd) == fd);
+ ASSERT (write (fd + 2, "2", 1) == 1);
+ ASSERT (lseek (fd, SEEK_SET, 0) == 0);
+ ASSERT (read (fd, buffer, 1) == 1);
+ ASSERT (*buffer == '2');
+
+ /* Clean up. */
+ ASSERT (close (fd + 2) == 0);
+ ASSERT (close (fd) == 0);
+ ASSERT (unlink (file) == 0);
+
+ return 0;
+}
diff --git a/tests/test-fcntl.c b/tests/test-fcntl.c
new file mode 100644
index 0000000..449984c
--- /dev/null
+++ b/tests/test-fcntl.c
@@ -0,0 +1,35 @@
+/* Test of <fcntl.h> substitute.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <fcntl.h>
+
+/* Check that the various O_* macros are defined. */
+int o = O_DIRECT | O_DIRECTORY | O_DSYNC | O_NDELAY | O_NOATIME | O_NONBLOCK
+ | O_NOCTTY | O_NOFOLLOW | O_NOLINKS | O_RSYNC | O_SYNC
+ | O_BINARY | O_TEXT;
+
+/* Check that the various SEEK_* macros are defined. */
+int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET };
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/tests/test-open.c b/tests/test-open.c
new file mode 100644
index 0000000..f7bb543
--- /dev/null
+++ b/tests/test-open.c
@@ -0,0 +1,47 @@
+/* Test of opening a file descriptor.
+ Copyright (C) 2007-2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
+
+#include <config.h>
+
+#include <fcntl.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ASSERT(expr) \
+ do \
+ { \
+ if (!(expr)) \
+ { \
+ fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
+ fflush (stderr); \
+ abort (); \
+ } \
+ } \
+ while (0)
+
+int
+main ()
+{
+ ASSERT (open ("nonexist.ent/", O_CREAT | O_RDONLY, 0600) < 0);
+ ASSERT (open ("/dev/null/", O_RDONLY) < 0);
+
+ ASSERT (open ("/dev/null", O_RDONLY) >= 0);
+
+ return 0;
+}
diff --git a/tests/test-stddef.c b/tests/test-stddef.c
new file mode 100644
index 0000000..f848498
--- /dev/null
+++ b/tests/test-stddef.c
@@ -0,0 +1,38 @@
+/* Test of <stddef.h> substitute.
+ Copyright (C) 2009 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Written by Eric Blake <ebb9@byu.net>, 2009. */
+
+#include <config.h>
+
+#include <stddef.h>
+
+#include "verify.h"
+
+/* Check that appropriate types are defined. */
+wchar_t a = 'c';
+ptrdiff_t b = 1;
+size_t c = 2;
+
+/* Check that NULL can be passed through varargs as a pointer type,
+ per POSIX 2008. */
+verify (sizeof NULL == sizeof (void *));
+
+int
+main ()
+{
+ return 0;
+}
diff --git a/tests/test-wchar.c b/tests/test-wchar.c
index 19da7d9..2866068 100644
--- a/tests/test-wchar.c
+++ b/tests/test-wchar.c
@@ -1,5 +1,5 @@
/* Test of <wchar.h> substitute.
- Copyright (C) 2007-2008 Free Software Foundation, Inc.
+ Copyright (C) 2007-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -20,10 +20,16 @@
#include <wchar.h>
+#include "verify.h"
+
/* Check that the types wchar_t and wint_t are defined. */
wchar_t a = 'c';
wint_t b = 'x';
+/* Check that NULL can be passed through varargs as a pointer type,
+ per POSIX 2008. */
+verify (sizeof NULL == sizeof (void *));
+
int
main ()
{
diff --git a/tests/uniconv/test-u16-conv-from-enc.c b/tests/uniconv/test-u16-conv-from-enc.c
index ac7617b..1d1594e 100644
--- a/tests/uniconv/test-u16-conv-from-enc.c
+++ b/tests/uniconv/test-u16-conv-from-enc.c
@@ -129,7 +129,7 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
/* Test conversions from autodetect_jp to UTF-16. */
for (h = 0; h < SIZEOF (handlers); h++)
{
diff --git a/tests/uniconv/test-u16-strconv-from-enc.c b/tests/uniconv/test-u16-strconv-from-enc.c
index f2f173a..492898d 100644
--- a/tests/uniconv/test-u16-strconv-from-enc.c
+++ b/tests/uniconv/test-u16-strconv-from-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion to UTF-16 from legacy encodings.
- Copyright (C) 2007-2008 Free Software Foundation, Inc.
+ Copyright (C) 2007-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -83,7 +83,7 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
/* Test conversions from autodetect_jp to UTF-16. */
for (h = 0; h < SIZEOF (handlers); h++)
{
diff --git a/tests/uniconv/test-u32-conv-from-enc.c b/tests/uniconv/test-u32-conv-from-enc.c
index 8f709f1..3464084 100644
--- a/tests/uniconv/test-u32-conv-from-enc.c
+++ b/tests/uniconv/test-u32-conv-from-enc.c
@@ -129,7 +129,7 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
/* Test conversions from autodetect_jp to UTF-16. */
for (h = 0; h < SIZEOF (handlers); h++)
{
diff --git a/tests/uniconv/test-u32-strconv-from-enc.c b/tests/uniconv/test-u32-strconv-from-enc.c
index 96af738..2c0e04b 100644
--- a/tests/uniconv/test-u32-strconv-from-enc.c
+++ b/tests/uniconv/test-u32-strconv-from-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion to UTF-32 from legacy encodings.
- Copyright (C) 2007-2008 Free Software Foundation, Inc.
+ Copyright (C) 2007-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -83,7 +83,7 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
/* Test conversions from autodetect_jp to UTF-16. */
for (h = 0; h < SIZEOF (handlers); h++)
{
diff --git a/tests/uniconv/test-u8-conv-from-enc.c b/tests/uniconv/test-u8-conv-from-enc.c
index 0768be6..ec8703c 100644
--- a/tests/uniconv/test-u8-conv-from-enc.c
+++ b/tests/uniconv/test-u8-conv-from-enc.c
@@ -124,7 +124,7 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
/* Test conversions from autodetect_jp to UTF-8. */
for (h = 0; h < SIZEOF (handlers); h++)
{
diff --git a/tests/uniconv/test-u8-strconv-from-enc.c b/tests/uniconv/test-u8-strconv-from-enc.c
index 7f70c29..8c32ee6 100644
--- a/tests/uniconv/test-u8-strconv-from-enc.c
+++ b/tests/uniconv/test-u8-strconv-from-enc.c
@@ -1,5 +1,5 @@
/* Test of conversion to UTF-8 from legacy encodings.
- Copyright (C) 2007-2008 Free Software Foundation, Inc.
+ Copyright (C) 2007-2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -74,7 +74,7 @@ main ()
}
/* autodetect_jp is only supported when iconv() support ISO-2022-JP-2. */
-# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__)
+# if defined _LIBICONV_VERSION || !(defined _AIX || defined __sgi || defined __hpux || defined __osf__ || defined __sun)
/* Test conversions from autodetect_jp to UTF-8. */
for (h = 0; h < SIZEOF (handlers); h++)
{