mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-30 16:35:24 +00:00
Add gnulib-tool unit tests.
* bootstrap: Re-add --with-tests, now that gnulib-tool arranges to use separate libraries for lib/ and tests/. * configure.in (AC_OUTPUT): Add gnulib/tests/Makefile.in. * Makefile.am (SUBDIRS): Add gnulib/tests. * gnulib/tests/Makefile.am: New file. * gnulib/lib/.cvsignore: Sort. * gnulib/lib/Makefile.am, gnulib/m4/getdelim.m4, gnulib/m4/getline.m4: * gnulib/m4/gnulib-cache.m4, gnulib/m4/gnulib-comp.m4: Regenerate. * gnulib/tests/test-alloca-opt.c: New file, from gnulib. * gnulib/tests/test-arpa_inet.c: Likewise. * gnulib/tests/test-fseeko.c: Likewise. * gnulib/tests/test-fseeko.sh: Likewise. * gnulib/tests/test-getaddrinfo.c: Likewise. * gnulib/tests/test-getdelim.c: Likewise. * gnulib/tests/test-getline.c: Likewise. * gnulib/tests/test-lseek.c: Likewise. * gnulib/tests/test-lseek.sh: Likewise. * gnulib/tests/test-netinet_in.c: Likewise. * gnulib/tests/test-snprintf.c: Likewise. * gnulib/tests/test-stdbool.c: Likewise. * gnulib/tests/test-stdint.c: Likewise. * gnulib/tests/test-stdio.c: Likewise. * gnulib/tests/test-stdlib.c: Likewise. * gnulib/tests/test-string.c: Likewise. * gnulib/tests/test-sys_select.c: Likewise. * gnulib/tests/test-sys_socket.c: Likewise. * gnulib/tests/test-sys_stat.c: Likewise. * gnulib/tests/test-sys_time.c: Likewise. * gnulib/tests/test-unistd.c: Likewise. * gnulib/tests/test-vasnprintf.c: Likewise. * gnulib/tests/test-vasprintf.c: Likewise. * gnulib/tests/test-wchar.c: Likewise. * gnulib/tests/dummy.c: Likewise. * gnulib/tests/intprops.h: Likewise. * gnulib/tests/verify.h: Likewise.
This commit is contained in:
parent
fd6ce1e637
commit
ac6bb7e131
39
ChangeLog
39
ChangeLog
@ -1,3 +1,42 @@
|
|||||||
|
Mon Dec 10 19:25:22 CET 2007 Jim Meyering <meyering@redhat.com>
|
||||||
|
|
||||||
|
Add gnulib-tool unit tests.
|
||||||
|
* bootstrap: Re-add --with-tests, now that gnulib-tool
|
||||||
|
arranges to use separate libraries for lib/ and tests/.
|
||||||
|
* configure.in (AC_OUTPUT): Add gnulib/tests/Makefile.in.
|
||||||
|
* Makefile.am (SUBDIRS): Add gnulib/tests.
|
||||||
|
* gnulib/tests/Makefile.am: New file.
|
||||||
|
* gnulib/lib/.cvsignore: Sort.
|
||||||
|
* gnulib/lib/Makefile.am, gnulib/m4/getdelim.m4, gnulib/m4/getline.m4:
|
||||||
|
* gnulib/m4/gnulib-cache.m4, gnulib/m4/gnulib-comp.m4: Regenerate.
|
||||||
|
* gnulib/tests/test-alloca-opt.c: New file, from gnulib.
|
||||||
|
* gnulib/tests/test-arpa_inet.c: Likewise.
|
||||||
|
* gnulib/tests/test-fseeko.c: Likewise.
|
||||||
|
* gnulib/tests/test-fseeko.sh: Likewise.
|
||||||
|
* gnulib/tests/test-getaddrinfo.c: Likewise.
|
||||||
|
* gnulib/tests/test-getdelim.c: Likewise.
|
||||||
|
* gnulib/tests/test-getline.c: Likewise.
|
||||||
|
* gnulib/tests/test-lseek.c: Likewise.
|
||||||
|
* gnulib/tests/test-lseek.sh: Likewise.
|
||||||
|
* gnulib/tests/test-netinet_in.c: Likewise.
|
||||||
|
* gnulib/tests/test-snprintf.c: Likewise.
|
||||||
|
* gnulib/tests/test-stdbool.c: Likewise.
|
||||||
|
* gnulib/tests/test-stdint.c: Likewise.
|
||||||
|
* gnulib/tests/test-stdio.c: Likewise.
|
||||||
|
* gnulib/tests/test-stdlib.c: Likewise.
|
||||||
|
* gnulib/tests/test-string.c: Likewise.
|
||||||
|
* gnulib/tests/test-sys_select.c: Likewise.
|
||||||
|
* gnulib/tests/test-sys_socket.c: Likewise.
|
||||||
|
* gnulib/tests/test-sys_stat.c: Likewise.
|
||||||
|
* gnulib/tests/test-sys_time.c: Likewise.
|
||||||
|
* gnulib/tests/test-unistd.c: Likewise.
|
||||||
|
* gnulib/tests/test-vasnprintf.c: Likewise.
|
||||||
|
* gnulib/tests/test-vasprintf.c: Likewise.
|
||||||
|
* gnulib/tests/test-wchar.c: Likewise.
|
||||||
|
* gnulib/tests/dummy.c: Likewise.
|
||||||
|
* gnulib/tests/intprops.h: Likewise.
|
||||||
|
* gnulib/tests/verify.h: Likewise.
|
||||||
|
|
||||||
Sat Dec 8 18:06:00 EST 2007 Daniel P. Berrange <berrange@redhat.com>
|
Sat Dec 8 18:06:00 EST 2007 Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
|
||||||
* gnulib/lib/arpa/inet.h: Remove autogenerated file
|
* gnulib/lib/arpa/inet.h: Remove autogenerated file
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
## Process this file with automake to produce Makefile.in
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
SUBDIRS = gnulib/lib include src qemud proxy docs \
|
SUBDIRS = gnulib/lib include src qemud proxy docs gnulib/tests \
|
||||||
@PYTHON_SUBDIR@ tests po scripts
|
@PYTHON_SUBDIR@ tests po scripts
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4 -I gnulib/m4
|
ACLOCAL_AMFLAGS = -I m4 -I gnulib/m4
|
||||||
|
@ -71,6 +71,7 @@ gnulib_tool=$GNULIB_SRCDIR/gnulib-tool
|
|||||||
|
|
||||||
$gnulib_tool \
|
$gnulib_tool \
|
||||||
--lgpl=2 \
|
--lgpl=2 \
|
||||||
|
--with-tests \
|
||||||
--m4-base=gnulib/m4 \
|
--m4-base=gnulib/m4 \
|
||||||
--source-base=gnulib/lib \
|
--source-base=gnulib/lib \
|
||||||
--tests-base=gnulib/tests \
|
--tests-base=gnulib/tests \
|
||||||
|
@ -678,6 +678,7 @@ AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \
|
|||||||
docs/examples/Makefile docs/devhelp/Makefile \
|
docs/examples/Makefile docs/devhelp/Makefile \
|
||||||
docs/examples/python/Makefile \
|
docs/examples/python/Makefile \
|
||||||
gnulib/lib/Makefile \
|
gnulib/lib/Makefile \
|
||||||
|
gnulib/tests/Makefile \
|
||||||
libvirt.pc libvirt.spec \
|
libvirt.pc libvirt.spec \
|
||||||
po/Makefile.in scripts/Makefile \
|
po/Makefile.in scripts/Makefile \
|
||||||
include/libvirt/Makefile include/libvirt/libvirt.h \
|
include/libvirt/Makefile include/libvirt/libvirt.h \
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
alloca.h
|
|
||||||
.deps
|
|
||||||
float.h
|
|
||||||
*.la
|
*.la
|
||||||
.libs
|
|
||||||
*.lo
|
*.lo
|
||||||
|
.deps
|
||||||
|
.libs
|
||||||
Makefile
|
Makefile
|
||||||
Makefile.in
|
Makefile.in
|
||||||
|
alloca.h
|
||||||
|
float.h
|
||||||
netinet_in.h
|
netinet_in.h
|
||||||
poll.h
|
poll.h
|
||||||
stdbool.h
|
stdbool.h
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
# the same distribution terms as the rest of that program.
|
# the same distribution terms as the rest of that program.
|
||||||
#
|
#
|
||||||
# Generated by gnulib-tool.
|
# Generated by gnulib-tool.
|
||||||
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --aux-dir=build-aux --lgpl=2 --libtool --macro-prefix=gl getaddrinfo getpass gettext physmem poll strndup strsep sys_stat vasprintf
|
# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=gl getaddrinfo getpass gettext physmem poll strndup strsep sys_stat vasprintf
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = 1.5 gnits
|
AUTOMAKE_OPTIONS = 1.5 gnits
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# getdelim.m4 serial 4
|
# getdelim.m4 serial 5
|
||||||
|
|
||||||
dnl Copyright (C) 2005, 2006, 2007 Free Software dnl Foundation, Inc.
|
dnl Copyright (C) 2005, 2006, 2007 Free Software dnl Foundation, Inc.
|
||||||
dnl
|
dnl
|
||||||
@ -6,6 +6,8 @@ dnl This file is free software; the Free Software Foundation
|
|||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
AC_PREREQ([2.59])
|
||||||
|
|
||||||
AC_DEFUN([gl_FUNC_GETDELIM],
|
AC_DEFUN([gl_FUNC_GETDELIM],
|
||||||
[
|
[
|
||||||
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
|
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# getline.m4 serial 17
|
# getline.m4 serial 18
|
||||||
|
|
||||||
dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007 Free
|
dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007 Free
|
||||||
dnl Software Foundation, Inc.
|
dnl Software Foundation, Inc.
|
||||||
@ -7,6 +7,8 @@ dnl This file is free software; the Free Software Foundation
|
|||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
AC_PREREQ([2.59])
|
||||||
|
|
||||||
dnl See if there's a working, system-supplied version of the getline function.
|
dnl See if there's a working, system-supplied version of the getline function.
|
||||||
dnl We can't just do AC_REPLACE_FUNCS(getline) because some systems
|
dnl We can't just do AC_REPLACE_FUNCS(getline) because some systems
|
||||||
dnl have a function by that name in -linet that doesn't have anything
|
dnl have a function by that name in -linet that doesn't have anything
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
|
|
||||||
# Specification in the form of a command-line invocation:
|
# Specification in the form of a command-line invocation:
|
||||||
# gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --aux-dir=build-aux --lgpl=2 --libtool --macro-prefix=gl getaddrinfo getpass gettext physmem poll strndup strsep sys_stat vasprintf
|
# gnulib-tool --import --dir=. --lib=libgnu --source-base=gnulib/lib --m4-base=gnulib/m4 --doc-base=doc --aux-dir=build-aux --with-tests --lgpl=2 --libtool --macro-prefix=gl getaddrinfo getpass gettext physmem poll strndup strsep sys_stat vasprintf
|
||||||
|
|
||||||
# Specification in the form of a few gnulib-tool.m4 macro invocations:
|
# Specification in the form of a few gnulib-tool.m4 macro invocations:
|
||||||
gl_LOCAL_DIR([])
|
gl_LOCAL_DIR([])
|
||||||
@ -26,6 +26,7 @@ gl_M4_BASE([gnulib/m4])
|
|||||||
gl_PO_BASE([])
|
gl_PO_BASE([])
|
||||||
gl_DOC_BASE([doc])
|
gl_DOC_BASE([doc])
|
||||||
gl_TESTS_BASE([gnulib/tests])
|
gl_TESTS_BASE([gnulib/tests])
|
||||||
|
gl_WITH_TESTS
|
||||||
gl_LIB([libgnu])
|
gl_LIB([libgnu])
|
||||||
gl_LGPL([2])
|
gl_LGPL([2])
|
||||||
gl_MAKEFILE_NAME([])
|
gl_MAKEFILE_NAME([])
|
||||||
|
@ -34,11 +34,11 @@ AC_DEFUN([gl_EARLY],
|
|||||||
# "Check for header files, types and library functions".
|
# "Check for header files, types and library functions".
|
||||||
AC_DEFUN([gl_INIT],
|
AC_DEFUN([gl_INIT],
|
||||||
[
|
[
|
||||||
|
AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
|
||||||
|
gl_cond_libtool=true
|
||||||
m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
|
m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
|
||||||
m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
|
m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
|
||||||
m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
|
m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
|
||||||
AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
|
|
||||||
gl_cond_libtool=true
|
|
||||||
gl_source_base='gnulib/lib'
|
gl_source_base='gnulib/lib'
|
||||||
gl_FUNC_ALLOCA
|
gl_FUNC_ALLOCA
|
||||||
gl_HEADER_ARPA_INET
|
gl_HEADER_ARPA_INET
|
||||||
@ -120,6 +120,34 @@ AC_DEFUN([gl_INIT],
|
|||||||
AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
|
AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
|
||||||
AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
|
AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
|
||||||
])
|
])
|
||||||
|
gltests_libdeps=
|
||||||
|
gltests_ltlibdeps=
|
||||||
|
m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ]))
|
||||||
|
m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS]))
|
||||||
|
m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
|
||||||
|
gl_source_base='gnulib/tests'
|
||||||
|
gt_TYPE_WCHAR_T
|
||||||
|
gt_TYPE_WINT_T
|
||||||
|
AC_CHECK_FUNCS([shutdown])
|
||||||
|
m4_popdef([AC_LIBSOURCES])
|
||||||
|
m4_popdef([AC_REPLACE_FUNCS])
|
||||||
|
m4_popdef([AC_LIBOBJ])
|
||||||
|
AC_CONFIG_COMMANDS_PRE([
|
||||||
|
gltests_libobjs=
|
||||||
|
gltests_ltlibobjs=
|
||||||
|
if test -n "$gltests_LIBOBJS"; then
|
||||||
|
# Remove the extension.
|
||||||
|
sed_drop_objext='s/\.o$//;s/\.obj$//'
|
||||||
|
for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed "$sed_drop_objext" | sort | uniq`; do
|
||||||
|
gltests_libobjs="$gltests_libobjs $i.$ac_objext"
|
||||||
|
gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs])
|
||||||
|
AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs])
|
||||||
|
])
|
||||||
|
LIBTESTS_LIBDEPS="$gltests_libdeps"
|
||||||
|
AC_SUBST([LIBTESTS_LIBDEPS])
|
||||||
])
|
])
|
||||||
|
|
||||||
# Like AC_LIBOBJ, except that the module name goes
|
# Like AC_LIBOBJ, except that the module name goes
|
||||||
@ -150,6 +178,34 @@ AC_DEFUN([gl_LIBSOURCES], [
|
|||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# Like AC_LIBOBJ, except that the module name goes
|
||||||
|
# into gltests_LIBOBJS instead of into LIBOBJS.
|
||||||
|
AC_DEFUN([gltests_LIBOBJ], [
|
||||||
|
AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl
|
||||||
|
gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext"
|
||||||
|
])
|
||||||
|
|
||||||
|
# Like AC_REPLACE_FUNCS, except that the module name goes
|
||||||
|
# into gltests_LIBOBJS instead of into LIBOBJS.
|
||||||
|
AC_DEFUN([gltests_REPLACE_FUNCS], [
|
||||||
|
m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
|
||||||
|
AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)])
|
||||||
|
])
|
||||||
|
|
||||||
|
# Like AC_LIBSOURCES, except the directory where the source file is
|
||||||
|
# expected is derived from the gnulib-tool parametrization,
|
||||||
|
# and alloca is special cased (for the alloca-opt module).
|
||||||
|
# We could also entirely rely on EXTRA_lib..._SOURCES.
|
||||||
|
AC_DEFUN([gltests_LIBSOURCES], [
|
||||||
|
m4_foreach([_gl_NAME], [$1], [
|
||||||
|
m4_if(_gl_NAME, [alloca.c], [], [
|
||||||
|
m4_syscmd([test -r gnulib/tests/]_gl_NAME[ || test ! -d gnulib/tests])dnl
|
||||||
|
m4_if(m4_sysval, [0], [],
|
||||||
|
[AC_FATAL([missing gnulib/tests/]_gl_NAME)])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
# This macro records the list of files which have been installed by
|
# This macro records the list of files which have been installed by
|
||||||
# gnulib-tool and may be removed by future gnulib-tool invocations.
|
# gnulib-tool and may be removed by future gnulib-tool invocations.
|
||||||
AC_DEFUN([gl_FILE_LIST], [
|
AC_DEFUN([gl_FILE_LIST], [
|
||||||
@ -278,4 +334,31 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||||||
m4/wchar_t.m4
|
m4/wchar_t.m4
|
||||||
m4/wint_t.m4
|
m4/wint_t.m4
|
||||||
m4/xsize.m4
|
m4/xsize.m4
|
||||||
|
tests/test-alloca-opt.c
|
||||||
|
tests/test-arpa_inet.c
|
||||||
|
tests/test-fseeko.c
|
||||||
|
tests/test-fseeko.sh
|
||||||
|
tests/test-getaddrinfo.c
|
||||||
|
tests/test-getdelim.c
|
||||||
|
tests/test-getline.c
|
||||||
|
tests/test-lseek.c
|
||||||
|
tests/test-lseek.sh
|
||||||
|
tests/test-netinet_in.c
|
||||||
|
tests/test-snprintf.c
|
||||||
|
tests/test-stdbool.c
|
||||||
|
tests/test-stdint.c
|
||||||
|
tests/test-stdio.c
|
||||||
|
tests/test-stdlib.c
|
||||||
|
tests/test-string.c
|
||||||
|
tests/test-sys_select.c
|
||||||
|
tests/test-sys_socket.c
|
||||||
|
tests/test-sys_stat.c
|
||||||
|
tests/test-sys_time.c
|
||||||
|
tests/test-unistd.c
|
||||||
|
tests/test-vasnprintf.c
|
||||||
|
tests/test-vasprintf.c
|
||||||
|
tests/test-wchar.c
|
||||||
|
tests=lib/dummy.c
|
||||||
|
tests=lib/intprops.h
|
||||||
|
tests=lib/verify.h
|
||||||
])
|
])
|
||||||
|
271
gnulib/tests/Makefile.am
Normal file
271
gnulib/tests/Makefile.am
Normal file
@ -0,0 +1,271 @@
|
|||||||
|
## DO NOT EDIT! GENERATED AUTOMATICALLY!
|
||||||
|
## Process this file with automake to produce Makefile.in.
|
||||||
|
# Copyright (C) 2004-2007 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This file is free software, distributed under the terms of the GNU
|
||||||
|
# General Public License. As a special exception to the GNU General
|
||||||
|
# Public License, this file may be distributed as part of a program
|
||||||
|
# that contains a configuration script generated by Autoconf, under
|
||||||
|
# the same distribution terms as the rest of that program.
|
||||||
|
#
|
||||||
|
# Generated by gnulib-tool.
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = 1.5 foreign
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
TESTS =
|
||||||
|
TESTS_ENVIRONMENT =
|
||||||
|
noinst_PROGRAMS =
|
||||||
|
check_PROGRAMS =
|
||||||
|
noinst_HEADERS =
|
||||||
|
noinst_LIBRARIES =
|
||||||
|
check_LIBRARIES = libtests.a
|
||||||
|
EXTRA_DIST =
|
||||||
|
BUILT_SOURCES =
|
||||||
|
SUFFIXES =
|
||||||
|
MOSTLYCLEANFILES = core *.stackdump
|
||||||
|
MOSTLYCLEANDIRS =
|
||||||
|
CLEANFILES =
|
||||||
|
DISTCLEANFILES =
|
||||||
|
MAINTAINERCLEANFILES =
|
||||||
|
|
||||||
|
AM_CPPFLAGS = \
|
||||||
|
-I. -I$(srcdir) \
|
||||||
|
-I../.. -I$(srcdir)/../.. \
|
||||||
|
-I../../gnulib/lib -I$(srcdir)/../../gnulib/lib
|
||||||
|
|
||||||
|
LDADD = libtests.a $(LIBTESTS_LIBDEPS) ../../gnulib/lib/libgnu.la
|
||||||
|
|
||||||
|
libtests_a_SOURCES =
|
||||||
|
libtests_a_LIBADD = $(gltests_LIBOBJS)
|
||||||
|
libtests_a_DEPENDENCIES = $(gltests_LIBOBJS)
|
||||||
|
EXTRA_libtests_a_SOURCES =
|
||||||
|
|
||||||
|
## begin gnulib module alloca-opt-tests
|
||||||
|
|
||||||
|
TESTS += test-alloca-opt
|
||||||
|
check_PROGRAMS += test-alloca-opt
|
||||||
|
|
||||||
|
EXTRA_DIST += test-alloca-opt.c
|
||||||
|
|
||||||
|
## end gnulib module alloca-opt-tests
|
||||||
|
|
||||||
|
## begin gnulib module arpa_inet-tests
|
||||||
|
|
||||||
|
TESTS += test-arpa_inet
|
||||||
|
check_PROGRAMS += test-arpa_inet
|
||||||
|
|
||||||
|
EXTRA_DIST += test-arpa_inet.c
|
||||||
|
|
||||||
|
## end gnulib module arpa_inet-tests
|
||||||
|
|
||||||
|
## begin gnulib module fseeko-tests
|
||||||
|
|
||||||
|
TESTS += test-fseeko.sh
|
||||||
|
TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' srcdir='$(srcdir)'
|
||||||
|
check_PROGRAMS += test-fseeko
|
||||||
|
EXTRA_DIST += test-fseeko.c test-fseeko.sh
|
||||||
|
|
||||||
|
## end gnulib module fseeko-tests
|
||||||
|
|
||||||
|
## begin gnulib module getaddrinfo-tests
|
||||||
|
|
||||||
|
TESTS += test-getaddrinfo
|
||||||
|
check_PROGRAMS += test-getaddrinfo
|
||||||
|
|
||||||
|
EXTRA_DIST += test-getaddrinfo.c
|
||||||
|
|
||||||
|
## end gnulib module getaddrinfo-tests
|
||||||
|
|
||||||
|
## begin gnulib module getdelim-tests
|
||||||
|
|
||||||
|
TESTS += test-getdelim
|
||||||
|
check_PROGRAMS += test-getdelim
|
||||||
|
MOSTLYCLEANFILES += test-getdelim.txt
|
||||||
|
EXTRA_DIST += test-getdelim.c
|
||||||
|
|
||||||
|
## end gnulib module getdelim-tests
|
||||||
|
|
||||||
|
## begin gnulib module getline-tests
|
||||||
|
|
||||||
|
TESTS += test-getline
|
||||||
|
check_PROGRAMS += test-getline
|
||||||
|
MOSTLYCLEANFILES += test-getline.txt
|
||||||
|
EXTRA_DIST += test-getline.c
|
||||||
|
|
||||||
|
## end gnulib module getline-tests
|
||||||
|
|
||||||
|
## begin gnulib module intprops
|
||||||
|
|
||||||
|
|
||||||
|
EXTRA_DIST += intprops.h
|
||||||
|
|
||||||
|
## end gnulib module intprops
|
||||||
|
|
||||||
|
## begin gnulib module lseek-tests
|
||||||
|
|
||||||
|
TESTS += test-lseek.sh
|
||||||
|
TESTS_ENVIRONMENT += EXEEXT='@EXEEXT@' srcdir='$(srcdir)'
|
||||||
|
check_PROGRAMS += test-lseek
|
||||||
|
EXTRA_DIST += test-lseek.c test-lseek.sh
|
||||||
|
|
||||||
|
## end gnulib module lseek-tests
|
||||||
|
|
||||||
|
## begin gnulib module netinet_in-tests
|
||||||
|
|
||||||
|
TESTS += test-netinet_in
|
||||||
|
check_PROGRAMS += test-netinet_in
|
||||||
|
|
||||||
|
EXTRA_DIST += test-netinet_in.c
|
||||||
|
|
||||||
|
## end gnulib module netinet_in-tests
|
||||||
|
|
||||||
|
## begin gnulib module snprintf-tests
|
||||||
|
|
||||||
|
TESTS += test-snprintf
|
||||||
|
check_PROGRAMS += test-snprintf
|
||||||
|
|
||||||
|
EXTRA_DIST += test-snprintf.c
|
||||||
|
|
||||||
|
## end gnulib module snprintf-tests
|
||||||
|
|
||||||
|
## begin gnulib module stdbool-tests
|
||||||
|
|
||||||
|
TESTS += test-stdbool
|
||||||
|
check_PROGRAMS += test-stdbool
|
||||||
|
|
||||||
|
EXTRA_DIST += test-stdbool.c
|
||||||
|
|
||||||
|
## end gnulib module stdbool-tests
|
||||||
|
|
||||||
|
## begin gnulib module stdint-tests
|
||||||
|
|
||||||
|
TESTS += test-stdint
|
||||||
|
check_PROGRAMS += test-stdint
|
||||||
|
|
||||||
|
EXTRA_DIST += test-stdint.c
|
||||||
|
|
||||||
|
## end gnulib module stdint-tests
|
||||||
|
|
||||||
|
## begin gnulib module stdio-tests
|
||||||
|
|
||||||
|
TESTS += test-stdio
|
||||||
|
check_PROGRAMS += test-stdio
|
||||||
|
|
||||||
|
EXTRA_DIST += test-stdio.c
|
||||||
|
|
||||||
|
## end gnulib module stdio-tests
|
||||||
|
|
||||||
|
## begin gnulib module stdlib-tests
|
||||||
|
|
||||||
|
TESTS += test-stdlib
|
||||||
|
check_PROGRAMS += test-stdlib
|
||||||
|
|
||||||
|
EXTRA_DIST += test-stdlib.c
|
||||||
|
|
||||||
|
## end gnulib module stdlib-tests
|
||||||
|
|
||||||
|
## begin gnulib module string-tests
|
||||||
|
|
||||||
|
TESTS += test-string
|
||||||
|
check_PROGRAMS += test-string
|
||||||
|
|
||||||
|
EXTRA_DIST += test-string.c
|
||||||
|
|
||||||
|
## end gnulib module string-tests
|
||||||
|
|
||||||
|
## begin gnulib module sys_select-tests
|
||||||
|
|
||||||
|
TESTS += test-sys_select
|
||||||
|
check_PROGRAMS += test-sys_select
|
||||||
|
|
||||||
|
EXTRA_DIST += test-sys_select.c
|
||||||
|
|
||||||
|
## end gnulib module sys_select-tests
|
||||||
|
|
||||||
|
## begin gnulib module sys_socket-tests
|
||||||
|
|
||||||
|
TESTS += test-sys_socket
|
||||||
|
check_PROGRAMS += test-sys_socket
|
||||||
|
|
||||||
|
EXTRA_DIST += test-sys_socket.c
|
||||||
|
|
||||||
|
## end gnulib module sys_socket-tests
|
||||||
|
|
||||||
|
## begin gnulib module sys_stat-tests
|
||||||
|
|
||||||
|
TESTS += test-sys_stat
|
||||||
|
check_PROGRAMS += test-sys_stat
|
||||||
|
|
||||||
|
EXTRA_DIST += test-sys_stat.c
|
||||||
|
|
||||||
|
## end gnulib module sys_stat-tests
|
||||||
|
|
||||||
|
## begin gnulib module sys_time-tests
|
||||||
|
|
||||||
|
TESTS += test-sys_time
|
||||||
|
check_PROGRAMS += test-sys_time
|
||||||
|
|
||||||
|
EXTRA_DIST += test-sys_time.c
|
||||||
|
|
||||||
|
## end gnulib module sys_time-tests
|
||||||
|
|
||||||
|
## begin gnulib module unistd-tests
|
||||||
|
|
||||||
|
TESTS += test-unistd
|
||||||
|
check_PROGRAMS += test-unistd
|
||||||
|
|
||||||
|
EXTRA_DIST += test-unistd.c
|
||||||
|
|
||||||
|
## end gnulib module unistd-tests
|
||||||
|
|
||||||
|
## begin gnulib module vasnprintf-tests
|
||||||
|
|
||||||
|
TESTS += test-vasnprintf
|
||||||
|
check_PROGRAMS += test-vasnprintf
|
||||||
|
|
||||||
|
EXTRA_DIST += test-vasnprintf.c
|
||||||
|
|
||||||
|
## end gnulib module vasnprintf-tests
|
||||||
|
|
||||||
|
## begin gnulib module vasprintf-tests
|
||||||
|
|
||||||
|
TESTS += test-vasprintf
|
||||||
|
check_PROGRAMS += test-vasprintf
|
||||||
|
|
||||||
|
EXTRA_DIST += test-vasprintf.c
|
||||||
|
|
||||||
|
## end gnulib module vasprintf-tests
|
||||||
|
|
||||||
|
## begin gnulib module verify
|
||||||
|
|
||||||
|
libtests_a_SOURCES += verify.h
|
||||||
|
|
||||||
|
## end gnulib module verify
|
||||||
|
|
||||||
|
## begin gnulib module wchar-tests
|
||||||
|
|
||||||
|
TESTS += test-wchar
|
||||||
|
check_PROGRAMS += test-wchar
|
||||||
|
|
||||||
|
EXTRA_DIST += test-wchar.c
|
||||||
|
|
||||||
|
## end gnulib module wchar-tests
|
||||||
|
|
||||||
|
## begin gnulib module dummy
|
||||||
|
|
||||||
|
libtests_a_SOURCES += dummy.c
|
||||||
|
|
||||||
|
## end gnulib module dummy
|
||||||
|
|
||||||
|
# Clean up after Solaris cc.
|
||||||
|
clean-local:
|
||||||
|
rm -rf SunWS_cache
|
||||||
|
|
||||||
|
mostlyclean-local: mostlyclean-generic
|
||||||
|
@for dir in '' $(MOSTLYCLEANDIRS); do \
|
||||||
|
if test -n "$$dir" && test -d $$dir; then \
|
||||||
|
echo "rmdir $$dir"; rmdir $$dir; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
:
|
42
gnulib/tests/dummy.c
Normal file
42
gnulib/tests/dummy.c
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/* A dummy file, to prevent empty libraries from breaking builds.
|
||||||
|
Copyright (C) 2004, 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/>. */
|
||||||
|
|
||||||
|
/* Some systems, reportedly OpenBSD and Mac OS X, refuse to create
|
||||||
|
libraries without any object files. You might get an error like:
|
||||||
|
|
||||||
|
> ar cru .libs/libgl.a
|
||||||
|
> ar: no archive members specified
|
||||||
|
|
||||||
|
Compiling this file, and adding its object file to the library, will
|
||||||
|
prevent the library from being empty. */
|
||||||
|
|
||||||
|
/* Some systems, such as Solaris with cc 5.0, refuse to work with libraries
|
||||||
|
that don't export any symbol. You might get an error like:
|
||||||
|
|
||||||
|
> cc ... libgnu.a
|
||||||
|
> ild: (bad file) garbled symbol table in archive ../gllib/libgnu.a
|
||||||
|
|
||||||
|
Compiling this file, and adding its object file to the library, will
|
||||||
|
prevent the library from exporting no symbols. */
|
||||||
|
|
||||||
|
#ifdef __sun
|
||||||
|
/* This declaration ensures that the library will export at least 1 symbol. */
|
||||||
|
int gl_dummy_symbol;
|
||||||
|
#else
|
||||||
|
/* This declaration is solely to ensure that after preprocessing
|
||||||
|
this file is never empty. */
|
||||||
|
typedef int dummy;
|
||||||
|
#endif
|
77
gnulib/tests/intprops.h
Normal file
77
gnulib/tests/intprops.h
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
/* intprops.h -- properties of integer types
|
||||||
|
|
||||||
|
Copyright (C) 2001, 2002, 2003, 2004, 2005 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. */
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
|
|
||||||
|
/* The extra casts in the following macros work around compiler bugs,
|
||||||
|
e.g., in Cray C 5.0.3.0. */
|
||||||
|
|
||||||
|
/* True if the arithmetic type T is an integer type. bool counts as
|
||||||
|
an integer. */
|
||||||
|
#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
|
||||||
|
|
||||||
|
/* True if negative values of the signed integer type T use two's
|
||||||
|
complement, ones' complement, or signed magnitude representation,
|
||||||
|
respectively. Much GNU code assumes two's complement, but some
|
||||||
|
people like to be portable to all possible C hosts. */
|
||||||
|
#define TYPE_TWOS_COMPLEMENT(t) ((t) ~ (t) 0 == (t) -1)
|
||||||
|
#define TYPE_ONES_COMPLEMENT(t) ((t) ~ (t) 0 == 0)
|
||||||
|
#define TYPE_SIGNED_MAGNITUDE(t) ((t) ~ (t) 0 < (t) -1)
|
||||||
|
|
||||||
|
/* True if the arithmetic type T is signed. */
|
||||||
|
#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
|
||||||
|
|
||||||
|
/* The maximum and minimum values for the integer type T. These
|
||||||
|
macros have undefined behavior if T is signed and has padding bits.
|
||||||
|
If this is a problem for you, please let us know how to fix it for
|
||||||
|
your host. */
|
||||||
|
#define TYPE_MINIMUM(t) \
|
||||||
|
((t) (! TYPE_SIGNED (t) \
|
||||||
|
? (t) 0 \
|
||||||
|
: TYPE_SIGNED_MAGNITUDE (t) \
|
||||||
|
? ~ (t) 0 \
|
||||||
|
: ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
|
||||||
|
#define TYPE_MAXIMUM(t) \
|
||||||
|
((t) (! TYPE_SIGNED (t) \
|
||||||
|
? (t) -1 \
|
||||||
|
: ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
|
||||||
|
|
||||||
|
/* Return zero if T can be determined to be an unsigned type.
|
||||||
|
Otherwise, return 1.
|
||||||
|
When compiling with GCC, INT_STRLEN_BOUND uses this macro to obtain a
|
||||||
|
tighter bound. Otherwise, it overestimates the true bound by one byte
|
||||||
|
when applied to unsigned types of size 2, 4, 16, ... bytes.
|
||||||
|
The symbol signed_type_or_expr__ is private to this header file. */
|
||||||
|
#if __GNUC__ >= 2
|
||||||
|
# define signed_type_or_expr__(t) TYPE_SIGNED (__typeof__ (t))
|
||||||
|
#else
|
||||||
|
# define signed_type_or_expr__(t) 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Bound on length of the string representing an integer type or expression T.
|
||||||
|
Subtract 1 for the sign bit if T is signed; log10 (2.0) < 146/485;
|
||||||
|
add 1 for integer division truncation; add 1 more for a minus sign
|
||||||
|
if needed. */
|
||||||
|
#define INT_STRLEN_BOUND(t) \
|
||||||
|
((sizeof (t) * CHAR_BIT - signed_type_or_expr__ (t)) * 146 / 485 \
|
||||||
|
+ signed_type_or_expr__ (t) + 1)
|
||||||
|
|
||||||
|
/* Bound on buffer size needed to represent an integer type or expression T,
|
||||||
|
including the terminating null. */
|
||||||
|
#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
|
62
gnulib/tests/test-alloca-opt.c
Normal file
62
gnulib/tests/test-alloca-opt.c
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/* Test of optional automatic memory allocation.
|
||||||
|
Copyright (C) 2005, 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 <alloca.h>
|
||||||
|
|
||||||
|
#if HAVE_ALLOCA
|
||||||
|
|
||||||
|
static void
|
||||||
|
do_allocation (int n)
|
||||||
|
{
|
||||||
|
void *ptr = alloca (n);
|
||||||
|
(void) ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void (*func) (int) = do_allocation;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
#if HAVE_ALLOCA
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Repeat a lot of times, to make sure there's no memory leak. */
|
||||||
|
for (i = 0; i < 100000; i++)
|
||||||
|
{
|
||||||
|
/* Try various values.
|
||||||
|
n = 0 gave a crash on Alpha with gcc-2.5.8.
|
||||||
|
Some versions of MacOS X have a stack size limit of 512 KB. */
|
||||||
|
func (34);
|
||||||
|
func (134);
|
||||||
|
func (399);
|
||||||
|
func (510823);
|
||||||
|
func (129321);
|
||||||
|
func (0);
|
||||||
|
func (4070);
|
||||||
|
func (4095);
|
||||||
|
func (1);
|
||||||
|
func (16582);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
27
gnulib/tests/test-arpa_inet.c
Normal file
27
gnulib/tests/test-arpa_inet.c
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/* Test of <arpa/inet.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 <arpa/inet.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
35
gnulib/tests/test-fseeko.c
Normal file
35
gnulib/tests/test-fseeko.c
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/* Test of fseeko() function.
|
||||||
|
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 <stdio.h>
|
||||||
|
|
||||||
|
/* Get off_t. */
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
/* Assume stdin is seekable iff argc > 1. */
|
||||||
|
int expected = argc > 1 ? 0 : -1;
|
||||||
|
/* Exit with success only if fseek/fseeko agree. */
|
||||||
|
int r1 = fseeko (stdin, (off_t)0, SEEK_CUR);
|
||||||
|
int r2 = fseek (stdin, (long)0, SEEK_CUR);
|
||||||
|
return ! (r1 == r2 && r1 == expected);
|
||||||
|
}
|
5
gnulib/tests/test-fseeko.sh
Executable file
5
gnulib/tests/test-fseeko.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
./test-fseeko${EXEEXT} 1 < "$srcdir/test-fseeko.sh" || exit 1
|
||||||
|
echo hi | ./test-fseeko${EXEEXT} || exit 1
|
||||||
|
exit 0
|
137
gnulib/tests/test-getaddrinfo.c
Normal file
137
gnulib/tests/test-getaddrinfo.c
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
/* Test the getaddrinfo module.
|
||||||
|
|
||||||
|
Copyright (C) 2006-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 Simon Josefsson. */
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
#include "getaddrinfo.h"
|
||||||
|
#include "inet_ntop.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* BeOS does not have AF_UNSPEC. */
|
||||||
|
#ifndef AF_UNSPEC
|
||||||
|
# define AF_UNSPEC 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef EAI_SERVICE
|
||||||
|
# define EAI_SERVICE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int simple (char *host, char *service)
|
||||||
|
{
|
||||||
|
char buf[BUFSIZ];
|
||||||
|
struct addrinfo hints;
|
||||||
|
struct addrinfo *ai0, *ai;
|
||||||
|
int res;
|
||||||
|
|
||||||
|
printf ("Finding %s service %s...\n", host, service);
|
||||||
|
|
||||||
|
/* This initializes "hints" but does not use it. Is there a reason
|
||||||
|
for this? If so, please fix this comment. */
|
||||||
|
memset (&hints, 0, sizeof (hints));
|
||||||
|
hints.ai_flags = AI_CANONNAME;
|
||||||
|
hints.ai_family = AF_UNSPEC;
|
||||||
|
hints.ai_socktype = SOCK_STREAM;
|
||||||
|
|
||||||
|
res = getaddrinfo (host, service, 0, &ai0);
|
||||||
|
|
||||||
|
printf ("res %d: %s\n", res, gai_strerror (res));
|
||||||
|
|
||||||
|
if (res != 0)
|
||||||
|
{
|
||||||
|
/* Solaris reports EAI_SERVICE for "http" and "https". Don't
|
||||||
|
fail the test merely because of this. */
|
||||||
|
if (res == EAI_SERVICE)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ai = ai0; ai; ai = ai->ai_next)
|
||||||
|
{
|
||||||
|
printf ("\tflags %x\n", ai->ai_flags);
|
||||||
|
printf ("\tfamily %x\n", ai->ai_family);
|
||||||
|
printf ("\tsocktype %x\n", ai->ai_socktype);
|
||||||
|
printf ("\tprotocol %x\n", ai->ai_protocol);
|
||||||
|
printf ("\taddrlen %ld: ", (unsigned long) ai->ai_addrlen);
|
||||||
|
printf ("\tFound %s\n",
|
||||||
|
inet_ntop (ai->ai_family,
|
||||||
|
&((struct sockaddr_in *)
|
||||||
|
ai->ai_addr)->sin_addr,
|
||||||
|
buf, sizeof (buf) - 1));
|
||||||
|
if (ai->ai_canonname)
|
||||||
|
printf ("\tFound %s...\n", ai->ai_canonname);
|
||||||
|
|
||||||
|
{
|
||||||
|
char ipbuf[BUFSIZ];
|
||||||
|
char portbuf[BUFSIZ];
|
||||||
|
|
||||||
|
res = getnameinfo (ai->ai_addr, ai->ai_addrlen,
|
||||||
|
ipbuf, sizeof (ipbuf) - 1,
|
||||||
|
portbuf, sizeof (portbuf) - 1,
|
||||||
|
NI_NUMERICHOST|NI_NUMERICSERV);
|
||||||
|
printf ("\t\tgetnameinfo %d: %s\n", res, gai_strerror (res));
|
||||||
|
if (res == 0)
|
||||||
|
{
|
||||||
|
printf ("\t\tip %s\n", ipbuf);
|
||||||
|
printf ("\t\tport %s\n", portbuf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
freeaddrinfo (ai0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define HOST1 "www.gnu.org"
|
||||||
|
#define SERV1 "http"
|
||||||
|
#define HOST2 "www.ibm.com"
|
||||||
|
#define SERV2 "https"
|
||||||
|
#define HOST3 "microsoft.com"
|
||||||
|
#define SERV3 "http"
|
||||||
|
#define HOST4 "google.org"
|
||||||
|
#define SERV4 "ldap"
|
||||||
|
|
||||||
|
int main (void)
|
||||||
|
{
|
||||||
|
#if _WIN32
|
||||||
|
{
|
||||||
|
WORD requested;
|
||||||
|
WSADATA data;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
requested = MAKEWORD (1, 1);
|
||||||
|
err = WSAStartup (requested, &data);
|
||||||
|
if (err != 0)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
if (data.wVersion < requested)
|
||||||
|
{
|
||||||
|
WSACleanup ();
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return simple (HOST1, SERV1)
|
||||||
|
+ simple (HOST2, SERV2)
|
||||||
|
+ simple (HOST3, SERV3)
|
||||||
|
+ simple (HOST4, SERV4);
|
||||||
|
}
|
89
gnulib/tests/test-getdelim.c
Normal file
89
gnulib/tests/test-getdelim.c
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
/* Test of getdelim() function.
|
||||||
|
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, 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, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||||
|
|
||||||
|
/* Written by Eric Blake <ebb9@byu.net>, 2007. */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define ASSERT(expr) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (!(expr)) \
|
||||||
|
{ \
|
||||||
|
fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
|
||||||
|
abort (); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
char *line = NULL;
|
||||||
|
size_t len = 0;
|
||||||
|
ssize_t result;
|
||||||
|
|
||||||
|
/* Create test file. */
|
||||||
|
f = fopen ("test-getdelim.txt", "wb");
|
||||||
|
if (!f || fwrite ("anbcnd\0f", 1, 8, f) != 8 || fclose (f) != 0)
|
||||||
|
{
|
||||||
|
fputs ("Failed to create sample file.\n", stderr);
|
||||||
|
remove ("test-getdelim.txt");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
f = fopen ("test-getdelim.txt", "rb");
|
||||||
|
if (!f)
|
||||||
|
{
|
||||||
|
fputs ("Failed to reopen sample file.\n", stderr);
|
||||||
|
remove ("test-getdelim.txt");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Test initial allocation, which must include trailing NUL. */
|
||||||
|
result = getdelim (&line, &len, 'n', f);
|
||||||
|
ASSERT (result == 2);
|
||||||
|
ASSERT (strcmp (line, "an") == 0);
|
||||||
|
ASSERT (2 < len);
|
||||||
|
|
||||||
|
/* Test growth of buffer. */
|
||||||
|
free (line);
|
||||||
|
line = malloc (1);
|
||||||
|
len = 1;
|
||||||
|
result = getdelim (&line, &len, 'n', f);
|
||||||
|
ASSERT (result == 3);
|
||||||
|
ASSERT (strcmp (line, "bcn") == 0);
|
||||||
|
ASSERT (3 < len);
|
||||||
|
|
||||||
|
/* Test embedded NULs and EOF behavior. */
|
||||||
|
result = getdelim (&line, &len, 'n', f);
|
||||||
|
ASSERT (result == 3);
|
||||||
|
ASSERT (memcmp (line, "d\0f", 4) == 0);
|
||||||
|
ASSERT (3 < len);
|
||||||
|
|
||||||
|
result = getdelim (&line, &len, 'n', f);
|
||||||
|
ASSERT (result == -1);
|
||||||
|
|
||||||
|
free (line);
|
||||||
|
fclose (f);
|
||||||
|
remove ("test-getdelim.txt");
|
||||||
|
return 0;
|
||||||
|
}
|
89
gnulib/tests/test-getline.c
Normal file
89
gnulib/tests/test-getline.c
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
/* Test of getline() function.
|
||||||
|
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, 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, write to the Free Software Foundation,
|
||||||
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
|
||||||
|
|
||||||
|
/* Written by Eric Blake <ebb9@byu.net>, 2007. */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define ASSERT(expr) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (!(expr)) \
|
||||||
|
{ \
|
||||||
|
fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
|
||||||
|
abort (); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
char *line = NULL;
|
||||||
|
size_t len = 0;
|
||||||
|
ssize_t result;
|
||||||
|
|
||||||
|
/* Create test file. */
|
||||||
|
f = fopen ("test-getline.txt", "wb");
|
||||||
|
if (!f || fwrite ("a\nbc\nd\0f", 1, 8, f) != 8 || fclose (f) != 0)
|
||||||
|
{
|
||||||
|
fputs ("Failed to create sample file.\n", stderr);
|
||||||
|
remove ("test-getline.txt");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
f = fopen ("test-getline.txt", "rb");
|
||||||
|
if (!f)
|
||||||
|
{
|
||||||
|
fputs ("Failed to reopen sample file.\n", stderr);
|
||||||
|
remove ("test-getline.txt");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Test initial allocation, which must include trailing NUL. */
|
||||||
|
result = getline (&line, &len, f);
|
||||||
|
ASSERT (result == 2);
|
||||||
|
ASSERT (strcmp (line, "a\n") == 0);
|
||||||
|
ASSERT (2 < len);
|
||||||
|
|
||||||
|
/* Test growth of buffer, must not leak. */
|
||||||
|
free (line);
|
||||||
|
line = malloc (1);
|
||||||
|
len = 0;
|
||||||
|
result = getline (&line, &len, f);
|
||||||
|
ASSERT (result == 3);
|
||||||
|
ASSERT (strcmp (line, "bc\n") == 0);
|
||||||
|
ASSERT (3 < len);
|
||||||
|
|
||||||
|
/* Test embedded NULs and EOF behavior. */
|
||||||
|
result = getline (&line, &len, f);
|
||||||
|
ASSERT (result == 3);
|
||||||
|
ASSERT (memcmp (line, "d\0f", 4) == 0);
|
||||||
|
ASSERT (3 < len);
|
||||||
|
|
||||||
|
result = getline (&line, &len, f);
|
||||||
|
ASSERT (result == -1);
|
||||||
|
|
||||||
|
free (line);
|
||||||
|
fclose (f);
|
||||||
|
remove ("test-getline.txt");
|
||||||
|
return 0;
|
||||||
|
}
|
102
gnulib/tests/test-lseek.c
Normal file
102
gnulib/tests/test-lseek.c
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
/* Test of lseek() function.
|
||||||
|
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 Eric Blake, 2007. */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#define ASSERT(expr) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (!(expr)) \
|
||||||
|
{ \
|
||||||
|
fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
|
||||||
|
abort (); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
|
||||||
|
/* ARGC must be 2; *ARGV[1] is '0' if stdin and stdout are files, '1'
|
||||||
|
if they are pipes, and '2' if they are closed. Check for proper
|
||||||
|
semantics of lseek. */
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
if (argc != 2)
|
||||||
|
return 2;
|
||||||
|
switch (*argv[1])
|
||||||
|
{
|
||||||
|
case '0': /* regular files */
|
||||||
|
ASSERT (lseek (0, (off_t)2, SEEK_SET) == 2);
|
||||||
|
ASSERT (lseek (0, (off_t)-4, SEEK_CUR) == -1);
|
||||||
|
ASSERT (errno == EINVAL);
|
||||||
|
errno = 0;
|
||||||
|
#if ! defined __BEOS__
|
||||||
|
/* POSIX says that the last lseek call, when failing, does not change
|
||||||
|
the current offset. But BeOS sets it to 0. */
|
||||||
|
ASSERT (lseek (0, (off_t)0, SEEK_CUR) == 2);
|
||||||
|
#endif
|
||||||
|
#if 0 /* leads to SIGSYS on IRIX 6.5 */
|
||||||
|
ASSERT (lseek (0, (off_t)0, (SEEK_SET | SEEK_CUR | SEEK_END) + 1) == -1);
|
||||||
|
ASSERT (errno == EINVAL);
|
||||||
|
#endif
|
||||||
|
ASSERT (lseek (1, (off_t)2, SEEK_SET) == 2);
|
||||||
|
errno = 0;
|
||||||
|
ASSERT (lseek (1, (off_t)-4, SEEK_CUR) == -1);
|
||||||
|
ASSERT (errno == EINVAL);
|
||||||
|
errno = 0;
|
||||||
|
#if ! defined __BEOS__
|
||||||
|
/* POSIX says that the last lseek call, when failing, does not change
|
||||||
|
the current offset. But BeOS sets it to 0. */
|
||||||
|
ASSERT (lseek (1, (off_t)0, SEEK_CUR) == 2);
|
||||||
|
#endif
|
||||||
|
#if 0 /* leads to SIGSYS on IRIX 6.5 */
|
||||||
|
ASSERT (lseek (1, (off_t)0, (SEEK_SET | SEEK_CUR | SEEK_END) + 1) == -1);
|
||||||
|
ASSERT (errno == EINVAL);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '1': /* pipes */
|
||||||
|
errno = 0;
|
||||||
|
ASSERT (lseek (0, (off_t)0, SEEK_CUR) == -1);
|
||||||
|
ASSERT (errno == ESPIPE);
|
||||||
|
errno = 0;
|
||||||
|
ASSERT (lseek (1, (off_t)0, SEEK_CUR) == -1);
|
||||||
|
ASSERT (errno == ESPIPE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '2': /* closed */
|
||||||
|
/* Explicitly close file descriptors 0 and 1. The <&- and >&- in the
|
||||||
|
invoking shell are not enough on HP-UX. */
|
||||||
|
close (0);
|
||||||
|
close (1);
|
||||||
|
errno = 0;
|
||||||
|
ASSERT (lseek (0, (off_t)0, SEEK_CUR) == -1);
|
||||||
|
ASSERT (errno == EBADF);
|
||||||
|
errno = 0;
|
||||||
|
ASSERT (lseek (1, (off_t)0, SEEK_CUR) == -1);
|
||||||
|
ASSERT (errno == EBADF);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
17
gnulib/tests/test-lseek.sh
Executable file
17
gnulib/tests/test-lseek.sh
Executable file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
tmpfiles=
|
||||||
|
trap 'rm -fr $tmpfiles' 1 2 3 15
|
||||||
|
|
||||||
|
tmpfiles=t-lseek.tmp
|
||||||
|
# seekable files
|
||||||
|
./test-lseek${EXEEXT} 0 < "$srcdir/test-lseek.sh" > t-lseek.tmp || exit 1
|
||||||
|
|
||||||
|
# pipes
|
||||||
|
echo hi | ./test-lseek${EXEEXT} 1 | cat || exit 1
|
||||||
|
|
||||||
|
# closed descriptors
|
||||||
|
./test-lseek${EXEEXT} 2 <&- >&- || exit 1
|
||||||
|
|
||||||
|
rm -rf $tmpfiles
|
||||||
|
exit 0
|
27
gnulib/tests/test-netinet_in.c
Normal file
27
gnulib/tests/test-netinet_in.c
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/* Test of <netinet/in.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 <netinet/in.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
71
gnulib/tests/test-snprintf.c
Normal file
71
gnulib/tests/test-snprintf.c
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
/* Test of snprintf() function.
|
||||||
|
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 <stdio.h>
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define ASSERT(expr) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (!(expr)) \
|
||||||
|
{ \
|
||||||
|
fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
|
||||||
|
abort (); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
char buf[8];
|
||||||
|
int size;
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
for (size = 0; size <= 8; size++)
|
||||||
|
{
|
||||||
|
memcpy (buf, "DEADBEEF", 8);
|
||||||
|
retval = snprintf (buf, size, "%d", 12345);
|
||||||
|
if (size < 6)
|
||||||
|
{
|
||||||
|
#if CHECK_SNPRINTF_POSIX
|
||||||
|
ASSERT (retval < 0 || retval >= size);
|
||||||
|
#endif
|
||||||
|
if (size > 0)
|
||||||
|
{
|
||||||
|
ASSERT (memcmp (buf, "12345", size - 1) == 0);
|
||||||
|
ASSERT (buf[size - 1] == '\0' || buf[size - 1] == '0' + size);
|
||||||
|
}
|
||||||
|
#if !CHECK_SNPRINTF_POSIX
|
||||||
|
if (size > 0)
|
||||||
|
#endif
|
||||||
|
ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ASSERT (retval == 5);
|
||||||
|
ASSERT (memcmp (buf, "12345\0EF", 8) == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
95
gnulib/tests/test-stdbool.c
Normal file
95
gnulib/tests/test-stdbool.c
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
/* Test of <stdbool.h> substitute.
|
||||||
|
Copyright (C) 2002-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 <stdbool.h>
|
||||||
|
|
||||||
|
#ifndef bool
|
||||||
|
"error: bool is not defined"
|
||||||
|
#endif
|
||||||
|
#ifndef false
|
||||||
|
"error: false is not defined"
|
||||||
|
#endif
|
||||||
|
#if false
|
||||||
|
"error: false is not 0"
|
||||||
|
#endif
|
||||||
|
#ifndef true
|
||||||
|
"error: true is not defined"
|
||||||
|
#endif
|
||||||
|
#if true != 1
|
||||||
|
"error: true is not 1"
|
||||||
|
#endif
|
||||||
|
#ifndef __bool_true_false_are_defined
|
||||||
|
"error: __bool_true_false_are_defined is not defined"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>. */
|
||||||
|
struct s { _Bool s: 1; _Bool t; } s;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char a[true == 1 ? 1 : -1];
|
||||||
|
char b[false == 0 ? 1 : -1];
|
||||||
|
char c[__bool_true_false_are_defined == 1 ? 1 : -1];
|
||||||
|
#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>. */
|
||||||
|
char d[(bool) 0.5 == true ? 1 : -1];
|
||||||
|
bool e = &s;
|
||||||
|
#endif
|
||||||
|
char f[(_Bool) 0.0 == false ? 1 : -1];
|
||||||
|
char g[true];
|
||||||
|
char h[sizeof (_Bool)];
|
||||||
|
#if 0 /* See above. */
|
||||||
|
char i[sizeof s.t];
|
||||||
|
#endif
|
||||||
|
enum { j = false, k = true, l = false * true, m = true * 256 };
|
||||||
|
_Bool n[m];
|
||||||
|
char o[sizeof n == m * sizeof n[0] ? 1 : -1];
|
||||||
|
char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
|
||||||
|
#if 0 /* Cannot be guaranteed with gnulib's <stdbool.h>. */
|
||||||
|
#if defined __xlc__ || defined __GNUC__
|
||||||
|
/* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
|
||||||
|
reported by James Lemley on 2005-10-05; see
|
||||||
|
http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
|
||||||
|
This test is not quite right, since xlc is allowed to
|
||||||
|
reject this program, as the initializer for xlcbug is
|
||||||
|
not one of the forms that C requires support for.
|
||||||
|
However, doing the test right would require a run-time
|
||||||
|
test, and that would make cross-compilation harder.
|
||||||
|
Let us hope that IBM fixes the xlc bug, and also adds
|
||||||
|
support for this kind of constant expression. In the
|
||||||
|
meantime, this test will reject xlc, which is OK, since
|
||||||
|
our stdbool.h substitute should suffice. We also test
|
||||||
|
this with GCC, where it should work, to detect more
|
||||||
|
quickly whether someone messes up the test in the
|
||||||
|
future. */
|
||||||
|
char digs[] = "0123456789";
|
||||||
|
int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
/* Catch a bug in an HP-UX C compiler. See
|
||||||
|
http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
|
||||||
|
http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
|
||||||
|
*/
|
||||||
|
_Bool q = true;
|
||||||
|
_Bool *pq = &q;
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
356
gnulib/tests/test-stdint.c
Normal file
356
gnulib/tests/test-stdint.c
Normal file
@ -0,0 +1,356 @@
|
|||||||
|
/* Test of <stdint.h> substitute.
|
||||||
|
Copyright (C) 2006, 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>, 2006. */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
/* Whether to enable pedantic checks. */
|
||||||
|
#define DO_PEDANTIC 0
|
||||||
|
|
||||||
|
#define __STDC_LIMIT_MACROS 1 /* to make it work also in C++ mode */
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "verify.h"
|
||||||
|
#include "intprops.h"
|
||||||
|
|
||||||
|
#if __GNUC__ >= 2 && DO_PEDANTIC
|
||||||
|
# define verify_same_types(expr1,expr2) \
|
||||||
|
extern void _verify_func(__LINE__) (__typeof__ (expr1) *); \
|
||||||
|
extern void _verify_func(__LINE__) (__typeof__ (expr2) *);
|
||||||
|
# define _verify_func(line) _verify_func2(line)
|
||||||
|
# define _verify_func2(line) verify_func_ ## line
|
||||||
|
#else
|
||||||
|
# define verify_same_types(expr1,expr2) extern void verify_func (int)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 7.18.1.1. Exact-width integer types */
|
||||||
|
/* 7.18.2.1. Limits of exact-width integer types */
|
||||||
|
|
||||||
|
int8_t a1[3] = { INT8_C (17), INT8_MIN, INT8_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int8_t) == INT8_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int8_t) == INT8_MAX);
|
||||||
|
verify_same_types (INT8_MIN, (int8_t) 0 + 0);
|
||||||
|
verify_same_types (INT8_MAX, (int8_t) 0 + 0);
|
||||||
|
|
||||||
|
int16_t a2[3] = { INT16_C (17), INT16_MIN, INT16_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int16_t) == INT16_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int16_t) == INT16_MAX);
|
||||||
|
verify_same_types (INT16_MIN, (int16_t) 0 + 0);
|
||||||
|
verify_same_types (INT16_MAX, (int16_t) 0 + 0);
|
||||||
|
|
||||||
|
int32_t a3[3] = { INT32_C (17), INT32_MIN, INT32_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int32_t) == INT32_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int32_t) == INT32_MAX);
|
||||||
|
verify_same_types (INT32_MIN, (int32_t) 0 + 0);
|
||||||
|
verify_same_types (INT32_MAX, (int32_t) 0 + 0);
|
||||||
|
|
||||||
|
#ifdef INT64_MAX
|
||||||
|
int64_t a4[3] = { INT64_C (17), INT64_MIN, INT64_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int64_t) == INT64_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int64_t) == INT64_MAX);
|
||||||
|
verify_same_types (INT64_MIN, (int64_t) 0 + 0);
|
||||||
|
verify_same_types (INT64_MAX, (int64_t) 0 + 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
uint8_t b1[2] = { UINT8_C (17), UINT8_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint8_t) == UINT8_MAX);
|
||||||
|
verify_same_types (UINT8_MAX, (uint8_t) 0 + 0);
|
||||||
|
|
||||||
|
uint16_t b2[2] = { UINT16_C (17), UINT16_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint16_t) == UINT16_MAX);
|
||||||
|
verify_same_types (UINT16_MAX, (uint16_t) 0 + 0);
|
||||||
|
|
||||||
|
uint32_t b3[2] = { UINT32_C (17), UINT32_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint32_t) == UINT32_MAX);
|
||||||
|
verify_same_types (UINT32_MAX, (uint32_t) 0 + 0);
|
||||||
|
|
||||||
|
#ifdef UINT64_MAX
|
||||||
|
uint64_t b4[2] = { UINT64_C (17), UINT64_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint64_t) == UINT64_MAX);
|
||||||
|
verify_same_types (UINT64_MAX, (uint64_t) 0 + 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if INT8_MIN && INT8_MAX && INT16_MIN && INT16_MAX && INT32_MIN && INT32_MAX
|
||||||
|
/* ok */
|
||||||
|
#else
|
||||||
|
err or;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UINT8_MAX && UINT16_MAX && UINT32_MAX
|
||||||
|
/* ok */
|
||||||
|
#else
|
||||||
|
err or;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 7.18.1.2. Minimum-width integer types */
|
||||||
|
/* 7.18.2.2. Limits of minimum-width integer types */
|
||||||
|
|
||||||
|
int_least8_t c1[3] = { 17, INT_LEAST8_MIN, INT_LEAST8_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int_least8_t) == INT_LEAST8_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int_least8_t) == INT_LEAST8_MAX);
|
||||||
|
verify_same_types (INT_LEAST8_MIN, (int_least8_t) 0 + 0);
|
||||||
|
verify_same_types (INT_LEAST8_MAX, (int_least8_t) 0 + 0);
|
||||||
|
|
||||||
|
int_least16_t c2[3] = { 17, INT_LEAST16_MIN, INT_LEAST16_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int_least16_t) == INT_LEAST16_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int_least16_t) == INT_LEAST16_MAX);
|
||||||
|
verify_same_types (INT_LEAST16_MIN, (int_least16_t) 0 + 0);
|
||||||
|
verify_same_types (INT_LEAST16_MAX, (int_least16_t) 0 + 0);
|
||||||
|
|
||||||
|
int_least32_t c3[3] = { 17, INT_LEAST32_MIN, INT_LEAST32_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int_least32_t) == INT_LEAST32_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int_least32_t) == INT_LEAST32_MAX);
|
||||||
|
verify_same_types (INT_LEAST32_MIN, (int_least32_t) 0 + 0);
|
||||||
|
verify_same_types (INT_LEAST32_MAX, (int_least32_t) 0 + 0);
|
||||||
|
|
||||||
|
#ifdef INT_LEAST64_MAX
|
||||||
|
int_least64_t c4[3] = { 17, INT_LEAST64_MIN, INT_LEAST64_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int_least64_t) == INT_LEAST64_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int_least64_t) == INT_LEAST64_MAX);
|
||||||
|
verify_same_types (INT_LEAST64_MIN, (int_least64_t) 0 + 0);
|
||||||
|
verify_same_types (INT_LEAST64_MAX, (int_least64_t) 0 + 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
uint_least8_t d1[2] = { 17, UINT_LEAST8_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint_least8_t) == UINT_LEAST8_MAX);
|
||||||
|
verify_same_types (UINT_LEAST8_MAX, (uint_least8_t) 0 + 0);
|
||||||
|
|
||||||
|
uint_least16_t d2[2] = { 17, UINT_LEAST16_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint_least16_t) == UINT_LEAST16_MAX);
|
||||||
|
verify_same_types (UINT_LEAST16_MAX, (uint_least16_t) 0 + 0);
|
||||||
|
|
||||||
|
uint_least32_t d3[2] = { 17, UINT_LEAST32_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint_least32_t) == UINT_LEAST32_MAX);
|
||||||
|
verify_same_types (UINT_LEAST32_MAX, (uint_least32_t) 0 + 0);
|
||||||
|
|
||||||
|
#ifdef UINT_LEAST64_MAX
|
||||||
|
uint_least64_t d4[2] = { 17, UINT_LEAST64_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint_least64_t) == UINT_LEAST64_MAX);
|
||||||
|
verify_same_types (UINT_LEAST64_MAX, (uint_least64_t) 0 + 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if INT_LEAST8_MIN && INT_LEAST8_MAX && INT_LEAST16_MIN && INT_LEAST16_MAX && INT_LEAST32_MIN && INT_LEAST32_MAX
|
||||||
|
/* ok */
|
||||||
|
#else
|
||||||
|
err or;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UINT_LEAST8_MAX && UINT_LEAST16_MAX && UINT_LEAST32_MAX
|
||||||
|
/* ok */
|
||||||
|
#else
|
||||||
|
err or;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 7.18.1.3. Fastest minimum-width integer types */
|
||||||
|
/* 7.18.2.3. Limits of fastest minimum-width integer types */
|
||||||
|
|
||||||
|
int_fast8_t e1[3] = { 17, INT_FAST8_MIN, INT_FAST8_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int_fast8_t) == INT_FAST8_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int_fast8_t) == INT_FAST8_MAX);
|
||||||
|
verify_same_types (INT_FAST8_MIN, (int_fast8_t) 0 + 0);
|
||||||
|
verify_same_types (INT_FAST8_MAX, (int_fast8_t) 0 + 0);
|
||||||
|
|
||||||
|
int_fast16_t e2[3] = { 17, INT_FAST16_MIN, INT_FAST16_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int_fast16_t) == INT_FAST16_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int_fast16_t) == INT_FAST16_MAX);
|
||||||
|
verify_same_types (INT_FAST16_MIN, (int_fast16_t) 0 + 0);
|
||||||
|
verify_same_types (INT_FAST16_MAX, (int_fast16_t) 0 + 0);
|
||||||
|
|
||||||
|
int_fast32_t e3[3] = { 17, INT_FAST32_MIN, INT_FAST32_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int_fast32_t) == INT_FAST32_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int_fast32_t) == INT_FAST32_MAX);
|
||||||
|
verify_same_types (INT_FAST32_MIN, (int_fast32_t) 0 + 0);
|
||||||
|
verify_same_types (INT_FAST32_MAX, (int_fast32_t) 0 + 0);
|
||||||
|
|
||||||
|
#ifdef INT_FAST64_MAX
|
||||||
|
int_fast64_t e4[3] = { 17, INT_FAST64_MIN, INT_FAST64_MAX };
|
||||||
|
verify (TYPE_MINIMUM (int_fast64_t) == INT_FAST64_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (int_fast64_t) == INT_FAST64_MAX);
|
||||||
|
verify_same_types (INT_FAST64_MIN, (int_fast64_t) 0 + 0);
|
||||||
|
verify_same_types (INT_FAST64_MAX, (int_fast64_t) 0 + 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
uint_fast8_t f1[2] = { 17, UINT_FAST8_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint_fast8_t) == UINT_FAST8_MAX);
|
||||||
|
verify_same_types (UINT_FAST8_MAX, (uint_fast8_t) 0 + 0);
|
||||||
|
|
||||||
|
uint_fast16_t f2[2] = { 17, UINT_FAST16_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint_fast16_t) == UINT_FAST16_MAX);
|
||||||
|
verify_same_types (UINT_FAST16_MAX, (uint_fast16_t) 0 + 0);
|
||||||
|
|
||||||
|
uint_fast32_t f3[2] = { 17, UINT_FAST32_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint_fast32_t) == UINT_FAST32_MAX);
|
||||||
|
verify_same_types (UINT_FAST32_MAX, (uint_fast32_t) 0 + 0);
|
||||||
|
|
||||||
|
#ifdef UINT_FAST64_MAX
|
||||||
|
uint_fast64_t f4[2] = { 17, UINT_FAST64_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uint_fast64_t) == UINT_FAST64_MAX);
|
||||||
|
verify_same_types (UINT_FAST64_MAX, (uint_fast64_t) 0 + 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if INT_FAST8_MIN && INT_FAST8_MAX && INT_FAST16_MIN && INT_FAST16_MAX && INT_FAST32_MIN && INT_FAST32_MAX
|
||||||
|
/* ok */
|
||||||
|
#else
|
||||||
|
err or;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if UINT_FAST8_MAX && UINT_FAST16_MAX && UINT_FAST32_MAX
|
||||||
|
/* ok */
|
||||||
|
#else
|
||||||
|
err or;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 7.18.1.4. Integer types capable of holding object pointers */
|
||||||
|
/* 7.18.2.4. Limits of integer types capable of holding object pointers */
|
||||||
|
|
||||||
|
intptr_t g[3] = { 17, INTPTR_MIN, INTPTR_MAX };
|
||||||
|
verify (TYPE_MINIMUM (intptr_t) == INTPTR_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (intptr_t) == INTPTR_MAX);
|
||||||
|
verify_same_types (INTPTR_MIN, (intptr_t) 0 + 0);
|
||||||
|
verify_same_types (INTPTR_MAX, (intptr_t) 0 + 0);
|
||||||
|
|
||||||
|
uintptr_t h[2] = { 17, UINTPTR_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uintptr_t) == UINTPTR_MAX);
|
||||||
|
verify_same_types (UINTPTR_MAX, (uintptr_t) 0 + 0);
|
||||||
|
|
||||||
|
#if INTPTR_MIN && INTPTR_MAX && UINTPTR_MAX
|
||||||
|
/* ok */
|
||||||
|
#else
|
||||||
|
err or;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 7.18.1.5. Greatest-width integer types */
|
||||||
|
/* 7.18.2.5. Limits of greatest-width integer types */
|
||||||
|
|
||||||
|
intmax_t i[3] = { INTMAX_C (17), INTMAX_MIN, INTMAX_MAX };
|
||||||
|
verify (TYPE_MINIMUM (intmax_t) == INTMAX_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (intmax_t) == INTMAX_MAX);
|
||||||
|
verify_same_types (INTMAX_MIN, (intmax_t) 0 + 0);
|
||||||
|
verify_same_types (INTMAX_MAX, (intmax_t) 0 + 0);
|
||||||
|
|
||||||
|
uintmax_t j[2] = { UINTMAX_C (17), UINTMAX_MAX };
|
||||||
|
verify (TYPE_MAXIMUM (uintmax_t) == UINTMAX_MAX);
|
||||||
|
verify_same_types (UINTMAX_MAX, (uintmax_t) 0 + 0);
|
||||||
|
|
||||||
|
#if INTMAX_MIN && INTMAX_MAX && UINTMAX_MAX
|
||||||
|
/* ok */
|
||||||
|
#else
|
||||||
|
err or;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 7.18.3. Limits of other integer types */
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
verify (TYPE_MINIMUM (ptrdiff_t) == PTRDIFF_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (ptrdiff_t) == PTRDIFF_MAX);
|
||||||
|
verify_same_types (PTRDIFF_MIN, (ptrdiff_t) 0 + 0);
|
||||||
|
verify_same_types (PTRDIFF_MAX, (ptrdiff_t) 0 + 0);
|
||||||
|
|
||||||
|
#if PTRDIFF_MIN && PTRDIFF_MAX
|
||||||
|
/* ok */
|
||||||
|
#else
|
||||||
|
err or;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
verify (TYPE_MINIMUM (sig_atomic_t) == SIG_ATOMIC_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (sig_atomic_t) == SIG_ATOMIC_MAX);
|
||||||
|
verify_same_types (SIG_ATOMIC_MIN, (sig_atomic_t) 0 + 0);
|
||||||
|
verify_same_types (SIG_ATOMIC_MAX, (sig_atomic_t) 0 + 0);
|
||||||
|
|
||||||
|
#if SIG_ATOMIC_MIN != 17 && SIG_ATOMIC_MAX
|
||||||
|
/* ok */
|
||||||
|
#else
|
||||||
|
err or;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (TYPE_MAXIMUM (size_t) == SIZE_MAX);
|
||||||
|
verify_same_types (SIZE_MAX, (size_t) 0 + 0);
|
||||||
|
|
||||||
|
#if SIZE_MAX
|
||||||
|
/* ok */
|
||||||
|
#else
|
||||||
|
err or;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_WCHAR_T
|
||||||
|
verify (TYPE_MINIMUM (wchar_t) == WCHAR_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (wchar_t) == WCHAR_MAX);
|
||||||
|
verify_same_types (WCHAR_MIN, (wchar_t) 0 + 0);
|
||||||
|
verify_same_types (WCHAR_MAX, (wchar_t) 0 + 0);
|
||||||
|
|
||||||
|
# if WCHAR_MIN != 17 && WCHAR_MAX
|
||||||
|
/* ok */
|
||||||
|
# else
|
||||||
|
err or;
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_WINT_T
|
||||||
|
# include <wchar.h>
|
||||||
|
|
||||||
|
verify (TYPE_MINIMUM (wint_t) == WINT_MIN);
|
||||||
|
verify (TYPE_MAXIMUM (wint_t) == WINT_MAX);
|
||||||
|
verify_same_types (WINT_MIN, (wint_t) 0 + 0);
|
||||||
|
verify_same_types (WINT_MAX, (wint_t) 0 + 0);
|
||||||
|
|
||||||
|
# if WINT_MIN != 17 && WINT_MAX
|
||||||
|
/* ok */
|
||||||
|
# else
|
||||||
|
err or;
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 7.18.4. Macros for integer constants */
|
||||||
|
|
||||||
|
verify (INT8_C (17) == 17);
|
||||||
|
verify_same_types (INT8_C (17), (int_least8_t)0 + 0);
|
||||||
|
verify (UINT8_C (17) == 17);
|
||||||
|
verify_same_types (UINT8_C (17), (uint_least8_t)0 + 0);
|
||||||
|
|
||||||
|
verify (INT16_C (17) == 17);
|
||||||
|
verify_same_types (INT16_C (17), (int_least16_t)0 + 0);
|
||||||
|
verify (UINT16_C (17) == 17);
|
||||||
|
verify_same_types (UINT16_C (17), (uint_least16_t)0 + 0);
|
||||||
|
|
||||||
|
verify (INT32_C (17) == 17);
|
||||||
|
verify_same_types (INT32_C (17), (int_least32_t)0 + 0);
|
||||||
|
verify (UINT32_C (17) == 17);
|
||||||
|
verify_same_types (UINT32_C (17), (uint_least32_t)0 + 0);
|
||||||
|
|
||||||
|
#ifdef INT64_C
|
||||||
|
verify (INT64_C (17) == 17);
|
||||||
|
verify_same_types (INT64_C (17), (int_least64_t)0 + 0);
|
||||||
|
#endif
|
||||||
|
#ifdef UINT64_C
|
||||||
|
verify (UINT64_C (17) == 17);
|
||||||
|
verify_same_types (UINT64_C (17), (uint_least64_t)0 + 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (INTMAX_C (17) == 17);
|
||||||
|
verify_same_types (INTMAX_C (17), (intmax_t)0 + 0);
|
||||||
|
verify (UINTMAX_C (17) == 17);
|
||||||
|
verify_same_types (UINTMAX_C (17), (uintmax_t)0 + 0);
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
30
gnulib/tests/test-stdio.c
Normal file
30
gnulib/tests/test-stdio.c
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/* Test of <stdio.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 <stdio.h>
|
||||||
|
|
||||||
|
/* Check that the various SEEK_* macros are defined. */
|
||||||
|
int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET };
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
37
gnulib/tests/test-stdlib.c
Normal file
37
gnulib/tests/test-stdlib.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/* Test of <stdlib.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 <stdlib.h>
|
||||||
|
|
||||||
|
int exitcode;
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
/* Check that some macros are defined and different integer constants. */
|
||||||
|
switch (exitcode)
|
||||||
|
{
|
||||||
|
case EXIT_SUCCESS:
|
||||||
|
case EXIT_FAILURE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
27
gnulib/tests/test-string.c
Normal file
27
gnulib/tests/test-string.c
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/* Test of <string.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 <string.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
27
gnulib/tests/test-sys_select.c
Normal file
27
gnulib/tests/test-sys_select.c
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/* Test of <sys/select.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 <sys/select.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
47
gnulib/tests/test-sys_socket.c
Normal file
47
gnulib/tests/test-sys_socket.c
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/* Test of <sys/socket.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 <sys/socket.h>
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#if HAVE_SHUTDOWN
|
||||||
|
/* Check some integer constant expressions. */
|
||||||
|
int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
/* Check some errno values. */
|
||||||
|
switch (0)
|
||||||
|
{
|
||||||
|
case ENOTSOCK:
|
||||||
|
case EADDRINUSE:
|
||||||
|
case ENETRESET:
|
||||||
|
case ECONNABORTED:
|
||||||
|
case ECONNRESET:
|
||||||
|
case ENOTCONN:
|
||||||
|
case ESHUTDOWN:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
260
gnulib/tests/test-sys_stat.c
Normal file
260
gnulib/tests/test-sys_stat.c
Normal file
@ -0,0 +1,260 @@
|
|||||||
|
/* Test of <sys/stat.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 <sys/stat.h>
|
||||||
|
|
||||||
|
#include "verify.h"
|
||||||
|
|
||||||
|
/* Check the existence of some macros. */
|
||||||
|
int a[] =
|
||||||
|
{
|
||||||
|
S_IFMT,
|
||||||
|
S_IFBLK, S_IFCHR, S_IFDIR, S_IFIFO, S_IFREG,
|
||||||
|
#ifdef S_IFLNK /* missing on mingw and djgpp */
|
||||||
|
S_IFLNK,
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK /* missing on mingw and djgpp */
|
||||||
|
S_IFSOCK,
|
||||||
|
#endif
|
||||||
|
S_IRWXU, S_IRUSR, S_IWUSR, S_IXUSR,
|
||||||
|
S_IRWXG, S_IRGRP, S_IWGRP, S_IXGRP,
|
||||||
|
S_IRWXO, S_IROTH, S_IWOTH, S_IXOTH,
|
||||||
|
S_ISUID, S_ISGID, S_ISVTX,
|
||||||
|
S_ISBLK (S_IFREG),
|
||||||
|
S_ISCHR (S_IFREG),
|
||||||
|
S_ISDIR (S_IFREG),
|
||||||
|
S_ISFIFO (S_IFREG),
|
||||||
|
S_ISREG (S_IFREG),
|
||||||
|
S_ISLNK (S_IFREG),
|
||||||
|
S_ISSOCK (S_IFREG),
|
||||||
|
S_ISDOOR (S_IFREG),
|
||||||
|
S_ISMPB (S_IFREG),
|
||||||
|
S_ISNAM (S_IFREG),
|
||||||
|
S_ISNWK (S_IFREG),
|
||||||
|
S_ISPORT (S_IFREG),
|
||||||
|
S_ISCTG (S_IFREG),
|
||||||
|
S_ISOFD (S_IFREG),
|
||||||
|
S_ISOFL (S_IFREG),
|
||||||
|
S_ISWHT (S_IFREG)
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Sanity checks. */
|
||||||
|
|
||||||
|
verify (S_IRWXU == (S_IRUSR | S_IWUSR | S_IXUSR));
|
||||||
|
verify (S_IRWXG == (S_IRGRP | S_IWGRP | S_IXGRP));
|
||||||
|
verify (S_IRWXO == (S_IROTH | S_IWOTH | S_IXOTH));
|
||||||
|
|
||||||
|
verify (S_ISBLK (S_IFBLK));
|
||||||
|
verify (!S_ISBLK (S_IFCHR));
|
||||||
|
verify (!S_ISBLK (S_IFDIR));
|
||||||
|
verify (!S_ISBLK (S_IFIFO));
|
||||||
|
verify (!S_ISBLK (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISBLK (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISBLK (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISCHR (S_IFBLK));
|
||||||
|
verify (S_ISCHR (S_IFCHR));
|
||||||
|
verify (!S_ISCHR (S_IFDIR));
|
||||||
|
verify (!S_ISCHR (S_IFIFO));
|
||||||
|
verify (!S_ISCHR (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISCHR (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISCHR (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISDIR (S_IFBLK));
|
||||||
|
verify (!S_ISDIR (S_IFCHR));
|
||||||
|
verify (S_ISDIR (S_IFDIR));
|
||||||
|
verify (!S_ISDIR (S_IFIFO));
|
||||||
|
verify (!S_ISDIR (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISDIR (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISDIR (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISFIFO (S_IFBLK));
|
||||||
|
verify (!S_ISFIFO (S_IFCHR));
|
||||||
|
verify (!S_ISFIFO (S_IFDIR));
|
||||||
|
verify (S_ISFIFO (S_IFIFO));
|
||||||
|
verify (!S_ISFIFO (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISFIFO (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISFIFO (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISREG (S_IFBLK));
|
||||||
|
verify (!S_ISREG (S_IFCHR));
|
||||||
|
verify (!S_ISREG (S_IFDIR));
|
||||||
|
verify (!S_ISREG (S_IFIFO));
|
||||||
|
verify (S_ISREG (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISREG (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISREG (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISLNK (S_IFBLK));
|
||||||
|
verify (!S_ISLNK (S_IFCHR));
|
||||||
|
verify (!S_ISLNK (S_IFDIR));
|
||||||
|
verify (!S_ISLNK (S_IFIFO));
|
||||||
|
verify (!S_ISLNK (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (S_ISLNK (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISLNK (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISSOCK (S_IFBLK));
|
||||||
|
verify (!S_ISSOCK (S_IFCHR));
|
||||||
|
verify (!S_ISSOCK (S_IFDIR));
|
||||||
|
verify (!S_ISSOCK (S_IFIFO));
|
||||||
|
verify (!S_ISSOCK (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISSOCK (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (S_ISSOCK (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISDOOR (S_IFBLK));
|
||||||
|
verify (!S_ISDOOR (S_IFCHR));
|
||||||
|
verify (!S_ISDOOR (S_IFDIR));
|
||||||
|
verify (!S_ISDOOR (S_IFIFO));
|
||||||
|
verify (!S_ISDOOR (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISDOOR (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISDOOR (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISMPB (S_IFBLK));
|
||||||
|
verify (!S_ISMPB (S_IFCHR));
|
||||||
|
verify (!S_ISMPB (S_IFDIR));
|
||||||
|
verify (!S_ISMPB (S_IFIFO));
|
||||||
|
verify (!S_ISMPB (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISMPB (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISMPB (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISNAM (S_IFBLK));
|
||||||
|
verify (!S_ISNAM (S_IFCHR));
|
||||||
|
verify (!S_ISNAM (S_IFDIR));
|
||||||
|
verify (!S_ISNAM (S_IFIFO));
|
||||||
|
verify (!S_ISNAM (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISNAM (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISNAM (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISNWK (S_IFBLK));
|
||||||
|
verify (!S_ISNWK (S_IFCHR));
|
||||||
|
verify (!S_ISNWK (S_IFDIR));
|
||||||
|
verify (!S_ISNWK (S_IFIFO));
|
||||||
|
verify (!S_ISNWK (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISNWK (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISNWK (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISPORT (S_IFBLK));
|
||||||
|
verify (!S_ISPORT (S_IFCHR));
|
||||||
|
verify (!S_ISPORT (S_IFDIR));
|
||||||
|
verify (!S_ISPORT (S_IFIFO));
|
||||||
|
verify (!S_ISPORT (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISPORT (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISPORT (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISCTG (S_IFBLK));
|
||||||
|
verify (!S_ISCTG (S_IFCHR));
|
||||||
|
verify (!S_ISCTG (S_IFDIR));
|
||||||
|
verify (!S_ISCTG (S_IFIFO));
|
||||||
|
verify (!S_ISCTG (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISCTG (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISCTG (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISOFD (S_IFBLK));
|
||||||
|
verify (!S_ISOFD (S_IFCHR));
|
||||||
|
verify (!S_ISOFD (S_IFDIR));
|
||||||
|
verify (!S_ISOFD (S_IFIFO));
|
||||||
|
verify (!S_ISOFD (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISOFD (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISOFD (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISOFL (S_IFBLK));
|
||||||
|
verify (!S_ISOFL (S_IFCHR));
|
||||||
|
verify (!S_ISOFL (S_IFDIR));
|
||||||
|
verify (!S_ISOFL (S_IFIFO));
|
||||||
|
verify (!S_ISOFL (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISOFL (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISOFL (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
verify (!S_ISWHT (S_IFBLK));
|
||||||
|
verify (!S_ISWHT (S_IFCHR));
|
||||||
|
verify (!S_ISWHT (S_IFDIR));
|
||||||
|
verify (!S_ISWHT (S_IFIFO));
|
||||||
|
verify (!S_ISWHT (S_IFREG));
|
||||||
|
#ifdef S_IFLNK
|
||||||
|
verify (!S_ISWHT (S_IFLNK));
|
||||||
|
#endif
|
||||||
|
#ifdef S_IFSOCK
|
||||||
|
verify (!S_ISWHT (S_IFSOCK));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
29
gnulib/tests/test-sys_time.c
Normal file
29
gnulib/tests/test-sys_time.c
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
/* Test of <sys/time.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 <sys/time.h>
|
||||||
|
|
||||||
|
struct timeval a;
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
44
gnulib/tests/test-unistd.c
Normal file
44
gnulib/tests/test-unistd.c
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/* Test of <unistd.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 <unistd.h>
|
||||||
|
|
||||||
|
/* Check that the various SEEK_* macros are defined. */
|
||||||
|
int sk[] = { SEEK_CUR, SEEK_END, SEEK_SET };
|
||||||
|
|
||||||
|
/* Check that the types are all defined. */
|
||||||
|
size_t t1;
|
||||||
|
ssize_t t2;
|
||||||
|
#ifdef TODO /* Not implemented in gnulib yet */
|
||||||
|
uid_t t3;
|
||||||
|
gid_t t4;
|
||||||
|
#endif
|
||||||
|
off_t t5;
|
||||||
|
pid_t t6;
|
||||||
|
#ifdef TODO
|
||||||
|
useconds_t t7;
|
||||||
|
intptr_t t8;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
127
gnulib/tests/test-vasnprintf.c
Normal file
127
gnulib/tests/test-vasnprintf.c
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
/* Test of vasnprintf() and asnprintf() functions.
|
||||||
|
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 "vasnprintf.h"
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define ASSERT(expr) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (!(expr)) \
|
||||||
|
{ \
|
||||||
|
fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
|
||||||
|
abort (); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
|
||||||
|
static char *
|
||||||
|
my_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
char *ret;
|
||||||
|
|
||||||
|
va_start (args, format);
|
||||||
|
ret = vasnprintf (resultbuf, lengthp, format, args);
|
||||||
|
va_end (args);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_vasnprintf ()
|
||||||
|
{
|
||||||
|
char buf[8];
|
||||||
|
int size;
|
||||||
|
|
||||||
|
for (size = 0; size <= 8; size++)
|
||||||
|
{
|
||||||
|
size_t length = size;
|
||||||
|
char *result = my_asnprintf (NULL, &length, "%d", 12345);
|
||||||
|
ASSERT (result != NULL);
|
||||||
|
ASSERT (strcmp (result, "12345") == 0);
|
||||||
|
ASSERT (length == 5);
|
||||||
|
free (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size = 0; size <= 8; size++)
|
||||||
|
{
|
||||||
|
size_t length;
|
||||||
|
char *result;
|
||||||
|
|
||||||
|
memcpy (buf, "DEADBEEF", 8);
|
||||||
|
length = size;
|
||||||
|
result = my_asnprintf (buf, &length, "%d", 12345);
|
||||||
|
ASSERT (result != NULL);
|
||||||
|
ASSERT (strcmp (result, "12345") == 0);
|
||||||
|
ASSERT (length == 5);
|
||||||
|
if (size < 6)
|
||||||
|
ASSERT (result != buf);
|
||||||
|
ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0);
|
||||||
|
if (result != buf)
|
||||||
|
free (result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_asnprintf ()
|
||||||
|
{
|
||||||
|
char buf[8];
|
||||||
|
int size;
|
||||||
|
|
||||||
|
for (size = 0; size <= 8; size++)
|
||||||
|
{
|
||||||
|
size_t length = size;
|
||||||
|
char *result = asnprintf (NULL, &length, "%d", 12345);
|
||||||
|
ASSERT (result != NULL);
|
||||||
|
ASSERT (strcmp (result, "12345") == 0);
|
||||||
|
ASSERT (length == 5);
|
||||||
|
free (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (size = 0; size <= 8; size++)
|
||||||
|
{
|
||||||
|
size_t length;
|
||||||
|
char *result;
|
||||||
|
|
||||||
|
memcpy (buf, "DEADBEEF", 8);
|
||||||
|
length = size;
|
||||||
|
result = asnprintf (buf, &length, "%d", 12345);
|
||||||
|
ASSERT (result != NULL);
|
||||||
|
ASSERT (strcmp (result, "12345") == 0);
|
||||||
|
ASSERT (length == 5);
|
||||||
|
if (size < 6)
|
||||||
|
ASSERT (result != buf);
|
||||||
|
ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0);
|
||||||
|
if (result != buf)
|
||||||
|
free (result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
test_vasnprintf ();
|
||||||
|
test_asnprintf ();
|
||||||
|
return 0;
|
||||||
|
}
|
88
gnulib/tests/test-vasprintf.c
Normal file
88
gnulib/tests/test-vasprintf.c
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
/* Test of vasprintf() and asprintf() functions.
|
||||||
|
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 <stdio.h>
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define ASSERT(expr) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (!(expr)) \
|
||||||
|
{ \
|
||||||
|
fprintf (stderr, "%s:%d: assertion failed\n", __FILE__, __LINE__); \
|
||||||
|
abort (); \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
|
||||||
|
static int
|
||||||
|
my_asprintf (char **result, const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
va_start (args, format);
|
||||||
|
ret = vasprintf (result, format, args);
|
||||||
|
va_end (args);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_vasprintf ()
|
||||||
|
{
|
||||||
|
int repeat;
|
||||||
|
|
||||||
|
for (repeat = 0; repeat <= 8; repeat++)
|
||||||
|
{
|
||||||
|
char *result;
|
||||||
|
int retval = my_asprintf (&result, "%d", 12345);
|
||||||
|
ASSERT (retval == 5);
|
||||||
|
ASSERT (result != NULL);
|
||||||
|
ASSERT (strcmp (result, "12345") == 0);
|
||||||
|
free (result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_asprintf ()
|
||||||
|
{
|
||||||
|
int repeat;
|
||||||
|
|
||||||
|
for (repeat = 0; repeat <= 8; repeat++)
|
||||||
|
{
|
||||||
|
char *result;
|
||||||
|
int retval = asprintf (&result, "%d", 12345);
|
||||||
|
ASSERT (retval == 5);
|
||||||
|
ASSERT (result != NULL);
|
||||||
|
ASSERT (strcmp (result, "12345") == 0);
|
||||||
|
free (result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
test_vasprintf ();
|
||||||
|
test_asprintf ();
|
||||||
|
return 0;
|
||||||
|
}
|
27
gnulib/tests/test-wchar.c
Normal file
27
gnulib/tests/test-wchar.c
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/* Test of <wchar.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 <wchar.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
140
gnulib/tests/verify.h
Normal file
140
gnulib/tests/verify.h
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
/* Compile-time assert-like macros.
|
||||||
|
|
||||||
|
Copyright (C) 2005, 2006 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, Bruno Haible, and Jim Meyering. */
|
||||||
|
|
||||||
|
#ifndef VERIFY_H
|
||||||
|
# define VERIFY_H 1
|
||||||
|
|
||||||
|
/* Each of these macros verifies that its argument R is nonzero. To
|
||||||
|
be portable, R should be an integer constant expression. Unlike
|
||||||
|
assert (R), there is no run-time overhead.
|
||||||
|
|
||||||
|
There are two macros, since no single macro can be used in all
|
||||||
|
contexts in C. verify_true (R) is for scalar contexts, including
|
||||||
|
integer constant expression contexts. verify (R) is for declaration
|
||||||
|
contexts, e.g., the top level.
|
||||||
|
|
||||||
|
Symbols ending in "__" are private to this header.
|
||||||
|
|
||||||
|
The code below uses several ideas.
|
||||||
|
|
||||||
|
* The first step is ((R) ? 1 : -1). Given an expression R, of
|
||||||
|
integral or boolean or floating-point type, this yields an
|
||||||
|
expression of integral type, whose value is later verified to be
|
||||||
|
constant and nonnegative.
|
||||||
|
|
||||||
|
* Next this expression W is wrapped in a type
|
||||||
|
struct verify_type__ { unsigned int verify_error_if_negative_size__: W; }.
|
||||||
|
If W is negative, this yields a compile-time error. No compiler can
|
||||||
|
deal with a bit-field of negative size.
|
||||||
|
|
||||||
|
One might think that an array size check would have the same
|
||||||
|
effect, that is, that the type struct { unsigned int dummy[W]; }
|
||||||
|
would work as well. However, inside a function, some compilers
|
||||||
|
(such as C++ compilers and GNU C) allow local parameters and
|
||||||
|
variables inside array size expressions. With these compilers,
|
||||||
|
an array size check would not properly diagnose this misuse of
|
||||||
|
the verify macro:
|
||||||
|
|
||||||
|
void function (int n) { verify (n < 0); }
|
||||||
|
|
||||||
|
* For the verify macro, the struct verify_type__ will need to
|
||||||
|
somehow be embedded into a declaration. To be portable, this
|
||||||
|
declaration must declare an object, a constant, a function, or a
|
||||||
|
typedef name. If the declared entity uses the type directly,
|
||||||
|
such as in
|
||||||
|
|
||||||
|
struct dummy {...};
|
||||||
|
typedef struct {...} dummy;
|
||||||
|
extern struct {...} *dummy;
|
||||||
|
extern void dummy (struct {...} *);
|
||||||
|
extern struct {...} *dummy (void);
|
||||||
|
|
||||||
|
two uses of the verify macro would yield colliding declarations
|
||||||
|
if the entity names are not disambiguated. A workaround is to
|
||||||
|
attach the current line number to the entity name:
|
||||||
|
|
||||||
|
#define GL_CONCAT0(x, y) x##y
|
||||||
|
#define GL_CONCAT(x, y) GL_CONCAT0 (x, y)
|
||||||
|
extern struct {...} * GL_CONCAT(dummy,__LINE__);
|
||||||
|
|
||||||
|
But this has the problem that two invocations of verify from
|
||||||
|
within the same macro would collide, since the __LINE__ value
|
||||||
|
would be the same for both invocations.
|
||||||
|
|
||||||
|
A solution is to use the sizeof operator. It yields a number,
|
||||||
|
getting rid of the identity of the type. Declarations like
|
||||||
|
|
||||||
|
extern int dummy [sizeof (struct {...})];
|
||||||
|
extern void dummy (int [sizeof (struct {...})]);
|
||||||
|
extern int (*dummy (void)) [sizeof (struct {...})];
|
||||||
|
|
||||||
|
can be repeated.
|
||||||
|
|
||||||
|
* Should the implementation use a named struct or an unnamed struct?
|
||||||
|
Which of the following alternatives can be used?
|
||||||
|
|
||||||
|
extern int dummy [sizeof (struct {...})];
|
||||||
|
extern int dummy [sizeof (struct verify_type__ {...})];
|
||||||
|
extern void dummy (int [sizeof (struct {...})]);
|
||||||
|
extern void dummy (int [sizeof (struct verify_type__ {...})]);
|
||||||
|
extern int (*dummy (void)) [sizeof (struct {...})];
|
||||||
|
extern int (*dummy (void)) [sizeof (struct verify_type__ {...})];
|
||||||
|
|
||||||
|
In the second and sixth case, the struct type is exported to the
|
||||||
|
outer scope; two such declarations therefore collide. GCC warns
|
||||||
|
about the first, third, and fourth cases. So the only remaining
|
||||||
|
possibility is the fifth case:
|
||||||
|
|
||||||
|
extern int (*dummy (void)) [sizeof (struct {...})];
|
||||||
|
|
||||||
|
* This implementation exploits the fact that GCC does not warn about
|
||||||
|
the last declaration mentioned above. If a future version of GCC
|
||||||
|
introduces a warning for this, the problem could be worked around
|
||||||
|
by using code specialized to GCC, e.g.,:
|
||||||
|
|
||||||
|
#if 4 <= __GNUC__
|
||||||
|
# define verify(R) \
|
||||||
|
extern int (* verify_function__ (void)) \
|
||||||
|
[__builtin_constant_p (R) && (R) ? 1 : -1]
|
||||||
|
#endif
|
||||||
|
|
||||||
|
* In C++, any struct definition inside sizeof is invalid.
|
||||||
|
Use a template type to work around the problem. */
|
||||||
|
|
||||||
|
|
||||||
|
/* Verify requirement R at compile-time, as an integer constant expression.
|
||||||
|
Return 1. */
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
template <int w>
|
||||||
|
struct verify_type__ { unsigned int verify_error_if_negative_size__: w; };
|
||||||
|
# define verify_true(R) \
|
||||||
|
(!!sizeof (verify_type__<(R) ? 1 : -1>))
|
||||||
|
# else
|
||||||
|
# define verify_true(R) \
|
||||||
|
(!!sizeof \
|
||||||
|
(struct { unsigned int verify_error_if_negative_size__: (R) ? 1 : -1; }))
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Verify requirement R at compile-time, as a declaration without a
|
||||||
|
trailing ';'. */
|
||||||
|
|
||||||
|
# define verify(R) extern int (* verify_function__ (void)) [verify_true (R)]
|
||||||
|
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user