Date: Mon, 5 Oct 2015 17:54:55 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r288831 - in projects/clang370-import: . bin/cat bin/ls/tests contrib/ipfilter games include lib/libc/net lib/libc/sys lib/libohash lib/libusb lib/libz release/arm sbin/ipf/ipftest sbin... Message-ID: <201510051754.t95Hstu5031323@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Mon Oct 5 17:54:54 2015 New Revision: 288831 URL: https://svnweb.freebsd.org/changeset/base/288831 Log: Merge ^/head r288457 through r288830. Added: projects/clang370-import/share/dtrace/blocking - copied unchanged from r288830, head/share/dtrace/blocking projects/clang370-import/usr.bin/caesar/ - copied from r288830, head/usr.bin/caesar/ projects/clang370-import/usr.bin/factor/ - copied from r288830, head/usr.bin/factor/ projects/clang370-import/usr.bin/fortune/ - copied from r288830, head/usr.bin/fortune/ projects/clang370-import/usr.bin/grdc/ - copied from r288830, head/usr.bin/grdc/ projects/clang370-import/usr.bin/morse/ - copied from r288830, head/usr.bin/morse/ projects/clang370-import/usr.bin/number/ - copied from r288830, head/usr.bin/number/ projects/clang370-import/usr.bin/pom/ - copied from r288830, head/usr.bin/pom/ projects/clang370-import/usr.bin/primes/ - copied from r288830, head/usr.bin/primes/ projects/clang370-import/usr.bin/random/ - copied from r288830, head/usr.bin/random/ projects/clang370-import/usr.bin/truss/aarch64-fbsd.c - copied unchanged from r288830, head/usr.bin/truss/aarch64-fbsd.c projects/clang370-import/usr.bin/truss/amd64-cloudabi64.c - copied unchanged from r288830, head/usr.bin/truss/amd64-cloudabi64.c projects/clang370-import/usr.bin/truss/amd64cloudabi64.conf - copied unchanged from r288830, head/usr.bin/truss/amd64cloudabi64.conf projects/clang370-import/usr.sbin/bhyve/fwctl.c - copied unchanged from r288830, head/usr.sbin/bhyve/fwctl.c projects/clang370-import/usr.sbin/bhyve/fwctl.h - copied unchanged from r288830, head/usr.sbin/bhyve/fwctl.h Deleted: projects/clang370-import/games/ Modified: projects/clang370-import/Makefile.inc1 projects/clang370-import/bin/cat/cat.c projects/clang370-import/bin/ls/tests/Makefile projects/clang370-import/bin/ls/tests/ls_tests.sh projects/clang370-import/include/Makefile projects/clang370-import/lib/libc/net/getaddrinfo.c projects/clang370-import/lib/libc/sys/posix_fadvise.2 projects/clang370-import/lib/libohash/ohash.h projects/clang370-import/lib/libusb/Makefile projects/clang370-import/lib/libz/Makefile projects/clang370-import/release/arm/BANANAPI.conf projects/clang370-import/release/arm/CUBIEBOARD.conf projects/clang370-import/release/arm/CUBIEBOARD2.conf projects/clang370-import/sbin/ipf/ipftest/Makefile projects/clang370-import/sbin/ipfw/ipfw2.c projects/clang370-import/share/dtrace/Makefile projects/clang370-import/share/man/man7/hier.7 projects/clang370-import/share/mk/bsd.sys.mk projects/clang370-import/share/mk/meta.stage.mk projects/clang370-import/sys/arm/arm/bcopy_page.S projects/clang370-import/sys/arm/arm/bcopyinout.S projects/clang370-import/sys/arm/arm/machdep.c projects/clang370-import/sys/arm/arm/vm_machdep.c projects/clang370-import/sys/arm/include/asm.h projects/clang370-import/sys/arm/include/atomic-v4.h projects/clang370-import/sys/arm/include/atomic-v6.h projects/clang370-import/sys/arm/include/atomic.h projects/clang370-import/sys/arm/ti/aintc.c projects/clang370-import/sys/arm64/arm64/trap.c projects/clang370-import/sys/cam/ctl/ctl_tpc.c projects/clang370-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c projects/clang370-import/sys/dev/ath/if_ath.c projects/clang370-import/sys/dev/ath/if_ath_beacon.c projects/clang370-import/sys/dev/ath/if_ath_keycache.c projects/clang370-import/sys/dev/ath/if_ath_keycache.h projects/clang370-import/sys/dev/drm2/drmP.h projects/clang370-import/sys/dev/drm2/drm_crtc.c projects/clang370-import/sys/dev/drm2/drm_fops.c projects/clang370-import/sys/dev/drm2/drm_pci.c projects/clang370-import/sys/dev/drm2/drm_stub.c projects/clang370-import/sys/dev/drm2/i915/i915_dma.c projects/clang370-import/sys/dev/drm2/i915/i915_drv.c projects/clang370-import/sys/dev/drm2/i915/intel_opregion.c projects/clang370-import/sys/dev/if_ndis/if_ndis.c projects/clang370-import/sys/dev/mwl/if_mwl.c projects/clang370-import/sys/dev/ral/rt2560.c projects/clang370-import/sys/dev/ral/rt2661.c projects/clang370-import/sys/dev/ral/rt2860.c projects/clang370-import/sys/dev/random/random_harvestq.c projects/clang370-import/sys/dev/usb/wlan/if_rum.c projects/clang370-import/sys/dev/usb/wlan/if_rumreg.h projects/clang370-import/sys/dev/usb/wlan/if_rumvar.h projects/clang370-import/sys/dev/usb/wlan/if_run.c projects/clang370-import/sys/dev/usb/wlan/if_runreg.h projects/clang370-import/sys/dev/usb/wlan/if_runvar.h projects/clang370-import/sys/dev/usb/wlan/if_upgt.c projects/clang370-import/sys/dev/usb/wlan/if_ural.c projects/clang370-import/sys/dev/usb/wlan/if_urtwn.c projects/clang370-import/sys/dev/usb/wlan/if_zyd.c projects/clang370-import/sys/dev/wpi/if_wpi.c projects/clang370-import/sys/dev/wtap/if_wtap.c projects/clang370-import/sys/kern/subr_sbuf.c projects/clang370-import/sys/kern/vfs_bio.c projects/clang370-import/sys/mips/conf/WZR-300HP projects/clang370-import/sys/mips/conf/WZR-300HP.hints projects/clang370-import/sys/net/if_gif.c projects/clang370-import/sys/net/if_gre.c projects/clang370-import/sys/net/if_lagg.c projects/clang370-import/sys/net/if_lagg.h projects/clang370-import/sys/net/if_me.c projects/clang370-import/sys/net80211/ieee80211_crypto.c projects/clang370-import/sys/net80211/ieee80211_crypto.h projects/clang370-import/sys/net80211/ieee80211_crypto_ccmp.c projects/clang370-import/sys/net80211/ieee80211_crypto_none.c projects/clang370-import/sys/net80211/ieee80211_crypto_tkip.c projects/clang370-import/sys/net80211/ieee80211_crypto_wep.c projects/clang370-import/sys/net80211/ieee80211_ioctl.c projects/clang370-import/sys/net80211/ieee80211_output.c projects/clang370-import/sys/net80211/ieee80211_proto.h projects/clang370-import/sys/net80211/ieee80211_var.h projects/clang370-import/sys/netinet6/nd6.c projects/clang370-import/sys/netinet6/nd6.h projects/clang370-import/sys/netinet6/nd6_nbr.c projects/clang370-import/sys/netpfil/ipfw/ip_fw_sockopt.c projects/clang370-import/sys/vm/vm_page.c projects/clang370-import/sys/vm/vm_pageout.c projects/clang370-import/sys/vm/vm_pageout.h projects/clang370-import/targets/pseudo/bootstrap-tools/Makefile projects/clang370-import/targets/pseudo/stage/Makefile projects/clang370-import/targets/pseudo/userland/games/Makefile.depend projects/clang370-import/usr.bin/Makefile projects/clang370-import/usr.bin/truss/Makefile projects/clang370-import/usr.bin/truss/syscall.h projects/clang370-import/usr.bin/truss/syscalls.c projects/clang370-import/usr.sbin/bhyve/Makefile projects/clang370-import/usr.sbin/bhyve/bhyverun.c projects/clang370-import/usr.sbin/bhyve/pci_ahci.c projects/clang370-import/usr.sbin/bhyve/pci_virtio_net.c projects/clang370-import/usr.sbin/ctld/ctl.conf.5 projects/clang370-import/usr.sbin/ctld/ctld.c projects/clang370-import/usr.sbin/ctld/ctld.h projects/clang370-import/usr.sbin/kldxref/kldxref.c projects/clang370-import/usr.sbin/rpc.yppasswdd/yppasswdd_server.c projects/clang370-import/usr.sbin/rpcbind/rpcb_svc_com.c Directory Properties: projects/clang370-import/ (props changed) projects/clang370-import/contrib/ipfilter/ (props changed) projects/clang370-import/contrib/ipfilter/ml_ipl.c (props changed) projects/clang370-import/contrib/ipfilter/mlfk_ipl.c (props changed) projects/clang370-import/contrib/ipfilter/mlh_rule.c (props changed) projects/clang370-import/contrib/ipfilter/mli_ipl.c (props changed) projects/clang370-import/contrib/ipfilter/mln_ipl.c (props changed) projects/clang370-import/contrib/ipfilter/mls_ipl.c (props changed) projects/clang370-import/include/ (props changed) projects/clang370-import/lib/libc/ (props changed) projects/clang370-import/lib/libz/ (props changed) projects/clang370-import/sbin/ (props changed) projects/clang370-import/sbin/ipfw/ (props changed) projects/clang370-import/share/ (props changed) projects/clang370-import/sys/ (props changed) projects/clang370-import/sys/cddl/contrib/opensolaris/ (props changed) projects/clang370-import/targets/ (props changed) projects/clang370-import/usr.sbin/bhyve/ (props changed) Modified: projects/clang370-import/Makefile.inc1 ============================================================================== --- projects/clang370-import/Makefile.inc1 Mon Oct 5 17:47:23 2015 (r288830) +++ projects/clang370-import/Makefile.inc1 Mon Oct 5 17:54:54 2015 (r288831) @@ -61,9 +61,6 @@ SUBDIR= ${SUBDIR_OVERRIDE} .else SUBDIR= lib libexec SUBDIR+=bin -.if ${MK_GAMES} != "no" -SUBDIR+=games -.endif .if ${MK_CDDL} != "no" SUBDIR+=cddl .endif @@ -1285,7 +1282,7 @@ legacy: _bt= _bootstrap-tools .if ${MK_GAMES} != "no" -_strfile= games/fortune/strfile +_strfile= usr.bin/fortune/strfile .endif .if ${MK_GCC} != "no" && ${MK_CXX} != "no" @@ -1325,6 +1322,8 @@ _cat= bin/cat .if ${BOOTSTRAPPING} < 1000033 _lex= usr.bin/lex + +${_bt}-usr.bin/lex: ${_bt}-usr.bin/m4 .endif # r277259 crunchide: Correct 64-bit section header offset Modified: projects/clang370-import/bin/cat/cat.c ============================================================================== --- projects/clang370-import/bin/cat/cat.c Mon Oct 5 17:47:23 2015 (r288830) +++ projects/clang370-import/bin/cat/cat.c Mon Oct 5 17:54:54 2015 (r288831) @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include <sys/socket.h> #include <sys/un.h> #include <errno.h> +#include <netdb.h> #endif #include <ctype.h> @@ -167,6 +168,7 @@ scanfiles(char *argv[], int cooked) FILE *fp; i = 0; + fd = -1; while ((path = argv[i]) != NULL || i == 0) { if (path == NULL || strcmp(path, "-") == 0) { filename = "stdin"; @@ -302,31 +304,40 @@ raw_cat(int rfd) static int udom_open(const char *path, int flags) { - struct sockaddr_un sou; - int fd; - unsigned int len; - - bzero(&sou, sizeof(sou)); + struct addrinfo hints, *res, *res0; + char rpath[PATH_MAX]; + int fd = -1; + int error; /* - * Construct the unix domain socket address and attempt to connect + * Construct the unix domain socket address and attempt to connect. */ - fd = socket(AF_UNIX, SOCK_STREAM, 0); - if (fd >= 0) { - sou.sun_family = AF_UNIX; - if ((len = strlcpy(sou.sun_path, path, - sizeof(sou.sun_path))) >= sizeof(sou.sun_path)) { - close(fd); - errno = ENAMETOOLONG; + bzero(&hints, sizeof(hints)); + hints.ai_family = AF_LOCAL; + if (realpath(path, rpath) == NULL) + return (-1); + error = getaddrinfo(rpath, NULL, &hints, &res0); + if (error) { + warn("%s", gai_strerror(error)); + errno = EINVAL; + return (-1); + } + for (res = res0; res != NULL; res = res->ai_next) { + fd = socket(res->ai_family, res->ai_socktype, + res->ai_protocol); + if (fd < 0) { + freeaddrinfo(res0); return (-1); } - len = offsetof(struct sockaddr_un, sun_path[len+1]); - - if (connect(fd, (void *)&sou, len) < 0) { + error = connect(fd, res->ai_addr, res->ai_addrlen); + if (error == 0) + break; + else { close(fd); fd = -1; } } + freeaddrinfo(res0); /* * handle the open flags by shutting down appropriate directions Modified: projects/clang370-import/bin/ls/tests/Makefile ============================================================================== --- projects/clang370-import/bin/ls/tests/Makefile Mon Oct 5 17:47:23 2015 (r288830) +++ projects/clang370-import/bin/ls/tests/Makefile Mon Oct 5 17:54:54 2015 (r288831) @@ -6,6 +6,6 @@ ATF_TESTS_SH+= ls_tests # This seems like overkill, but the idea in mind is that all of the testcases # should be runnable as !root TEST_METADATA.ls_tests+= required_user="unprivileged" -TEST_METADATA.ls_tests+= required_files="/usr/bin/nc" +TEST_METADATA.ls_tests+= required_files="/usr/bin/awk /usr/bin/nc /usr/bin/sort" .include <bsd.test.mk> Modified: projects/clang370-import/bin/ls/tests/ls_tests.sh ============================================================================== --- projects/clang370-import/bin/ls/tests/ls_tests.sh Mon Oct 5 17:47:23 2015 (r288830) +++ projects/clang370-import/bin/ls/tests/ls_tests.sh Mon Oct 5 17:54:54 2015 (r288831) @@ -45,7 +45,7 @@ create_test_inputs() { create_test_dir - atf_check -e empty -s exit:0 mkdir -m 0755 -p a/b + atf_check -e empty -s exit:0 mkdir -m 0755 -p a/b/1 atf_check -e empty -s exit:0 ln -s a/b c atf_check -e empty -s exit:0 touch d atf_check -e empty -s exit:0 ln d e @@ -53,12 +53,10 @@ create_test_inputs() atf_check -e empty -s exit:0 mkdir .g atf_check -e empty -s exit:0 mkfifo h atf_check -e ignore -s exit:0 dd if=/dev/zero of=i count=1000 bs=1 - atf_check -e empty -s exit:0 \ - sh -c "pid=${ATF_TMPDIR}/nc.pid; daemon -p \$pid nc -lU j; sleep 2; pkill -F \$pid" atf_check -e empty -s exit:0 touch klmn atf_check -e empty -s exit:0 touch opqr atf_check -e empty -s exit:0 touch stuv - atf_check -e empty -s exit:0 touch wxyz + atf_check -e empty -s exit:0 install -m 0755 /dev/null wxyz atf_check -e empty -s exit:0 touch 0b00000001 atf_check -e empty -s exit:0 touch 0b00000010 atf_check -e empty -s exit:0 touch 0b00000011 @@ -76,37 +74,29 @@ create_test_inputs() atf_check -e empty -s exit:0 touch 0b00001111 } -atf_test_case a_flag -a_flag_head() -{ - atf_set "descr" "Verify -a support" -} +KB=1024 +MB=$(( 1024 * $KB )) +GB=$(( 1024 * $MB )) +TB=$(( 1024 * $GB )) +PB=$(( 1024 * $TB )) -a_flag_body() +create_test_inputs2() { create_test_dir - # Make sure "." and ".." show up with -a - atf_check -e empty -o match:'\.[[:space:]]+\.\.' -s exit:0 ls -ax - - create_test_inputs - - WITH_a=$PWD/../with_a.out - WITHOUT_a=$PWD/../without_a.out - - atf_check -e empty -o save:$WITH_a -s exit:0 ls -A - atf_check -e empty -o save:$WITHOUT_a -s exit:0 ls - - echo "-A usage" - cat $WITH_a - echo "No -A usage" - cat $WITHOUT_a + for filesize in 1 512 $(( 2 * $KB )) $(( 10 * $KB )) $(( 512 * $KB )); \ + do + atf_check -e ignore -o empty -s exit:0 \ + dd if=/dev/zero of=${filesize}.file bs=1 \ + count=1 oseek=${filesize} conv=sparse + files="${files} ${filesize}.file" + done - for dot_path in '\.f' '\.g'; do - atf_check -e empty -o not-empty -s exit:0 grep "${dot_path}" \ - $WITH_a - atf_check -e empty -o empty -s not-exit:0 grep "${dot_path}" \ - $WITHOUT_a + for filesize in $MB $GB $TB; do + atf_check -e ignore -o empty -s exit:0 \ + dd if=/dev/zero of=${filesize}.file bs=$MB \ + count=1 oseek=$(( $filesize / $MB )) conv=sparse + files="${files} ${filesize}.file" done } @@ -192,21 +182,101 @@ C_flag_head() atf_set "descr" "Verify that the output from ls -C is multi-column, sorted down" } +print_index() +{ + local i=1 + local wanted_index=$1; shift + + while [ $i -le $wanted_index ]; do + if [ $i -eq $wanted_index ]; then + echo $1 + return + fi + shift + : $(( i += 1 )) + done +} + C_flag_body() { create_test_inputs WITH_C=$PWD/../with_C.out + export COLUMNS=40 atf_check -e empty -o save:$WITH_C -s exit:0 ls -C echo "With -C usage" cat $WITH_C - atf_check -e ignore -o not-empty -s exit:0 \ - egrep "0b00000001[[:space:]]+0b00000111[[:space:]]+0b00001101[[:space:]]+e[[:space:]]+stuv" $WITH_C - atf_check -e ignore -o not-empty -s exit:0 \ - egrep "0b00000010[[:space:]]+0b00001000[[:space:]]+0b00001110[[:space:]]+h[[:space:]]+wxyz" $WITH_C + paths=$(find -s . -mindepth 1 -maxdepth 1 \! -name '.*' -exec basename {} \; ) + set -- $paths + num_paths=$# + num_columns=2 + + max_num_paths_per_column=$(( $(( $num_paths + 1 )) / $num_columns )) + + local i=1 + while [ $i -le $max_num_paths_per_column ]; do + column_1=$(print_index $i $paths) + column_2=$(print_index $(( $i + $max_num_paths_per_column )) $paths) + #echo "paths[$(( $i + $max_num_paths_per_column ))] = $column_2" + expected_expr="$column_1" + if [ -n "$column_2" ]; then + expected_expr="$expected_expr[[:space:]]+$column_2" + fi + atf_check -e ignore -o not-empty -s exit:0 \ + egrep "$expected_expr" $WITH_C + : $(( i += 1 )) + done +} + +atf_test_case D_flag +D_flag_head() +{ + atf_set "descr" "Verify that the output from ls -D modifies the time format used with ls -l" +} + +D_flag_body() +{ + atf_check -e empty -o empty -s exit:0 touch a.file + atf_check -e empty -o match:"$(stat -f '%c[[:space:]]+%N' a.file)" \ + -s exit:0 ls -lD '%s' +} + +atf_test_case F_flag +F_flag_head() +{ + atf_set "descr" "Verify that the output from ls -F prints out appropriate symbols after files" +} + +F_flag_body() +{ + create_test_inputs + + atf_check -e empty -s exit:0 \ + sh -c "pid=${ATF_TMPDIR}/nc.pid; daemon -p \$pid nc -lU j; sleep 2; pkill -F \$pid" + + atf_check -e empty -o match:'a/' -s exit:0 ls -F + atf_check -e empty -o match:'c@' -s exit:0 ls -F + atf_check -e empty -o match:'h\|' -s exit:0 ls -F + atf_check -e empty -o match:'j=' -s exit:0 ls -F + #atf_check -e empty -o match:'<whiteout-file>%' -s exit:0 ls -F + atf_check -e empty -o match:'stuv' -s exit:0 ls -F + atf_check -e empty -o match:'wxyz\*' -s exit:0 ls -F +} + +atf_test_case H_flag +H_flag_head() +{ + atf_set "descr" "Verify that ls -H follows symlinks" +} + +H_flag_body() +{ + create_test_inputs + + atf_check -e empty -o match:'1' -s exit:0 ls -H c } atf_test_case I_flag @@ -251,9 +321,323 @@ I_flag_voids_implied_A_flag_when_root_bo atf_check -o match:'\.g' -s exit:0 ls -A -I } +atf_test_case L_flag +L_flag_head() +{ + atf_set "descr" "Verify that -L prints out the symbolic link and conversely -P prints out the target for the symbolic link" +} + +L_flag_body() +{ + atf_check -e empty -o empty -s exit:0 ln -s target1/target2 link1 + atf_check -e empty -o match:link1 -s exit:0 ls -L + atf_check -e empty -o not-match:target1/target2 -s exit:0 ls -L +} + +atf_test_case R_flag +R_flag_head() +{ + atf_set "descr" "Verify that the output from ls -R prints out the directory contents recursively" +} + +R_flag_body() +{ + create_test_inputs + + WITH_R=$PWD/../with_R.out + WITH_R_expected_output=$PWD/../with_R_expected.out + + atf_check -e empty -o save:$WITH_R -s exit:0 ls -R + + set -- . $(find -s . \! -name '.*' -type d) + while [ $# -gt 0 ]; do + dir=$1; shift + [ "$dir" != "." ] && echo "$dir:" + (cd $dir && ls -1A | sed -e '/^\./d') + [ $# -ne 0 ] && echo + done > $WITH_R_expected_output + + echo "-R usage" + cat $WITH_R + echo "-R expected output" + cat $WITH_R_expected_output + + atf_check_equal "$(cat $WITH_R)" "$(cat $WITH_R_expected_output)" +} + +atf_test_case S_flag +S_flag_head() +{ + atf_set "descr" "Verify that -S sorts by file size, then by filename lexicographically" +} + +S_flag_body() +{ + create_test_dir + + file_list_dir=$PWD/../files + + atf_check -e empty -o empty -s exit:0 mkdir -p $file_list_dir + + create_test_inputs + create_test_inputs2 + + WITH_S=$PWD/../with_S.out + WITHOUT_S=$PWD/../without_S.out + + atf_check -e empty -o save:$WITH_S ls -D '%s' -lS + atf_check -e empty -o save:$WITHOUT_S ls -D '%s' -l + + WITH_S_parsed=$(awk '! /^total/ { print $7 }' $WITH_S) + set -- $(awk '! /^total/ { print $5, $7 }' $WITHOUT_S) + while [ $# -gt 0 ]; do + size=$1; shift + filename=$1; shift + echo $filename >> $file_list_dir/${size} + done + file_lists=$(find $file_list_dir -type f -exec basename {} \; | sort -nr) + WITHOUT_S_parsed=$(for file_list in $file_lists; do sort < $file_list_dir/$file_list; done) + + echo "-lS usage (parsed)" + echo "$WITH_S_parsed" + echo "-l usage (parsed)" + echo "$WITHOUT_S_parsed" + + atf_check_equal "$WITHOUT_S_parsed" "$WITH_S_parsed" +} + +atf_test_case T_flag +T_flag_head() +{ + atf_set "descr" "Verify -T support" +} + +T_flag_body() +{ + create_test_dir + + atf_check -e empty -o empty -s exit:0 touch a.file + + birthtime_in_secs=$(stat -f %B -t %s a.file) + birthtime=$(date -j -f %s $birthtime_in_secs +"[[:space:]]+%b[[:space:]]+%e[[:space:]]+%H:%M:%S[[:space:]]+%Y") + + atf_check -e empty -o match:"$birthtime"'[[:space:]]+a\.file' \ + -s exit:0 ls -lT a.file +} + +atf_test_case a_flag +a_flag_head() +{ + atf_set "descr" "Verify -a support" +} + +a_flag_body() +{ + create_test_dir + + # Make sure "." and ".." show up with -a + atf_check -e empty -o match:'\.[[:space:]]+\.\.' -s exit:0 ls -ax + + create_test_inputs + + WITH_a=$PWD/../with_a.out + WITHOUT_a=$PWD/../without_a.out + + atf_check -e empty -o save:$WITH_a -s exit:0 ls -a + atf_check -e empty -o save:$WITHOUT_a -s exit:0 ls + + echo "-a usage" + cat $WITH_a + echo "No -a usage" + cat $WITHOUT_a + + for dot_path in '\.f' '\.g'; do + atf_check -e empty -o not-empty -s exit:0 grep "${dot_path}" \ + $WITH_a + atf_check -e empty -o empty -s not-exit:0 grep "${dot_path}" \ + $WITHOUT_a + done +} + +atf_test_case b_flag +b_flag_head() +{ + atf_set "descr" "Verify that the output from ls -b prints out non-printable characters" +} + +b_flag_body() +{ + atf_skip "kyua report-jenkins doesn't properly escape non-printable chars: https://github.com/jmmv/kyua/issues/136" + + atf_check -e empty -o empty -s exit:0 touch "$(printf "y\013z")" + atf_check -e empty -o match:'y\\vz' -s exit:0 ls -b +} + +atf_test_case d_flag +d_flag_head() +{ + atf_set "descr" "Verify that -d doesn't descend down directories" +} + +d_flag_body() +{ + create_test_dir + + output=$PWD/../output + + atf_check -e empty -o empty -s exit:0 mkdir -p a/b + + for path in . $PWD a; do + atf_check -e empty -o save:$output -s exit:0 ls -d $path + atf_check_equal "$(cat $output)" "$path" + done +} + +atf_test_case f_flag +f_flag_head() +{ + atf_set "descr" "Verify that -f prints out the contents of a directory unsorted" +} + +f_flag_body() +{ + create_test_inputs + + output=$PWD/../output + + # XXX: I don't have enough understanding of how the algorithm works yet + # to determine more than the fact that all the entries printed out + # exist + paths=$(find -s . -mindepth 1 -maxdepth 1 \! -name '.*' -exec basename {} \; ) + + atf_check -e empty -o save:$output -s exit:0 ls -f + + for path in $paths; do + atf_check -e ignore -o not-empty -s exit:0 \ + egrep "^$path$" $output + done +} + +atf_test_case g_flag +g_flag_head() +{ + atf_set "descr" "Verify that -g does nothing (compatibility flag)" +} + +g_flag_body() +{ + create_test_inputs2 + for file in $files; do + atf_check -e empty -o match:"$(ls -a $file)" -s exit:0 \ + ls -ag $file + atf_check -e empty -o match:"$(ls -la $file)" -s exit:0 \ + ls -alg $file + done +} + +atf_test_case h_flag +h_flag_head() +{ + atf_set "descr" "Verify that -h prints out the humanized units for file sizes with ls -l" + atf_set "require.files" "/usr/bin/bc" +} + +h_flag_body() +{ + # XXX: this test doesn't currently show how 999 bytes will be 999B, + # but 1000 bytes will be 1.0K, due to how humanize_number(3) works. + create_test_inputs2 + for file in $files; do + file_size=$(stat -f '%z' "$file") || \ + atf_fail "stat'ing $file failed" + scale=2 + if [ $file_size -lt $KB ]; then + divisor=1 + scale=0 + suffix=B + elif [ $file_size -lt $MB ]; then + divisor=$KB + suffix=K + elif [ $file_size -lt $GB ]; then + divisor=$MB + suffix=M + elif [ $file_size -lt $TB ]; then + divisor=$GB + suffix=G + elif [ $file_size -lt $PB ]; then + divisor=$TB + suffix=T + else + divisor=$PB + suffix=P + fi + + bc_expr="$(printf "scale=%s\n%s/%s\nquit" $scale $file_size $divisor)" + size_humanized=$(bc -e "$bc_expr" | tr '.' '\.' | sed -e 's,\.00,,') + + atf_check -e empty -o match:"$size_humanized.+$file" \ + -s exit:0 ls -hl $file + done +} + +atf_test_case i_flag +i_flag_head() +{ + atf_set "descr" "Verify that -i prints out the inode for files" +} + +i_flag_body() +{ + create_test_inputs + + paths=$(find -L . -mindepth 1) + [ -n "$paths" ] || atf_skip 'Could not find any paths to iterate over (!)' + + for path in $paths; do + atf_check -e empty \ + -o match:"$(stat -f '[[:space:]]*%i[[:space:]]+%N' $path)" \ + -s exit:0 ls -d1i $path + done +} + +atf_test_case k_flag +k_flag_head() +{ + atf_set "descr" "Verify that -k prints out the size with a block size of 1kB" +} + +k_flag_body() +{ + create_test_inputs2 + for file in $files; do + atf_check -e empty \ + -o match:"[[:space:]]+$(stat -f "%z" $file)[[:space:]]+.+[[:space:]]+$file" ls -lk $file + done +} + +atf_test_case l_flag +l_flag_head() +{ + atf_set "descr" "Verify that -l prints out the output in long format" +} + +l_flag_body() +{ + + atf_check -e empty -o empty -s exit:0 touch a.file + + birthtime_in_secs=$(stat -f "%B" -t "%s" a.file) + birthtime=$(date -j -f "%s" $birthtime_in_secs +"%b[[:space:]]+%e[[:space:]]+%H:%M") + + expected_output=$(stat -f "%Sp[[:space:]]+%l[[:space:]]+%Su[[:space:]]+%Sg[[:space:]]+%z[[:space:]]+$birthtime[[:space:]]+a\\.file" a.file) + + atf_check -e empty -o match:"$expected_output" -s exit:0 ls -l a.file +} + +atf_test_case lcomma_flag lcomma_flag_head() { - atf_set "descr" "Verify that -l, prints out the size with , delimiters" + atf_set "descr" "Verify that -l, prints out the size with ',' delimiters" } lcomma_flag_body() @@ -265,9 +649,211 @@ lcomma_flag_body() env LC_ALL=en_US.ISO8859-1 ls -l, i } +atf_test_case m_flag +m_flag_head() +{ + atf_set "descr" "Verify that the output from ls -m is comma-separated" +} + +m_flag_body() +{ + create_test_dir + + output=$PWD/../output + + atf_check -e empty -o empty -s exit:0 touch ,, "a,b " c d e + + atf_check -e empty -o save:$output -s exit:0 ls -m + + atf_check_equal "$(cat $output)" ",,, a,b , c, d, e" +} + +atf_test_case n_flag +n_flag_head() +{ + atf_set "descr" "Verify that the output from ls -n prints out numeric GIDs/UIDs instead of symbolic GIDs/UIDs" + atf_set "require.user" "root" +} + +n_flag_body() +{ + daemon_gid=$(id -g daemon) || atf_skip "could not resolve gid for daemon (!)" + nobody_uid=$(id -u nobody) || atf_skip "could not resolve uid for nobody (!)" + + atf_check -e empty -o empty -s exit:0 touch a.file + atf_check -e empty -o empty -s exit:0 chown $nobody_uid:$daemon_gid a.file + + atf_check -e empty \ + -o match:'\-rw\-r\-\-r\-\-[[:space:]]+1[[:space:]]+'"$nobody_uid[[:space:]]+$daemon_gid"'[[:space:]]+.+a\.file' \ + ls -ln a.file + +} + +atf_test_case o_flag +o_flag_head() +{ + atf_set "descr" "Verify that the output from ls -o prints out the chflag values or '-' if none are set" + atf_set "require.user" "root" +} + +o_flag_body() +{ + local size=12345 + + create_test_dir + + atf_check -e ignore -o empty -s exit:0 dd if=/dev/zero of=a.file \ + bs=$size count=1 + atf_check -e ignore -o empty -s exit:0 dd if=/dev/zero of=b.file \ + bs=$size count=1 + atf_check -e empty -o empty -s exit:0 chflags uarch a.file + + atf_check -e empty -o match:"[[:space:]]+uarch[[:space:]]$size+.+a\\.file" \ + -s exit:0 ls -lo a.file + atf_check -e empty -o match:"[[:space:]]+\\-[[:space:]]$size+.+b\\.file" \ + -s exit:0 ls -lo b.file +} + +atf_test_case p_flag +p_flag_head() +{ + atf_set "descr" "Verify that the output from ls -p prints out '/' after directories" +} + +p_flag_body() +{ + create_test_inputs + + paths=$(find -L .) + [ -n "$paths" ] || atf_skip 'Could not find any paths to iterate over (!)' + + for path in $paths; do + suffix= + # If path is not a symlink and is a directory, then the suffix + # must be "/". + if [ ! -L "${path}" -a -d "$path" ]; then + suffix=/ + fi + atf_check -e empty -o match:"$path${suffix}" -s exit:0 \ + ls -dp $path + done +} + +atf_test_case q_flag_and_w_flag +q_flag_and_w_flag_head() +{ + atf_set "descr" "Verify that the output from ls -q prints out '?' for ESC and ls -w prints out the escape character" +} + +q_flag_and_w_flag_body() +{ + atf_skip "kyua report-jenkins doesn't properly escape non-printable chars: https://github.com/jmmv/kyua/issues/136" + + create_test_dir + + test_file="$(printf "y\01z")" + + atf_check -e empty -o empty -s exit:0 touch "$test_file" + + atf_check -e empty -o match:'y\?z' -s exit:0 ls -q "$test_file" + atf_check -e empty -o match:"$test_file" -s exit:0 ls -w "$test_file" +} + +atf_test_case r_flag +r_flag_head() +{ + atf_set "descr" "Verify that the output from ls -r sorts the same way as reverse sorting with sort(1)" +} + +r_flag_body() +{ + create_test_inputs + + WITH_r=$PWD/../with_r.out + WITH_sort=$PWD/../with_sort.out + + atf_check -e empty -o save:$WITH_r -s exit:0 ls -1r + atf_check -e empty -o save:$WITH_sort -s exit:0 sh -c 'ls -1 | sort -r' + + echo "Sorted with -r" + cat $WITH_r + echo "Reverse sorted with sort(1)" + cat $WITH_sort + + atf_check_equal "$(cat $WITH_r)" "$(cat $WITH_sort)" +} + +atf_test_case s_flag +s_flag_head() +{ + atf_set "descr" "Verify that the output from ls -s matches the output from stat(1)" +} + +s_flag_body() +{ + create_test_inputs2 + for file in $files; do + atf_check -e empty \ + -o match:"$(stat -f "%b" $file)[[:space:]]+$file" ls -s $file + done +} + +atf_test_case t_flag +t_flag_head() +{ + atf_set "descr" "Verify that the output from ls -t sorts by modification time" +} + +t_flag_body() +{ + create_test_dir + + atf_check -e empty -o empty -s exit:0 touch a.file + atf_check -e empty -o empty -s exit:0 touch b.file + sync + + atf_check -e empty -o match:'a\.file' -s exit:0 sh -c 'ls -lt | tail -n 1' + atf_check -e empty -o match:'b\.file.*a\.file' -s exit:0 ls -Ct + + atf_check -e empty -o empty -s exit:0 rm a.file + atf_check -e empty -o empty -s exit:0 sh -c 'echo "i am a" > a.file' + sync + + atf_check -e empty -o match:'b\.file' -s exit:0 sh -c 'ls -lt | tail -n 1' + atf_check -e empty -o match:'a\.file.*b\.file' -s exit:0 ls -Ct +} + +atf_test_case u_flag +u_flag_head() +{ + atf_set "descr" "Verify that the output from ls -u sorts by last access" +} + +u_flag_body() +{ + create_test_dir + + atf_check -e empty -o empty -s exit:0 touch a.file + sync + atf_check -e empty -o empty -s exit:0 touch b.file + sync + + atf_check -e empty -o match:'b\.file' -s exit:0 sh -c 'ls -lu | tail -n 1' + atf_check -e empty -o match:'a\.file.*b\.file' -s exit:0 ls -Cu + + atf_check -e empty -o empty -s exit:0 sh -c 'echo "i am a" > a.file' + sync + atf_check -e empty -o match:'i am a' -s exit:0 cat a.file + sync + + atf_check -e empty -o match:'b\.file' -s exit:0 sh -c 'ls -lu | tail -n 1' + atf_check -e empty -o match:'a\.file.*b\.file' -s exit:0 ls -Cu +} + +atf_test_case x_flag x_flag_head() { - atf_set "descr" "Verify that -x prints out one item per line" + atf_set "descr" "Verify that the output from ls -x is multi-column, sorted across" } x_flag_body() @@ -284,9 +870,34 @@ x_flag_body() atf_check -e ignore -o not-empty -s exit:0 \ egrep "a[[:space:]]+c[[:space:]]+d[[:space:]]+e[[:space:]]+h" $WITH_x atf_check -e ignore -o not-empty -s exit:0 \ - egrep "i[[:space:]]+j[[:space:]]+klmn[[:space:]]+opqr[[:space:]]+stuv" $WITH_x + egrep "i[[:space:]]+klmn[[:space:]]+opqr[[:space:]]+stuv[[:space:]]+wxyz" $WITH_x +} + +atf_test_case y_flag +y_flag_head() +{ + atf_set "descr" "Verify that the output from ls -y sorts the same way as sort(1)" +} + +y_flag_body() +{ + create_test_inputs + + WITH_sort=$PWD/../with_sort.out + WITH_y=$PWD/../with_y.out + + atf_check -e empty -o save:$WITH_sort -s exit:0 sh -c 'ls -1 | sort' + atf_check -e empty -o save:$WITH_y -s exit:0 ls -1y + + echo "Sorted with sort(1)" + cat $WITH_sort + echo "Sorted with -y" + cat $WITH_y + + atf_check_equal "$(cat $WITH_sort)" "$(cat $WITH_y)" } +atf_test_case 1_flag 1_flag_head() { atf_set "descr" "Verify that -1 prints out one item per line" @@ -318,42 +929,41 @@ atf_init_test_cases() atf_add_test_case A_flag_implied_when_root atf_add_test_case B_flag atf_add_test_case C_flag - #atf_add_test_case D_flag - #atf_add_test_case F_flag + atf_add_test_case D_flag + atf_add_test_case F_flag #atf_add_test_case G_flag - #atf_add_test_case H_flag + atf_add_test_case H_flag atf_add_test_case I_flag atf_add_test_case I_flag_voids_implied_A_flag_when_root - #atf_add_test_case L_flag + atf_add_test_case L_flag #atf_add_test_case P_flag - #atf_add_test_case R_flag - #atf_add_test_case S_flag - #atf_add_test_case T_flag + atf_add_test_case R_flag + atf_add_test_case S_flag + atf_add_test_case T_flag #atf_add_test_case U_flag #atf_add_test_case W_flag #atf_add_test_case Z_flag atf_add_test_case a_flag - #atf_add_test_case b_flag + atf_add_test_case b_flag #atf_add_test_case c_flag - #atf_add_test_case d_flag - #atf_add_test_case f_flag - #atf_add_test_case g_flag - #atf_add_test_case h_flag - #atf_add_test_case i_flag - #atf_add_test_case k_flag - #atf_add_test_case l_flag + atf_add_test_case d_flag + atf_add_test_case f_flag + atf_add_test_case g_flag + atf_add_test_case h_flag + atf_add_test_case i_flag + atf_add_test_case k_flag + atf_add_test_case l_flag atf_add_test_case lcomma_flag - #atf_add_test_case m_flag - #atf_add_test_case n_flag - #atf_add_test_case o_flag - #atf_add_test_case p_flag - #atf_add_test_case q_flag - #atf_add_test_case r_flag - #atf_add_test_case s_flag - #atf_add_test_case t_flag - #atf_add_test_case u_flag - #atf_add_test_case w_flag + atf_add_test_case m_flag + atf_add_test_case n_flag + atf_add_test_case o_flag + atf_add_test_case p_flag + atf_add_test_case q_flag_and_w_flag + atf_add_test_case r_flag + atf_add_test_case s_flag + atf_add_test_case t_flag + atf_add_test_case u_flag atf_add_test_case x_flag - #atf_add_test_case y_flag + atf_add_test_case y_flag atf_add_test_case 1_flag } Modified: projects/clang370-import/include/Makefile ============================================================================== --- projects/clang370-import/include/Makefile Mon Oct 5 17:47:23 2015 (r288830) +++ projects/clang370-import/include/Makefile Mon Oct 5 17:54:54 2015 (r288831) @@ -166,7 +166,7 @@ compat: -f ${.CURDIR}/../etc/mtree/BSD.include.dist \ -p ${DESTDIR}${INCLUDEDIR} > /dev/null .if ${MK_META_MODE} == "yes" - touch ${.TARGET} + @touch ${.TARGET} .endif copies: @@ -255,8 +255,7 @@ copies: ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 teken.h \ ${DESTDIR}${INCLUDEDIR}/teken .if ${MK_META_MODE} == "yes" - cd ${.OBJDIR} - touch ${.TARGET} + @touch ${.OBJDIR}/${.TARGET} .endif symlinks: @@ -373,8 +372,7 @@ symlinks: ${DESTDIR}${INCLUDEDIR}/rpc; \ done .if ${MK_META_MODE} == "yes" - cd ${.OBJDIR} - touch ${.TARGET} + @touch ${.OBJDIR}/${.TARGET} .endif .if ${MACHINE} == "host" Modified: projects/clang370-import/lib/libc/net/getaddrinfo.c ============================================================================== --- projects/clang370-import/lib/libc/net/getaddrinfo.c Mon Oct 5 17:47:23 2015 (r288830) +++ projects/clang370-import/lib/libc/net/getaddrinfo.c Mon Oct 5 17:54:54 2015 (r288831) @@ -168,12 +168,6 @@ struct explore { }; static const struct explore explore[] = { - { PF_LOCAL, SOCK_DGRAM, ANY, - AF_ANY | PROTOCOL_ANY }, - { PF_LOCAL, SOCK_STREAM, ANY, - AF_ANY | PROTOCOL_ANY }, - { PF_LOCAL, SOCK_SEQPACKET, ANY, - AF_ANY | PROTOCOL_ANY }, #ifdef INET6 { PF_INET6, SOCK_DGRAM, IPPROTO_UDP, AF_ANY | SOCKTYPE_ANY | PROTOCOL_ANY }, @@ -200,6 +194,12 @@ static const struct explore explore[] = AF_ANY | SOCKTYPE_ANY }, { PF_INET, SOCK_RAW, ANY, AF_ANY | PROTOCOL_ANY }, + { PF_LOCAL, SOCK_DGRAM, ANY, + AF_ANY | SOCKTYPE_ANY | PROTOCOL_ANY }, + { PF_LOCAL, SOCK_STREAM, ANY, + AF_ANY | SOCKTYPE_ANY | PROTOCOL_ANY }, + { PF_LOCAL, SOCK_SEQPACKET, ANY, + AF_ANY | SOCKTYPE_ANY | PROTOCOL_ANY }, *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201510051754.t95Hstu5031323>