freebsd-skq/bin/dd/Makefile
Thomas Quinot cd1832fe92 Reorganize the handling all-zeroes terminal block in sparse mode
The intent of the previous code in that case was to force
an explicit write, but the implementation was incorrect, and
as a result the write was never performed. This new implementation
instead uses ftruncate(2) to extend the file with a trailing hole.

Also introduce regression tests for these cases.

PR: 189284
(original PR whose fix introduced this bug)

PR: 207092

Differential Revision:	D5248
Reviewed by:	sobomax,kib
MFC after:	2 weeks
2016-02-18 08:44:16 +00:00

45 lines
1.2 KiB
Makefile

# @(#)Makefile 8.1 (Berkeley) 5/31/93
# $FreeBSD$
.include <src.opts.mk>
PROG= dd
SRCS= args.c conv.c conv_tab.c dd.c misc.c position.c
#
# Test the character conversion functions. We have to be explicit about
# which LC_LANG we use because the definition of upper and lower case
# depends on it.
#
CLEANFILES= gen
test: ${PROG} gen
.for conv in ascii ebcdic ibm oldascii oldebcdic oldibm \
pareven parnone parodd parset \
swab lcase ucase
@${ECHO} testing conv=${conv}
@./gen | \
LC_ALL=en_US.US-ASCII ./dd conv=${conv} 2>/dev/null | \
LC_ALL=en_US.US-ASCII hexdump -C | \
diff -I FreeBSD - ${.CURDIR}/ref.${conv}
.endfor
@${ECHO} "testing sparse file (obs zeroes)"
@./gen 189284 | ./dd ibs=16 obs=8 conv=sparse of=obs_zeroes 2> /dev/null
@hexdump -C obs_zeroes | diff -I FreeBSD - ${.CURDIR}/ref.obs_zeroes
@${ECHO} "testing spase file (all zeroes)"
@./dd if=/dev/zero of=1M_zeroes bs=1048576 count=1 2> /dev/null
@./dd if=1M_zeroes of=1M_zeroes.1 bs=1048576 conv=sparse 2> /dev/null
@./dd if=1M_zeroes of=1M_zeroes.2 bs=1048576 2> /dev/null
@diff 1M_zeroes 1M_zeroes.1
@diff 1M_zeroes 1M_zeroes.2
@rm -f gen 1M_zeroes* obs_zeroes
.if ${MK_TESTS} != "no"
SUBDIR+= tests
.endif
.include <bsd.prog.mk>