diff options
author | des <des@FreeBSD.org> | 2013-09-07 19:43:39 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2013-09-07 19:43:39 +0000 |
commit | 6a7561b73b9720ce6c6c63e7cff8fd554aecd847 (patch) | |
tree | ab3f4f3f8107b85839f39cd0f0a7d63082287b66 /contrib/openpam/t | |
parent | f16777c9dcab2b9b5f7a058133fd4c8c7d947a8e (diff) | |
parent | 338d7c2adbde6bf877c1224d39c4fa8fa056147d (diff) | |
download | FreeBSD-src-6a7561b73b9720ce6c6c63e7cff8fd554aecd847.zip FreeBSD-src-6a7561b73b9720ce6c6c63e7cff8fd554aecd847.tar.gz |
Update to OpenPAM Nummularia.
Diffstat (limited to 'contrib/openpam/t')
-rw-r--r-- | contrib/openpam/t/Makefile.am | 12 | ||||
-rw-r--r-- | contrib/openpam/t/Makefile.in | 739 | ||||
-rw-r--r-- | contrib/openpam/t/t.h | 37 | ||||
-rw-r--r-- | contrib/openpam/t/t_file.c | 160 | ||||
-rw-r--r-- | contrib/openpam/t/t_main.c | 18 | ||||
-rw-r--r-- | contrib/openpam/t/t_openpam_readlinev.c | 177 | ||||
-rw-r--r-- | contrib/openpam/t/t_openpam_readword.c | 694 |
7 files changed, 1218 insertions, 619 deletions
diff --git a/contrib/openpam/t/Makefile.am b/contrib/openpam/t/Makefile.am index a3f596d..8f9bf1f 100644 --- a/contrib/openpam/t/Makefile.am +++ b/contrib/openpam/t/Makefile.am @@ -1,16 +1,18 @@ -# $Id: Makefile.am 572 2012-04-05 15:41:44Z des $ +# $Id: Makefile.am 714 2013-08-19 15:30:21Z des $ -INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/lib +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/lib/libpam noinst_HEADERS = t.h # tests -TESTS = t_openpam_readword t_openpam_readlinev +TESTS = +TESTS += t_openpam_readword +TESTS += t_openpam_readlinev check_PROGRAMS = $(TESTS) # libt - common support code check_LIBRARIES = libt.a -libt_a_SOURCES = t_main.c +libt_a_SOURCES = t_main.c t_file.c # link with libpam and libt -LDADD = libt.a $(top_builddir)/lib/libpam.la +LDADD = libt.a $(top_builddir)/lib/libpam/libpam.la diff --git a/contrib/openpam/t/Makefile.in b/contrib/openpam/t/Makefile.in index e71618b..2e7eda7 100644 --- a/contrib/openpam/t/Makefile.in +++ b/contrib/openpam/t/Makefile.in @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -15,9 +14,54 @@ @SET_MAKE@ -# $Id: Makefile.am 572 2012-04-05 15:41:44Z des $ +# $Id: Makefile.am 714 2013-08-19 15:30:21Z des $ VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -39,10 +83,14 @@ host_triplet = @host@ TESTS = t_openpam_readword$(EXEEXT) t_openpam_readlinev$(EXEEXT) check_PROGRAMS = $(am__EXEEXT_1) subdir = t -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) \ + $(top_srcdir)/test-driver ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d @@ -50,9 +98,13 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = libt_a_AR = $(AR) $(ARFLAGS) libt_a_LIBADD = -am_libt_a_OBJECTS = t_main.$(OBJEXT) +am_libt_a_OBJECTS = t_main.$(OBJEXT) t_file.$(OBJEXT) libt_a_OBJECTS = $(am_libt_a_OBJECTS) am__EXEEXT_1 = t_openpam_readword$(EXEEXT) \ t_openpam_readlinev$(EXEEXT) @@ -60,35 +112,286 @@ t_openpam_readlinev_SOURCES = t_openpam_readlinev.c t_openpam_readlinev_OBJECTS = t_openpam_readlinev.$(OBJEXT) t_openpam_readlinev_LDADD = $(LDADD) t_openpam_readlinev_DEPENDENCIES = libt.a \ - $(top_builddir)/lib/libpam.la + $(top_builddir)/lib/libpam/libpam.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = t_openpam_readword_SOURCES = t_openpam_readword.c t_openpam_readword_OBJECTS = t_openpam_readword.$(OBJEXT) t_openpam_readword_LDADD = $(LDADD) -t_openpam_readword_DEPENDENCIES = libt.a $(top_builddir)/lib/libpam.la +t_openpam_readword_DEPENDENCIES = libt.a \ + $(top_builddir)/lib/libpam/libpam.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = SOURCES = $(libt_a_SOURCES) t_openpam_readlinev.c t_openpam_readword.c DIST_SOURCES = $(libt_a_SOURCES) t_openpam_readlinev.c \ t_openpam_readword.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red='[0;31m'; \ + grn='[0;32m'; \ + lgn='[1;32m'; \ + blu='[1;34m'; \ + mgn='[0;35m'; \ + brg='[1m'; \ + std='[m'; \ + fi; \ +} +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -99,6 +402,7 @@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CRYPTO_LIBS = @CRYPTO_LIBS@ CRYPT_LIBS = @CRYPT_LIBS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ @@ -204,19 +508,19 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/lib +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/lib/libpam noinst_HEADERS = t.h # libt - common support code check_LIBRARIES = libt.a -libt_a_SOURCES = t_main.c +libt_a_SOURCES = t_main.c t_file.c # link with libpam and libt -LDADD = libt.a $(top_builddir)/lib/libpam.la +LDADD = libt.a $(top_builddir)/lib/libpam/libpam.la all: all-am .SUFFIXES: -.SUFFIXES: .c .lo .o .obj +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ @@ -250,10 +554,11 @@ $(am__aclocal_m4_deps): clean-checkLIBRARIES: -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES) -libt.a: $(libt_a_OBJECTS) $(libt_a_DEPENDENCIES) - -rm -f libt.a - $(libt_a_AR) libt.a $(libt_a_OBJECTS) $(libt_a_LIBADD) - $(RANLIB) libt.a + +libt.a: $(libt_a_OBJECTS) $(libt_a_DEPENDENCIES) $(EXTRA_libt_a_DEPENDENCIES) + $(AM_V_at)-rm -f libt.a + $(AM_V_AR)$(libt_a_AR) libt.a $(libt_a_OBJECTS) $(libt_a_LIBADD) + $(AM_V_at)$(RANLIB) libt.a clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ @@ -263,12 +568,14 @@ clean-checkPROGRAMS: list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -t_openpam_readlinev$(EXEEXT): $(t_openpam_readlinev_OBJECTS) $(t_openpam_readlinev_DEPENDENCIES) + +t_openpam_readlinev$(EXEEXT): $(t_openpam_readlinev_OBJECTS) $(t_openpam_readlinev_DEPENDENCIES) $(EXTRA_t_openpam_readlinev_DEPENDENCIES) @rm -f t_openpam_readlinev$(EXEEXT) - $(LINK) $(t_openpam_readlinev_OBJECTS) $(t_openpam_readlinev_LDADD) $(LIBS) -t_openpam_readword$(EXEEXT): $(t_openpam_readword_OBJECTS) $(t_openpam_readword_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(t_openpam_readlinev_OBJECTS) $(t_openpam_readlinev_LDADD) $(LIBS) + +t_openpam_readword$(EXEEXT): $(t_openpam_readword_OBJECTS) $(t_openpam_readword_DEPENDENCIES) $(EXTRA_t_openpam_readword_DEPENDENCIES) @rm -f t_openpam_readword$(EXEEXT) - $(LINK) $(t_openpam_readword_OBJECTS) $(t_openpam_readword_LDADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(t_openpam_readword_OBJECTS) $(t_openpam_readword_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -276,30 +583,31 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_openpam_readlinev.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_openpam_readword.Po@am__quote@ .c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -307,26 +615,15 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -338,15 +635,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -355,101 +648,194 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ else \ - skipped="($$skip tests were not run)"; \ + color_start= color_end=; \ fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - echo "$$grn$$dashes"; \ - else \ - echo "$$red$$dashes"; \ - fi; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes$$std"; \ - test "$$failed" -eq 0; \ - else :; fi + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LIBRARIES) $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +t_openpam_readword.log: t_openpam_readword$(EXEEXT) + @p='t_openpam_readword$(EXEEXT)'; \ + b='t_openpam_readword'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +t_openpam_readlinev.log: t_openpam_readlinev$(EXEEXT) + @p='t_openpam_readlinev$(EXEEXT)'; \ + b='t_openpam_readlinev'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ @@ -497,11 +883,19 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: @@ -585,19 +979,20 @@ uninstall-am: .MAKE: check-am install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \ - clean-libtool ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am recheck tags tags-am uninstall \ + uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/contrib/openpam/t/t.h b/contrib/openpam/t/t.h index 4805b76..1e156bd 100644 --- a/contrib/openpam/t/t.h +++ b/contrib/openpam/t/t.h @@ -6,8 +6,7 @@ * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer - * in this position and unchanged. + * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. @@ -27,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: t.h 578 2012-04-06 00:45:59Z des $ + * $Id: t.h 657 2013-03-06 22:59:05Z des $ */ #ifndef T_H_INCLUDED @@ -36,15 +35,22 @@ #include <security/openpam_attr.h> struct t_test { - int (*func)(void); + int (*func)(void *); const char *desc; + void *arg; }; #define T_FUNC(n, d) \ - static int t_ ## n ## _func(void); \ + static int t_ ## n ## _func(void *); \ static const struct t_test t_ ## n = \ - { t_ ## n ## _func, d }; \ - static int t_ ## n ## _func(void) + { t_ ## n ## _func, d, NULL }; \ + static int t_ ## n ## _func(OPENPAM_UNUSED(void *arg)) + +#define T_FUNC_ARG(n, d, a) \ + static int t_ ## n ## _func(void *); \ + static const struct t_test t_ ## n = \ + { t_ ## n ## _func, d, a }; \ + static int t_ ## n ## _func(void *arg) #define T(n) \ &t_ ## n @@ -57,4 +63,21 @@ void t_cleanup(void); void t_verbose(const char *, ...) OPENPAM_FORMAT((__printf__, 1, 2)); +/* + * Convenience functions for temp files + */ +struct t_file { + char *name; + FILE *file; + struct t_file *prev, *next; +}; + +struct t_file *t_fopen(const char *); +int t_fprintf(struct t_file *, const char *, ...); +int t_ferror(struct t_file *); +int t_feof(struct t_file *); +void t_frewind(struct t_file *); +void t_fclose(struct t_file *); +void t_fcloseall(void); + #endif diff --git a/contrib/openpam/t/t_file.c b/contrib/openpam/t/t_file.c new file mode 100644 index 0000000..8de4f97 --- /dev/null +++ b/contrib/openpam/t/t_file.c @@ -0,0 +1,160 @@ +/*- + * Copyright (c) 2012 Dag-Erling Smørgrav + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: t_file.c 648 2013-03-05 17:54:27Z des $ + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <err.h> +#include <errno.h> +#include <fcntl.h> +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "openpam_asprintf.h" + +#include "t.h" + +static struct t_file *tflist; + +/* + * Open a temp file. + */ +struct t_file * +t_fopen(const char *filename) +{ + struct t_file *tf; + int fd; + + if ((tf = calloc(sizeof *tf, 1)) == NULL) + err(1, "%s(): calloc()", __func__); + if (filename) { + if ((tf->name = strdup(filename)) == NULL) + err(1, "%s(): strdup()", __func__); + } else { + asprintf(&tf->name, "%s.%lu.%p.tmp", + t_progname, (unsigned long)getpid(), (void *)tf); + if (tf->name == NULL) + err(1, "%s(): asprintf()", __func__); + } + if ((fd = open(tf->name, O_RDWR|O_CREAT|O_TRUNC, 0600)) < 0) + err(1, "%s(): %s", __func__, tf->name); + if ((tf->file = fdopen(fd, "r+")) == NULL) + err(1, "%s(): fdopen()", __func__); + if ((tf->next = tflist) != NULL) + tf->next->prev = tf; + tflist = tf; + return (tf); +} + +/* + * Write text to the temp file. + */ +int +t_fprintf(struct t_file *tf, const char *fmt, ...) +{ + va_list ap; + int len; + + va_start(ap, fmt); + len = vfprintf(tf->file, fmt, ap); + va_end(ap); + if (ferror(tf->file)) + err(1, "%s(): vfprintf()", __func__); + return (len); +} + +/* + * Rewind the temp file. + */ +void +t_frewind(struct t_file *tf) +{ + + errno = 0; + rewind(tf->file); + if (errno != 0) + err(1, "%s(): rewind()", __func__); +} + +/* + * Return non-zero if an error occurred. + */ +int +t_ferror(struct t_file *tf) +{ + + return (ferror(tf->file)); +} + +/* + * Return non-zero if the end of the file was reached. + */ +int +t_feof(struct t_file *tf) +{ + + return (feof(tf->file)); +} + +/* + * Close a temp file. + */ +void +t_fclose(struct t_file *tf) +{ + + if (tf == tflist) + tflist = tf->next; + if (tf->prev) + tf->prev->next = tf->next; + if (tf->next) + tf->next->prev = tf->prev; + fclose(tf->file); + if (unlink(tf->name) < 0) + warn("%s(): unlink()", __func__); + free(tf->name); + free(tf); +} + +/* + * atexit() function to close all remaining files. + */ +void +t_fcloseall(void) +{ + + while (tflist) + t_fclose(tflist); +} diff --git a/contrib/openpam/t/t_main.c b/contrib/openpam/t/t_main.c index 6a29b0a..a0bbdda 100644 --- a/contrib/openpam/t/t_main.c +++ b/contrib/openpam/t/t_main.c @@ -6,8 +6,7 @@ * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer - * in this position and unchanged. + * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. @@ -27,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: t_main.c 578 2012-04-06 00:45:59Z des $ + * $Id: t_main.c 651 2013-03-05 18:11:59Z des $ */ #ifdef HAVE_CONFIG_H @@ -39,6 +38,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <syslog.h> #include <unistd.h> #include "t.h" @@ -63,7 +63,7 @@ static void usage(void) { - fprintf(stderr, "usage: [-v] %s\n", t_progname); + fprintf(stderr, "usage: %s [-v]\n", t_progname); exit(1); } @@ -75,6 +75,14 @@ main(int argc, char *argv[]) int n, pass, fail; int opt; +#ifdef HAVE_SETLOGMASK + /* suppress openpam_log() */ + setlogmask(LOG_UPTO(0)); +#endif + + /* clean up temp files in case of premature exit */ + atexit(t_fcloseall); + if ((t_progname = strrchr(argv[0], '/')) != NULL) t_progname++; /* one past the slash */ else @@ -104,7 +112,7 @@ main(int argc, char *argv[]) /* run the tests */ for (n = pass = fail = 0; t_plan[n] != NULL; ++n) { desc = t_plan[n]->desc ? t_plan[n]->desc : "no description"; - if ((*t_plan[n]->func)()) { + if ((*t_plan[n]->func)(t_plan[n]->arg)) { printf("ok %d - %s\n", n + 1, desc); ++pass; } else { diff --git a/contrib/openpam/t/t_openpam_readlinev.c b/contrib/openpam/t/t_openpam_readlinev.c index bb0ff90..59f2b10 100644 --- a/contrib/openpam/t/t_openpam_readlinev.c +++ b/contrib/openpam/t/t_openpam_readlinev.c @@ -6,8 +6,7 @@ * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer - * in this position and unchanged. + * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. @@ -27,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: t_openpam_readlinev.c 581 2012-04-06 01:08:37Z des $ + * $Id: t_openpam_readlinev.c 648 2013-03-05 17:54:27Z des $ */ #ifdef HAVE_CONFIG_H @@ -35,12 +34,9 @@ #endif #include <err.h> -#include <errno.h> -#include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <unistd.h> #include <security/pam_appl.h> #include <security/openpam.h> @@ -48,54 +44,6 @@ #include "openpam_impl.h" #include "t.h" -static char filename[1024]; -static FILE *f; - -/* - * Open the temp file and immediately unlink it so it doesn't leak in case - * of premature exit. - */ -static void -orlv_open(void) -{ - int fd; - - if ((fd = open(filename, O_RDWR|O_CREAT|O_TRUNC, 0600)) < 0) - err(1, "%s(): %s", __func__, filename); - if ((f = fdopen(fd, "r+")) == NULL) - err(1, "%s(): %s", __func__, filename); - if (unlink(filename) < 0) - err(1, "%s(): %s", __func__, filename); -} - -/* - * Write text to the temp file. - */ -static void -orlv_output(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - vfprintf(f, fmt, ap); - va_end(ap); - if (ferror(f)) - err(1, "%s", filename); -} - -/* - * Rewind the temp file. - */ -static void -orlv_rewind(void) -{ - - errno = 0; - rewind(f); - if (errno != 0) - err(1, "%s(): %s", __func__, filename); -} - /* * Read a line from the temp file and verify that the result matches our * expectations: whether a line was read at all, how many and which words @@ -103,7 +51,7 @@ orlv_rewind(void) * newlines) and whether we reached the end of the file. */ static int -orlv_expect(const char **expectedv, int lines, int eof) +orlv_expect(struct t_file *tf, const char **expectedv, int lines, int eof) { int expectedc, gotc, i, lineno = 0; char **gotv; @@ -112,9 +60,9 @@ orlv_expect(const char **expectedv, int lines, int eof) if (expectedv != NULL) while (expectedv[expectedc] != NULL) ++expectedc; - gotv = openpam_readlinev(f, &lineno, &gotc); - if (ferror(f)) - err(1, "%s(): %s", __func__, filename); + gotv = openpam_readlinev(tf->file, &lineno, &gotc); + if (t_ferror(tf)) + err(1, "%s(): %s", __func__, tf->name); if (expectedv != NULL && gotv == NULL) { t_verbose("expected %d words, got nothing\n", expectedc); return (0); @@ -146,28 +94,17 @@ orlv_expect(const char **expectedv, int lines, int eof) lines, lineno); return (0); } - if (eof && !feof(f)) { + if (eof && !t_feof(tf)) { t_verbose("expected EOF, but didn't get it\n"); return (0); } - if (!eof && feof(f)) { + if (!eof && t_feof(tf)) { t_verbose("didn't expect EOF, but got it anyway\n"); return (0); } return (1); } -/* - * Close the temp file. - */ -void -orlv_close(void) -{ - - if (fclose(f) != 0) - err(1, "%s(): %s", __func__, filename); - f = NULL; -} /*************************************************************************** * Commonly-used lines @@ -195,71 +132,77 @@ static const char *hello_world[] = { T_FUNC(empty_input, "empty input") { + struct t_file *tf; int ret; - orlv_open(); - ret = orlv_expect(NULL, 0 /*lines*/, 1 /*eof*/); - orlv_close(); + tf = t_fopen(NULL); + ret = orlv_expect(tf, NULL, 0 /*lines*/, 1 /*eof*/); + t_fclose(tf); return (ret); } T_FUNC(empty_line, "empty line") { + struct t_file *tf; int ret; - orlv_open(); - orlv_output("\n"); - orlv_rewind(); - ret = orlv_expect(empty, 1 /*lines*/, 0 /*eof*/); - orlv_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\n"); + t_frewind(tf); + ret = orlv_expect(tf, empty, 1 /*lines*/, 0 /*eof*/); + t_fclose(tf); return (ret); } T_FUNC(unterminated_empty_line, "unterminated empty line") { + struct t_file *tf; int ret; - orlv_open(); - orlv_output(" "); - orlv_rewind(); - ret = orlv_expect(NULL, 0 /*lines*/, 1 /*eof*/); - orlv_close(); + tf = t_fopen(NULL); + t_fprintf(tf, " "); + t_frewind(tf); + ret = orlv_expect(tf, NULL, 0 /*lines*/, 1 /*eof*/); + t_fclose(tf); return (ret); } T_FUNC(whitespace, "whitespace") { + struct t_file *tf; int ret; - orlv_open(); - orlv_output(" \n"); - orlv_rewind(); - ret = orlv_expect(empty, 1 /*lines*/, 0 /*eof*/); - orlv_close(); + tf = t_fopen(NULL); + t_fprintf(tf, " \n"); + t_frewind(tf); + ret = orlv_expect(tf, empty, 1 /*lines*/, 0 /*eof*/); + t_fclose(tf); return (ret); } T_FUNC(comment, "comment") { + struct t_file *tf; int ret; - orlv_open(); - orlv_output("# comment\n"); - orlv_rewind(); - ret = orlv_expect(empty, 1 /*lines*/, 0 /*eof*/); - orlv_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "# comment\n"); + t_frewind(tf); + ret = orlv_expect(tf, empty, 1 /*lines*/, 0 /*eof*/); + t_fclose(tf); return (ret); } T_FUNC(whitespace_before_comment, "whitespace before comment") { + struct t_file *tf; int ret; - orlv_open(); - orlv_output(" # comment\n"); - orlv_rewind(); - ret = orlv_expect(empty, 1 /*lines*/, 0 /*eof*/); - orlv_close(); + tf = t_fopen(NULL); + t_fprintf(tf, " # comment\n"); + t_frewind(tf); + ret = orlv_expect(tf, empty, 1 /*lines*/, 0 /*eof*/); + t_fclose(tf); return (ret); } @@ -270,37 +213,40 @@ T_FUNC(whitespace_before_comment, "whitespace before comment") T_FUNC(one_word, "one word") { + struct t_file *tf; int ret; - orlv_open(); - orlv_output("hello\n"); - orlv_rewind(); - ret = orlv_expect(hello, 1 /*lines*/, 0 /*eof*/); - orlv_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "hello\n"); + t_frewind(tf); + ret = orlv_expect(tf, hello, 1 /*lines*/, 0 /*eof*/); + t_fclose(tf); return (ret); } T_FUNC(two_words, "two words") { + struct t_file *tf; int ret; - orlv_open(); - orlv_output("hello world\n"); - orlv_rewind(); - ret = orlv_expect(hello_world, 1 /*lines*/, 0 /*eof*/); - orlv_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "hello world\n"); + t_frewind(tf); + ret = orlv_expect(tf, hello_world, 1 /*lines*/, 0 /*eof*/); + t_fclose(tf); return (ret); } T_FUNC(unterminated_line, "unterminated line") { + struct t_file *tf; int ret; - orlv_open(); - orlv_output("hello world"); - orlv_rewind(); - ret = orlv_expect(hello_world, 0 /*lines*/, 1 /*eof*/); - orlv_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "hello world"); + t_frewind(tf); + ret = orlv_expect(tf, hello_world, 0 /*lines*/, 1 /*eof*/); + t_fclose(tf); return (ret); } @@ -330,9 +276,6 @@ t_prepare(int argc, char *argv[]) (void)argc; (void)argv; - snprintf(filename, sizeof filename, "%s.%d.tmp", t_progname, getpid()); - if (filename == NULL) - err(1, "asprintf()"); return (t_plan); } diff --git a/contrib/openpam/t/t_openpam_readword.c b/contrib/openpam/t/t_openpam_readword.c index 2135d8b..d2d6bd5 100644 --- a/contrib/openpam/t/t_openpam_readword.c +++ b/contrib/openpam/t/t_openpam_readword.c @@ -6,8 +6,7 @@ * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer - * in this position and unchanged. + * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. @@ -27,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: t_openpam_readword.c 584 2012-04-07 22:47:16Z des $ + * $Id: t_openpam_readword.c 648 2013-03-05 17:54:27Z des $ */ #ifdef HAVE_CONFIG_H @@ -35,8 +34,6 @@ #endif #include <err.h> -#include <errno.h> -#include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -47,54 +44,6 @@ #include "t.h" -static char filename[1024]; -static FILE *f; - -/* - * Open the temp file and immediately unlink it so it doesn't leak in case - * of premature exit. - */ -static void -orw_open(void) -{ - int fd; - - if ((fd = open(filename, O_RDWR|O_CREAT|O_TRUNC, 0600)) < 0) - err(1, "%s(): %s", __func__, filename); - if ((f = fdopen(fd, "r+")) == NULL) - err(1, "%s(): %s", __func__, filename); - if (unlink(filename) < 0) - err(1, "%s(): %s", __func__, filename); -} - -/* - * Write text to the temp file. - */ -static void -orw_output(const char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - vfprintf(f, fmt, ap); - va_end(ap); - if (ferror(f)) - err(1, "%s", filename); -} - -/* - * Rewind the temp file. - */ -static void -orw_rewind(void) -{ - - errno = 0; - rewind(f); - if (errno != 0) - err(1, "%s(): %s", __func__, filename); -} - /* * Read a word from the temp file and verify that the result matches our * expectations: whether a word was read at all, how many lines were read @@ -102,15 +51,15 @@ orw_rewind(void) * the file and whether we reached the end of the line. */ static int -orw_expect(const char *expected, int lines, int eof, int eol) +orw_expect(struct t_file *tf, const char *expected, int lines, int eof, int eol) { int ch, lineno = 0; char *got; size_t len; - got = openpam_readword(f, &lineno, &len); - if (ferror(f)) - err(1, "%s(): %s", __func__, filename); + got = openpam_readword(tf->file, &lineno, &len); + if (t_ferror(tf)) + err(1, "%s(): %s", __func__, tf->name); if (expected != NULL && got == NULL) { t_verbose("expected <<%s>>, got nothing\n", expected); return (0); @@ -128,17 +77,17 @@ orw_expect(const char *expected, int lines, int eof, int eol) lines, lineno); return (0); } - if (eof && !feof(f)) { + if (eof && !t_feof(tf)) { t_verbose("expected EOF, but didn't get it\n"); return (0); } - if (!eof && feof(f)) { + if (!eof && t_feof(tf)) { t_verbose("didn't expect EOF, but got it anyway\n"); return (0); } - ch = fgetc(f); - if (ferror(f)) - err(1, "%s(): %s", __func__, filename); + ch = fgetc(tf->file); + if (t_ferror(tf)) + err(1, "%s(): %s", __func__, tf->name); if (eol && ch != '\n') { t_verbose("expected EOL, but didn't get it\n"); return (0); @@ -148,22 +97,10 @@ orw_expect(const char *expected, int lines, int eof, int eol) return (0); } if (ch != EOF) - ungetc(ch, f); + ungetc(ch, tf->file); return (1); } -/* - * Close the temp file. - */ -void -orw_close(void) -{ - - if (fclose(f) != 0) - err(1, "%s(): %s", __func__, filename); - f = NULL; -} - /*************************************************************************** * Lines without words @@ -171,83 +108,90 @@ orw_close(void) T_FUNC(empty_input, "empty input") { + struct t_file *tf; int ret; - orw_open(); - ret = orw_expect(NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + ret = orw_expect(tf, NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(empty_line, "empty line") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\n"); - orw_rewind(); - ret = orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\n"); + t_frewind(tf); + ret = orw_expect(tf, NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(unterminated_line, "unterminated line") { + struct t_file *tf; int ret; - orw_open(); - orw_output(" "); - orw_rewind(); - ret = orw_expect(NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, " "); + t_frewind(tf); + ret = orw_expect(tf, NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(single_whitespace, "single whitespace") { + struct t_file *tf; int ret; - orw_open(); - orw_output(" \n"); - orw_rewind(); - ret = orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, " \n"); + t_frewind(tf); + ret = orw_expect(tf, NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(multiple_whitespace, "multiple whitespace") { + struct t_file *tf; int ret; - orw_open(); - orw_output(" \t\r\n"); - orw_rewind(); - ret = orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, " \t\r\n"); + t_frewind(tf); + ret = orw_expect(tf, NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(comment, "comment") { + struct t_file *tf; int ret; - orw_open(); - orw_output("# comment\n"); - orw_rewind(); - ret = orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "# comment\n"); + t_frewind(tf); + ret = orw_expect(tf, NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(whitespace_before_comment, "whitespace before comment") { + struct t_file *tf; int ret; - orw_open(); - orw_output(" # comment\n"); - orw_rewind(); - ret = orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, " # comment\n"); + t_frewind(tf); + ret = orw_expect(tf, NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } @@ -259,106 +203,114 @@ T_FUNC(whitespace_before_comment, "whitespace before comment") T_FUNC(single_word, "single word") { const char *word = "hello"; + struct t_file *tf; int ret; - orw_open(); - orw_output("%s\n", word); - orw_rewind(); - ret = orw_expect(word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "%s\n", word); + t_frewind(tf); + ret = orw_expect(tf, word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(single_whitespace_before_word, "single whitespace before word") { const char *word = "hello"; + struct t_file *tf; int ret; - orw_open(); - orw_output(" %s\n", word); - orw_rewind(); - ret = orw_expect(word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, " %s\n", word); + t_frewind(tf); + ret = orw_expect(tf, word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(double_whitespace_before_word, "double whitespace before word") { const char *word = "hello"; + struct t_file *tf; int ret; - orw_open(); - orw_output(" %s\n", word); - orw_rewind(); - ret = orw_expect(word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, " %s\n", word); + t_frewind(tf); + ret = orw_expect(tf, word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(single_whitespace_after_word, "single whitespace after word") { const char *word = "hello"; + struct t_file *tf; int ret; - orw_open(); - orw_output("%s \n", word); - orw_rewind(); - ret = orw_expect(word, 0 /*lines*/, 0 /*eof*/, 0 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "%s \n", word); + t_frewind(tf); + ret = orw_expect(tf, word, 0 /*lines*/, 0 /*eof*/, 0 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(double_whitespace_after_word, "double whitespace after word") { const char *word = "hello"; + struct t_file *tf; int ret; - orw_open(); - orw_output("%s \n", word); - orw_rewind(); - ret = orw_expect(word, 0 /*lines*/, 0 /*eof*/, 0 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "%s \n", word); + t_frewind(tf); + ret = orw_expect(tf, word, 0 /*lines*/, 0 /*eof*/, 0 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(comment_after_word, "comment after word") { const char *word = "hello"; + struct t_file *tf; int ret; - orw_open(); - orw_output("%s # comment\n", word); - orw_rewind(); - ret = orw_expect(word, 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect(NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "%s # comment\n", word); + t_frewind(tf); + ret = orw_expect(tf, word, 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(word_containing_hash, "word containing hash") { const char *word = "hello#world"; + struct t_file *tf; int ret; - orw_open(); - orw_output("%s\n", word); - orw_rewind(); - ret = orw_expect(word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "%s\n", word); + t_frewind(tf); + ret = orw_expect(tf, word, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(two_words, "two words") { const char *word[] = { "hello", "world" }; + struct t_file *tf; int ret; - orw_open(); - orw_output("%s %s\n", word[0], word[1]); - orw_rewind(); - ret = orw_expect(word[0], 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect(word[1], 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "%s %s\n", word[0], word[1]); + t_frewind(tf); + ret = orw_expect(tf, word[0], 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, word[1], 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } @@ -369,89 +321,96 @@ T_FUNC(two_words, "two words") T_FUNC(naked_escape, "naked escape") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\\"); - orw_rewind(); - ret = orw_expect(NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\\"); + t_frewind(tf); + ret = orw_expect(tf, NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_escape, "escaped escape") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\\\\\n"); - orw_rewind(); - ret = orw_expect("\\", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\\\\\n"); + t_frewind(tf); + ret = orw_expect(tf, "\\", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_whitespace, "escaped whitespace") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\\ \\\t \\\r \\\n\n"); - orw_rewind(); - ret = orw_expect(" ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + tf = t_fopen(NULL); + t_fprintf(tf, "\\ \\\t \\\r \\\n\n"); + t_frewind(tf); + ret = orw_expect(tf, " ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && /* this last one is a line continuation */ - orw_expect(NULL, 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + orw_expect(tf, NULL, 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_newline_before_word, "escaped newline before word") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\\\nhello world\n"); - orw_rewind(); - ret = orw_expect("hello", 1 /*lines*/, 0 /*eof*/, 0 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\\\nhello world\n"); + t_frewind(tf); + ret = orw_expect(tf, "hello", 1 /*lines*/, 0 /*eof*/, 0 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_newline_within_word, "escaped newline within word") { + struct t_file *tf; int ret; - orw_open(); - orw_output("hello\\\nworld\n"); - orw_rewind(); - ret = orw_expect("helloworld", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "hello\\\nworld\n"); + t_frewind(tf); + ret = orw_expect(tf, "helloworld", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_newline_after_word, "escaped newline after word") { + struct t_file *tf; int ret; - orw_open(); - orw_output("hello\\\n world\n"); - orw_rewind(); - ret = orw_expect("hello", 1 /*lines*/, 0 /*eof*/, 0 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "hello\\\n world\n"); + t_frewind(tf); + ret = orw_expect(tf, "hello", 1 /*lines*/, 0 /*eof*/, 0 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_letter, "escaped letter") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\\z\n"); - orw_rewind(); - ret = orw_expect("z", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\\z\n"); + t_frewind(tf); + ret = orw_expect(tf, "z", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } @@ -462,127 +421,220 @@ T_FUNC(escaped_letter, "escaped letter") T_FUNC(naked_single_quote, "naked single quote") { + struct t_file *tf; int ret; - orw_open(); - orw_output("'"); - orw_rewind(); - ret = orw_expect(NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "'"); + t_frewind(tf); + ret = orw_expect(tf, NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(naked_double_quote, "naked double quote") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\""); - orw_rewind(); - ret = orw_expect(NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\""); + t_frewind(tf); + ret = orw_expect(tf, NULL, 0 /*lines*/, 1 /*eof*/, 0 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(empty_single_quotes, "empty single quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("''\n"); - orw_rewind(); - ret = orw_expect("", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "''\n"); + t_frewind(tf); + ret = orw_expect(tf, "", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(empty_double_quotes, "empty double quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\"\"\n"); - orw_rewind(); - ret = orw_expect("", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\"\"\n"); + t_frewind(tf); + ret = orw_expect(tf, "", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(single_quotes_within_double_quotes, "single quotes within double quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\"' '\"\n"); - orw_rewind(); - ret = orw_expect("' '", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\"' '\"\n"); + t_frewind(tf); + ret = orw_expect(tf, "' '", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(double_quotes_within_single_quotes, "double quotes within single quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("'\" \"'\n"); - orw_rewind(); - ret = orw_expect("\" \"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "'\" \"'\n"); + t_frewind(tf); + ret = orw_expect(tf, "\" \"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(single_quoted_whitespace, "single-quoted whitespace") { + struct t_file *tf; int ret; - orw_open(); - orw_output("' ' '\t' '\r' '\n'\n"); - orw_rewind(); - ret = orw_expect(" ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\n", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "' ' '\t' '\r' '\n'\n"); + t_frewind(tf); + ret = orw_expect(tf, " ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\n", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(double_quoted_whitespace, "double-quoted whitespace") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\" \" \"\t\" \"\r\" \"\n\"\n"); - orw_rewind(); - ret = orw_expect(" ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\n", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\" \" \"\t\" \"\r\" \"\n\"\n"); + t_frewind(tf); + ret = orw_expect(tf, " ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\n", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(single_quoted_words, "single-quoted words") { + struct t_file *tf; int ret; - orw_open(); - orw_output("'hello world'\n"); - orw_rewind(); - ret = orw_expect("hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "'hello world'\n"); + t_frewind(tf); + ret = orw_expect(tf, "hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(double_quoted_words, "double-quoted words") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\"hello world\"\n"); - orw_rewind(); - ret = orw_expect("hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\"hello world\"\n"); + t_frewind(tf); + ret = orw_expect(tf, "hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); + return (ret); +} + + +/*************************************************************************** + * Combinations of quoted and unquoted text + */ + +T_FUNC(single_quote_before_word, "single quote before word") +{ + struct t_file *tf; + int ret; + + tf = t_fopen(NULL); + t_fprintf(tf, "'hello 'world\n"); + t_frewind(tf); + ret = orw_expect(tf, "hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); + return (ret); +} + +T_FUNC(double_quote_before_word, "double quote before word") +{ + struct t_file *tf; + int ret; + + tf = t_fopen(NULL); + t_fprintf(tf, "\"hello \"world\n"); + t_frewind(tf); + ret = orw_expect(tf, "hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); + return (ret); +} + +T_FUNC(single_quote_within_word, "single quote within word") +{ + struct t_file *tf; + int ret; + + tf = t_fopen(NULL); + t_fprintf(tf, "hello' 'world\n"); + t_frewind(tf); + ret = orw_expect(tf, "hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); + return (ret); +} + +T_FUNC(double_quote_within_word, "double quote within word") +{ + struct t_file *tf; + int ret; + + tf = t_fopen(NULL); + t_fprintf(tf, "hello\" \"world\n"); + t_frewind(tf); + ret = orw_expect(tf, "hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); + return (ret); +} + +T_FUNC(single_quote_after_word, "single quote after word") +{ + struct t_file *tf; + int ret; + + tf = t_fopen(NULL); + t_fprintf(tf, "hello' world'\n"); + t_frewind(tf); + ret = orw_expect(tf, "hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); + return (ret); +} + +T_FUNC(double_quote_after_word, "double quote after word") +{ + struct t_file *tf; + int ret; + + tf = t_fopen(NULL); + t_fprintf(tf, "hello\" world\"\n"); + t_frewind(tf); + ret = orw_expect(tf, "hello world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } @@ -594,163 +646,175 @@ T_FUNC(double_quoted_words, "double-quoted words") T_FUNC(escaped_single_quote, "escaped single quote") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\\'\n"); - orw_rewind(); - ret = orw_expect("'", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\\'\n"); + t_frewind(tf); + ret = orw_expect(tf, "'", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_double_quote, "escaped double quote") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\\\"\n"); - orw_rewind(); - ret = orw_expect("\"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\\\"\n"); + t_frewind(tf); + ret = orw_expect(tf, "\"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_whitespace_within_single_quotes, "escaped whitespace within single quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("'\\ ' '\\\t' '\\\r' '\\\n'\n"); - orw_rewind(); - ret = orw_expect("\\ ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\\\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\\\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\\\n", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "'\\ ' '\\\t' '\\\r' '\\\n'\n"); + t_frewind(tf); + ret = orw_expect(tf, "\\ ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\\\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\\\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\\\n", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_whitespace_within_double_quotes, "escaped whitespace within double quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\"\\ \" \"\\\t\" \"\\\r\" \"\\\n\"\n"); - orw_rewind(); - ret = orw_expect("\\ ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\\\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && - orw_expect("\\\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + tf = t_fopen(NULL); + t_fprintf(tf, "\"\\ \" \"\\\t\" \"\\\r\" \"\\\n\"\n"); + t_frewind(tf); + ret = orw_expect(tf, "\\ ", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\\\t", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && + orw_expect(tf, "\\\r", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) && /* this last one is a line continuation */ - orw_expect("", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + orw_expect(tf, "", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_letter_within_single_quotes, "escaped letter within single quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("'\\z'\n"); - orw_rewind(); - ret = orw_expect("\\z", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "'\\z'\n"); + t_frewind(tf); + ret = orw_expect(tf, "\\z", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_letter_within_double_quotes, "escaped letter within double quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\"\\z\"\n"); - orw_rewind(); - ret = orw_expect("\\z", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\"\\z\"\n"); + t_frewind(tf); + ret = orw_expect(tf, "\\z", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_escape_within_single_quotes, "escaped escape within single quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("'\\\\'\n"); - orw_rewind(); - ret = orw_expect("\\\\", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "'\\\\'\n"); + t_frewind(tf); + ret = orw_expect(tf, "\\\\", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_escape_within_double_quotes, "escaped escape within double quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\"\\\\\"\n"); - orw_rewind(); - ret = orw_expect("\\", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\"\\\\\"\n"); + t_frewind(tf); + ret = orw_expect(tf, "\\", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_single_quote_within_single_quotes, "escaped single quote within single quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("'\\''\n"); - orw_rewind(); - ret = orw_expect(NULL, 1 /*lines*/, 1 /*eof*/, 0 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "'\\''\n"); + t_frewind(tf); + ret = orw_expect(tf, NULL, 1 /*lines*/, 1 /*eof*/, 0 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_double_quote_within_single_quotes, "escaped double quote within single quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("'\\\"'\n"); - orw_rewind(); - ret = orw_expect("\\\"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "'\\\"'\n"); + t_frewind(tf); + ret = orw_expect(tf, "\\\"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_single_quote_within_double_quotes, "escaped single quote within double quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\"\\'\"\n"); - orw_rewind(); - ret = orw_expect("\\'", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\"\\'\"\n"); + t_frewind(tf); + ret = orw_expect(tf, "\\'", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } T_FUNC(escaped_double_quote_within_double_quotes, "escaped double quote within double quotes") { + struct t_file *tf; int ret; - orw_open(); - orw_output("\"\\\"\"\n"); - orw_rewind(); - ret = orw_expect("\"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); - orw_close(); + tf = t_fopen(NULL); + t_fprintf(tf, "\"\\\"\"\n"); + t_frewind(tf); + ret = orw_expect(tf, "\"", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/); + t_fclose(tf); return (ret); } @@ -795,6 +859,13 @@ const struct t_test *t_plan[] = { T(single_quoted_words), T(double_quoted_words), + T(single_quote_before_word), + T(double_quote_before_word), + T(single_quote_within_word), + T(double_quote_within_word), + T(single_quote_after_word), + T(double_quote_after_word), + T(escaped_single_quote), T(escaped_double_quote), T(escaped_whitespace_within_single_quotes), @@ -817,9 +888,6 @@ t_prepare(int argc, char *argv[]) (void)argc; (void)argv; - snprintf(filename, sizeof filename, "%s.%d.tmp", t_progname, getpid()); - if (filename == NULL) - err(1, "asprintf()"); return (t_plan); } |