summaryrefslogtreecommitdiffstats
path: root/usr.bin
diff options
context:
space:
mode:
authorsjg <sjg@FreeBSD.org>2014-11-19 01:07:58 +0000
committersjg <sjg@FreeBSD.org>2014-11-19 01:07:58 +0000
commitb137080f19736ee33fede2e88bb54438604cf86b (patch)
tree377ac0ac449528621eb192cd245adadb5fd53668 /usr.bin
parentab21a29eb607d4dfe389b965fbdee27558e791aa (diff)
parent4a8d07956d121238d006d34ffe7d6269744e8b1a (diff)
downloadFreeBSD-src-b137080f19736ee33fede2e88bb54438604cf86b.zip
FreeBSD-src-b137080f19736ee33fede2e88bb54438604cf86b.tar.gz
Merge from head@274682
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/Makefile2
-rw-r--r--usr.bin/at/at.c3
-rw-r--r--usr.bin/basename/Makefile6
-rw-r--r--usr.bin/basename/tests/Makefile12
-rw-r--r--usr.bin/bc/Makefile4
-rw-r--r--usr.bin/bluetooth/rfcomm_sppd/Makefile2
-rw-r--r--usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.130
-rw-r--r--usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.c101
-rw-r--r--usr.bin/calendar/calendars/calendar.freebsd2
-rw-r--r--usr.bin/clang/clang-tblgen/Makefile2
-rw-r--r--usr.bin/clang/clang.prog.mk2
-rw-r--r--usr.bin/clang/lldb/Makefile4
-rw-r--r--usr.bin/clang/tblgen/Makefile2
-rw-r--r--usr.bin/cmp/Makefile6
-rw-r--r--usr.bin/cmp/tests/Makefile12
-rw-r--r--usr.bin/col/col.c2
-rw-r--r--usr.bin/compile_et/Makefile2
-rw-r--r--usr.bin/csup/cpasswd.14
-rw-r--r--usr.bin/csup/csup.14
-rw-r--r--usr.bin/cut/Makefile6
-rw-r--r--usr.bin/cut/tests/Makefile21
-rw-r--r--usr.bin/dirname/Makefile6
-rw-r--r--usr.bin/dirname/tests/Makefile12
-rw-r--r--usr.bin/dpv/Makefile12
-rw-r--r--usr.bin/dpv/dpv.1430
-rw-r--r--usr.bin/dpv/dpv.c541
-rw-r--r--usr.bin/dpv/dpv_util.h68
-rw-r--r--usr.bin/drill/Makefile2
-rw-r--r--usr.bin/elfdump/elfdump.12
-rw-r--r--usr.bin/elfdump/elfdump.c205
-rw-r--r--usr.bin/find/function.c2
-rw-r--r--usr.bin/ftp/Makefile4
-rw-r--r--usr.bin/gcore/elfcore.c2
-rw-r--r--usr.bin/grep/Makefile6
-rw-r--r--usr.bin/grep/regex/tre-fastmatch.c2
-rw-r--r--usr.bin/grep/tests/Makefile41
-rw-r--r--usr.bin/grep/util.c2
-rw-r--r--usr.bin/gzip/Makefile9
-rw-r--r--usr.bin/gzip/gzip.12
-rw-r--r--usr.bin/gzip/gzip.c8
-rw-r--r--usr.bin/gzip/tests/Makefile12
-rw-r--r--usr.bin/gzip/zmore15
-rw-r--r--usr.bin/gzip/zmore.128
-rw-r--r--usr.bin/hexdump/hexdump.16
-rw-r--r--usr.bin/host/Makefile3
-rw-r--r--usr.bin/iconv/Makefile3
-rw-r--r--usr.bin/id/Makefile2
-rw-r--r--usr.bin/iscsictl/Makefile4
-rw-r--r--usr.bin/iscsictl/iscsictl.85
-rw-r--r--usr.bin/iscsictl/iscsictl.c15
-rw-r--r--usr.bin/iscsictl/token.l2
-rw-r--r--usr.bin/kdump/kdump.c74
-rw-r--r--usr.bin/kdump/mksubr58
-rw-r--r--usr.bin/ktrace/ktrace.110
-rw-r--r--usr.bin/lock/lock.15
-rw-r--r--usr.bin/lock/lock.c2
-rw-r--r--usr.bin/login/login.c2
-rw-r--r--usr.bin/m4/Makefile10
-rw-r--r--usr.bin/m4/lib/ohash.c330
-rw-r--r--usr.bin/m4/lib/ohash.h76
-rw-r--r--usr.bin/m4/lib/ohash_init.3273
-rw-r--r--usr.bin/m4/lib/ohash_interval.395
-rw-r--r--usr.bin/m4/m4.12
-rw-r--r--usr.bin/m4/misc.c4
-rw-r--r--usr.bin/mail/edit.c2
-rw-r--r--usr.bin/man/man.132
-rw-r--r--usr.bin/mandoc/Makefile2
-rw-r--r--usr.bin/mkimg/Makefile11
-rw-r--r--usr.bin/mkimg/apm.c9
-rw-r--r--usr.bin/mkimg/bsd.c36
-rw-r--r--usr.bin/mkimg/ebr.c31
-rw-r--r--usr.bin/mkimg/gpt.c16
-rw-r--r--usr.bin/mkimg/image.c680
-rw-r--r--usr.bin/mkimg/mbr.c25
-rw-r--r--usr.bin/mkimg/mkimg.155
-rw-r--r--usr.bin/mkimg/mkimg.c145
-rw-r--r--usr.bin/mkimg/mkimg.h17
-rw-r--r--usr.bin/mkimg/pc98.c25
-rw-r--r--usr.bin/mkimg/qcow.c369
-rw-r--r--usr.bin/mkimg/scheme.c4
-rw-r--r--usr.bin/mkimg/scheme.h2
-rw-r--r--usr.bin/mkimg/tests/Makefile19
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-apm.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-apm.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-apm.raw.gz.uu12
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-apm.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-apm.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-apm.vmdk.gz.uu82
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-bsd.qcow.gz.uu125
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-bsd.qcow2.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-bsd.raw.gz.uu10
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-bsd.vhd.gz.uu17
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-bsd.vhdf.gz.uu13
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-bsd.vmdk.gz.uu81
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-ebr.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-ebr.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-ebr.raw.gz.uu11
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-ebr.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-ebr.vhdf.gz.uu14
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-ebr.vmdk.gz.uu82
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-gpt.qcow.gz.uu132
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-gpt.qcow2.gz.uu26
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-gpt.raw.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-gpt.vhd.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-gpt.vhdf.gz.uu19
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-gpt.vmdk.gz.uu87
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-mbr.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-mbr.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-mbr.raw.gz.uu11
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-mbr.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-mbr.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-mbr.vmdk.gz.uu82
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-pc98.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-pc98.qcow2.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-pc98.raw.gz.uu11
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-pc98.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-pc98.vhdf.gz.uu14
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-pc98.vmdk.gz.uu82
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-vtoc8.qcow.gz.uu125
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-vtoc8.qcow2.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-vtoc8.raw.gz.uu10
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhd.gz.uu17
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhdf.gz.uu14
-rw-r--r--usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vmdk.gz.uu81
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-apm.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-apm.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-apm.raw.gz.uu12
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-apm.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-apm.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-apm.vmdk.gz.uu82
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-bsd.qcow.gz.uu125
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-bsd.qcow2.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-bsd.raw.gz.uu10
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-bsd.vhd.gz.uu17
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-bsd.vhdf.gz.uu13
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-bsd.vmdk.gz.uu81
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-ebr.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-ebr.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-ebr.raw.gz.uu11
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-ebr.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-ebr.vhdf.gz.uu14
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-ebr.vmdk.gz.uu82
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-gpt.qcow.gz.uu132
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-gpt.qcow2.gz.uu26
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-gpt.raw.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-gpt.vhd.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-gpt.vhdf.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-gpt.vmdk.gz.uu87
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-mbr.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-mbr.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-mbr.raw.gz.uu11
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-mbr.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-mbr.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-mbr.vmdk.gz.uu82
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-pc98.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-pc98.qcow2.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-pc98.raw.gz.uu11
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-pc98.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-pc98.vhdf.gz.uu14
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-pc98.vmdk.gz.uu82
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-vtoc8.qcow.gz.uu125
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-vtoc8.qcow2.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-vtoc8.raw.gz.uu10
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhd.gz.uu17
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhdf.gz.uu14
-rw-r--r--usr.bin/mkimg/tests/img-1x1-512-vtoc8.vmdk.gz.uu81
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-apm.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-apm.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-apm.raw.gz.uu12
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-apm.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-apm.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-apm.vmdk.gz.uu83
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-bsd.qcow.gz.uu126
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-bsd.qcow2.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-bsd.raw.gz.uu11
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-bsd.vhd.gz.uu17
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-bsd.vhdf.gz.uu14
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-bsd.vmdk.gz.uu81
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-ebr.qcow.gz.uu128
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-ebr.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-ebr.raw.gz.uu12
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-ebr.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-ebr.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-ebr.vmdk.gz.uu84
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-gpt.qcow.gz.uu132
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-gpt.qcow2.gz.uu26
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-gpt.raw.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-gpt.vhd.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-gpt.vhdf.gz.uu19
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-gpt.vmdk.gz.uu88
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-mbr.qcow.gz.uu128
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-mbr.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-mbr.raw.gz.uu12
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-mbr.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-mbr.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-mbr.vmdk.gz.uu84
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-pc98.qcow.gz.uu126
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-pc98.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-pc98.raw.gz.uu12
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-pc98.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-pc98.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-pc98.vmdk.gz.uu84
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-vtoc8.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-vtoc8.qcow2.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-vtoc8.raw.gz.uu11
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhdf.gz.uu14
-rw-r--r--usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vmdk.gz.uu83
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-apm.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-apm.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-apm.raw.gz.uu12
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-apm.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-apm.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-apm.vmdk.gz.uu83
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-bsd.qcow.gz.uu126
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-bsd.qcow2.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-bsd.raw.gz.uu11
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-bsd.vhd.gz.uu17
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-bsd.vhdf.gz.uu14
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-bsd.vmdk.gz.uu81
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-ebr.qcow.gz.uu128
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-ebr.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-ebr.raw.gz.uu12
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-ebr.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-ebr.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-ebr.vmdk.gz.uu84
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-gpt.qcow.gz.uu132
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-gpt.qcow2.gz.uu26
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-gpt.raw.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-gpt.vhd.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-gpt.vhdf.gz.uu19
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-gpt.vmdk.gz.uu88
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-mbr.qcow.gz.uu128
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-mbr.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-mbr.raw.gz.uu12
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-mbr.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-mbr.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-mbr.vmdk.gz.uu84
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-pc98.qcow.gz.uu126
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-pc98.qcow2.gz.uu22
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-pc98.raw.gz.uu12
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-pc98.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-pc98.vhdf.gz.uu15
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-pc98.vmdk.gz.uu84
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-vtoc8.qcow.gz.uu127
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-vtoc8.qcow2.gz.uu21
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-vtoc8.raw.gz.uu11
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhd.gz.uu18
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhdf.gz.uu14
-rw-r--r--usr.bin/mkimg/tests/img-63x255-512-vtoc8.vmdk.gz.uu83
-rwxr-xr-xusr.bin/mkimg/tests/mkimg.sh164
-rw-r--r--usr.bin/mkimg/vhd.c4
-rw-r--r--usr.bin/mkimg/vmdk.c28
-rw-r--r--usr.bin/mkimg/vtoc8.c13
-rw-r--r--usr.bin/netstat/inet6.c16
-rw-r--r--usr.bin/opiekey/Makefile4
-rw-r--r--usr.bin/rctl/rctl.84
-rw-r--r--usr.bin/sed/defs.h1
-rw-r--r--usr.bin/sed/main.c50
-rw-r--r--usr.bin/sed/process.c60
-rw-r--r--usr.bin/sed/tests/regress.y.out2
-rw-r--r--usr.bin/showmount/showmount.89
-rw-r--r--usr.bin/showmount/showmount.c7
-rw-r--r--usr.bin/sort/Makefile6
-rw-r--r--usr.bin/sort/sort.1.in2
-rw-r--r--usr.bin/sort/sort.c2
-rw-r--r--usr.bin/svn/svn/Makefile3
-rw-r--r--usr.bin/svn/svn_private_config.h4
-rw-r--r--usr.bin/svn/svnadmin/Makefile2
-rw-r--r--usr.bin/svn/svndumpfilter/Makefile2
-rw-r--r--usr.bin/svn/svnlook/Makefile2
-rw-r--r--usr.bin/svn/svnmucc/Makefile2
-rw-r--r--usr.bin/svn/svnrdump/Makefile2
-rw-r--r--usr.bin/svn/svnserve/Makefile2
-rw-r--r--usr.bin/svn/svnsync/Makefile2
-rw-r--r--usr.bin/svn/svnversion/Makefile2
-rw-r--r--usr.bin/systat/ifstat.c20
-rw-r--r--usr.bin/systat/systat.12
-rw-r--r--usr.bin/talk/Makefile4
-rw-r--r--usr.bin/telnet/Makefile2
-rw-r--r--usr.bin/timeout/Makefile6
-rw-r--r--usr.bin/timeout/tests/Makefile7
-rw-r--r--usr.bin/timeout/tests/timeout.sh215
-rw-r--r--usr.bin/timeout/timeout.119
-rw-r--r--usr.bin/timeout/timeout.c16
-rw-r--r--usr.bin/top/machine.c4
-rw-r--r--usr.bin/truss/arm-fbsd.c4
-rw-r--r--usr.bin/truss/syscall.h5
-rw-r--r--usr.bin/truss/syscalls.c26
-rw-r--r--usr.bin/vacation/Makefile2
-rw-r--r--usr.bin/vmstat/vmstat.830
-rw-r--r--usr.bin/vmstat/vmstat.c77
-rw-r--r--usr.bin/w/Makefile4
-rw-r--r--usr.bin/w/pr_time.c17
-rw-r--r--usr.bin/w/w.17
-rw-r--r--usr.bin/w/w.c116
-rw-r--r--usr.bin/wc/Makefile3
-rw-r--r--usr.bin/wc/wc.17
-rw-r--r--usr.bin/wc/wc.c54
-rw-r--r--usr.bin/xinstall/xinstall.c15
-rw-r--r--usr.bin/xo/Makefile16
-rw-r--r--usr.bin/yacc/Makefile7
-rw-r--r--usr.bin/yacc/tests/Makefile48
-rwxr-xr-xusr.bin/yacc/tests/yacc_tests.sh29
304 files changed, 11507 insertions, 1534 deletions
diff --git a/usr.bin/Makefile b/usr.bin/Makefile
index 353816a..865be93 100644
--- a/usr.bin/Makefile
+++ b/usr.bin/Makefile
@@ -36,6 +36,7 @@ SUBDIR= alias \
ctlstat \
cut \
dirname \
+ dpv \
du \
ee \
elf2aout \
@@ -196,6 +197,7 @@ SUBDIR= alias \
xargs \
xinstall \
${_xlint} \
+ xo \
${_xstr} \
xz \
xzdec \
diff --git a/usr.bin/at/at.c b/usr.bin/at/at.c
index 5f4500b..6e072d6 100644
--- a/usr.bin/at/at.c
+++ b/usr.bin/at/at.c
@@ -367,6 +367,7 @@ writefile(time_t runtimer, char queue)
if (export)
{
+ (void)fputs("export ", fp);
fwrite(*atenv, sizeof(char), eqp-*atenv, fp);
for(ap = eqp;*ap != '\0'; ap++)
{
@@ -389,8 +390,6 @@ writefile(time_t runtimer, char queue)
fputc(*ap, fp);
}
}
- fputs("; export ", fp);
- fwrite(*atenv, sizeof(char), eqp-*atenv -1, fp);
fputc('\n', fp);
}
diff --git a/usr.bin/basename/Makefile b/usr.bin/basename/Makefile
index d647395..b392c3f 100644
--- a/usr.bin/basename/Makefile
+++ b/usr.bin/basename/Makefile
@@ -1,7 +1,13 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/6/93
# $FreeBSD$
+.include <src.opts.mk>
+
PROG= basename
MLINKS= basename.1 dirname.1
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.bin/basename/tests/Makefile b/usr.bin/basename/tests/Makefile
new file mode 100644
index 0000000..32dedab
--- /dev/null
+++ b/usr.bin/basename/tests/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+TESTSRC= ${.CURDIR}/../../../contrib/netbsd-tests/usr.bin/basename
+.PATH: ${TESTSRC}
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/usr.bin/basename
+ATF_TESTS_SH= basename_test
+ATF_TESTS_SH_SRC_basename_test= t_basename.sh
+
+.include <bsd.test.mk>
diff --git a/usr.bin/bc/Makefile b/usr.bin/bc/Makefile
index 5fd918d..d2f26f1 100644
--- a/usr.bin/bc/Makefile
+++ b/usr.bin/bc/Makefile
@@ -5,8 +5,8 @@ PROG= bc
SRCS= bc.y scan.l tty.c
CFLAGS+= -I. -I${.CURDIR}
-LDADD+= -ledit -lcurses
-DPADD+= ${LIBEDIT} ${LIBCURSES}
+DPADD+= ${LIBEDIT} ${LIBNCURSESW}
+LDADD+= -ledit -lncursesw
NO_WMISSING_VARIABLE_DECLARATIONS=
diff --git a/usr.bin/bluetooth/rfcomm_sppd/Makefile b/usr.bin/bluetooth/rfcomm_sppd/Makefile
index 9018f6e..0da7498 100644
--- a/usr.bin/bluetooth/rfcomm_sppd/Makefile
+++ b/usr.bin/bluetooth/rfcomm_sppd/Makefile
@@ -6,6 +6,6 @@ SRCS= rfcomm_sppd.c rfcomm_sdp.c
WARNS?= 2
DPADD= ${LIBBLUETOOTH} ${LIBSDP}
-LDADD= -lbluetooth -lsdp
+LDADD= -lbluetooth -lsdp -lutil
.include <bsd.prog.mk>
diff --git a/usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.1 b/usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.1
index 0f60089..849c02c6 100644
--- a/usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.1
+++ b/usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.1
@@ -33,10 +33,9 @@
.Nd RFCOMM Serial Port Profile daemon
.Sh SYNOPSIS
.Nm
-.Op Fl bhS
+.Op Fl bhtS
.Fl a Ar address
.Fl c Ar channel
-.Op Fl t Ar tty
.Sh DESCRIPTION
The
.Nm
@@ -53,7 +52,7 @@ Once connection is established, the
.Nm
utility provides access to the server's remote serial port via stdin/stdout
or via
-.Xr pty 4
+.Xr pts 4
interface if
.Fl t
option was specified.
@@ -72,8 +71,7 @@ daemon.
If
.Fl t
options was specified,
-the server side of the virtual serial port is attached to the pseudo-terminal
-.Ar tty .
+the server side of the virtual serial port is attached to a pseudo-terminal.
Otherwise the virtual serial port is attached to the stdin/stdout.
.Nm
should be run as root in order to communicate with
@@ -146,24 +144,22 @@ Display usage message and exit.
.It Fl S
Server mode; see
.Sx DESCRIPTION .
-.It Fl t Ar tty
-Slave pseudo tty name.
+.It Fl t
+Use slave pseudo tty.
If not set stdin/stdout will be used.
This option is required if
.Fl b
option was specified.
.El
.Sh FILES
-.Bl -tag -width ".Pa /dev/tty[p-sP-S][0-9a-v]" -compact
-.It Pa /dev/pty[p-sP-S][0-9a-v]
-master pseudo terminals
-.It Pa /dev/tty[p-sP-S][0-9a-v]
+.Bl -tag -width ".Pa /dev/pts/[num]" -compact
+.It Pa /dev/pts/[num]
slave pseudo terminals
.El
.Sh EXIT STATUS
.Ex -std
.Sh EXAMPLES
-.Dl "rfcomm_sppd -a 00:01:02:03:04:05 -c 1 -t /dev/ttyp1"
+.Dl "rfcomm_sppd -a 00:01:02:03:04:05 -c 1 -t"
.Pp
Will start the
.Nm
@@ -171,13 +167,17 @@ utility and open RFCOMM connection to the server at
.Li 00:01:02:03:04:05
and channel
.Li 1 .
-Once the connection has been established,
-.Pa /dev/ttyp1
+Once the connection has been established, a
+.Xr pts 4
can be used to talk to the remote serial port on the server.
+.Nm
+prints the name of the
+.Xr pts 4
+to use on stdout.
.Sh SEE ALSO
.Xr bluetooth 3 ,
.Xr ng_btsocket 4 ,
-.Xr pty 4 ,
+.Xr pts 4 ,
.Xr rfcomm_pppd 8 ,
.Xr sdpd 8
.Sh AUTHORS
diff --git a/usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.c b/usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.c
index 4e0d04b..ab6e1a7 100644
--- a/usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.c
+++ b/usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.c
@@ -32,6 +32,7 @@
*/
#include <sys/stat.h>
+#include <sys/types.h>
#include <bluetooth.h>
#include <ctype.h>
#include <err.h>
@@ -49,6 +50,7 @@
#include <syslog.h>
#include <termios.h>
#include <unistd.h>
+#include <libutil.h>
#define SPPD_IDENT "rfcomm_sppd"
#define SPPD_BUFFER_SIZE 1024
@@ -58,7 +60,7 @@ int rfcomm_channel_lookup (bdaddr_t const *local,
bdaddr_t const *remote,
int service, int *channel, int *error);
-static int sppd_ttys_open (char const *tty, int *amaster, int *aslave);
+static int sppd_ttys_open (char **tty, int *amaster, int *aslave);
static int sppd_read (int fd, char *buffer, int size);
static int sppd_write (int fd, char *buffer, int size);
static void sppd_sighandler (int s);
@@ -74,7 +76,8 @@ main(int argc, char *argv[])
struct sockaddr_rfcomm ra;
bdaddr_t addr;
int n, background, channel, service,
- s, amaster, aslave, fd, doserver;
+ s, amaster, aslave, fd, doserver,
+ dopty;
fd_set rfd;
char *tty = NULL, *ep = NULL, buf[SPPD_BUFFER_SIZE];
@@ -82,9 +85,10 @@ main(int argc, char *argv[])
background = channel = 0;
service = SDP_SERVICE_CLASS_SERIAL_PORT;
doserver = 0;
+ dopty = 0;
/* Parse command line options */
- while ((n = getopt(argc, argv, "a:bc:t:hS")) != -1) {
+ while ((n = getopt(argc, argv, "a:bc:thS")) != -1) {
switch (n) {
case 'a': /* BDADDR */
if (!bt_aton(optarg, &addr)) {
@@ -130,11 +134,8 @@ main(int argc, char *argv[])
background = 1;
break;
- case 't': /* Slave TTY name */
- if (optarg[0] != '/')
- asprintf(&tty, "%s%s", _PATH_DEV, optarg);
- else
- tty = optarg;
+ case 't': /* Open pseudo TTY */
+ dopty = 1;
break;
case 'S':
@@ -173,18 +174,18 @@ main(int argc, char *argv[])
err(1, "Could not sigaction(SIGCHLD)");
/* Open TTYs */
- if (tty == NULL) {
+ if (dopty) {
+ if (sppd_ttys_open(&tty, &amaster, &aslave) < 0)
+ exit(1);
+
+ fd = amaster;
+ } else {
if (background)
usage();
amaster = STDIN_FILENO;
fd = STDOUT_FILENO;
- } else {
- if (sppd_ttys_open(tty, &amaster, &aslave) < 0)
- exit(1);
-
- fd = amaster;
- }
+ }
/* Open RFCOMM connection */
@@ -287,6 +288,10 @@ main(int argc, char *argv[])
openlog(SPPD_IDENT, LOG_NDELAY|LOG_PERROR|LOG_PID, LOG_DAEMON);
syslog(LOG_INFO, "Starting on %s...", (tty != NULL)? tty : "stdin/stdout");
+ /* Print used tty on stdout for wrappers to pick up */
+ if (!background)
+ fprintf(stdout, "%s\n", tty);
+
for (done = 0; !done; ) {
FD_ZERO(&rfd);
FD_SET(amaster, &rfd);
@@ -359,70 +364,20 @@ main(int argc, char *argv[])
/* Open TTYs */
static int
-sppd_ttys_open(char const *tty, int *amaster, int *aslave)
+sppd_ttys_open(char **tty, int *amaster, int *aslave)
{
- char pty[PATH_MAX], *slash;
- struct group *gr = NULL;
- gid_t ttygid;
+ char pty[PATH_MAX];
struct termios tio;
- /*
- * Construct master PTY name. The slave tty name must be less then
- * PATH_MAX characters in length, must contain '/' character and
- * must not end with '/'.
- */
-
- if (strlen(tty) >= sizeof(pty)) {
- syslog(LOG_ERR, "Slave tty name is too long");
- return (-1);
- }
-
- strlcpy(pty, tty, sizeof(pty));
- slash = strrchr(pty, '/');
- if (slash == NULL || slash[1] == '\0') {
- syslog(LOG_ERR, "Invalid slave tty name (%s)", tty);
- return (-1);
- }
-
- slash[1] = 'p';
-
- if (strcmp(pty, tty) == 0) {
- syslog(LOG_ERR, "Master and slave tty are the same (%s)", tty);
- return (-1);
- }
-
- if ((*amaster = open(pty, O_RDWR, 0)) < 0) {
- syslog(LOG_ERR, "Could not open(%s). %s", pty, strerror(errno));
- return (-1);
- }
-
- /*
- * Slave TTY
- */
-
- if ((gr = getgrnam("tty")) != NULL)
- ttygid = gr->gr_gid;
- else
- ttygid = -1;
-
- (void) chown(tty, getuid(), ttygid);
- (void) chmod(tty, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP);
- (void) revoke(tty);
+ cfmakeraw(&tio);
- if ((*aslave = open(tty, O_RDWR, 0)) < 0) {
- syslog(LOG_ERR, "Could not open(%s). %s", tty, strerror(errno));
- close(*amaster);
+ if (openpty(amaster, aslave, pty, &tio, NULL) == -1) {
+ syslog(LOG_ERR, "Could not openpty(). %s", strerror(errno));
return (-1);
}
- /*
- * Make slave TTY raw
- */
-
- cfmakeraw(&tio);
-
- if (tcsetattr(*aslave, TCSANOW, &tio) < 0) {
- syslog(LOG_ERR, "Could not tcsetattr(). %s", strerror(errno));
+ if ((*tty = strdup(pty)) == NULL) {
+ syslog(LOG_ERR, "Could not strdup(). %s", strerror(errno));
close(*aslave);
close(*amaster);
return (-1);
@@ -496,7 +451,7 @@ usage(void)
"\t-a address Peer address (required in client mode)\n" \
"\t-b Run in background\n" \
"\t-c channel RFCOMM channel to connect to or listen on\n" \
-"\t-t tty TTY name (required in background mode)\n" \
+"\t-t use slave pseudo tty (required in background mode)\n" \
"\t-S Server mode\n" \
"\t-h Display this message\n", SPPD_IDENT);
exit(255);
diff --git a/usr.bin/calendar/calendars/calendar.freebsd b/usr.bin/calendar/calendars/calendar.freebsd
index e6cd93f..fc6df82 100644
--- a/usr.bin/calendar/calendars/calendar.freebsd
+++ b/usr.bin/calendar/calendars/calendar.freebsd
@@ -36,6 +36,7 @@
01/26 Andrew Gallatin <gallatin@FreeBSD.org> born in Buffalo, New York, United States, 1970
01/27 Nick Sayer <nsayer@FreeBSD.org> born in San Diego, California, United States, 1968
01/27 Jacques Anthony Vidrine <nectar@FreeBSD.org> born in Baton Rouge, Louisiana, United States, 1971
+01/27 Garrett Cooper <ngie@FreeBSD.org> born in Seattle, Washington, United States, 1984
01/31 Hidetoshi Shimokawa <simokawa@FreeBSD.org> born in Yokohama, Kanagawa, Japan, 1970
02/01 Doug Rabson <dfr@FreeBSD.org> born in London, England, 1966
02/01 Nicola Vitale <nivit@FreeBSD.org> born in Busto Arsizio, Varese, Italy, 1976
@@ -51,6 +52,7 @@
02/03 Jason Helfman <jgh@FreeBSD.org> born in Royal Oak, Michigan, United States, 1972
02/04 Eitan Adler <eadler@FreeBSD.org> born in West Hempstead, New York, United States, 1991
02/05 Frank Laszlo <laszlof@FreeBSD.org> born in Howell, Michigan, United States, 1983
+02/06 Julien Charbon <jch@FreeBSD.org> born in Saint Etienne, Loire, France, 1978
02/10 David Greenman <dg@FreeBSD.org> born in Portland, Oregon, United States, 1968
02/10 Paul Richards <paul@FreeBSD.org> born in Ammanford, Carmarthenshire, United Kingdom, 1968
02/10 Simon Barner <barner@FreeBSD.org> born in Rosenheim, Bayern, Germany, 1980
diff --git a/usr.bin/clang/clang-tblgen/Makefile b/usr.bin/clang/clang-tblgen/Makefile
index 34e7aeb..0f64ad3 100644
--- a/usr.bin/clang/clang-tblgen/Makefile
+++ b/usr.bin/clang/clang-tblgen/Makefile
@@ -19,6 +19,4 @@ SRCS= ClangASTNodesEmitter.cpp \
LIBDEPS=llvmtablegen \
llvmsupport
-NO_PIE= yes
-
.include "../clang.prog.mk"
diff --git a/usr.bin/clang/clang.prog.mk b/usr.bin/clang/clang.prog.mk
index b127a77..14f7609 100644
--- a/usr.bin/clang/clang.prog.mk
+++ b/usr.bin/clang/clang.prog.mk
@@ -1,7 +1,5 @@
# $FreeBSD$
-NO_PIE= yes
-
LLVM_SRCS= ${.CURDIR}/../../../contrib/llvm
.include "../../lib/clang/clang.build.mk"
diff --git a/usr.bin/clang/lldb/Makefile b/usr.bin/clang/lldb/Makefile
index b8dc38e..92e2640 100644
--- a/usr.bin/clang/lldb/Makefile
+++ b/usr.bin/clang/lldb/Makefile
@@ -16,8 +16,8 @@ SRCS= Driver.cpp \
lldb.1:
ln -fs ${LLDB_SRCS}/docs/lldb.1 ${.TARGET}
-DPADD= ${LIBEDIT} ${LIBCURSES} ${LIBEXECINFO}
-LDADD= -lcurses -ledit -lexecinfo -lpanel
+DPADD= ${LIBEDIT} ${LIBNCURSESW} ${LIBEXECINFO} ${LIBPANEL}
+LDADD= -ledit -lncursesw -lexecinfo -lpanel
LLDB_LIBS=\
lldb \
diff --git a/usr.bin/clang/tblgen/Makefile b/usr.bin/clang/tblgen/Makefile
index 31fdc20..f06150e 100644
--- a/usr.bin/clang/tblgen/Makefile
+++ b/usr.bin/clang/tblgen/Makefile
@@ -42,6 +42,4 @@ SRCS= AsmMatcherEmitter.cpp \
LIBDEPS=llvmtablegen \
llvmsupport
-NO_PIE= yes
-
.include "../clang.prog.mk"
diff --git a/usr.bin/cmp/Makefile b/usr.bin/cmp/Makefile
index d93f54b..5b9fdfc 100644
--- a/usr.bin/cmp/Makefile
+++ b/usr.bin/cmp/Makefile
@@ -1,7 +1,13 @@
# @(#)Makefile 8.1 (Berkeley) 6/6/93
# $FreeBSD$
+.include <src.opts.mk>
+
PROG= cmp
SRCS= cmp.c link.c misc.c regular.c special.c
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.bin/cmp/tests/Makefile b/usr.bin/cmp/tests/Makefile
new file mode 100644
index 0000000..1c054c6
--- /dev/null
+++ b/usr.bin/cmp/tests/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+TESTSRC= ${.CURDIR}/../../../contrib/netbsd-tests/usr.bin/cmp
+.PATH: ${TESTSRC}
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/usr.bin/cmp
+ATF_TESTS_SH= cmp_test
+ATF_TESTS_SH_SRC_cmp_test= t_cmp.sh
+
+.include <bsd.test.mk>
diff --git a/usr.bin/col/col.c b/usr.bin/col/col.c
index 78e9780..52214857 100644
--- a/usr.bin/col/col.c
+++ b/usr.bin/col/col.c
@@ -378,7 +378,7 @@ flush_blanks(void)
PUTC('\n');
if (half) {
PUTC('\033');
- PUTC('9');
+ PUTC('\011');
if (!nb)
PUTC('\r');
}
diff --git a/usr.bin/compile_et/Makefile b/usr.bin/compile_et/Makefile
index 122d745..d7177b2 100644
--- a/usr.bin/compile_et/Makefile
+++ b/usr.bin/compile_et/Makefile
@@ -12,6 +12,4 @@ CFLAGS+=-I. -I${.CURDIR}/../../contrib/com_err
WARNS?= 0
-NO_PIE= yes
-
.include <bsd.prog.mk>
diff --git a/usr.bin/csup/cpasswd.1 b/usr.bin/csup/cpasswd.1
index 1e5a5c3..8d0ef09 100644
--- a/usr.bin/csup/cpasswd.1
+++ b/usr.bin/csup/cpasswd.1
@@ -107,12 +107,12 @@ http://www.cvsup.org/
.Ed
.Sh AUTHORS
.An -nosplit
-.An Petar Zhivkov Petrov Aq pesho.petrov@gmail.com
+.An Petar Zhivkov Petrov Aq Mt pesho.petrov@gmail.com
is the author of
.Nm ,
the rewrite of
.Nm cvpasswd .
-.An John Polstra Aq jdp@polstra.com
+.An John Polstra Aq Mt jdp@polstra.com
is the author of
.Nm CVSup .
.Sh LEGALITIES
diff --git a/usr.bin/csup/csup.1 b/usr.bin/csup/csup.1
index fcf63ed..e40204b4 100644
--- a/usr.bin/csup/csup.1
+++ b/usr.bin/csup/csup.1
@@ -973,13 +973,13 @@ List files.
.Xr ssh 1 .
.Sh AUTHORS
.An -nosplit
-.An Maxime Henrion Aq mux@FreeBSD.org
+.An Maxime Henrion Aq Mt mux@FreeBSD.org
is the author of
.Nm ,
the rewrite of
.Nm CVSup
in C.
-.An John Polstra Aq jdp@polstra.com
+.An John Polstra Aq Mt jdp@polstra.com
is the author of
.Nm CVSup .
.Sh LEGALITIES
diff --git a/usr.bin/cut/Makefile b/usr.bin/cut/Makefile
index 5be029a..21c1a1c 100644
--- a/usr.bin/cut/Makefile
+++ b/usr.bin/cut/Makefile
@@ -1,6 +1,12 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/6/93
# $FreeBSD$
+.include <src.opts.mk>
+
PROG= cut
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.bin/cut/tests/Makefile b/usr.bin/cut/tests/Makefile
new file mode 100644
index 0000000..b324a78
--- /dev/null
+++ b/usr.bin/cut/tests/Makefile
@@ -0,0 +1,21 @@
+# $FreeBSD$
+
+TESTSRC= ${.CURDIR}/../../../contrib/netbsd-tests/usr.bin/cut
+.PATH: ${TESTSRC}
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/usr.bin/cut
+ATF_TESTS_SH= cut_test
+ATF_TESTS_SH_SRC_cut_test= t_cut.sh
+
+FILESDIR= ${TESTSDIR}
+FILES= d_basic.out
+FILES+= d_cut.in
+FILES+= d_dflag.out
+FILES+= d_dsflag.out
+FILES+= d_latin1.in
+FILES+= d_sflag.out
+FILES+= d_utf8.in
+
+.include <bsd.test.mk>
diff --git a/usr.bin/dirname/Makefile b/usr.bin/dirname/Makefile
index fb0e660..be9193c 100644
--- a/usr.bin/dirname/Makefile
+++ b/usr.bin/dirname/Makefile
@@ -1,7 +1,13 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/6/93
# $FreeBSD$
+.include <src.opts.mk>
+
PROG= dirname
MAN=
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.bin/dirname/tests/Makefile b/usr.bin/dirname/tests/Makefile
new file mode 100644
index 0000000..5b84c57
--- /dev/null
+++ b/usr.bin/dirname/tests/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+TESTSRC= ${.CURDIR}/../../../contrib/netbsd-tests/usr.bin/dirname
+.PATH: ${TESTSRC}
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/usr.bin/dirname
+ATF_TESTS_SH= dirname_test
+ATF_TESTS_SH_SRC_dirname_test= t_dirname.sh
+
+.include <bsd.test.mk>
diff --git a/usr.bin/dpv/Makefile b/usr.bin/dpv/Makefile
new file mode 100644
index 0000000..3cc18ca
--- /dev/null
+++ b/usr.bin/dpv/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+PROG= dpv
+
+CFLAGS+= -I${.CURDIR}
+
+DPADD= ${LIBDPV} ${LIBDIALOG} ${LIBFIGPAR} ${LIBNCURSESW} ${LIBUTIL}
+LDADD= -ldpv -ldialog -lfigpar -lncursesw -lutil
+
+WARNS?= 6
+
+.include <bsd.prog.mk>
diff --git a/usr.bin/dpv/dpv.1 b/usr.bin/dpv/dpv.1
new file mode 100644
index 0000000..c8d321b
--- /dev/null
+++ b/usr.bin/dpv/dpv.1
@@ -0,0 +1,430 @@
+.\" Copyright (c) 2013-2014 Devin Teske
+.\" 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.
+.\"
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd Sep 7, 2014
+.Dt DPV 1
+.Os
+.Sh NAME
+.Nm dpv
+.Nd stream data from stdin or multiple paths with dialog progress view
+.Sh SYNOPSIS
+.Nm
+.Op options
+.Ar [bytes:]label
+.Nm
+.Op options
+.Fl m
+.Ar [bytes1:]label1
+.Ar path1
+.Op Ar [bytes2:]label2 path2 ...
+.Sh DESCRIPTION
+.Nm
+provides a dialog progress view, allowing a user to see current throughput rate
+and total data transferred for one or more streams.
+.Pp
+The
+.Nm
+utility has two main modes for processing input.
+.Pp
+The default input mode, without
+.Ql Fl m ,
+.Nm
+reads bytes from standard input.
+A label for the data must be provided.
+.Pp
+The secondary input mode, with
+.Ql Fl m ,
+.Nm
+reads multiple paths
+.Pq up to 2047 or Dq ARG_MAX/2-1 ,
+sequentially.
+.Pp
+Data read in either mode is either thrown away
+.Pq default ,
+sent to a spawned instance of the program specified via
+.Ql Fl x Ar cmd ,
+or sent to a unique file specified by
+.Ql Fl o Ar file .
+.Pp
+With or without
+.Ql Fl m ,
+progress is displayed using one of
+.Xr dialog 3
+.Pq default ,
+.Xr dialog 1
+.Pq see Ql Fl D ,
+or instead
+.Xr Xdialog 1
+.Pq see Ql Fl X .
+.Pp
+The following options are available:
+.Bl -tag -width ".Fl b Ar backtitle"
+.It Fl a Ar text
+Display
+.Ar text
+below the file progress indicator(s).
+.It Fl b Ar backtitle
+Display
+.Ar backtitle
+on the backdrop, at top-left, behind the dialog widget.
+When using
+.Xr Xdialog 1 ,
+this is displayed inside the window
+.Pq at the top
+followed by a separator line.
+.It Fl d
+Debug mode.
+Print dialog prompt data to standard out and provide additional debugging on
+standard error.
+.It Fl D
+Do not use the default interface of
+.Xr dialog 3 ,
+but instead spawn an instance of
+.Xr dialog 1 .
+The path to
+.Xr dialog 1
+is taken from the
+.Ev DIALOG
+environment variable or simply
+.Dq Li dialog
+if unset or NULL.
+.It Fl h
+Produce a short syntax usage with brief option descriptions and exit.
+Output is produced on standard error.
+.It Fl i Ar format
+Customize the single-file format string used to update the status line.
+Ignored when using either
+.Ql Fl D
+or
+.Ql Fl X
+which lack the ability to display the status line
+.Pq containing bytes/rate/thread information .
+Default value
+is
+.Dq Li %'10lli bytes read @ %'9.1f bytes/sec. .
+This format is used when handling one file.
+.It Fl I Ar format
+Customize the multi-file format string used to update the status line.
+Ignored when using either
+.Ql Fl D
+or
+.Ql Fl X
+which lack the ability to display the status line
+.Pq containing bytes/rate/thread information .
+Default value
+is
+.Dq Li %'10lli bytes read @ %'9.1f bytes/sec. [%i/%i busy/wait] .
+This format is used when handling more than one file.
+.It Fl l
+Line mode. Read lines from input instead of bytes.
+.It Fl L Ar size
+Label size.
+If negative, shrink to longest label width.
+.It Fl m
+Multi-input mode.
+Instead of reading bytes from standard input, read from a set of paths
+.Pq one for each label .
+By default, each path is processed sequentially in the order given.
+.It Fl n Ar num
+Display at-most
+.Ar num
+progress indicators per screen.
+If zero, display as many as possible.
+If negative, only display the main progress indicator.
+Default is 0.
+Maximum value is 10.
+.It Fl N
+No overrun.
+If enabled, stop reading known-length inputs when input reaches stated length.
+.It Fl o Ar file
+Output data to
+.Ar file .
+The first occurrence of
+.Ql %s
+.Pq if any
+in
+.Ql Ar file
+will be replaced with the
+.Ar label
+text.
+.It Fl p Ar text
+Display
+.Ar text
+above the file progress indicator(s).
+.It Fl P Ar size
+Mini-progressbar size.
+If negative, don't display mini-progressbars
+.Pq only the large overall progress indicator is shown .
+If zero, auto-adjust based on number of files to read.
+When zero and only one file to read, defaults to -1.
+When zero and more than one file to read, defaults to 17.
+.It Fl t Ar title
+Display
+.Ar title
+atop the dialog box.
+Note that if you use this option at the same time as
+.Ql Fl X
+and
+.Ql Fl b Ar backtitle ,
+the
+.Ar backtitle
+and
+.Ar title
+are effectively switched
+.Pq see BUGS section below .
+.It Fl T
+Test mode.
+Simulate reading a number of bytes, divided evenly across the number of files,
+while stepping through each percent value of each file to process.
+Appends
+.Dq Li [TEST MODE]
+to the status line
+.Pq to override, use Ql Fl u Ar format .
+No data is actually read.
+.It Fl U Ar num
+Update status line
+.Ar num
+times per-second.
+Default value is
+.Ql Li 2 .
+A value of
+.Ql Li 0
+disables status line updates.
+If negative, update the status line as fast as possible.
+Ignored when using either
+.Ql Fl D
+or
+.Ql Fl X
+which lack the ability to display the status line
+.Pq containing bytes/rate/thread information .
+.It Fl w
+Wide mode.
+Allows long
+.Ar text
+arguments used with
+.Ql Fl p
+and
+.Ql Fl a
+to bump the dialog width.
+Prompts wider than the maximum width will wrap
+.Pq unless using Xr Xdialog 1 ; see BUGS section below .
+.It Fl x Ar cmd
+Execute
+.Ar cmd
+.Pq via Xr sh 1
+and send it data that has been read.
+Data is available to
+.Ar cmd
+on standard input.
+With
+.Ql Fl m ,
+.Ar cmd
+is executed once for each
+.Ar path
+argument.
+The first occurrence of
+.Ql %s
+.Pq if any
+in
+.Ql Ar cmd
+will be replaced with the
+.Ar label
+text.
+.It Fl X
+Enable X11 mode by using
+.Xr Xdialog 1
+instead of
+.Xr dialog 1
+or
+.Xr dialog 3 .
+.El
+.Sh ENVIRONMENT
+The following environment variables are referenced by
+.Nm :
+.Bl -tag -width ".Ev USE_COLOR"
+.It Ev DIALOG
+Override command string used to launch
+.Xr dialog 1
+.Pq requires Ql Fl D
+or
+.Xr Xdialog 1
+.Pq requires Ql Fl X ;
+default is either
+.Ql dialog
+.Pq for Ql Fl D
+or
+.Ql Xdialog
+.Pq for Ql Fl X .
+.It Ev DIALOGRC
+If set and non-NULL, path to
+.Ql .dialogrc
+file.
+.It Ev HOME
+If
+.Ql Ev $DIALOGRC
+is either not set or NULL, used as a prefix to
+.Ql .dialogrc
+.Pq i.e., Ql $HOME/.dialogrc .
+.It Ev USE_COLOR
+If set and NULL, disables the use of color when using
+.Xr dialog 1
+.Pq does not apply to Xr Xdialog 1 .
+.El
+.Sh DEPENDENCIES
+If using
+.Ql Fl D ,
+.Xr dialog 1
+is required.
+.Pp
+If using
+.Ql Fl X ,
+.Xr Xdialog 1
+is required.
+.Sh FILES
+.Bl -tag -width ".Pa $HOME/.dialogrc" -compact
+.It Pa $HOME/.dialogrc
+.El
+.Sh EXAMPLES
+.Pp
+Simple example to show how fast
+.Xr yes 1
+produces lines
+.Pq usually about ten-million per-second; your results may vary :
+.Bd -literal -offset indent
+yes | dpv -l yes
+.Ed
+.Pp
+Display progress while timing how long it takes
+.Xr yes 1
+to produce a half-billion lines
+.Pq usually under one minute; your results may vary :
+.Bd -literal -offset indent
+time yes | dpv -Nl 500000000:yes
+.Ed
+.Pp
+An example to watch how quickly a file is transferred using
+.Xr nc 1 :
+.Bd -literal -offset indent
+dpv -x "nc -w 1 somewhere.com 3000" -m label file
+.Ed
+.Pp
+A similar example, transferring a file from another process and passing the
+expected size to
+.Nm :
+.Bd -literal -offset indent
+cat file | dpv -x "nc -w 1 somewhere.com 3000" 12345:label
+.Ed
+.Pp
+A more complicated example:
+.Bd -literal -offset indent
+tar cf - . | dpv -x "gzip -9 > out.tgz" \\
+ $( du -s . | awk '{print $1 * 1024}' ):label
+.Ed
+.Pp
+Taking an image of a disk:
+.Bd -literal -offset indent
+dpv -o disk-image.img -m label /dev/ada0
+.Ed
+.Pp
+Writing an image back to a disk:
+.Bd -literal -offset indent
+dpv -o /dev/ada0 -m label disk-image.img
+.Ed
+.Pp
+Zeroing a disk:
+.Bd -literal -offset indent
+dpv -o /dev/md42 < /dev/zero
+.Ed
+.Pp
+.Sh BUGS
+.Xr Xdialog 1 ,
+when given both
+.Ql Fl -title Ar title
+.Pq see above Ql Fl t Ar title
+and
+.Ql Fl -backtitle Ar backtitle
+.Pq see above Ql Fl b Ar backtitle ,
+displays the backtitle in place of the title and vice-versa.
+.Pp
+.Xr Xdialog 1
+does not wrap long prompt texts received after initial launch.
+This is a known issue with the
+.Ql --gauge
+widget in
+.Xr Xdialog 1 .
+.Pp
+.Xr dialog 1
+does not display the first character after a series of escaped escape-sequences
+(e.g., ``\\\\n'' produces ``\\'' instead of ``\\n'').
+This is a known issue with
+.Xr dialog 1
+and does not affect
+.Xr dialog 3
+or
+.Xr Xdialog 1 .
+.Pp
+If your application ignores
+.Ev USE_COLOR
+when set and NULL before calling
+.Xr dpv 1
+with color escape sequences anyway,
+.Xr dialog 3
+and
+.Xr dialog 1
+may not render properly.
+Workaround is to detect when
+.Ev USE_COLOR
+is set and NULL and either not use color escape sequences at that time or use
+.Xr unset 1
+.Xr [ sh 1 ]
+or
+.Xr unsetenv 1
+.Xr [ csh 1 ]
+to unset
+.Ev USE_COLOR ,
+forcing interpretation of color sequences.
+This does not effect
+.Xr Xdialog 1 ,
+which renders the color escape sequences as plain text.
+See
+.Do Li
+embedded "\\Z" sequences
+.Dc
+in
+.Xr dialog 1
+for additional information.
+.Sh SEE ALSO
+.Xr dialog 1 ,
+.Xr dialog 3 ,
+.Xr sh 1 ,
+.Xr Xdialog 1
+.Sh HISTORY
+A
+.Nm
+utility first appeared in
+.Fx 11.0 .
+.Sh AUTHORS
+.An Devin Teske Aq dteske@FreeBSD.org
diff --git a/usr.bin/dpv/dpv.c b/usr.bin/dpv/dpv.c
new file mode 100644
index 0000000..4e006f6
--- /dev/null
+++ b/usr.bin/dpv/dpv.c
@@ -0,0 +1,541 @@
+/*-
+ * Copyright (c) 2013-2014 Devin Teske <dteske@FreeBSD.org>
+ * 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.
+ *
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#define _BSD_SOURCE /* to get dprintf() prototype in stdio.h below */
+#include <dialog.h>
+#include <dpv.h>
+#include <err.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <string_m.h>
+#include <unistd.h>
+
+#include "dpv_util.h"
+
+/* Debugging */
+static uint8_t debug = FALSE;
+
+/* Data to process */
+static struct dpv_file_node *file_list = NULL;
+static unsigned int nfiles = 0;
+
+/* Data processing */
+static uint8_t line_mode = FALSE;
+static uint8_t no_overrun = FALSE;
+static char *buf = NULL;
+static int fd = -1;
+static int output_type = DPV_OUTPUT_NONE;
+static size_t bsize;
+static char rpath[PATH_MAX];
+
+/* Extra display information */
+static uint8_t multiple = FALSE; /* `-m' */
+static char *pgm; /* set to argv[0] by main() */
+
+/* Function prototypes */
+static void sig_int(int sig);
+static void usage(void);
+int main(int argc, char *argv[]);
+static int operate_common(struct dpv_file_node *file, int out);
+static int operate_on_bytes(struct dpv_file_node *file, int out);
+static int operate_on_lines(struct dpv_file_node *file, int out);
+
+static int
+operate_common(struct dpv_file_node *file, int out)
+{
+ struct stat sb;
+
+ /* Open the file if necessary */
+ if (fd < 0) {
+ if (multiple) {
+ /* Resolve the file path and attempt to open it */
+ if (realpath(file->path, rpath) == 0 ||
+ (fd = open(rpath, O_RDONLY)) < 0) {
+ warn("%s", file->path);
+ file->status = DPV_STATUS_FAILED;
+ return (-1);
+ }
+ } else {
+ /* Assume stdin, but if that's a TTY instead use the
+ * highest numbered file descriptor (obtained by
+ * generating new fd and then decrementing).
+ *
+ * NB: /dev/stdin should always be open(2)'able
+ */
+ fd = STDIN_FILENO;
+ if (isatty(fd)) {
+ fd = open("/dev/stdin", O_RDONLY);
+ close(fd--);
+ }
+
+ /* This answer might be wrong, if dpv(3) has (by
+ * request) opened an output file or pipe. If we
+ * told dpv(3) to open a file, subtract one from
+ * previous answer. If instead we told dpv(3) to
+ * prepare a pipe output, subtract two.
+ */
+ switch(output_type) {
+ case DPV_OUTPUT_FILE:
+ fd -= 1;
+ break;
+ case DPV_OUTPUT_SHELL:
+ fd -= 2;
+ break;
+ }
+ }
+ }
+
+ /* Allocate buffer if necessary */
+ if (buf == NULL) {
+ /* Use output block size as buffer size if available */
+ if (out >= 0) {
+ if (fstat(out, &sb) != 0) {
+ warn("%i", out);
+ file->status = DPV_STATUS_FAILED;
+ return (-1);
+ }
+ if (S_ISREG(sb.st_mode)) {
+ if (sysconf(_SC_PHYS_PAGES) >
+ PHYSPAGES_THRESHOLD)
+ bsize = MIN(BUFSIZE_MAX, MAXPHYS * 8);
+ else
+ bsize = BUFSIZE_SMALL;
+ } else
+ bsize = MAX(sb.st_blksize,
+ (blksize_t)sysconf(_SC_PAGESIZE));
+ } else
+ bsize = MIN(BUFSIZE_MAX, MAXPHYS * 8);
+
+ /* Attempt to allocate */
+ if ((buf = malloc(bsize+1)) == NULL) {
+ end_dialog();
+ err(EXIT_FAILURE, "Out of memory?!");
+ }
+ }
+
+ return (0);
+}
+
+static int
+operate_on_bytes(struct dpv_file_node *file, int out)
+{
+ int progress;
+ ssize_t r, w;
+
+ if (operate_common(file, out) < 0)
+ return (-1);
+
+ /* [Re-]Fill the buffer */
+ if ((r = read(fd, buf, bsize)) <= 0) {
+ if (fd != STDIN_FILENO)
+ close(fd);
+ fd = -1;
+ file->status = DPV_STATUS_DONE;
+ return (100);
+ }
+
+ /* [Re-]Dump the buffer */
+ if (out >= 0) {
+ if ((w = write(out, buf, r)) < 0) {
+ end_dialog();
+ err(EXIT_FAILURE, "output");
+ }
+ fsync(out);
+ }
+
+ dpv_overall_read += r;
+ file->read += r;
+
+ /* Calculate percentage of completion (if possible) */
+ if (file->length >= 0) {
+ progress = (file->read * 100 / (file->length > 0 ?
+ file->length : 1));
+
+ /* If no_overrun, do not return 100% until read >= length */
+ if (no_overrun && progress == 100 && file->read < file->length)
+ progress--;
+
+ return (progress);
+ } else
+ return (-1);
+}
+
+static int
+operate_on_lines(struct dpv_file_node *file, int out)
+{
+ char *p;
+ int progress;
+ ssize_t r, w;
+
+ if (operate_common(file, out) < 0)
+ return (-1);
+
+ /* [Re-]Fill the buffer */
+ if ((r = read(fd, buf, bsize)) <= 0) {
+ if (fd != STDIN_FILENO)
+ close(fd);
+ fd = -1;
+ file->status = DPV_STATUS_DONE;
+ return (100);
+ }
+ buf[r] = '\0';
+
+ /* [Re-]Dump the buffer */
+ if (out >= 0) {
+ if ((w = write(out, buf, r)) < 0) {
+ end_dialog();
+ err(EXIT_FAILURE, "output");
+ }
+ fsync(out);
+ }
+
+ /* Process the buffer for number of lines */
+ for (p = buf; p != NULL && *p != '\0';)
+ if ((p = strchr(p, '\n')) != NULL)
+ dpv_overall_read++, p++, file->read++;
+
+ /* Calculate percentage of completion (if possible) */
+ if (file->length >= 0) {
+ progress = (file->read * 100 / file->length);
+
+ /* If no_overrun, do not return 100% until read >= length */
+ if (no_overrun && progress == 100 && file->read < file->length)
+ progress--;
+
+ return (progress);
+ } else
+ return (-1);
+}
+
+/*
+ * Takes a list of names that are to correspond to input streams coming from
+ * stdin or fifos and produces necessary config to drive dpv(3) `--gauge'
+ * widget. If the `-d' flag is used, output is instead send to terminal
+ * standard output (and the output can then be saved to a file, piped into
+ * custom [X]dialog(1) invocation, or whatever.
+ */
+int
+main(int argc, char *argv[])
+{
+ char dummy;
+ int ch;
+ int n = 0;
+ size_t config_size = sizeof(struct dpv_config);
+ size_t file_node_size = sizeof(struct dpv_file_node);
+ struct dpv_config *config;
+ struct dpv_file_node *curfile;
+ struct sigaction act;
+
+ pgm = argv[0]; /* store a copy of invocation name */
+
+ /* Allocate config structure */
+ if ((config = malloc(config_size)) == NULL)
+ errx(EXIT_FAILURE, "Out of memory?!");
+ memset((void *)(config), '\0', config_size);
+
+ /*
+ * Process command-line options
+ */
+ while ((ch = getopt(argc, argv,
+ "a:b:dDhi:I:lL:mn:No:p:P:t:TU:wx:X")) != -1) {
+ switch(ch) {
+ case 'a': /* additional message text to append */
+ if (config->aprompt == NULL) {
+ config->aprompt = malloc(DPV_APROMPT_MAX);
+ if (config->aprompt == NULL)
+ errx(EXIT_FAILURE, "Out of memory?!");
+ }
+ snprintf(config->aprompt, DPV_APROMPT_MAX, "%s",
+ optarg);
+ break;
+ case 'b': /* [X]dialog(1) backtitle */
+ if (config->backtitle != NULL)
+ free((char *)config->backtitle);
+ config->backtitle = malloc(strlen(optarg) + 1);
+ if (config->backtitle == NULL)
+ errx(EXIT_FAILURE, "Out of memory?!");
+ *(config->backtitle) = '\0';
+ strcat(config->backtitle, optarg);
+ break;
+ case 'd': /* debugging */
+ debug = TRUE;
+ config->debug = debug;
+ break;
+ case 'D': /* use dialog(1) instead of libdialog */
+ config->display_type = DPV_DISPLAY_DIALOG;
+ break;
+ case 'h': /* help/usage */
+ usage();
+ break; /* NOTREACHED */
+ case 'i': /* status line format string for single-file */
+ config->status_solo = optarg;
+ break;
+ case 'I': /* status line format string for many-files */
+ config->status_many = optarg;
+ break;
+ case 'l': /* Line mode */
+ line_mode = TRUE;
+ break;
+ case 'L': /* custom label size */
+ config->label_size =
+ (int)strtol(optarg, (char **)NULL, 10);
+ if (config->label_size == 0 && errno == EINVAL)
+ errx(EXIT_FAILURE,
+ "`-L' argument must be numeric");
+ else if (config->label_size < -1)
+ config->label_size = -1;
+ break;
+ case 'm': /* enable multiple file arguments */
+ multiple = TRUE;
+ break;
+ case 'o': /* `-o path' for sending data-read to file */
+ output_type = DPV_OUTPUT_FILE;
+ config->output_type = DPV_OUTPUT_FILE;
+ config->output = optarg;
+ break;
+ case 'n': /* custom number of files per `page' */
+ config->display_limit =
+ (int)strtol(optarg, (char **)NULL, 10);
+ if (config->display_limit == 0 && errno == EINVAL)
+ errx(EXIT_FAILURE,
+ "`-n' argument must be numeric");
+ else if (config->display_limit < 0)
+ config->display_limit = -1;
+ break;
+ case 'N': /* No overrun (truncate reads of known-length) */
+ no_overrun = TRUE;
+ config->options |= DPV_NO_OVERRUN;
+ break;
+ case 'p': /* additional message text to use as prefix */
+ if (config->pprompt == NULL) {
+ config->pprompt = malloc(DPV_PPROMPT_MAX + 2);
+ if (config->pprompt == NULL)
+ errx(EXIT_FAILURE, "Out of memory?!");
+ /* +2 is for implicit "\n" appended later */
+ }
+ snprintf(config->pprompt, DPV_PPROMPT_MAX, "%s",
+ optarg);
+ break;
+ case 'P': /* custom size for mini-progressbar */
+ config->pbar_size =
+ (int)strtol(optarg, (char **)NULL, 10);
+ if (config->pbar_size == 0 && errno == EINVAL)
+ errx(EXIT_FAILURE,
+ "`-P' argument must be numeric");
+ else if (config->pbar_size < -1)
+ config->pbar_size = -1;
+ break;
+ case 't': /* [X]dialog(1) title */
+ if (config->title != NULL)
+ free(config->title);
+ config->title = malloc(strlen(optarg) + 1);
+ if (config->title == NULL)
+ errx(EXIT_FAILURE, "Out of memory?!");
+ *(config->title) = '\0';
+ strcat(config->title, optarg);
+ break;
+ case 'T': /* test mode (don't read data, fake it) */
+ config->options |= DPV_TEST_MODE;
+ break;
+ case 'U': /* updates per second */
+ config->status_updates_per_second =
+ (int)strtol(optarg, (char **)NULL, 10);
+ if (config->status_updates_per_second == 0 &&
+ errno == EINVAL)
+ errx(EXIT_FAILURE,
+ "`-U' argument must be numeric");
+ break;
+ case 'w': /* `-p' and `-a' widths bump [X]dialog(1) width */
+ config->options |= DPV_WIDE_MODE;
+ break;
+ case 'x': /* `-x cmd' for sending data-read to sh(1) code */
+ output_type = DPV_OUTPUT_SHELL;
+ config->output_type = DPV_OUTPUT_SHELL;
+ config->output = optarg;
+ break;
+ case 'X': /* X11 support through x11/xdialog */
+ config->display_type = DPV_DISPLAY_XDIALOG;
+ break;
+ case '?': /* unknown argument (based on optstring) */
+ /* FALLTHROUGH */
+ default: /* unhandled argument (based on switch) */
+ usage();
+ /* NOTREACHED */
+ }
+ }
+ argc -= optind;
+ argv += optind;
+
+ /* Process remaining arguments as list of names to display */
+ for (curfile = file_list; n < argc; n++) {
+ nfiles++;
+
+ /* Allocate a new struct for the file argument */
+ if (curfile == NULL) {
+ if ((curfile = malloc(file_node_size)) == NULL)
+ errx(EXIT_FAILURE, "Out of memory?!");
+ memset((void *)(curfile), '\0', file_node_size);
+ file_list = curfile;
+ } else {
+ if ((curfile->next = malloc(file_node_size)) == NULL)
+ errx(EXIT_FAILURE, "Out of memory?!");
+ memset((void *)(curfile->next), '\0', file_node_size);
+ curfile = curfile->next;
+ }
+ curfile->name = argv[n];
+
+ /* Read possible `lines:' prefix from label syntax */
+ if (sscanf(curfile->name, "%lli:%c", &(curfile->length),
+ &dummy) == 2)
+ curfile->name = strchr(curfile->name, ':') + 1;
+ else
+ curfile->length = -1;
+
+ /* Read path argument if enabled */
+ if (multiple) {
+ if (++n >= argc)
+ errx(EXIT_FAILURE, "Missing path argument "
+ "for label number %i", nfiles);
+ curfile->path = argv[n];
+ } else
+ break;
+ }
+
+ /* Display usage and exit if not given at least one name */
+ if (nfiles == 0) {
+ warnx("no labels provided");
+ usage();
+ /* NOTREACHED */
+ }
+
+ /*
+ * Set cleanup routine for Ctrl-C action
+ */
+ if (config->display_type == DPV_DISPLAY_LIBDIALOG) {
+ act.sa_handler = sig_int;
+ sigaction(SIGINT, &act, 0);
+ }
+
+ /* Set status formats and action */
+ if (line_mode) {
+ config->status_solo = LINE_STATUS_SOLO;
+ config->status_many = LINE_STATUS_SOLO;
+ config->action = operate_on_lines;
+ } else {
+ config->status_solo = BYTE_STATUS_SOLO;
+ config->status_many = BYTE_STATUS_SOLO;
+ config->action = operate_on_bytes;
+ }
+
+ /*
+ * Hand off to dpv(3)...
+ */
+ if (dpv(config, file_list) != 0 && debug)
+ warnx("dpv(3) returned error!?");
+
+ end_dialog();
+ dpv_free();
+
+ exit(EXIT_SUCCESS);
+}
+
+/*
+ * Interrupt handler to indicate we received a Ctrl-C interrupt.
+ */
+static void
+sig_int(int sig __unused)
+{
+ dpv_interrupt = TRUE;
+}
+
+/*
+ * Print short usage statement to stderr and exit with error status.
+ */
+static void
+usage(void)
+{
+
+ if (debug) /* No need for usage */
+ exit(EXIT_FAILURE);
+
+ fprintf(stderr, "Usage: %s [options] bytes:label\n", pgm);
+ fprintf(stderr, " %s [options] -m bytes1:label1 path1 "
+ "[bytes2:label2 path2 ...]\n", pgm);
+ fprintf(stderr, "OPTIONS:\n");
+#define OPTFMT "\t%-14s %s\n"
+ fprintf(stderr, OPTFMT, "-a text",
+ "Append text. Displayed below file progress indicators.");
+ fprintf(stderr, OPTFMT, "-b backtitle",
+ "String to be displayed on the backdrop, at top-left.");
+ fprintf(stderr, OPTFMT, "-d",
+ "Debug. Write to standard output instead of dialog.");
+ fprintf(stderr, OPTFMT, "-D",
+ "Use dialog(1) instead of dialog(3) [default].");
+ fprintf(stderr, OPTFMT, "-h",
+ "Produce this output on standard error and exit.");
+ fprintf(stderr, OPTFMT, "-i format",
+ "Customize status line format. See fdpv(1) for details.");
+ fprintf(stderr, OPTFMT, "-I format",
+ "Customize status line format. See fdpv(1) for details.");
+ fprintf(stderr, OPTFMT, "-L size",
+ "Label size. Must be a number greater than 0, or -1.");
+ fprintf(stderr, OPTFMT, "-m",
+ "Enable processing of multiple file argiments.");
+ fprintf(stderr, OPTFMT, "-n num",
+ "Display at-most num files per screen. Default is -1.");
+ fprintf(stderr, OPTFMT, "-N",
+ "No overrun. Stop reading input at stated length, if any.");
+ fprintf(stderr, OPTFMT, "-o file",
+ "Output data to file. First %s replaced with label text.");
+ fprintf(stderr, OPTFMT, "-p text",
+ "Prefix text. Displayed above file progress indicators.");
+ fprintf(stderr, OPTFMT, "-P size",
+ "Mini-progressbar size. Must be a number greater than 3.");
+ fprintf(stderr, OPTFMT, "-t title",
+ "Title string to be displayed at top of dialog(1) box.");
+ fprintf(stderr, OPTFMT, "-T",
+ "Test mode. Don't actually read any data, but fake it.");
+ fprintf(stderr, OPTFMT, "-U num",
+ "Update status line num times per-second. Default is 2.");
+ fprintf(stderr, OPTFMT, "-w",
+ "Wide. Width of `-p' and `-a' text bump dialog(1) width.");
+ fprintf(stderr, OPTFMT, "-x cmd",
+ "Send data to executed cmd. First %s replaced with label.");
+ fprintf(stderr, OPTFMT, "-X",
+ "X11. Use Xdialog(1) instead of dialog(1).");
+ exit(EXIT_FAILURE);
+}
diff --git a/usr.bin/dpv/dpv_util.h b/usr.bin/dpv/dpv_util.h
new file mode 100644
index 0000000..36990be
--- /dev/null
+++ b/usr.bin/dpv/dpv_util.h
@@ -0,0 +1,68 @@
+/*-
+ * Copyright (c) 2013-2014 Devin Teske <dteske@FreeBSD.org>
+ * 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.
+ *
+ * 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.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _DPV_UTIL_H_
+#define _DPV_UTIL_H_
+
+/* Limits */
+#define BUFSIZE_MAX (2 * 1024 * 1024)
+ /* Buffer size for read(2) input */
+#ifndef MAXPHYS
+#define MAXPHYS (128 * 1024)
+ /* max raw I/O transfer size */
+#endif
+
+/*
+ * Memory strategry threshold, in pages: if physmem is larger than this,
+ * use a large buffer.
+ */
+#define PHYSPAGES_THRESHOLD (32 * 1024)
+
+/*
+ * Small (default) buffer size in bytes. It's inefficient for this to be
+ * smaller than MAXPHYS.
+ */
+#define BUFSIZE_SMALL (MAXPHYS)
+
+/*
+ * Math macros
+ */
+#undef MIN
+#define MIN(x,y) ((x) < (y) ? (x) : (y))
+#undef MAX
+#define MAX(x,y) ((x) > (y) ? (x) : (y))
+
+/*
+ * Extra display information
+ */
+#define BYTE_STATUS_SOLO "%'10lli bytes read @ %'9.1f bytes/sec."
+#define BYTE_STATUS_MANY (BYTE_STATUS_SOLO " [%i/%i busy/wait]")
+#define LINE_STATUS_SOLO "%'10lli lines read @ %'9.1f lines/sec."
+#define LINE_STATUS_MANY (LINE_STATUS_SOLO " [%i/%i busy/wait]")
+
+#endif /* !_DPV_UTIL_H_ */
diff --git a/usr.bin/drill/Makefile b/usr.bin/drill/Makefile
index a963bfc..0db0604 100644
--- a/usr.bin/drill/Makefile
+++ b/usr.bin/drill/Makefile
@@ -13,7 +13,7 @@ NO_WERROR= true
MAN= drill.1
DPADD+= ${LIBLDNS} ${LIBCRYPTO}
-LDADD+= -lldns -lcrypto
+LDADD+= ${LDLDNS} -lcrypto
USEPRIVATELIB= ldns
.include <bsd.prog.mk>
diff --git a/usr.bin/elfdump/elfdump.1 b/usr.bin/elfdump/elfdump.1
index dbb3171..a549d53 100644
--- a/usr.bin/elfdump/elfdump.1
+++ b/usr.bin/elfdump/elfdump.1
@@ -50,7 +50,7 @@ The options are as follows:
.It Fl a
Dump all information.
.It Fl c
-Dump shared headers.
+Dump section headers.
.It Fl d
Dump dynamic symbols.
.It Fl e
diff --git a/usr.bin/elfdump/elfdump.c b/usr.bin/elfdump/elfdump.c
index 4ba4529..bf9b718 100644
--- a/usr.bin/elfdump/elfdump.c
+++ b/usr.bin/elfdump/elfdump.c
@@ -172,74 +172,74 @@ d_tags(u_int64_t tag)
static char unknown_tag[48];
switch (tag) {
- case 0: return "DT_NULL";
- case 1: return "DT_NEEDED";
- case 2: return "DT_PLTRELSZ";
- case 3: return "DT_PLTGOT";
- case 4: return "DT_HASH";
- case 5: return "DT_STRTAB";
- case 6: return "DT_SYMTAB";
- case 7: return "DT_RELA";
- case 8: return "DT_RELASZ";
- case 9: return "DT_RELAENT";
- case 10: return "DT_STRSZ";
- case 11: return "DT_SYMENT";
- case 12: return "DT_INIT";
- case 13: return "DT_FINI";
- case 14: return "DT_SONAME";
- case 15: return "DT_RPATH";
- case 16: return "DT_SYMBOLIC";
- case 17: return "DT_REL";
- case 18: return "DT_RELSZ";
- case 19: return "DT_RELENT";
- case 20: return "DT_PLTREL";
- case 21: return "DT_DEBUG";
- case 22: return "DT_TEXTREL";
- case 23: return "DT_JMPREL";
- case 24: return "DT_BIND_NOW";
- case 25: return "DT_INIT_ARRAY";
- case 26: return "DT_FINI_ARRAY";
- case 27: return "DT_INIT_ARRAYSZ";
- case 28: return "DT_FINI_ARRAYSZ";
- case 29: return "DT_RUNPATH";
- case 30: return "DT_FLAGS";
- case 32: return "DT_PREINIT_ARRAY"; /* XXX: DT_ENCODING */
- case 33: return "DT_PREINIT_ARRAYSZ";
+ case DT_NULL: return "DT_NULL";
+ case DT_NEEDED: return "DT_NEEDED";
+ case DT_PLTRELSZ: return "DT_PLTRELSZ";
+ case DT_PLTGOT: return "DT_PLTGOT";
+ case DT_HASH: return "DT_HASH";
+ case DT_STRTAB: return "DT_STRTAB";
+ case DT_SYMTAB: return "DT_SYMTAB";
+ case DT_RELA: return "DT_RELA";
+ case DT_RELASZ: return "DT_RELASZ";
+ case DT_RELAENT: return "DT_RELAENT";
+ case DT_STRSZ: return "DT_STRSZ";
+ case DT_SYMENT: return "DT_SYMENT";
+ case DT_INIT: return "DT_INIT";
+ case DT_FINI: return "DT_FINI";
+ case DT_SONAME: return "DT_SONAME";
+ case DT_RPATH: return "DT_RPATH";
+ case DT_SYMBOLIC: return "DT_SYMBOLIC";
+ case DT_REL: return "DT_REL";
+ case DT_RELSZ: return "DT_RELSZ";
+ case DT_RELENT: return "DT_RELENT";
+ case DT_PLTREL: return "DT_PLTREL";
+ case DT_DEBUG: return "DT_DEBUG";
+ case DT_TEXTREL: return "DT_TEXTREL";
+ case DT_JMPREL: return "DT_JMPREL";
+ case DT_BIND_NOW: return "DT_BIND_NOW";
+ case DT_INIT_ARRAY: return "DT_INIT_ARRAY";
+ case DT_FINI_ARRAY: return "DT_FINI_ARRAY";
+ case DT_INIT_ARRAYSZ: return "DT_INIT_ARRAYSZ";
+ case DT_FINI_ARRAYSZ: return "DT_FINI_ARRAYSZ";
+ case DT_RUNPATH: return "DT_RUNPATH";
+ case DT_FLAGS: return "DT_FLAGS";
+ case DT_PREINIT_ARRAY: return "DT_PREINIT_ARRAY"; /* XXX DT_ENCODING */
+ case DT_PREINIT_ARRAYSZ:return "DT_PREINIT_ARRAYSZ";
/* 0x6000000D - 0x6ffff000 operating system-specific semantics */
- case 0x6ffffdf5: return "DT_GNU_PRELINKED";
- case 0x6ffffdf6: return "DT_GNU_CONFLICTSZ";
- case 0x6ffffdf7: return "DT_GNU_LIBLISTSZ";
- case 0x6ffffdf8: return "DT_SUNW_CHECKSUM";
- case 0x6ffffdf9: return "DT_PLTPADSZ";
- case 0x6ffffdfa: return "DT_MOVEENT";
- case 0x6ffffdfb: return "DT_MOVESZ";
- case 0x6ffffdfc: return "DT_FEATURE";
- case 0x6ffffdfd: return "DT_POSFLAG_1";
- case 0x6ffffdfe: return "DT_SYMINSZ";
- case 0x6ffffdff: return "DT_SYMINENT (DT_VALRNGHI)";
- case 0x6ffffe00: return "DT_ADDRRNGLO";
- case 0x6ffffef5: return "DT_GNU_HASH";
- case 0x6ffffef8: return "DT_GNU_CONFLICT";
- case 0x6ffffef9: return "DT_GNU_LIBLIST";
- case 0x6ffffefa: return "DT_SUNW_CONFIG";
- case 0x6ffffefb: return "DT_SUNW_DEPAUDIT";
- case 0x6ffffefc: return "DT_SUNW_AUDIT";
- case 0x6ffffefd: return "DT_SUNW_PLTPAD";
- case 0x6ffffefe: return "DT_SUNW_MOVETAB";
- case 0x6ffffeff: return "DT_SYMINFO (DT_ADDRRNGHI)";
- case 0x6ffffff9: return "DT_RELACOUNT";
- case 0x6ffffffa: return "DT_RELCOUNT";
- case 0x6ffffffb: return "DT_FLAGS_1";
- case 0x6ffffffc: return "DT_VERDEF";
- case 0x6ffffffd: return "DT_VERDEFNUM";
- case 0x6ffffffe: return "DT_VERNEED";
- case 0x6fffffff: return "DT_VERNEEDNUM";
- case 0x6ffffff0: return "DT_GNU_VERSYM";
+ case 0x6ffffdf5: return "DT_GNU_PRELINKED";
+ case 0x6ffffdf6: return "DT_GNU_CONFLICTSZ";
+ case 0x6ffffdf7: return "DT_GNU_LIBLISTSZ";
+ case 0x6ffffdf8: return "DT_SUNW_CHECKSUM";
+ case DT_PLTPADSZ: return "DT_PLTPADSZ";
+ case DT_MOVEENT: return "DT_MOVEENT";
+ case DT_MOVESZ: return "DT_MOVESZ";
+ case DT_FEATURE: return "DT_FEATURE";
+ case DT_POSFLAG_1: return "DT_POSFLAG_1";
+ case DT_SYMINSZ: return "DT_SYMINSZ";
+ case DT_SYMINENT : return "DT_SYMINENT (DT_VALRNGHI)";
+ case DT_ADDRRNGLO: return "DT_ADDRRNGLO";
+ case DT_GNU_HASH: return "DT_GNU_HASH";
+ case 0x6ffffef8: return "DT_GNU_CONFLICT";
+ case 0x6ffffef9: return "DT_GNU_LIBLIST";
+ case DT_CONFIG: return "DT_CONFIG";
+ case DT_DEPAUDIT: return "DT_DEPAUDIT";
+ case DT_AUDIT: return "DT_AUDIT";
+ case DT_PLTPAD: return "DT_PLTPAD";
+ case DT_MOVETAB: return "DT_MOVETAB";
+ case DT_SYMINFO : return "DT_SYMINFO (DT_ADDRRNGHI)";
+ case DT_RELACOUNT: return "DT_RELACOUNT";
+ case DT_RELCOUNT: return "DT_RELCOUNT";
+ case DT_FLAGS_1: return "DT_FLAGS_1";
+ case DT_VERDEF: return "DT_VERDEF";
+ case DT_VERDEFNUM: return "DT_VERDEFNUM";
+ case DT_VERNEED: return "DT_VERNEED";
+ case DT_VERNEEDNUM: return "DT_VERNEEDNUM";
+ case 0x6ffffff0: return "DT_GNU_VERSYM";
/* 0x70000000 - 0x7fffffff processor-specific semantics */
- case 0x70000000: return "DT_IA_64_PLT_RESERVE";
- case 0x7ffffffd: return "DT_SUNW_AUXILIARY";
- case 0x7ffffffe: return "DT_SUNW_USED";
- case 0x7fffffff: return "DT_SUNW_FILTER";
+ case 0x70000000: return "DT_IA_64_PLT_RESERVE";
+ case 0x7ffffffd: return "DT_SUNW_AUXILIARY";
+ case 0x7ffffffe: return "DT_SUNW_USED";
+ case 0x7fffffff: return "DT_SUNW_FILTER";
}
snprintf(unknown_tag, sizeof(unknown_tag),
"ERROR: TAG NOT DEFINED -- tag 0x%jx", (uintmax_t)tag);
@@ -267,6 +267,7 @@ e_machines(u_int mach)
case EM_SPARCV9:return "EM_SPARCV9";
case EM_IA_64: return "EM_IA_64";
case EM_X86_64: return "EM_X86_64";
+ case EM_AARCH64:return "EM_AARCH64";
}
snprintf(machdesc, sizeof(machdesc),
"(unknown machine) -- type 0x%x", mach);
@@ -314,23 +315,23 @@ sh_types(uint64_t machine, uint64_t sht) {
if (sht < 0x60000000) {
switch (sht) {
- case 0: return "SHT_NULL";
- case 1: return "SHT_PROGBITS";
- case 2: return "SHT_SYMTAB";
- case 3: return "SHT_STRTAB";
- case 4: return "SHT_RELA";
- case 5: return "SHT_HASH";
- case 6: return "SHT_DYNAMIC";
- case 7: return "SHT_NOTE";
- case 8: return "SHT_NOBITS";
- case 9: return "SHT_REL";
- case 10: return "SHT_SHLIB";
- case 11: return "SHT_DYNSYM";
- case 14: return "SHT_INIT_ARRAY";
- case 15: return "SHT_FINI_ARRAY";
- case 16: return "SHT_PREINIT_ARRAY";
- case 17: return "SHT_GROUP";
- case 18: return "SHT_SYMTAB_SHNDX";
+ case SHT_NULL: return "SHT_NULL";
+ case SHT_PROGBITS: return "SHT_PROGBITS";
+ case SHT_SYMTAB: return "SHT_SYMTAB";
+ case SHT_STRTAB: return "SHT_STRTAB";
+ case SHT_RELA: return "SHT_RELA";
+ case SHT_HASH: return "SHT_HASH";
+ case SHT_DYNAMIC: return "SHT_DYNAMIC";
+ case SHT_NOTE: return "SHT_NOTE";
+ case SHT_NOBITS: return "SHT_NOBITS";
+ case SHT_REL: return "SHT_REL";
+ case SHT_SHLIB: return "SHT_SHLIB";
+ case SHT_DYNSYM: return "SHT_DYNSYM";
+ case SHT_INIT_ARRAY: return "SHT_INIT_ARRAY";
+ case SHT_FINI_ARRAY: return "SHT_FINI_ARRAY";
+ case SHT_PREINIT_ARRAY: return "SHT_PREINIT_ARRAY";
+ case SHT_GROUP: return "SHT_GROUP";
+ case SHT_SYMTAB_SHNDX: return "SHT_SYMTAB_SHNDX";
}
snprintf(unknown_buf, sizeof(unknown_buf),
"ERROR: SHT %ju NOT DEFINED", (uintmax_t)sht);
@@ -338,14 +339,14 @@ sh_types(uint64_t machine, uint64_t sht) {
} else if (sht < 0x70000000) {
/* 0x60000000-0x6fffffff operating system-specific semantics */
switch (sht) {
- case 0x6ffffff0: return "XXX:VERSYM";
- case 0x6ffffff4: return "SHT_SUNW_dof";
- case 0x6ffffff6: return "SHT_GNU_HASH";
- case 0x6ffffff7: return "SHT_GNU_LIBLIST";
- case 0x6ffffffc: return "XXX:VERDEF";
- case 0x6ffffffd: return "SHT_SUNW(GNU)_verdef";
- case 0x6ffffffe: return "SHT_SUNW(GNU)_verneed";
- case 0x6fffffff: return "SHT_SUNW(GNU)_versym";
+ case 0x6ffffff0: return "XXX:VERSYM";
+ case SHT_SUNW_dof: return "SHT_SUNW_dof";
+ case SHT_GNU_HASH: return "SHT_GNU_HASH";
+ case 0x6ffffff7: return "SHT_GNU_LIBLIST";
+ case 0x6ffffffc: return "XXX:VERDEF";
+ case SHT_SUNW_verdef: return "SHT_SUNW(GNU)_verdef";
+ case SHT_SUNW_verneed: return "SHT_SUNW(GNU)_verneed";
+ case SHT_SUNW_versym: return "SHT_SUNW(GNU)_versym";
}
snprintf(unknown_buf, sizeof(unknown_buf),
"ERROR: OS-SPECIFIC SHT 0x%jx NOT DEFINED",
@@ -356,16 +357,13 @@ sh_types(uint64_t machine, uint64_t sht) {
switch (machine) {
case EM_ARM:
switch (sht) {
- case 0x70000001: return "SHT_ARM_EXIDX";
- case 0x70000002: return "SHT_ARM_PREEMPTMAP";
- case 0x70000003: return "SHT_ARM_ATTRIBUTES";
- case 0x70000004: return "SHT_ARM_DEBUGOVERLAY";
- case 0x70000005: return "SHT_ARM_OVERLAYSECTION";
- }
- break;
- case EM_MIPS:
- switch (sht) {
- case 0x7000000d: return "SHT_MIPS_OPTIONS";
+ case SHT_ARM_EXIDX: return "SHT_ARM_EXIDX";
+ case SHT_ARM_PREEMPTMAP:return "SHT_ARM_PREEMPTMAP";
+ case SHT_ARM_ATTRIBUTES:return "SHT_ARM_ATTRIBUTES";
+ case SHT_ARM_DEBUGOVERLAY:
+ return "SHT_ARM_DEBUGOVERLAY";
+ case SHT_ARM_OVERLAYSECTION:
+ return "SHT_ARM_OVERLAYSECTION";
}
break;
case EM_IA_64:
@@ -374,6 +372,11 @@ sh_types(uint64_t machine, uint64_t sht) {
case 0x70000001: return "SHT_IA_64_UNWIND";
}
break;
+ case EM_MIPS:
+ switch (sht) {
+ case SHT_MIPS_OPTIONS: return "SHT_MIPS_OPTIONS";
+ }
+ break;
}
switch (sht) {
case 0x7ffffffd: return "XXX:AUXILIARY";
diff --git a/usr.bin/find/function.c b/usr.bin/find/function.c
index 511edf2..32be74d 100644
--- a/usr.bin/find/function.c
+++ b/usr.bin/find/function.c
@@ -1506,7 +1506,7 @@ c_size(OPTION *option, char ***argvp)
scale = 0x40000000LL;
break;
case 'T': /* terabytes 1<<40 */
- scale = 0x1000000000LL;
+ scale = 0x10000000000LL;
break;
case 'P': /* petabytes 1<<50 */
scale = 0x4000000000000LL;
diff --git a/usr.bin/ftp/Makefile b/usr.bin/ftp/Makefile
index 2cd7f36..3d236d8 100644
--- a/usr.bin/ftp/Makefile
+++ b/usr.bin/ftp/Makefile
@@ -20,8 +20,8 @@ CFLAGS+= -DINET6
.endif
CFLAGS+= -I${.CURDIR} -I${TNFTP}
-LDADD= -ledit -ltermcapw -lutil
-DPADD= ${LIBEDIT} ${LIBTERMCAPW} ${LIBUTIL}
+LDADD= -ledit -ltermcapw
+DPADD= ${LIBEDIT} ${LIBTERMCAPW}
WARNS?= 2
diff --git a/usr.bin/gcore/elfcore.c b/usr.bin/gcore/elfcore.c
index f857dcf..037854c 100644
--- a/usr.bin/gcore/elfcore.c
+++ b/usr.bin/gcore/elfcore.c
@@ -618,7 +618,7 @@ elf_note_thrmisc(void *arg, size_t *sizep)
static void *
procstat_sysctl(void *arg, int what, size_t structsz, size_t *sizep)
{
- size_t len, oldlen;
+ size_t len;
pid_t pid;
int name[4], structsize;
void *buf, *p;
diff --git a/usr.bin/grep/Makefile b/usr.bin/grep/Makefile
index c0c24dc..32941fd 100644
--- a/usr.bin/grep/Makefile
+++ b/usr.bin/grep/Makefile
@@ -11,7 +11,7 @@ PROG= bsdgrep
CLEANFILES+= bsdgrep.1
bsdgrep.1: grep.1
- cp ${.ALLSRC} ${.TARGET}
+ cp -f ${.ALLSRC} ${.TARGET}
.endif
SRCS= file.c grep.c queue.c util.c
@@ -85,4 +85,8 @@ DPADD+= ${LIBGNUREGEX}
CFLAGS+= -DWITHOUT_NLS
.endif
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.bin/grep/regex/tre-fastmatch.c b/usr.bin/grep/regex/tre-fastmatch.c
index eddab26..0881c55 100644
--- a/usr.bin/grep/regex/tre-fastmatch.c
+++ b/usr.bin/grep/regex/tre-fastmatch.c
@@ -727,7 +727,7 @@ badpat:
for (unsigned int i = 0; i < fg->len; i++)
if (fg->pattern[i] == '\\')
escaped = !escaped;
- else if (fg->pattern[i] == '.' && escaped)
+ else if (fg->pattern[i] == '.' && fg->escmap && escaped)
{
fg->escmap[i] = true;
escaped = false;
diff --git a/usr.bin/grep/tests/Makefile b/usr.bin/grep/tests/Makefile
new file mode 100644
index 0000000..59b948c
--- /dev/null
+++ b/usr.bin/grep/tests/Makefile
@@ -0,0 +1,41 @@
+# $FreeBSD$
+
+TESTSRC= ${.CURDIR}/../../../contrib/netbsd-tests/usr.bin/grep
+.PATH: ${TESTSRC}
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/usr.bin/grep
+
+ATF_TESTS_SH= grep_test
+ATF_TESTS_SH_SRC_grep_test= t_grep.sh
+
+FILESDIR= ${TESTSDIR}
+FILES= d_basic.out
+FILES+= d_begin_end_a.out
+FILES+= d_begin_end_b.out
+FILES+= d_binary.out
+FILES+= d_context2_a.out
+FILES+= d_context2_b.out
+FILES+= d_context2_c.out
+FILES+= d_context_a.in
+FILES+= d_context_a.out
+FILES+= d_context_b.in
+FILES+= d_context_b.out
+FILES+= d_context_c.out
+FILES+= d_context_d.out
+FILES+= d_egrep.out
+FILES+= d_file_exp.in
+FILES+= d_file_exp.out
+FILES+= d_ignore_case.out
+FILES+= d_input
+FILES+= d_invert.in
+FILES+= d_invert.out
+FILES+= d_recurse.out
+FILES+= d_recurse_symlink.err
+FILES+= d_recurse_symlink.out
+FILES+= d_whole_line.out
+FILES+= d_word_regexps.out
+FILES+= d_zgrep.out
+
+.include <bsd.test.mk>
diff --git a/usr.bin/grep/util.c b/usr.bin/grep/util.c
index 3ec12fa..f3cf05f 100644
--- a/usr.bin/grep/util.c
+++ b/usr.bin/grep/util.c
@@ -336,7 +336,7 @@ procline(struct str *l, int nottext)
}
/* One pass if we are not recording matches */
- if (!wflag && ((color == NULL && !oflag) || qflag || lflag))
+ if (!wflag && ((color == NULL && !oflag) || qflag || lflag || Lflag))
break;
if (st == (size_t)pmatch.rm_so)
diff --git a/usr.bin/gzip/Makefile b/usr.bin/gzip/Makefile
index 7372435..24e2506 100644
--- a/usr.bin/gzip/Makefile
+++ b/usr.bin/gzip/Makefile
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.16 2011/06/21 13:25:45 joerg Exp $
+# $NetBSD: Makefile,v 1.18 2013/11/13 11:12:24 pettai Exp $
# $FreeBSD$
.include <src.opts.mk>
@@ -21,11 +21,16 @@ SCRIPTS= gzexe zdiff zforce zmore znew
MLINKS+= gzip.1 gunzip.1 \
gzip.1 gzcat.1 \
gzip.1 zcat.1 \
- zdiff.1 zcmp.1
+ zdiff.1 zcmp.1 \
+ zmore.1 zless.1
LINKS+= ${BINDIR}/gzip ${BINDIR}/gunzip \
${BINDIR}/gzip ${BINDIR}/gzcat \
${BINDIR}/gzip ${BINDIR}/zcat \
${BINDIR}/zdiff ${BINDIR}/zcmp
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.bin/gzip/gzip.1 b/usr.bin/gzip/gzip.1
index ba78bd0..5abf1ae 100644
--- a/usr.bin/gzip/gzip.1
+++ b/usr.bin/gzip/gzip.1
@@ -1,4 +1,4 @@
-.\" $NetBSD: gzip.1,v 1.21 2011/06/19 02:22:36 christos Exp $
+.\" $NetBSD: gzip.1,v 1.23 2014/03/18 18:20:45 riastradh Exp $
.\"
.\" Copyright (c) 1997, 2003, 2004 Matthew R. Green
.\" All rights reserved.
diff --git a/usr.bin/gzip/gzip.c b/usr.bin/gzip/gzip.c
index d7477dd..9f92b6a 100644
--- a/usr.bin/gzip/gzip.c
+++ b/usr.bin/gzip/gzip.c
@@ -1,4 +1,4 @@
-/* $NetBSD: gzip.c,v 1.105 2011/08/30 23:06:00 joerg Exp $ */
+/* $NetBSD: gzip.c,v 1.106 2014/10/18 08:33:30 snj Exp $ */
/*-
* Copyright (c) 1997, 1998, 2003, 2004, 2006 Matthew R. Green
@@ -158,7 +158,7 @@ static suffixes_t suffixes[] = {
#define NUM_SUFFIXES (sizeof suffixes / sizeof suffixes[0])
#define SUFFIX_MAXLEN 30
-static const char gzip_version[] = "FreeBSD gzip 20111009";
+static const char gzip_version[] = "FreeBSD gzip 20141022";
#ifndef SMALL
static const char gzip_copyright[] = \
@@ -1769,7 +1769,7 @@ handle_stdout(void)
return;
}
#endif
- /* If stdin is a file use it's mtime, otherwise use current time */
+ /* If stdin is a file use its mtime, otherwise use current time */
ret = fstat(STDIN_FILENO, &sb);
#ifndef SMALL
@@ -2110,7 +2110,7 @@ static void
display_license(void)
{
- fprintf(stderr, "%s (based on NetBSD gzip 20111009)\n", gzip_version);
+ fprintf(stderr, "%s (based on NetBSD gzip 20141018)\n", gzip_version);
fprintf(stderr, "%s\n", gzip_copyright);
exit(0);
}
diff --git a/usr.bin/gzip/tests/Makefile b/usr.bin/gzip/tests/Makefile
new file mode 100644
index 0000000..155d739
--- /dev/null
+++ b/usr.bin/gzip/tests/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+TESTSRC= ${.CURDIR}/../../../contrib/netbsd-tests/usr.bin/gzip
+.PATH: ${TESTSRC}
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/usr.bin/gzip
+ATF_TESTS_SH= gzip_test
+ATF_TESTS_SH_SRC_gzip_test= t_gzip.sh
+
+.include <bsd.test.mk>
diff --git a/usr.bin/gzip/zmore b/usr.bin/gzip/zmore
index 46a4eb4..f5be0f4 100644
--- a/usr.bin/gzip/zmore
+++ b/usr.bin/gzip/zmore
@@ -1,7 +1,8 @@
#!/bin/sh -
#
-# $NetBSD: zmore,v 1.3 2004/03/29 09:59:42 wiz Exp $
-# $OpenBSD: zmore,v 1.4 2003/07/29 07:42:45 otto Exp $
+# $NetBSD: zmore,v 1.5 2013/12/06 13:33:15 pettai Exp $
+#
+# $OpenBSD: zmore,v 1.6 2008/08/20 09:22:02 mpf Exp $
#
#-
# Copyright (c) 2003 Todd C. Miller <Todd.Miller@courtesan.com>
@@ -42,15 +43,21 @@ while test $# -ne 0; do
esac
done
+if [ `basename $0` = "zless" ] ; then
+ pager=${PAGER-less}
+else
+ pager=${PAGER-more}
+fi
+
# No files means read from stdin
if [ $# -eq 0 ]; then
- gzip -cdfq 2>&1 | ${PAGER-more} $flags
+ gzip -cdfq 2>&1 | $pager $flags
exit 0
fi
oterm=`stty -g 2>/dev/null`
while test $# -ne 0; do
- gzip -cdfq "$1" 2>&1 | ${PAGER-more} $flags
+ gzip -cdfq "$1" 2>&1 | $pager $flags
prev="$1"
shift
if tty -s && test -n "$oterm" -a $# -gt 0; then
diff --git a/usr.bin/gzip/zmore.1 b/usr.bin/gzip/zmore.1
index b1f389c..f8be1ac 100644
--- a/usr.bin/gzip/zmore.1
+++ b/usr.bin/gzip/zmore.1
@@ -1,5 +1,5 @@
-.\" $NetBSD: zmore.1,v 1.3 2003/12/28 12:47:52 wiz Exp $
-.\" $OpenBSD: zmore.1,v 1.3 2003/06/23 21:00:48 deraadt Exp $
+.\" $NetBSD: zmore.1,v 1.4 2013/11/12 21:58:37 pettai Exp $
+.\" $OpenBSD: zmore.1,v 1.10 2009/08/16 09:41:08 sobrado Exp $
.\"
.\" Copyright (c) 2003 Todd C. Miller <Todd.Miller@courtesan.com>
.\"
@@ -20,16 +20,20 @@
.\" Materiel Command, USAF, under agreement number F39502-99-1-0512.
.\"
.\" $FreeBSD$
-.Dd February 6, 2011
+.Dd October 22, 2014
.Dt ZMORE 1
.Os
.Sh NAME
-.Nm zmore
+.Nm zmore ,
+.Nm zless
.Nd view compressed files
.Sh SYNOPSIS
.Nm zmore
.Op Ar flags
-.Op Ar file ...
+.Op Ar
+.Nm zless
+.Op Ar flags
+.Op Ar
.Sh DESCRIPTION
.Nm
is a filter that allows the viewing of files compressed with Lempel-Ziv
@@ -51,6 +55,14 @@ that are specified are passed to the user's preferred
.Pa /usr/bin/more
by default).
.Pp
+.Nm zless
+is equivalent to
+.Nm zmore
+but uses
+.Xr less 1
+as a pager instead of
+.Xr more 1 .
+.Pp
When multiple files are specified,
.Nm
will pause at the end of each file and present the following prompt to the user:
@@ -86,7 +98,11 @@ style compression since there is no suffix on which to make a decision.
Program used to display files.
If unset,
.Pa /usr/bin/more
-is used.
+is used
+.Pq Nm zmore
+or
+.Pa /usr/bin/less
+.Pq Nm zless .
.El
.Sh SEE ALSO
.Xr compress 1 ,
diff --git a/usr.bin/hexdump/hexdump.1 b/usr.bin/hexdump/hexdump.1
index e1282d5..8eeb5e4 100644
--- a/usr.bin/hexdump/hexdump.1
+++ b/usr.bin/hexdump/hexdump.1
@@ -28,7 +28,7 @@
.\" @(#)hexdump.1 8.2 (Berkeley) 4/18/94
.\" $FreeBSD$
.\"
-.Dd February 18, 2010
+.Dd October 29, 2014
.Dt HEXDUMP 1
.Os
.Sh NAME
@@ -41,7 +41,7 @@
.Op Fl f Ar format_file
.Op Fl n Ar length
.Bk -words
-.Op Fl s Ar skip
+.Op Fl s Ar offset
.Ek
.Ar
.Nm hd
@@ -50,7 +50,7 @@
.Op Fl f Ar format_file
.Op Fl n Ar length
.Bk -words
-.Op Fl s Ar skip
+.Op Fl s Ar offset
.Ek
.Ar
.Sh DESCRIPTION
diff --git a/usr.bin/host/Makefile b/usr.bin/host/Makefile
index 5962454..cc1111f 100644
--- a/usr.bin/host/Makefile
+++ b/usr.bin/host/Makefile
@@ -8,6 +8,7 @@ LDNSHOSTDIR= ${.CURDIR}/../../contrib/ldns-host
PROG= host
SRCS= ldns-host.c
MAN= host.1
+CLEANFILES+= host.1
host.1: ldns-host.1
sed -e 's/ldns-//gI' <${.ALLSRC} >${.TARGET} || \
@@ -15,7 +16,7 @@ host.1: ldns-host.1
CFLAGS+= -I${LDNSDIR}
DPADD+= ${LIBLDNS} ${LIBCRYPTO}
-LDADD+= -lldns -lcrypto
+LDADD+= ${LDLDNS} -lcrypto
USEPRIVATELIB= ldns
.include <bsd.prog.mk>
diff --git a/usr.bin/iconv/Makefile b/usr.bin/iconv/Makefile
index deab092..b920eb1 100644
--- a/usr.bin/iconv/Makefile
+++ b/usr.bin/iconv/Makefile
@@ -7,7 +7,4 @@ PROG= iconv
#SRCS= iconv.c
MAN= iconv.1
-LDADD+= -lcrypt
-DPADD+= ${LIBCRYPT}
-
.include <bsd.prog.mk>
diff --git a/usr.bin/id/Makefile b/usr.bin/id/Makefile
index d7e4049..07cabd0 100644
--- a/usr.bin/id/Makefile
+++ b/usr.bin/id/Makefile
@@ -10,8 +10,6 @@ MAN= id.1 groups.1 whoami.1
.if ${MK_AUDIT} != "no"
CFLAGS+= -DUSE_BSM_AUDIT
-DPADD+= ${LIBBSM}
-LDADD+= -lbsm
.endif
.include <bsd.prog.mk>
diff --git a/usr.bin/iscsictl/Makefile b/usr.bin/iscsictl/Makefile
index 9331ca5..9351ed7 100644
--- a/usr.bin/iscsictl/Makefile
+++ b/usr.bin/iscsictl/Makefile
@@ -6,8 +6,8 @@ CFLAGS+= -I${.CURDIR}
CFLAGS+= -I${.CURDIR}/../../sys/dev/iscsi
MAN= iscsictl.8
-DPADD= ${LIBCAM} ${LIBUTIL}
-LDADD= -lcam -lfl -lutil
+DPADD= ${LIBCAM} ${LIBUTIL}
+LDADD= -lcam -lutil
YFLAGS+= -v
LFLAGS+= -i
diff --git a/usr.bin/iscsictl/iscsictl.8 b/usr.bin/iscsictl/iscsictl.8
index 845718b..93bf7ed 100644
--- a/usr.bin/iscsictl/iscsictl.8
+++ b/usr.bin/iscsictl/iscsictl.8
@@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 18, 2014
+.Dd September 12, 2014
.Dt ISCSICTL 8
.Os
.Sh NAME
@@ -171,6 +171,7 @@ Attach to target iqn.2012-06.com.example:target0, served by 192.168.1.1:
Disconnect all iSCSI sessions:
.Dl Nm Fl Ra
.Sh SEE ALSO
+.Xr iscsi 4 ,
.Xr iscsi.conf 5 ,
.Xr iscsid 8
.Sh HISTORY
@@ -181,6 +182,6 @@ command appeared in
.Sh AUTHORS
The
.Nm
-was developed by
+utility was developed by
.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org
under sponsorship from the FreeBSD Foundation.
diff --git a/usr.bin/iscsictl/iscsictl.c b/usr.bin/iscsictl/iscsictl.c
index 75d329f..a27e32b 100644
--- a/usr.bin/iscsictl/iscsictl.c
+++ b/usr.bin/iscsictl/iscsictl.c
@@ -26,9 +26,11 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD$
*/
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
#include <sys/ioctl.h>
#include <sys/param.h>
#include <sys/linker.h>
@@ -170,7 +172,7 @@ valid_iscsi_name(const char *name)
for (i = strlen("iqn."); name[i] != '\0'; i++) {
/*
* XXX: We should verify UTF-8 normalisation, as defined
- * by 3.2.6.2: iSCSI Name Encoding.
+ * by 3.2.6.2: iSCSI Name Encoding.
*/
if (isalnum(name[i]))
continue;
@@ -756,14 +758,9 @@ main(int argc, char **argv)
errx(1, "-n and -p and mutually exclusive");
if (target != NULL)
errx(1, "-n and -t and mutually exclusive");
- } else if (portal != NULL) {
- if (target != NULL)
- errx(1, "-p and -t and mutually exclusive");
- } else if (target != NULL) {
- if (portal != NULL)
- errx(1, "-t and -p and mutually exclusive");
- } else
+ } else if (target == NULL && portal == NULL) {
errx(1, "must specify either -a, -n, -t, or -p");
+ }
if (session_id != -1)
errx(1, "-i cannot be used with -R");
diff --git a/usr.bin/iscsictl/token.l b/usr.bin/iscsictl/token.l
index 499ddb8..06af167 100644
--- a/usr.bin/iscsictl/token.l
+++ b/usr.bin/iscsictl/token.l
@@ -46,6 +46,7 @@ extern int yylex(void);
%option noinput
%option nounput
+%option noyywrap
%%
HeaderDigest { return HEADER_DIGEST; }
@@ -89,6 +90,7 @@ chapDigest { return IGNORED; }
= { return EQUALS; }
; { return SEMICOLON; }
#.*$ /* ignore comments */;
+\r\n { lineno++; }
\n { lineno++; }
[ \t]+ /* ignore whitespace */;
. { yylval.str = strdup(yytext); return STR; }
diff --git a/usr.bin/kdump/kdump.c b/usr.bin/kdump/kdump.c
index f6e1c79..e0a6079 100644
--- a/usr.bin/kdump/kdump.c
+++ b/usr.bin/kdump/kdump.c
@@ -57,6 +57,7 @@ extern int errno;
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/sysent.h>
+#include <sys/umtx.h>
#include <sys/un.h>
#include <sys/queue.h>
#include <sys/wait.h>
@@ -103,9 +104,9 @@ void ktrgenio(struct ktr_genio *, int);
void ktrpsig(struct ktr_psig *);
void ktrcsw(struct ktr_csw *);
void ktrcsw_old(struct ktr_csw_old *);
-void ktruser_malloc(unsigned char *);
-void ktruser_rtld(int, unsigned char *);
-void ktruser(int, unsigned char *);
+void ktruser_malloc(void *);
+void ktruser_rtld(int, void *);
+void ktruser(int, void *);
void ktrcaprights(cap_rights_t *);
void ktrsockaddr(struct sockaddr *);
void ktrstat(struct stat *);
@@ -122,10 +123,13 @@ void ioctlname(unsigned long, int);
#define TIMESTAMP_ELAPSED 0x2
#define TIMESTAMP_RELATIVE 0x4
-int timestamp, decimal, fancy = 1, suppressdata, tail, threads, maxdata,
+extern const char *signames[], *syscallnames[];
+extern int nsyscalls;
+
+static int timestamp, decimal, fancy = 1, suppressdata, tail, threads, maxdata,
resolv = 0, abiflag = 0, syscallno = 0;
-const char *tracefile = DEF_TRACEFILE;
-struct ktr_header ktr_header;
+static const char *tracefile = DEF_TRACEFILE;
+static struct ktr_header ktr_header;
#define TIME_FORMAT "%b %e %T %Y"
#define eqs(s1, s2) (strcmp((s1), (s2)) == 0)
@@ -172,7 +176,7 @@ struct proc_info
pid_t pid;
};
-TAILQ_HEAD(trace_procs, proc_info) trace_procs;
+static TAILQ_HEAD(trace_procs, proc_info) trace_procs;
#ifdef HAVE_LIBCAPSICUM
static cap_channel_t *cappwd, *capgrp;
@@ -456,7 +460,7 @@ limitfd(int fd)
unsigned long cmd;
cap_rights_init(&rights, CAP_FSTAT);
- cmd = -1;
+ cmd = 0;
switch (fd) {
case STDIN_FILENO:
@@ -479,7 +483,7 @@ limitfd(int fd)
if (cap_rights_limit(fd, &rights) < 0 && errno != ENOSYS)
err(1, "unable to limit rights for descriptor %d", fd);
- if (cmd != -1 && cap_ioctls_limit(fd, &cmd, 1) < 0 && errno != ENOSYS)
+ if (cmd != 0 && cap_ioctls_limit(fd, &cmd, 1) < 0 && errno != ENOSYS)
err(1, "unable to limit ioctls for descriptor %d", fd);
}
@@ -1089,6 +1093,14 @@ ktrsyscall(struct ktr_syscall *ktr, u_int flags)
ip++;
narg--;
break;
+ case SYS_shm_open:
+ print_number(ip, narg, c);
+ putchar(',');
+ flagsname(ip[0]);
+ printf(",0%o", (unsigned int)ip[1]);
+ ip += 3;
+ narg -= 3;
+ break;
case SYS_minherit:
print_number(ip, narg, c);
print_number(ip, narg, c);
@@ -1257,6 +1269,26 @@ ktrsyscall(struct ktr_syscall *ktr, u_int flags)
ip++;
narg--;
break;
+ case SYS__umtx_op:
+ print_number(ip, narg, c);
+ putchar(',');
+ umtxopname(*ip);
+ switch (*ip) {
+ case UMTX_OP_CV_WAIT:
+ ip++;
+ narg--;
+ putchar(',');
+ umtxcvwaitflags(*ip);
+ break;
+ case UMTX_OP_RW_RDLOCK:
+ ip++;
+ narg--;
+ putchar(',');
+ umtxrwlockflags(*ip);
+ break;
+ }
+ ip++;
+ narg--;
}
}
while (narg > 0) {
@@ -1507,9 +1539,10 @@ struct utrace_rtld {
};
void
-ktruser_rtld(int len, unsigned char *p)
+ktruser_rtld(int len, void *p)
{
- struct utrace_rtld *ut = (struct utrace_rtld *)p;
+ struct utrace_rtld *ut = p;
+ unsigned char *cp;
void *parent;
int mode;
@@ -1574,14 +1607,15 @@ ktruser_rtld(int len, unsigned char *p)
ut->name);
break;
default:
- p += 4;
+ cp = p;
+ cp += 4;
len -= 4;
printf("RTLD: %d ", len);
while (len--)
if (decimal)
- printf(" %d", *p++);
+ printf(" %d", *cp++);
else
- printf(" %02x", *p++);
+ printf(" %02x", *cp++);
printf("\n");
}
}
@@ -1593,9 +1627,9 @@ struct utrace_malloc {
};
void
-ktruser_malloc(unsigned char *p)
+ktruser_malloc(void *p)
{
- struct utrace_malloc *ut = (struct utrace_malloc *)p;
+ struct utrace_malloc *ut = p;
if (ut->p == (void *)(intptr_t)(-1))
printf("malloc_init()\n");
@@ -1608,8 +1642,9 @@ ktruser_malloc(unsigned char *p)
}
void
-ktruser(int len, unsigned char *p)
+ktruser(int len, void *p)
{
+ unsigned char *cp;
if (len >= 8 && bcmp(p, "RTLD", 4) == 0) {
ktruser_rtld(len, p);
@@ -1622,11 +1657,12 @@ ktruser(int len, unsigned char *p)
}
printf("%d ", len);
+ cp = p;
while (len--)
if (decimal)
- printf(" %d", *p++);
+ printf(" %d", *cp++);
else
- printf(" %02x", *p++);
+ printf(" %02x", *cp++);
printf("\n");
}
diff --git a/usr.bin/kdump/mksubr b/usr.bin/kdump/mksubr
index d8d803f..aa001f8 100644
--- a/usr.bin/kdump/mksubr
+++ b/usr.bin/kdump/mksubr
@@ -185,6 +185,7 @@ cat <<_EOF_
#include <sys/ipc.h>
#include <sys/rtprio.h>
#include <sys/shm.h>
+#include <sys/umtx.h>
#include <nfsserver/nfs.h>
#include <ufs/ufs/quota.h>
#include <sys/capsicum.h>
@@ -489,6 +490,7 @@ auto_if_type "sockipprotoname" "IPPROTO_[[:alnum:]]+[[:space:]]+"
auto_switch_type "sockoptname" "SO_[A-Z]+[[:space:]]+0x[0-9]+" "sys/socket.h"
auto_switch_type "socktypename" "SOCK_[A-Z]+[[:space:]]+[1-9]+[0-9]*" "sys/socket.h"
auto_or_type "thrcreateflagsname" "THR_[A-Z]+[[:space:]]+0x[0-9]+" "sys/thr.h"
+auto_switch_type "umtxopname" "UMTX_OP_[[:alnum:]_]+[[:space:]]+[0-9]+" "sys/umtx.h"
auto_switch_type "vmresultname" "KERN_[A-Z]+[[:space:]]+[0-9]+" "vm/vm_param.h"
auto_or_type "wait6optname" "W[A-Z]+[[:space:]]+[0-9]+" "sys/wait.h"
auto_switch_type "whencename" "SEEK_[A-Z]+[[:space:]]+[0-9]+" "sys/unistd.h"
@@ -677,6 +679,62 @@ cat <<_EOF_
}
}
+/*
+ * AUTO - Special
+ *
+ * Just print 0 as 0.
+ */
+void
+umtxcvwaitflags(intmax_t arg)
+{
+ int or = 0;
+ if (arg == 0) {
+ printf("0");
+ return;
+ }
+ printf("%#jx<", (uintmax_t)arg);
+_EOF_
+ egrep "^#[[:space:]]*define[[:space:]]+CVWAIT_[A-Z_]+[[:space:]]+0x[0-9]+[[:space:]]*" \
+ $include_dir/sys/umtx.h | \
+ awk '{ for (i = 1; i <= NF; i++) \
+ if ($i ~ /define/) \
+ break; \
+ ++i; \
+ printf "\tif (!((arg > 0) ^ ((%s) > 0)))\n\t\tif_print_or(arg, %s, or);\n", $i, $i }'
+cat <<_EOF_
+ printf(">");
+ if (or == 0)
+ printf("<invalid>%jd", arg);
+}
+
+
+/*
+ * AUTO - Special
+ *
+ * Just print 0 as 0.
+ */
+void
+umtxrwlockflags(intmax_t arg)
+{
+ int or = 0;
+ if (arg == 0) {
+ printf("0");
+ return;
+ }
+ printf("%#jx<", (uintmax_t)arg);
+_EOF_
+ egrep "^#[[:space:]]*define[[:space:]]+URWLOCK_PREFER_READER[[:space:]]+0x[0-9]+[[:space:]]*" \
+ $include_dir/sys/umtx.h | \
+ awk '{ for (i = 1; i <= NF; i++) \
+ if ($i ~ /define/) \
+ break; \
+ ++i; \
+ printf "\tif (!((arg > 0) ^ ((%s) > 0)))\n\t\tif_print_or(arg, %s, or);\n", $i, $i }'
+cat <<_EOF_
+ printf(">");
+ if (or == 0)
+ printf("<invalid>%jd", arg);
+}
_EOF_
egrep '#define[[:space:]]+CAP_[A-Z_]+[[:space:]]+CAPRIGHT\([0-9],[[:space:]]+0x[0-9]{16}ULL\)' \
$include_dir/sys/capsicum.h | \
diff --git a/usr.bin/ktrace/ktrace.1 b/usr.bin/ktrace/ktrace.1
index 1170ae8..a5e930a 100644
--- a/usr.bin/ktrace/ktrace.1
+++ b/usr.bin/ktrace/ktrace.1
@@ -28,7 +28,7 @@
.\" @(#)ktrace.1 8.1 (Berkeley) 6/6/93
.\" $FreeBSD$
.\"
-.Dd May 31, 2012
+.Dd August 26, 2014
.Dt KTRACE 1
.Os
.Sh NAME
@@ -81,7 +81,7 @@ Append to the trace file instead of recreating it.
Disable tracing on all user-owned processes, and, if executed by root, all
processes in the system.
.It Fl c
-Clear the trace points associated with the specified file or processes.
+Clear the specified trace points associated with the given file or processes.
.It Fl d
Descendants; perform the operation for all current children of the
designated processes.
@@ -102,8 +102,10 @@ Enable (disable) tracing on the indicated process id (only one
.Fl p
flag is permitted).
.It Fl t Ar trstr
-The string argument represents the kernel trace points, one per letter.
-The following table equates the letters with the tracepoints:
+Specify the list of trace points to enable or disable, one per letter.
+If an explicit list is not specified, the default set of trace points is used.
+.Pp
+The following trace points are supported:
.Pp
.Bl -tag -width flag -compact
.It Cm c
diff --git a/usr.bin/lock/lock.1 b/usr.bin/lock/lock.1
index 75f2acc..9d7b0c6 100644
--- a/usr.bin/lock/lock.1
+++ b/usr.bin/lock/lock.1
@@ -69,11 +69,14 @@ option of
and thus has the same restrictions.
It is only available if the terminal in question is a
.Xr syscons 4
+or
+.Xr vt 4
virtual terminal.
.El
.Sh SEE ALSO
.Xr vidcontrol 1 ,
-.Xr syscons 4
+.Xr syscons 4 ,
+.Xr vt 4
.Sh HISTORY
The
.Nm
diff --git a/usr.bin/lock/lock.c b/usr.bin/lock/lock.c
index acc0e29..8c12946 100644
--- a/usr.bin/lock/lock.c
+++ b/usr.bin/lock/lock.c
@@ -97,7 +97,7 @@ main(int argc, char **argv)
char *ap, *cryptpw, *mypw, *ttynam, *tzn;
char hostname[MAXHOSTNAMELEN], s[BUFSIZ], s1[BUFSIZ];
- openlog("lock", LOG_ODELAY, LOG_AUTH);
+ openlog("lock", 0, LOG_AUTH);
sectimeout = TIMEOUT;
pw = NULL;
diff --git a/usr.bin/login/login.c b/usr.bin/login/login.c
index 503002d..d1d9bbe 100644
--- a/usr.bin/login/login.c
+++ b/usr.bin/login/login.c
@@ -198,7 +198,7 @@ main(int argc, char *argv[])
(void)alarm(timeout);
(void)setpriority(PRIO_PROCESS, 0, 0);
- openlog("login", LOG_ODELAY, LOG_AUTH);
+ openlog("login", 0, LOG_AUTH);
uid = getuid();
euid = geteuid();
diff --git a/usr.bin/m4/Makefile b/usr.bin/m4/Makefile
index 7691b2e..9153e71 100644
--- a/usr.bin/m4/Makefile
+++ b/usr.bin/m4/Makefile
@@ -7,15 +7,15 @@
.include <src.opts.mk>
PROG= m4
-CFLAGS+=-DEXTENDED -I${.CURDIR} -I${.CURDIR}/lib
-DPADD= ${LIBY} ${LIBL} ${LIBM}
-LDADD= -ly -ll -lm
+CFLAGS+=-DEXTENDED -I${.CURDIR} -I${.CURDIR}/../../lib/libohash
+DPADD= ${LIBY} ${LIBL} ${LIBM} ${LIBOHASH}
+LDADD= -ly -ll -lm ${LDOHASH}
NO_WMISSING_VARIABLE_DECLARATIONS=
SRCS= eval.c expr.c look.c main.c misc.c gnum4.c trace.c parser.y tokenizer.l
-.PATH: ${.CURDIR}/lib
-SRCS+= ohash.c
+
+WARNS= 3
tokenizer.o: parser.h
diff --git a/usr.bin/m4/lib/ohash.c b/usr.bin/m4/lib/ohash.c
deleted file mode 100644
index 3a0f5dd..0000000
--- a/usr.bin/m4/lib/ohash.c
+++ /dev/null
@@ -1,330 +0,0 @@
-/* $OpenBSD: src/lib/libutil/ohash.c,v 1.1 2014/06/02 18:52:03 deraadt Exp $ */
-
-/* Copyright (c) 1999, 2004 Marc Espie <espie@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stddef.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-#include "ohash.h"
-
-struct _ohash_record {
- uint32_t hv;
- const char *p;
-};
-
-#define DELETED ((const char *)h)
-#define NONE (h->size)
-
-/* Don't bother changing the hash table if the change is small enough. */
-#define MINSIZE (1UL << 4)
-#define MINDELETED 4
-
-static void ohash_resize(struct ohash *);
-
-
-/* This handles the common case of variable length keys, where the
- * key is stored at the end of the record.
- */
-void *
-ohash_create_entry(struct ohash_info *i, const char *start, const char **end)
-{
- char *p;
-
- if (!*end)
- *end = start + strlen(start);
- p = (i->alloc)(i->key_offset + (*end - start) + 1, i->data);
- if (p) {
- memcpy(p+i->key_offset, start, *end-start);
- p[i->key_offset + (*end - start)] = '\0';
- }
- return (void *)p;
-}
-
-/* hash_delete only frees the hash structure. Use hash_first/hash_next
- * to free entries as well. */
-void
-ohash_delete(struct ohash *h)
-{
- (h->info.free)(h->t, h->info.data);
-#ifndef NDEBUG
- h->t = NULL;
-#endif
-}
-
-static void
-ohash_resize(struct ohash *h)
-{
- struct _ohash_record *n;
- size_t ns;
- unsigned int j;
- unsigned int i, incr;
-
- if (4 * h->deleted < h->total) {
- if (h->size >= (UINT_MAX >> 1U))
- ns = UINT_MAX;
- else
- ns = h->size << 1U;
- } else if (3 * h->deleted > 2 * h->total)
- ns = h->size >> 1U;
- else
- ns = h->size;
- if (ns < MINSIZE)
- ns = MINSIZE;
-#ifdef STATS_HASH
- STAT_HASH_EXPAND++;
- STAT_HASH_SIZE += ns - h->size;
-#endif
-
- n = (h->info.calloc)(ns, sizeof(struct _ohash_record), h->info.data);
- if (!n)
- return;
-
- for (j = 0; j < h->size; j++) {
- if (h->t[j].p != NULL && h->t[j].p != DELETED) {
- i = h->t[j].hv % ns;
- incr = ((h->t[j].hv % (ns - 2)) & ~1) + 1;
- while (n[i].p != NULL) {
- i += incr;
- if (i >= ns)
- i -= ns;
- }
- n[i].hv = h->t[j].hv;
- n[i].p = h->t[j].p;
- }
- }
- (h->info.free)(h->t, h->info.data);
- h->t = n;
- h->size = ns;
- h->total -= h->deleted;
- h->deleted = 0;
-}
-
-void *
-ohash_remove(struct ohash *h, unsigned int i)
-{
- void *result = (void *)h->t[i].p;
-
- if (result == NULL || result == DELETED)
- return NULL;
-
-#ifdef STATS_HASH
- STAT_HASH_ENTRIES--;
-#endif
- h->t[i].p = DELETED;
- h->deleted++;
- if (h->deleted >= MINDELETED && 4 * h->deleted > h->total)
- ohash_resize(h);
- return result;
-}
-
-void *
-ohash_find(struct ohash *h, unsigned int i)
-{
- if (h->t[i].p == DELETED)
- return NULL;
- else
- return (void *)h->t[i].p;
-}
-
-void *
-ohash_insert(struct ohash *h, unsigned int i, void *p)
-{
-#ifdef STATS_HASH
- STAT_HASH_ENTRIES++;
-#endif
- if (h->t[i].p == DELETED) {
- h->deleted--;
- h->t[i].p = p;
- } else {
- h->t[i].p = p;
- /* Arbitrary resize boundary. Tweak if not efficient enough. */
- if (++h->total * 4 > h->size * 3)
- ohash_resize(h);
- }
- return p;
-}
-
-unsigned int
-ohash_entries(struct ohash *h)
-{
- return h->total - h->deleted;
-}
-
-void *
-ohash_first(struct ohash *h, unsigned int *pos)
-{
- *pos = 0;
- return ohash_next(h, pos);
-}
-
-void *
-ohash_next(struct ohash *h, unsigned int *pos)
-{
- for (; *pos < h->size; (*pos)++)
- if (h->t[*pos].p != DELETED && h->t[*pos].p != NULL)
- return (void *)h->t[(*pos)++].p;
- return NULL;
-}
-
-void
-ohash_init(struct ohash *h, unsigned int size, struct ohash_info *info)
-{
- h->size = 1UL << size;
- if (h->size < MINSIZE)
- h->size = MINSIZE;
-#ifdef STATS_HASH
- STAT_HASH_CREATION++;
- STAT_HASH_SIZE += h->size;
-#endif
- /* Copy info so that caller may free it. */
- h->info.key_offset = info->key_offset;
- h->info.calloc = info->calloc;
- h->info.free = info->free;
- h->info.alloc = info->alloc;
- h->info.data = info->data;
- h->t = (h->info.calloc)(h->size, sizeof(struct _ohash_record),
- h->info.data);
- h->total = h->deleted = 0;
-}
-
-uint32_t
-ohash_interval(const char *s, const char **e)
-{
- uint32_t k;
-
- if (!*e)
- *e = s + strlen(s);
- if (s == *e)
- k = 0;
- else
- k = *s++;
- while (s != *e)
- k = ((k << 2) | (k >> 30)) ^ *s++;
- return k;
-}
-
-unsigned int
-ohash_lookup_interval(struct ohash *h, const char *start, const char *end,
- uint32_t hv)
-{
- unsigned int i, incr;
- unsigned int empty;
-
-#ifdef STATS_HASH
- STAT_HASH_LOOKUP++;
-#endif
- empty = NONE;
- i = hv % h->size;
- incr = ((hv % (h->size-2)) & ~1) + 1;
- while (h->t[i].p != NULL) {
-#ifdef STATS_HASH
- STAT_HASH_LENGTH++;
-#endif
- if (h->t[i].p == DELETED) {
- if (empty == NONE)
- empty = i;
- } else if (h->t[i].hv == hv &&
- strncmp(h->t[i].p+h->info.key_offset, start,
- end - start) == 0 &&
- (h->t[i].p+h->info.key_offset)[end-start] == '\0') {
- if (empty != NONE) {
- h->t[empty].hv = hv;
- h->t[empty].p = h->t[i].p;
- h->t[i].p = DELETED;
- return empty;
- } else {
-#ifdef STATS_HASH
- STAT_HASH_POSITIVE++;
-#endif
- return i;
- }
- }
- i += incr;
- if (i >= h->size)
- i -= h->size;
- }
-
- /* Found an empty position. */
- if (empty != NONE)
- i = empty;
- h->t[i].hv = hv;
- return i;
-}
-
-unsigned int
-ohash_lookup_memory(struct ohash *h, const char *k, size_t size, uint32_t hv)
-{
- unsigned int i, incr;
- unsigned int empty;
-
-#ifdef STATS_HASH
- STAT_HASH_LOOKUP++;
-#endif
- empty = NONE;
- i = hv % h->size;
- incr = ((hv % (h->size-2)) & ~1) + 1;
- while (h->t[i].p != NULL) {
-#ifdef STATS_HASH
- STAT_HASH_LENGTH++;
-#endif
- if (h->t[i].p == DELETED) {
- if (empty == NONE)
- empty = i;
- } else if (h->t[i].hv == hv &&
- memcmp(h->t[i].p+h->info.key_offset, k, size) == 0) {
- if (empty != NONE) {
- h->t[empty].hv = hv;
- h->t[empty].p = h->t[i].p;
- h->t[i].p = DELETED;
- return empty;
- } else {
-#ifdef STATS_HASH
- STAT_HASH_POSITIVE++;
-#endif
- } return i;
- }
- i += incr;
- if (i >= h->size)
- i -= h->size;
- }
-
- /* Found an empty position. */
- if (empty != NONE)
- i = empty;
- h->t[i].hv = hv;
- return i;
-}
-
-unsigned int
-ohash_qlookup(struct ohash *h, const char *s)
-{
- const char *e = NULL;
- return ohash_qlookupi(h, s, &e);
-}
-
-unsigned int
-ohash_qlookupi(struct ohash *h, const char *s, const char **e)
-{
- uint32_t hv;
-
- hv = ohash_interval(s, e);
- return ohash_lookup_interval(h, s, *e, hv);
-}
diff --git a/usr.bin/m4/lib/ohash.h b/usr.bin/m4/lib/ohash.h
deleted file mode 100644
index 698f02e..0000000
--- a/usr.bin/m4/lib/ohash.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* $OpenBSD: src/lib/libutil/ohash.h,v 1.2 2014/06/02 18:52:03 deraadt Exp $ */
-
-/* Copyright (c) 1999, 2004 Marc Espie <espie@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $FreeBSD$
- */
-
-#ifndef OHASH_H
-#define OHASH_H
-
-/* Open hashing support.
- * Open hashing was chosen because it is much lighter than other hash
- * techniques, and more efficient in most cases.
- */
-
-/* user-visible data structure */
-struct ohash_info {
- ptrdiff_t key_offset;
- void *data; /* user data */
- void *(*calloc)(size_t, size_t, void *);
- void (*free)(void *, void *);
- void *(*alloc)(size_t, void *);
-};
-
-struct _ohash_record;
-
-/* private structure. It's there just so you can do a sizeof */
-struct ohash {
- struct _ohash_record *t;
- struct ohash_info info;
- unsigned int size;
- unsigned int total;
- unsigned int deleted;
-};
-
-/* For this to be tweakable, we use small primitives, and leave part of the
- * logic to the client application. e.g., hashing is left to the client
- * application. We also provide a simple table entry lookup that yields
- * a hashing table index (opaque) to be used in find/insert/remove.
- * The keys are stored at a known position in the client data.
- */
-__BEGIN_DECLS
-void ohash_init(struct ohash *, unsigned, struct ohash_info *);
-void ohash_delete(struct ohash *);
-
-unsigned int ohash_lookup_interval(struct ohash *, const char *,
- const char *, uint32_t);
-unsigned int ohash_lookup_memory(struct ohash *, const char *,
- size_t, uint32_t)
- __attribute__ ((__bounded__(__string__,2,3)));
-void *ohash_find(struct ohash *, unsigned int);
-void *ohash_remove(struct ohash *, unsigned int);
-void *ohash_insert(struct ohash *, unsigned int, void *);
-void *ohash_first(struct ohash *, unsigned int *);
-void *ohash_next(struct ohash *, unsigned int *);
-unsigned int ohash_entries(struct ohash *);
-
-void *ohash_create_entry(struct ohash_info *, const char *, const char **);
-uint32_t ohash_interval(const char *, const char **);
-
-unsigned int ohash_qlookupi(struct ohash *, const char *, const char **);
-unsigned int ohash_qlookup(struct ohash *, const char *);
-__END_DECLS
-#endif
diff --git a/usr.bin/m4/lib/ohash_init.3 b/usr.bin/m4/lib/ohash_init.3
deleted file mode 100644
index 56ece40..0000000
--- a/usr.bin/m4/lib/ohash_init.3
+++ /dev/null
@@ -1,273 +0,0 @@
-.\" $OpenBSD: ohash_init.3,v 1.2 2014/05/13 14:01:41 jmc Exp $
-.\" Copyright (c) 1999 Marc Espie <espie@openbsd.org>
-.\"
-.\" Permission to use, copy, modify, and distribute this software for any
-.\" purpose with or without fee is hereby granted, provided that the above
-.\" copyright notice and this permission notice appear in all copies.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd May 12 2014
-.Dt OHASH_INIT 3
-.Os
-.Sh NAME
-.Nm ohash_init ,
-.Nm ohash_delete ,
-.Nm ohash_lookup_interval ,
-.Nm ohash_lookup_memory ,
-.Nm ohash_find ,
-.Nm ohash_remove ,
-.Nm ohash_insert ,
-.Nm ohash_first ,
-.Nm ohash_next ,
-.Nm ohash_entries
-.Nd light-weight open hashing
-.Sh SYNOPSIS
-.In stdint.h
-.In stddef.h
-.In ohash.h
-.Ft void
-.Fn ohash_init "struct ohash *h" "unsigned int size" "struct ohash_info *info"
-.Ft void
-.Fn ohash_delete "struct ohash *h"
-.Ft "unsigned int"
-.Fn ohash_lookup_interval "struct ohash *h" "const char *start" "const char *end" "uint32_t hv"
-.Ft "unsigned int"
-.Fn ohash_lookup_memory "struct ohash *h" "const char *k" "size_t s" "uint32_t hv"
-.Ft void *
-.Fn ohash_find "struct ohash *h" "unsigned int i"
-.Ft void *
-.Fn ohash_remove "struct ohash *h" "unsigned int i"
-.Ft void *
-.Fn ohash_insert "struct ohash *h" "unsigned int i" "void *p"
-.Ft void *
-.Fn ohash_first "struct ohash *h" "unsigned int *i"
-.Ft void *
-.Fn ohash_next "struct ohash *h" "unsigned int *i"
-.Ft "unsigned int"
-.Fn ohash_entries "struct ohash *h"
-.Sh DESCRIPTION
-These functions have been designed as a fast, extensible alternative to
-the usual hash table functions.
-They provide storage and retrieval of records indexed by keys,
-where a key is a contiguous sequence of bytes at a fixed position in
-each record.
-Keys can either be NUL-terminated strings or fixed-size memory areas.
-All functions take a pointer to an ohash structure as the
-.Fa h
-function argument.
-Storage for this structure should be provided by user code.
-.Pp
-.Fn ohash_init
-initializes the table to store roughly 2 to the power
-.Fa size
-elements.
-.Fa info
-is a pointer to a
-.Fa struct ohash_info .
-.Bd -literal -offset indent
-struct ohash_info {
- ptrdiff_t key_offset;
- void *data; /* user data */
- void *(*calloc)(size_t, size_t, void *);
- void (*free)(void *, void *);
- void *(*alloc)(size_t, void *);
-};
-.Ed
-.Pp
-The
-.Va offset
-field holds the position of the key in each record;
-the
-.Va calloc
-and
-.Va free
-fields are pointers to
-.Xr calloc 3
-and
-.Xr free 3 Ns -like
-functions, used for managing the table internal storage;
-the
-.Va alloc
-field is only used by the utility function
-.Xr ohash_create_entry 3 .
-.Pp
-Each of these functions are called similarly to their standard counterpart,
-but with an extra
-.Ft void *
-parameter corresponding to the content of the field
-.Fa data ,
-which can be used to communicate specific information to the functions.
-.Pp
-.Fn ohash_init
-stores a copy of those fields internally, so
-.Fa info
-can be reclaimed after initialization.
-.Pp
-.Fn ohash_delete
-frees storage internal to
-.Fa h .
-Elements themselves should be freed by the user first, using for instance
-.Fn ohash_first
-and
-.Fn ohash_next .
-.Pp
-.Fn ohash_lookup_interval
-and
-.Fn ohash_lookup_memory
-are the basic look-up element functions.
-The hashing function result is provided by the user as
-.Fa hv .
-These return a
-.Qq slot
-in the ohash table
-.Fa h ,
-to be used with
-.Fn ohash_find ,
-.Fn ohash_insert ,
-or
-.Fn ohash_remove .
-This slot is only valid up to the next call to
-.Fn ohash_insert
-or
-.Fn ohash_remove .
-.Pp
-.Fn ohash_lookup_interval
-handles string-like keys.
-.Fn ohash_lookup_interval
-assumes the key is the interval between
-.Fa start
-and
-.Fa end ,
-exclusive,
-though the actual elements stored in the table should only contain
-NUL-terminated keys.
-.Pp
-.Fn ohash_lookup_memory
-assumes the key is the memory area starting at
-.Fa k
-of size
-.Fa s .
-All bytes are significant in key comparison.
-.Pp
-.Fn ohash_find
-retrieves an element from a slot
-.Fa i
-returned by the
-.Fn ohash_lookup*
-functions.
-It returns
-.Dv NULL
-if the slot is empty.
-.Pp
-.Fn ohash_insert
-inserts a new element
-.Fa p
-at slot
-.Fa i .
-Slot
-.Fa i
-must be empty and element
-.Fa p
-must have a key corresponding to the
-.Fn ohash_lookup*
-call.
-.Pp
-.Fn ohash_remove
-removes the element at slot
-.Fa i .
-It returns the removed element, for user code to dispose of, or
-.Dv NULL
-if the slot was empty.
-.Pp
-.Fn ohash_first
-and
-.Fn ohash_next
-can be used to access all elements in an ohash table, like this:
-.Bd -literal -offset indent
-for (n = ohash_first(h, &i); n != NULL; n = ohash_next(h, &i))
- do_something_with(n);
-.Ed
-.Pp
-.Fa i
-points to an auxiliary unsigned integer used to record the current position
-in the ohash table.
-Those functions are safe to use even while entries are added to/removed
-from the table, but in such a case they don't guarantee that new entries
-will be returned.
-As a special case, they can safely be used to free elements in the table.
-.Pp
-.Fn ohash_entries
-returns the number of elements in the hash table.
-.Sh STORAGE HANDLING
-Only
-.Fn ohash_init ,
-.Fn ohash_insert ,
-.Fn ohash_remove
-and
-.Fn ohash_delete
-may call the user-supplied memory functions:
-.Bd -literal -offset indent
-p = (*info->calloc)(n, sizeof_record, info->data);
-/* copy data from old to p */
-(*info->free)(old, info->data);
-.Ed
-.Pp
-It is the responsibility of the user memory allocation code to verify
-that those calls did not fail.
-.Pp
-If memory allocation fails,
-.Fn ohash_init
-returns a useless hash table.
-.Fn ohash_insert
-and
-.Fn ohash_remove
-still perform the requested operation, but the returned table should be
-considered read-only.
-It can still be accessed by
-.Fn ohash_lookup* ,
-.Fn ohash_find ,
-.Fn ohash_first
-and
-.Fn ohash_next
-to dump relevant information to disk before aborting.
-.Sh THREAD SAFETY
-The open hashing functions are not thread-safe by design.
-In particular, in a threaded environment, there is no guarantee that a
-.Qq slot
-will not move between a
-.Fn ohash_lookup*
-and a
-.Fn ohash_find ,
-.Fn ohash_insert
-or
-.Fn ohash_remove
-call.
-.Pp
-Multi-threaded applications should explicitly protect ohash table access.
-.Sh SEE ALSO
-.Xr hcreate 3 ,
-.Xr ohash_interval 3
-.Rs
-.%A Donald E. Knuth
-.%B The Art of Computer Programming
-.%V Vol. 3
-.%P pp 506-550
-.%D 1973
-.Re
-.Sh STANDARDS
-Those functions are completely non-standard and should be avoided in
-portable programs.
-.Sh HISTORY
-Those functions were designed and written for
-.Ox
-.Xr make 1
-by Marc Espie in 1999.
diff --git a/usr.bin/m4/lib/ohash_interval.3 b/usr.bin/m4/lib/ohash_interval.3
deleted file mode 100644
index 3a930f5..0000000
--- a/usr.bin/m4/lib/ohash_interval.3
+++ /dev/null
@@ -1,95 +0,0 @@
-.\" $OpenBSD: ohash_interval.3,v 1.1 2014/05/12 19:09:00 espie Exp $
-.\" Copyright (c) 2001 Marc Espie <espie@openbsd.org>
-.\"
-.\" Permission to use, copy, modify, and distribute this software for any
-.\" purpose with or without fee is hereby granted, provided that the above
-.\" copyright notice and this permission notice appear in all copies.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd June 5 2013
-.Dt OHASH_INTERVAL 3
-.Os
-.Sh NAME
-.Nm ohash_interval ,
-.Nm ohash_create_entry ,
-.Nm ohash_qlookup ,
-.Nm ohash_qlookupi
-.Nd helper functions for open hashing
-.Sh SYNOPSIS
-.In stdint.h
-.In stddef.h
-.In ohash.h
-.Ft uint32_t
-.Fn ohash_interval "const char *start" "const char **pend"
-.Ft "void *"
-.Fn ohash_create_entry "struct ohash_info *info" "const char *start" "const char **pend"
-.Ft "unsigned int"
-.Fn ohash_qlookupi "struct ohash *h" "const char *start" "const char **pend"
-.Ft "unsigned int"
-.Fn ohash_qlookup "struct ohash *h" "const char *start"
-.Sh DESCRIPTION
-These functions are commonly used to simplify open hashing usage, and use
-similar conventions.
-They operate indifferently on NUL-terminated strings
-.Po
-by setting
-.Fa *pend
-=
-.Dv NULL
-.Pc
-or memory ranges
-.Po
-delimited by
-.Fa start
-and
-.Fa *pend
-.Pc .
-For NUL-terminated strings, as a side effect, those functions
-set
-.Fa *pend
-to the terminating NUL byte.
-.Pp
-.Fn ohash_interval
-is a simple hashing function that yields good results on common data sets.
-.Pp
-.Fn ohash_create_entry
-can be used to create a new record with a given key.
-In that case,
-the alloc field of
-.Fa info
-should point to a
-.Xr malloc 3 Ns -like
-function to allocate the storage:
-.Bd -literal -offset indent
-p = (*info->alloc)(sz, info->data);
-.Ed
-.Pp
-.Fn ohash_qlookupi
-is a wrapper function that simply calls
-.Fn ohash_interval
-and
-.Fn ohash_lookup_interval .
-.Pp
-.Fn ohash_qlookup
-is a variation on
-.Fn ohash_qlookupi
-designed for NUL-terminated strings.
-.Sh SEE ALSO
-.Xr ohash_init 3
-.Sh STANDARDS
-Those functions are completely non-standard and should be avoided in
-portable programs.
-.Sh HISTORY
-Those functions were designed and written for
-.Ox
-.Xr make 1
-by Marc Espie in 1999.
diff --git a/usr.bin/m4/m4.1 b/usr.bin/m4/m4.1
index c72ffac..0e1d83a 100644
--- a/usr.bin/m4/m4.1
+++ b/usr.bin/m4/m4.1
@@ -33,7 +33,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd January 12 2014 $
+.Dd January 12, 2014
.Dt M4 1
.Os
.Sh NAME
diff --git a/usr.bin/m4/misc.c b/usr.bin/m4/misc.c
index ebf0198..1959448 100644
--- a/usr.bin/m4/misc.c
+++ b/usr.bin/m4/misc.c
@@ -265,7 +265,7 @@ killdiv(void)
extern char *__progname;
void
-m4errx(int eval, const char *fmt, ...)
+m4errx(int exitstatus, const char *fmt, ...)
{
fprintf(stderr, "%s: ", __progname);
fprintf(stderr, "%s at line %lu: ", CURRENT_NAME, CURRENT_LINE);
@@ -277,7 +277,7 @@ m4errx(int eval, const char *fmt, ...)
va_end(ap);
}
fprintf(stderr, "\n");
- exit(eval);
+ exit(exitstatus);
}
/*
diff --git a/usr.bin/mail/edit.c b/usr.bin/mail/edit.c
index ad8aa53..f9e974d 100644
--- a/usr.bin/mail/edit.c
+++ b/usr.bin/mail/edit.c
@@ -81,7 +81,7 @@ edit1(int *msgvec, int type)
/*
* Deal with each message to be edited . . .
*/
- for (i = 0; msgvec[i] && i < msgCount; i++) {
+ for (i = 0; i < msgCount && msgvec[i]; i++) {
sig_t sigint;
if (i > 0) {
diff --git a/usr.bin/man/man.1 b/usr.bin/man/man.1
index 4763cc6..7517a64 100644
--- a/usr.bin/man/man.1
+++ b/usr.bin/man/man.1
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd June 3, 2011
+.Dd September 26, 2014
.Dt MAN 1
.Os
.Sh NAME
@@ -58,6 +58,28 @@ is provided,
.Nm
restricts the search to the specific section of the manual.
.Pp
+The sections of the manual are:
+.Bl -enum -offset indent -compact
+.It
+.Fx General Commands Manual
+.It
+.Fx System Calls Manual
+.It
+.Fx Library Functions Manual
+.It
+.Fx Kernel Interfaces Manual
+.It
+.Fx File Formats Manual
+.It
+.Fx Games Manual
+.It
+.Fx Miscellaneous Information Manual
+.It
+.Fx System Manager's Manual
+.It
+.Fx Kernel Developer's Manual
+.El
+.Pp
Options that
.Nm
understands:
@@ -318,6 +340,14 @@ Local configuration files.
.Sh SEE ALSO
.Xr apropos 1 ,
.Xr intro 1 ,
+.Xr intro 2 ,
+.Xr intro 3 ,
+.Xr intro 4 ,
+.Xr intro 5 ,
+.Xr intro 6 ,
+.Xr intro 7 ,
+.Xr intro 8 ,
+.Xr intro 9 ,
.Xr locale 1 ,
.Xr manpath 1 ,
.Xr nroff 1 ,
diff --git a/usr.bin/mandoc/Makefile b/usr.bin/mandoc/Makefile
index eb50978..ed88f4e 100644
--- a/usr.bin/mandoc/Makefile
+++ b/usr.bin/mandoc/Makefile
@@ -19,6 +19,4 @@ CFLAGS+= -DHAVE_CONFIG_H
DPADD= ${LIBMANDOC}
LDADD= ${LIBMANDOC}
-NO_PIE= yes
-
.include <bsd.prog.mk>
diff --git a/usr.bin/mkimg/Makefile b/usr.bin/mkimg/Makefile
index b802799..28aac7d 100644
--- a/usr.bin/mkimg/Makefile
+++ b/usr.bin/mkimg/Makefile
@@ -1,13 +1,20 @@
# $FreeBSD$
+.include <src.opts.mk>
+
PROG= mkimg
SRCS= format.c image.c mkimg.c scheme.c
MAN= mkimg.1
+MKIMG_VERSION=20141003
+mkimg.o: Makefile
+
+CFLAGS+=-DMKIMG_VERSION=${MKIMG_VERSION}
CFLAGS+=-DSPARSE_WRITE
# List of formats to support
SRCS+= \
+ qcow.c \
raw.c \
vhd.c \
vmdk.c
@@ -29,4 +36,8 @@ LDADD= -lutil
WARNS?= 6
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.bin/mkimg/apm.c b/usr.bin/mkimg/apm.c
index 12add8e..de92cc0 100644
--- a/usr.bin/mkimg/apm.c
+++ b/usr.bin/mkimg/apm.c
@@ -57,13 +57,12 @@ static struct mkimg_alias apm_aliases[] = {
{ ALIAS_NONE, 0 }
};
-static u_int
-apm_metadata(u_int where)
+static lba_t
+apm_metadata(u_int where, lba_t blk)
{
- u_int secs;
- secs = (where == SCHEME_META_IMG_START) ? nparts + 2 : 0;
- return (secs);
+ blk += (where == SCHEME_META_IMG_START) ? nparts + 2 : 0;
+ return (round_block(blk));
}
static int
diff --git a/usr.bin/mkimg/bsd.c b/usr.bin/mkimg/bsd.c
index 03af5cd..75e554f 100644
--- a/usr.bin/mkimg/bsd.c
+++ b/usr.bin/mkimg/bsd.c
@@ -52,13 +52,17 @@ static struct mkimg_alias bsd_aliases[] = {
{ ALIAS_NONE, 0 }
};
-static u_int
-bsd_metadata(u_int where)
+static lba_t
+bsd_metadata(u_int where, lba_t blk)
{
- u_int secs;
- secs = BBSIZE / secsz;
- return ((where == SCHEME_META_IMG_START) ? secs : 0);
+ if (where == SCHEME_META_IMG_START)
+ blk += BBSIZE / secsz;
+ else if (where == SCHEME_META_IMG_END)
+ blk = round_cylinder(blk);
+ else
+ blk = round_block(blk);
+ return (blk);
}
static int
@@ -68,7 +72,7 @@ bsd_write(lba_t imgsz, void *bootcode)
struct disklabel *d;
struct partition *dp;
struct part *part;
- int error, n;
+ int bsdparts, error, n;
uint16_t checksum;
buf = malloc(BBSIZE);
@@ -76,16 +80,13 @@ bsd_write(lba_t imgsz, void *bootcode)
return (ENOMEM);
if (bootcode != NULL) {
memcpy(buf, bootcode, BBSIZE);
- memset(buf + secsz, 0, secsz);
+ memset(buf + secsz, 0, sizeof(struct disklabel));
} else
memset(buf, 0, BBSIZE);
- imgsz = (lba_t)ncyls * nheads * nsecs;
- error = image_set_size(imgsz);
- if (error) {
- free(buf);
- return (error);
- }
+ bsdparts = nparts + 1; /* Account for c partition */
+ if (bsdparts < MAXPARTITIONS)
+ bsdparts = MAXPARTITIONS;
d = (void *)(buf + secsz);
le32enc(&d->d_magic, DISKMAGIC);
@@ -97,7 +98,7 @@ bsd_write(lba_t imgsz, void *bootcode)
le32enc(&d->d_secperunit, imgsz);
le16enc(&d->d_rpm, 3600);
le32enc(&d->d_magic2, DISKMAGIC);
- le16enc(&d->d_npartitions, (8 > nparts + 1) ? 8 : nparts + 1);
+ le16enc(&d->d_npartitions, bsdparts);
le32enc(&d->d_bbsize, BBSIZE);
dp = &d->d_partitions[RAW_PART];
@@ -107,12 +108,15 @@ bsd_write(lba_t imgsz, void *bootcode)
dp = &d->d_partitions[n];
le32enc(&dp->p_size, part->size);
le32enc(&dp->p_offset, part->block);
+ le32enc(&dp->p_fsize, 0);
dp->p_fstype = ALIAS_TYPE2INT(part->type);
+ dp->p_frag = 0;
+ le16enc(&dp->p_cpg, 0);
}
- dp = &d->d_partitions[nparts + 1];
+ dp = &d->d_partitions[bsdparts];
checksum = 0;
- for (p = buf; p < (u_char *)dp; p += 2)
+ for (p = (void *)d; p < (u_char *)dp; p += 2)
checksum ^= le16dec(p);
le16enc(&d->d_checksum, checksum);
diff --git a/usr.bin/mkimg/ebr.c b/usr.bin/mkimg/ebr.c
index 77204d7..28931ea 100644
--- a/usr.bin/mkimg/ebr.c
+++ b/usr.bin/mkimg/ebr.c
@@ -49,22 +49,23 @@ static struct mkimg_alias ebr_aliases[] = {
{ ALIAS_NONE, 0 }
};
-static u_int
-ebr_metadata(u_int where)
+static lba_t
+ebr_metadata(u_int where, lba_t blk)
{
- u_int secs;
- secs = (where == SCHEME_META_PART_BEFORE) ? nsecs : 0;
- return (secs);
+ blk += (where == SCHEME_META_PART_BEFORE) ? 1 : 0;
+ return (round_track(blk));
}
static void
-ebr_chs(u_char *cyl, u_char *hd, u_char *sec, uint32_t lba __unused)
+ebr_chs(u_char *cylp, u_char *hdp, u_char *secp, lba_t lba)
{
+ u_int cyl, hd, sec;
- *cyl = 0xff; /* XXX */
- *hd = 0xff; /* XXX */
- *sec = 0xff; /* XXX */
+ mkimg_chs(lba, 1023, &cyl, &hd, &sec);
+ *cylp = cyl;
+ *hdp = hd;
+ *secp = (sec & 0x3f) | ((cyl >> 2) & 0xc0);
}
static int
@@ -73,7 +74,7 @@ ebr_write(lba_t imgsz __unused, void *bootcode __unused)
u_char *ebr;
struct dos_partition *dp;
struct part *part, *next;
- lba_t block;
+ lba_t block, size;
int error;
ebr = malloc(secsz);
@@ -85,24 +86,26 @@ ebr_write(lba_t imgsz __unused, void *bootcode __unused)
error = 0;
STAILQ_FOREACH_SAFE(part, &partlist, link, next) {
block = part->block - nsecs;
+ size = round_track(part->size);
dp = (void *)(ebr + DOSPARTOFF);
ebr_chs(&dp->dp_scyl, &dp->dp_shd, &dp->dp_ssect, nsecs);
dp->dp_typ = ALIAS_TYPE2INT(part->type);
ebr_chs(&dp->dp_ecyl, &dp->dp_ehd, &dp->dp_esect,
- part->block + part->size - 1);
+ part->block + size - 1);
le32enc(&dp->dp_start, nsecs);
- le32enc(&dp->dp_size, part->size);
+ le32enc(&dp->dp_size, size);
/* Add link entry */
if (next != NULL) {
+ size = round_track(next->size);
dp++;
ebr_chs(&dp->dp_scyl, &dp->dp_shd, &dp->dp_ssect,
next->block - nsecs);
dp->dp_typ = DOSPTYP_EXT;
ebr_chs(&dp->dp_ecyl, &dp->dp_ehd, &dp->dp_esect,
- next->block + next->size - 1);
+ next->block + size - 1);
le32enc(&dp->dp_start, next->block - nsecs);
- le32enc(&dp->dp_size, next->size + nsecs);
+ le32enc(&dp->dp_size, size + nsecs);
}
error = image_write(block, ebr, 1);
diff --git a/usr.bin/mkimg/gpt.c b/usr.bin/mkimg/gpt.c
index 959deb3..5773a6a 100644
--- a/usr.bin/mkimg/gpt.c
+++ b/usr.bin/mkimg/gpt.c
@@ -153,17 +153,15 @@ gpt_tblsz(void)
return ((nparts + ents - 1) / ents);
}
-static u_int
-gpt_metadata(u_int where)
+static lba_t
+gpt_metadata(u_int where, lba_t blk)
{
- u_int secs;
-
- if (where != SCHEME_META_IMG_START && where != SCHEME_META_IMG_END)
- return (0);
- secs = gpt_tblsz();
- secs += (where == SCHEME_META_IMG_START) ? 2 : 1;
- return (secs);
+ if (where == SCHEME_META_IMG_START || where == SCHEME_META_IMG_END) {
+ blk += gpt_tblsz();
+ blk += (where == SCHEME_META_IMG_START) ? 2 : 1;
+ }
+ return (round_block(blk));
}
static int
diff --git a/usr.bin/mkimg/image.c b/usr.bin/mkimg/image.c
index f448d98..be1c2e9 100644
--- a/usr.bin/mkimg/image.c
+++ b/usr.bin/mkimg/image.c
@@ -27,71 +27,464 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include <sys/mman.h>
+#include <sys/queue.h>
+#include <sys/stat.h>
#include <sys/types.h>
#include <assert.h>
#include <errno.h>
#include <limits.h>
#include <paths.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <unistd.h>
#include "image.h"
#include "mkimg.h"
-#define BUFFER_SIZE (1024*1024)
+struct chunk {
+ STAILQ_ENTRY(chunk) ch_list;
+ size_t ch_size; /* Size of chunk in bytes. */
+ lba_t ch_block; /* Block address in image. */
+ union {
+ struct {
+ off_t ofs; /* Offset in backing file. */
+ int fd; /* FD of backing file. */
+ } file;
+ struct {
+ void *ptr; /* Pointer to data in memory */
+ } mem;
+ } ch_u;
+ u_int ch_type;
+#define CH_TYPE_ZEROES 0 /* Chunk is a gap (no data). */
+#define CH_TYPE_FILE 1 /* File-backed chunk. */
+#define CH_TYPE_MEMORY 2 /* Memory-backed chunk */
+};
+
+static STAILQ_HEAD(chunk_head, chunk) image_chunks;
+static u_int image_nchunks;
+
+static char image_swap_file[PATH_MAX];
+static int image_swap_fd = -1;
+static u_int image_swap_pgsz;
+static off_t image_swap_size;
-static char image_tmpfile[PATH_MAX];
-static int image_fd = -1;
static lba_t image_size;
-static void
-cleanup(void)
+static int
+is_empty_sector(void *buf)
{
+ uint64_t *p = buf;
+ size_t n, max;
+
+ assert(((uintptr_t)p & 3) == 0);
- if (image_fd != -1)
- close(image_fd);
- unlink(image_tmpfile);
+ max = secsz / sizeof(uint64_t);
+ for (n = 0; n < max; n++) {
+ if (p[n] != 0UL)
+ return (0);
+ }
+ return (1);
}
-int
-image_copyin(lba_t blk, int fd, uint64_t *sizep)
+/*
+ * Swap file handlng.
+ */
+
+static off_t
+image_swap_alloc(size_t size)
+{
+ off_t ofs;
+ size_t unit;
+
+ unit = (secsz > image_swap_pgsz) ? secsz : image_swap_pgsz;
+ assert((unit & (unit - 1)) == 0);
+
+ size = (size + unit - 1) & ~(unit - 1);
+
+ ofs = image_swap_size;
+ image_swap_size += size;
+ if (ftruncate(image_swap_fd, image_swap_size) == -1) {
+ image_swap_size = ofs;
+ ofs = -1LL;
+ }
+ return (ofs);
+}
+
+/*
+ * Image chunk handling.
+ */
+
+static struct chunk *
+image_chunk_find(lba_t blk)
+{
+ static struct chunk *last = NULL;
+ struct chunk *ch;
+
+ ch = (last != NULL && last->ch_block <= blk)
+ ? last : STAILQ_FIRST(&image_chunks);
+ while (ch != NULL) {
+ if (ch->ch_block <= blk &&
+ (lba_t)(ch->ch_block + (ch->ch_size / secsz)) > blk) {
+ last = ch;
+ break;
+ }
+ ch = STAILQ_NEXT(ch, ch_list);
+ }
+ return (ch);
+}
+
+static size_t
+image_chunk_grow(struct chunk *ch, size_t sz)
+{
+ size_t dsz, newsz;
+
+ newsz = ch->ch_size + sz;
+ if (newsz > ch->ch_size) {
+ ch->ch_size = newsz;
+ return (0);
+ }
+ /* We would overflow -- create new chunk for remainder. */
+ dsz = SIZE_MAX - ch->ch_size;
+ assert(dsz < sz);
+ ch->ch_size = SIZE_MAX;
+ return (sz - dsz);
+}
+
+static struct chunk *
+image_chunk_memory(struct chunk *ch, lba_t blk)
+{
+ struct chunk *new;
+ void *ptr;
+
+ ptr = calloc(1, secsz);
+ if (ptr == NULL)
+ return (NULL);
+
+ if (ch->ch_block < blk) {
+ new = malloc(sizeof(*new));
+ if (new == NULL) {
+ free(ptr);
+ return (NULL);
+ }
+ memcpy(new, ch, sizeof(*new));
+ ch->ch_size = (blk - ch->ch_block) * secsz;
+ new->ch_block = blk;
+ new->ch_size -= ch->ch_size;
+ STAILQ_INSERT_AFTER(&image_chunks, ch, new, ch_list);
+ image_nchunks++;
+ ch = new;
+ }
+
+ if (ch->ch_size > secsz) {
+ new = malloc(sizeof(*new));
+ if (new == NULL) {
+ free(ptr);
+ return (NULL);
+ }
+ memcpy(new, ch, sizeof(*new));
+ ch->ch_size = secsz;
+ new->ch_block++;
+ new->ch_size -= secsz;
+ STAILQ_INSERT_AFTER(&image_chunks, ch, new, ch_list);
+ image_nchunks++;
+ }
+
+ ch->ch_type = CH_TYPE_MEMORY;
+ ch->ch_u.mem.ptr = ptr;
+ return (ch);
+}
+
+static int
+image_chunk_skipto(lba_t to)
+{
+ struct chunk *ch;
+ lba_t from;
+ size_t sz;
+
+ ch = STAILQ_LAST(&image_chunks, chunk, ch_list);
+ from = (ch != NULL) ? ch->ch_block + (ch->ch_size / secsz) : 0LL;
+
+ assert(from <= to);
+
+ /* Nothing to do? */
+ if (from == to)
+ return (0);
+ /* Avoid bugs due to overflows. */
+ if ((uintmax_t)(to - from) > (uintmax_t)(SIZE_MAX / secsz))
+ return (EFBIG);
+ sz = (to - from) * secsz;
+ if (ch != NULL && ch->ch_type == CH_TYPE_ZEROES) {
+ sz = image_chunk_grow(ch, sz);
+ if (sz == 0)
+ return (0);
+ from = ch->ch_block + (ch->ch_size / secsz);
+ }
+ ch = malloc(sizeof(*ch));
+ if (ch == NULL)
+ return (ENOMEM);
+ memset(ch, 0, sizeof(*ch));
+ ch->ch_block = from;
+ ch->ch_size = sz;
+ ch->ch_type = CH_TYPE_ZEROES;
+ STAILQ_INSERT_TAIL(&image_chunks, ch, ch_list);
+ image_nchunks++;
+ return (0);
+}
+
+static int
+image_chunk_append(lba_t blk, size_t sz, off_t ofs, int fd)
+{
+ struct chunk *ch;
+
+ ch = STAILQ_LAST(&image_chunks, chunk, ch_list);
+ if (ch != NULL && ch->ch_type == CH_TYPE_FILE) {
+ if (fd == ch->ch_u.file.fd &&
+ blk == (lba_t)(ch->ch_block + (ch->ch_size / secsz)) &&
+ ofs == (off_t)(ch->ch_u.file.ofs + ch->ch_size)) {
+ sz = image_chunk_grow(ch, sz);
+ if (sz == 0)
+ return (0);
+ blk = ch->ch_block + (ch->ch_size / secsz);
+ ofs = ch->ch_u.file.ofs + ch->ch_size;
+ }
+ }
+ ch = malloc(sizeof(*ch));
+ if (ch == NULL)
+ return (ENOMEM);
+ memset(ch, 0, sizeof(*ch));
+ ch->ch_block = blk;
+ ch->ch_size = sz;
+ ch->ch_type = CH_TYPE_FILE;
+ ch->ch_u.file.ofs = ofs;
+ ch->ch_u.file.fd = fd;
+ STAILQ_INSERT_TAIL(&image_chunks, ch, ch_list);
+ image_nchunks++;
+ return (0);
+}
+
+static int
+image_chunk_copyin(lba_t blk, void *buf, size_t sz, off_t ofs, int fd)
+{
+ uint8_t *p = buf;
+ int error;
+
+ error = 0;
+ sz = (sz + secsz - 1) & ~(secsz - 1);
+ while (!error && sz > 0) {
+ if (is_empty_sector(p))
+ error = image_chunk_skipto(blk + 1);
+ else
+ error = image_chunk_append(blk, secsz, ofs, fd);
+ blk++;
+ p += secsz;
+ sz -= secsz;
+ ofs += secsz;
+ }
+ return (error);
+}
+
+/*
+ * File mapping support.
+ */
+
+static void *
+image_file_map(int fd, off_t ofs, size_t sz)
+{
+ void *ptr;
+ size_t unit;
+ int flags, prot;
+
+ unit = (secsz > image_swap_pgsz) ? secsz : image_swap_pgsz;
+ assert((unit & (unit - 1)) == 0);
+
+ flags = MAP_NOCORE | MAP_NOSYNC | MAP_SHARED;
+ /* Allow writing to our swap file only. */
+ prot = PROT_READ | ((fd == image_swap_fd) ? PROT_WRITE : 0);
+ sz = (sz + unit - 1) & ~(unit - 1);
+ ptr = mmap(NULL, sz, prot, flags, fd, ofs);
+ return ((ptr == MAP_FAILED) ? NULL : ptr);
+}
+
+static int
+image_file_unmap(void *buffer, size_t sz)
+{
+ size_t unit;
+
+ unit = (secsz > image_swap_pgsz) ? secsz : image_swap_pgsz;
+ sz = (sz + unit - 1) & ~(unit - 1);
+ munmap(buffer, sz);
+ return (0);
+}
+
+/*
+ * Input/source file handling.
+ */
+
+static int
+image_copyin_stream(lba_t blk, int fd, uint64_t *sizep)
{
char *buffer;
uint64_t bytesize;
- ssize_t bcnt, rdsz;
- int error, partial;
+ off_t swofs;
+ size_t iosz;
+ ssize_t rdsz;
+ int error;
- assert(BUFFER_SIZE % secsz == 0);
+ /*
+ * This makes sure we're doing I/O in multiples of the page
+ * size as well as of the sector size. 2MB is the minimum
+ * by virtue of secsz at least 512 bytes and the page size
+ * at least 4K bytes.
+ */
+ iosz = secsz * image_swap_pgsz;
- buffer = malloc(BUFFER_SIZE);
- if (buffer == NULL)
- return (ENOMEM);
bytesize = 0;
- partial = 0;
- while (1) {
- rdsz = read(fd, buffer, BUFFER_SIZE);
- if (rdsz <= 0) {
- error = (rdsz < 0) ? errno : 0;
- break;
- }
- if (partial)
- abort();
- bytesize += rdsz;
- bcnt = (rdsz + secsz - 1) / secsz;
- error = image_write(blk, buffer, bcnt);
+ do {
+ swofs = image_swap_alloc(iosz);
+ if (swofs == -1LL)
+ return (errno);
+ buffer = image_file_map(image_swap_fd, swofs, iosz);
+ if (buffer == NULL)
+ return (errno);
+ rdsz = read(fd, buffer, iosz);
+ if (rdsz > 0)
+ error = image_chunk_copyin(blk, buffer, rdsz, swofs,
+ image_swap_fd);
+ else if (rdsz < 0)
+ error = errno;
+ else
+ error = 0;
+ image_file_unmap(buffer, iosz);
+ /* XXX should we relinguish unused swap space? */
if (error)
+ return (error);
+
+ bytesize += rdsz;
+ blk += (rdsz + secsz - 1) / secsz;
+ } while (rdsz > 0);
+
+ if (sizep != NULL)
+ *sizep = bytesize;
+ return (0);
+}
+
+static int
+image_copyin_mapped(lba_t blk, int fd, uint64_t *sizep)
+{
+ off_t cur, data, end, hole, pos;
+ void *buf;
+ uint64_t bytesize;
+ size_t iosz, sz;
+ int error;
+
+ /*
+ * We'd like to know the size of the file and we must
+ * be able to seek in order to mmap(2). If this isn't
+ * possible, then treat the file as a stream/pipe.
+ */
+ end = lseek(fd, 0L, SEEK_END);
+ if (end == -1L)
+ return (image_copyin_stream(blk, fd, sizep));
+
+ /*
+ * We need the file opened for the duration and our
+ * caller is going to close the file. Make a dup(2)
+ * so that control the faith of the descriptor.
+ */
+ fd = dup(fd);
+ if (fd == -1)
+ return (errno);
+
+ iosz = secsz * image_swap_pgsz;
+
+ bytesize = 0;
+ cur = pos = 0;
+ error = 0;
+ while (!error && cur < end) {
+ hole = lseek(fd, cur, SEEK_HOLE);
+ if (hole == -1)
+ hole = end;
+ data = lseek(fd, cur, SEEK_DATA);
+ if (data == -1)
+ data = end;
+
+ /*
+ * Treat the entire file as data if sparse files
+ * are not supported by the underlying file system.
+ */
+ if (hole == end && data == end)
+ data = cur;
+
+ if (cur == hole && data > hole) {
+ hole = pos;
+ pos = data & ~((uint64_t)secsz - 1);
+
+ blk += (pos - hole) / secsz;
+ error = image_chunk_skipto(blk);
+
+ bytesize += pos - hole;
+ cur = data;
+ } else if (cur == data && hole > data) {
+ data = pos;
+ pos = (hole + secsz - 1) & ~((uint64_t)secsz - 1);
+
+ while (data < pos) {
+ sz = (pos - data > (off_t)iosz)
+ ? iosz : (size_t)(pos - data);
+
+ buf = image_file_map(fd, data, sz);
+ if (buf != NULL) {
+ error = image_chunk_copyin(blk, buf,
+ sz, data, fd);
+ image_file_unmap(buf, sz);
+ } else
+ error = errno;
+
+ blk += sz / secsz;
+ bytesize += sz;
+ data += sz;
+ }
+ cur = hole;
+ } else {
+ /*
+ * I don't know what this means or whether it
+ * can happen at all...
+ */
+ error = EDOOFUS;
break;
- blk += bcnt;
- partial = ((ssize_t)(bcnt * secsz) != rdsz) ? 1 : 0;
+ }
}
- free(buffer);
- if (sizep != NULL)
+ if (error)
+ close(fd);
+ if (!error && sizep != NULL)
*sizep = bytesize;
return (error);
}
int
+image_copyin(lba_t blk, int fd, uint64_t *sizep)
+{
+ struct stat sb;
+ int error;
+
+ error = image_chunk_skipto(blk);
+ if (!error) {
+ if (fstat(fd, &sb) == -1 || !S_ISREG(sb.st_mode))
+ error = image_copyin_stream(blk, fd, sizep);
+ else
+ error = image_copyin_mapped(blk, fd, sizep);
+ }
+ return (error);
+}
+
+/*
+ * Output/sink file handling.
+ */
+
+int
image_copyout(int fd)
{
int error;
@@ -115,71 +508,124 @@ image_copyout_done(int fd)
return (error);
}
-int
-image_copyout_region(int fd, lba_t blk, lba_t size)
+static int
+image_copyout_memory(int fd, size_t size, void *ptr)
{
- char *buffer;
- off_t ofs;
+
+ if (write(fd, ptr, size) == -1)
+ return (errno);
+ return (0);
+}
+
+static int
+image_copyout_zeroes(int fd, size_t size)
+{
+ static uint8_t *zeroes = NULL;
size_t sz;
- ssize_t rdsz, wrsz;
int error;
- ofs = lseek(fd, 0L, SEEK_CUR);
+ if (lseek(fd, (off_t)size, SEEK_CUR) != -1)
+ return (0);
+
+ /*
+ * If we can't seek, we must write.
+ */
+
+ if (zeroes == NULL) {
+ zeroes = calloc(1, secsz);
+ if (zeroes == NULL)
+ return (ENOMEM);
+ }
+
+ while (size > 0) {
+ sz = (size > secsz) ? secsz : size;
+ error = image_copyout_memory(fd, sz, zeroes);
+ if (error)
+ return (error);
+ size -= sz;
+ }
+ return (0);
+}
+
+static int
+image_copyout_file(int fd, size_t size, int ifd, off_t iofs)
+{
+ void *buf;
+ size_t iosz, sz;
+ int error;
+
+ iosz = secsz * image_swap_pgsz;
+
+ while (size > 0) {
+ sz = (size > iosz) ? iosz : size;
+ buf = image_file_map(ifd, iofs, sz);
+ if (buf == NULL)
+ return (errno);
+ error = image_copyout_memory(fd, sz, buf);
+ image_file_unmap(buf, sz);
+ if (error)
+ return (error);
+ size -= sz;
+ iofs += sz;
+ }
+ return (0);
+}
+
+int
+image_copyout_region(int fd, lba_t blk, lba_t size)
+{
+ struct chunk *ch;
+ size_t ofs, sz;
+ int error;
- blk *= secsz;
- if (lseek(image_fd, blk, SEEK_SET) != blk)
- return (errno);
- buffer = malloc(BUFFER_SIZE);
- if (buffer == NULL)
- return (errno);
- error = 0;
size *= secsz;
+
while (size > 0) {
- sz = (BUFFER_SIZE < size) ? BUFFER_SIZE : size;
- rdsz = read(image_fd, buffer, sz);
- if (rdsz <= 0) {
- error = (rdsz < 0) ? errno : 0;
+ ch = image_chunk_find(blk);
+ if (ch == NULL)
+ return (EINVAL);
+ ofs = (blk - ch->ch_block) * secsz;
+ sz = ch->ch_size - ofs;
+ sz = ((lba_t)sz < size) ? sz : (size_t)size;
+ switch (ch->ch_type) {
+ case CH_TYPE_ZEROES:
+ error = image_copyout_zeroes(fd, sz);
break;
- }
- wrsz = (ofs == -1) ?
- write(fd, buffer, rdsz) :
- sparse_write(fd, buffer, rdsz);
- if (wrsz < 0) {
- error = errno;
+ case CH_TYPE_FILE:
+ error = image_copyout_file(fd, sz, ch->ch_u.file.fd,
+ ch->ch_u.file.ofs + ofs);
+ break;
+ case CH_TYPE_MEMORY:
+ error = image_copyout_memory(fd, sz, ch->ch_u.mem.ptr);
break;
+ default:
+ return (EDOOFUS);
}
- assert(wrsz == rdsz);
- size -= rdsz;
+ size -= sz;
+ blk += sz / secsz;
}
- free(buffer);
- return (error);
+ return (0);
}
int
image_data(lba_t blk, lba_t size)
{
- char *buffer, *p;
-
- blk *= secsz;
- if (lseek(image_fd, blk, SEEK_SET) != blk)
- return (1);
-
- size *= secsz;
- buffer = malloc(size);
- if (buffer == NULL)
- return (1);
+ struct chunk *ch;
+ lba_t lim;
- if (read(image_fd, buffer, size) != (ssize_t)size) {
- free(buffer);
- return (1);
+ while (1) {
+ ch = image_chunk_find(blk);
+ if (ch == NULL)
+ return (0);
+ if (ch->ch_type != CH_TYPE_ZEROES)
+ return (1);
+ lim = ch->ch_block + (ch->ch_size / secsz);
+ if (lim >= blk + size)
+ return (0);
+ size -= lim - blk;
+ blk = lim;
}
-
- p = buffer;
- while (size > 0 && *p == '\0')
- size--, p++;
-
- free(buffer);
- return ((size == 0) ? 0 : 1);
+ /*NOTREACHED*/
}
lba_t
@@ -192,39 +638,87 @@ image_get_size(void)
int
image_set_size(lba_t blk)
{
+ int error;
- image_size = blk;
- if (ftruncate(image_fd, blk * secsz) == -1)
- return (errno);
- return (0);
+ error = image_chunk_skipto(blk);
+ if (!error)
+ image_size = blk;
+ return (error);
}
int
image_write(lba_t blk, void *buf, ssize_t len)
{
+ struct chunk *ch;
- blk *= secsz;
- if (lseek(image_fd, blk, SEEK_SET) != blk)
- return (errno);
- len *= secsz;
- if (sparse_write(image_fd, buf, len) != len)
- return (errno);
+ while (len > 0) {
+ if (!is_empty_sector(buf)) {
+ ch = image_chunk_find(blk);
+ if (ch == NULL)
+ return (ENXIO);
+ /* We may not be able to write to files. */
+ if (ch->ch_type == CH_TYPE_FILE)
+ return (EINVAL);
+ if (ch->ch_type == CH_TYPE_ZEROES) {
+ ch = image_chunk_memory(ch, blk);
+ if (ch == NULL)
+ return (ENOMEM);
+ }
+ assert(ch->ch_type == CH_TYPE_MEMORY);
+ memcpy(ch->ch_u.mem.ptr, buf, secsz);
+ }
+ blk++;
+ buf = (char *)buf + secsz;
+ len--;
+ }
return (0);
}
+static void
+image_cleanup(void)
+{
+ struct chunk *ch;
+
+ while ((ch = STAILQ_FIRST(&image_chunks)) != NULL) {
+ switch (ch->ch_type) {
+ case CH_TYPE_FILE:
+ /* We may be closing the same file multiple times. */
+ if (ch->ch_u.file.fd != -1)
+ close(ch->ch_u.file.fd);
+ break;
+ case CH_TYPE_MEMORY:
+ free(ch->ch_u.mem.ptr);
+ break;
+ default:
+ break;
+ }
+ STAILQ_REMOVE_HEAD(&image_chunks, ch_list);
+ free(ch);
+ }
+ if (image_swap_fd != -1)
+ close(image_swap_fd);
+ unlink(image_swap_file);
+}
+
int
image_init(void)
{
const char *tmpdir;
- if (atexit(cleanup) == -1)
+ STAILQ_INIT(&image_chunks);
+ image_nchunks = 0;
+
+ image_swap_size = 0;
+ image_swap_pgsz = getpagesize();
+
+ if (atexit(image_cleanup) == -1)
return (errno);
if ((tmpdir = getenv("TMPDIR")) == NULL || *tmpdir == '\0')
tmpdir = _PATH_TMP;
- snprintf(image_tmpfile, sizeof(image_tmpfile), "%s/mkimg-XXXXXX",
+ snprintf(image_swap_file, sizeof(image_swap_file), "%s/mkimg-XXXXXX",
tmpdir);
- image_fd = mkstemp(image_tmpfile);
- if (image_fd == -1)
+ image_swap_fd = mkstemp(image_swap_file);
+ if (image_swap_fd == -1)
return (errno);
return (0);
}
diff --git a/usr.bin/mkimg/mbr.c b/usr.bin/mkimg/mbr.c
index 4b0f242..c1b7822 100644
--- a/usr.bin/mkimg/mbr.c
+++ b/usr.bin/mkimg/mbr.c
@@ -50,22 +50,23 @@ static struct mkimg_alias mbr_aliases[] = {
{ ALIAS_NONE, 0 } /* Keep last! */
};
-static u_int
-mbr_metadata(u_int where)
+static lba_t
+mbr_metadata(u_int where, lba_t blk)
{
- u_int secs;
- secs = (where == SCHEME_META_IMG_START) ? nsecs : 0;
- return (secs);
+ blk += (where == SCHEME_META_IMG_START) ? 1 : 0;
+ return (round_track(blk));
}
static void
-mbr_chs(u_char *cyl, u_char *hd, u_char *sec, uint32_t lba __unused)
+mbr_chs(u_char *cylp, u_char *hdp, u_char *secp, lba_t lba)
{
+ u_int cyl, hd, sec;
- *cyl = 0xff; /* XXX */
- *hd = 0xff; /* XXX */
- *sec = 0xff; /* XXX */
+ mkimg_chs(lba, 1023, &cyl, &hd, &sec);
+ *cylp = cyl;
+ *hdp = hd;
+ *secp = (sec & 0x3f) | ((cyl >> 2) & 0xc0);
}
static int
@@ -74,6 +75,7 @@ mbr_write(lba_t imgsz __unused, void *bootcode)
u_char *mbr;
struct dos_partition *dpbase, *dp;
struct part *part;
+ lba_t size;
int error;
mbr = malloc(secsz);
@@ -87,15 +89,16 @@ mbr_write(lba_t imgsz __unused, void *bootcode)
le16enc(mbr + DOSMAGICOFFSET, DOSMAGIC);
dpbase = (void *)(mbr + DOSPARTOFF);
STAILQ_FOREACH(part, &partlist, link) {
+ size = round_track(part->size);
dp = dpbase + part->index;
dp->dp_flag = (part->index == 0 && bootcode != NULL) ? 0x80 : 0;
mbr_chs(&dp->dp_scyl, &dp->dp_shd, &dp->dp_ssect,
part->block);
dp->dp_typ = ALIAS_TYPE2INT(part->type);
mbr_chs(&dp->dp_ecyl, &dp->dp_ehd, &dp->dp_esect,
- part->block + part->size - 1);
+ part->block + size - 1);
le32enc(&dp->dp_start, part->block);
- le32enc(&dp->dp_size, part->size);
+ le32enc(&dp->dp_size, size);
}
error = image_write(0, mbr, 1);
free(mbr);
diff --git a/usr.bin/mkimg/mkimg.1 b/usr.bin/mkimg/mkimg.1
index ed14cc8..56cd605 100644
--- a/usr.bin/mkimg/mkimg.1
+++ b/usr.bin/mkimg/mkimg.1
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 4, 2014
+.Dd September 27, 2014
.Dt MKIMG 1
.Os
.Sh NAME
@@ -44,6 +44,8 @@
.Fl s Ar scheme
.Fl p Ar partition
.Op Fl p Ar partition ...
+.Nm
+.Ar --formats | --schemes | --version
.Sh DESCRIPTION
The
.Nm
@@ -122,10 +124,32 @@ utility will generate predictable values for Universally Unique Identifiers
.Nm
utility will create images that are identical.
.Pp
-For a complete list of supported partitioning schemes or supported output
-format, or for a detailed description of how to specify partitions, run the
+A set of long options exist to query about the
+.Nm
+utilty itself.
+Options in this set should be given by themselves because the
+.Nm
+utility exits immediately after providing the requested information.
+The version of the
+.Nm
+utility is printed when the
+.Ar --version
+option is given.
+The list of supported output formats is printed when the
+.Ar --formats
+option is given and the list of supported partitioning schemes is printed
+when the
+.Ar --schemes
+option is given.
+Both the format and scheme lists a space-separated lists for easy handling
+in scripts.
+.Pp
+For a more descriptive list of supported partitioning schemes or supported
+output format, or for a detailed description of how to specify partitions,
+run the
.Nm
utility without any arguments.
+This will print a usage message with all the necessary details.
.Sh ENVIRONMENT
.Bl -tag -width "TMPDIR" -compact
.It Ev TMPDIR
@@ -171,15 +195,34 @@ utility as follows:
.Dl % mkimg -s mbr -b /boot/mbr -p freebsd:-'mkimg -s bsd -b /boot/boot \
-p freebsd-ufs:=root-file-system.ufs -p freebsd-swap::1G' -o mbr-bsd.img
.Pp
+To accomodate the need to have partitions named or numbered in a certain
+way, the
+.Nm
+utility allows for the specification of empty partitions.
+For example, to create an image that is compatible with partition layouts
+found in
+.Pa /etc/disktab ,
+the 'd' partition often needs to be skipped.
+This is accomplished by inserting an unused partition after the first 2
+partition specifications.
+It is worth noting at this time that the BSD scheme will automatically
+skip the 'c' partition by virtue of it referring to the entire disk.
+To create an image that is compatible with the qp120at disk, use the
+.Nm
+utility as follows:
+.Dl % mkimg -s bsd -b /boot/boot -p freebsd-ufs:=root-file-system.ufs \
+-p freebsd-swap::20M -p- -p- -p- -p- -p freebsd-ufs:=usr-file-system.ufs \
+-o bsd.img
+.Pp
For partitioning schemes that feature partition labels, the
.Nm
utility supports assigning labels to the partitions specified.
In the following example the file system partition is labeled as 'backup':
.Dl % mkimg -s gpt -p freebsd-ufs/backup:=file-system.ufs -o gpt.img
.Sh SEE ALSO
-.Xr gpart 8
-.Xr makefs 8
-.Xr mdconfig 8
+.Xr gpart 8 ,
+.Xr makefs 8 ,
+.Xr mdconfig 8 ,
.Xr newfs 8
.Sh HISTORY
The
diff --git a/usr.bin/mkimg/mkimg.c b/usr.bin/mkimg/mkimg.c
index 4513e66..b55ee7e 100644
--- a/usr.bin/mkimg/mkimg.c
+++ b/usr.bin/mkimg/mkimg.c
@@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$");
#include <errno.h>
#include <err.h>
#include <fcntl.h>
+#include <getopt.h>
#include <libutil.h>
#include <limits.h>
#include <stdio.h>
@@ -48,6 +49,17 @@ __FBSDID("$FreeBSD$");
#include "mkimg.h"
#include "scheme.h"
+#define LONGOPT_FORMATS 0x01000001
+#define LONGOPT_SCHEMES 0x01000002
+#define LONGOPT_VERSION 0x01000003
+
+static struct option longopts[] = {
+ { "formats", no_argument, NULL, LONGOPT_FORMATS },
+ { "schemes", no_argument, NULL, LONGOPT_SCHEMES },
+ { "version", no_argument, NULL, LONGOPT_VERSION },
+ { NULL, 0, NULL, 0 }
+};
+
struct partlisthead partlist = STAILQ_HEAD_INITIALIZER(partlist);
u_int nparts = 0;
@@ -61,15 +73,79 @@ u_int secsz = 512;
u_int blksz = 0;
static void
-usage(const char *why)
+print_formats(int usage)
{
struct mkimg_format *f, **f_iter;
+ const char *sep;
+
+ if (usage) {
+ fprintf(stderr, " formats:\n");
+ SET_FOREACH(f_iter, formats) {
+ f = *f_iter;
+ fprintf(stderr, "\t%s\t- %s\n", f->name,
+ f->description);
+ }
+ } else {
+ sep = "";
+ SET_FOREACH(f_iter, formats) {
+ f = *f_iter;
+ printf("%s%s", sep, f->name);
+ sep = " ";
+ }
+ putchar('\n');
+ }
+}
+
+static void
+print_schemes(int usage)
+{
struct mkimg_scheme *s, **s_iter;
+ const char *sep;
+
+ if (usage) {
+ fprintf(stderr, " schemes:\n");
+ SET_FOREACH(s_iter, schemes) {
+ s = *s_iter;
+ fprintf(stderr, "\t%s\t- %s\n", s->name,
+ s->description);
+ }
+ } else {
+ sep = "";
+ SET_FOREACH(s_iter, schemes) {
+ s = *s_iter;
+ printf("%s%s", sep, s->name);
+ sep = " ";
+ }
+ putchar('\n');
+ }
+}
+
+static void
+print_version(void)
+{
+ u_int width;
+
+#ifdef __LP64__
+ width = 64;
+#else
+ width = 32;
+#endif
+ printf("mkimg %u (%u-bit)\n", MKIMG_VERSION, width);
+}
+
+static void
+usage(const char *why)
+{
warnx("error: %s", why);
- fprintf(stderr, "\nusage: %s <options>\n", getprogname());
+ fputc('\n', stderr);
+ fprintf(stderr, "usage: %s <options>\n", getprogname());
fprintf(stderr, " options:\n");
+ fprintf(stderr, "\t--formats\t- list image formats\n");
+ fprintf(stderr, "\t--schemes\t- list partition schemes\n");
+ fprintf(stderr, "\t--version\t- show version information\n");
+ fputc('\n', stderr);
fprintf(stderr, "\t-b <file>\t- file containing boot code\n");
fprintf(stderr, "\t-f <format>\n");
fprintf(stderr, "\t-o <file>\t- file to write image into\n");
@@ -81,26 +157,19 @@ usage(const char *why)
fprintf(stderr, "\t-P <num>\t- physical sector size\n");
fprintf(stderr, "\t-S <num>\t- logical sector size\n");
fprintf(stderr, "\t-T <num>\t- number of tracks to simulate\n");
-
- fprintf(stderr, "\n formats:\n");
- SET_FOREACH(f_iter, formats) {
- f = *f_iter;
- fprintf(stderr, "\t%s\t- %s\n", f->name, f->description);
- }
-
- fprintf(stderr, "\n schemes:\n");
- SET_FOREACH(s_iter, schemes) {
- s = *s_iter;
- fprintf(stderr, "\t%s\t- %s\n", s->name, s->description);
- }
-
- fprintf(stderr, "\n partition specification:\n");
+ fputc('\n', stderr);
+ print_formats(1);
+ fputc('\n', stderr);
+ print_schemes(1);
+ fputc('\n', stderr);
+ fprintf(stderr, " partition specification:\n");
fprintf(stderr, "\t<t>[/<l>]::<size>\t- empty partition of given "
"size\n");
fprintf(stderr, "\t<t>[/<l>]:=<file>\t- partition content and size "
"are determined\n\t\t\t\t by the named file\n");
fprintf(stderr, "\t<t>[/<l>]:-<cmd>\t- partition content and size "
"are taken from\n\t\t\t\t the output of the command to run\n");
+ fprintf(stderr, "\t-\t\t\t- unused partition entry\n");
fprintf(stderr, "\t where:\n");
fprintf(stderr, "\t\t<t>\t- scheme neutral partition type\n");
fprintf(stderr, "\t\t<l>\t- optional scheme-dependent partition "
@@ -140,6 +209,9 @@ pwr_of_two(u_int nr)
* '-' contents holds a command to run; the output of
* which is the contents of the partition.
* contents the specification of a partition's contents
+ *
+ * A specification that is a single dash indicates an unused partition
+ * entry.
*/
static int
parse_part(const char *spec)
@@ -149,6 +221,11 @@ parse_part(const char *spec)
size_t len;
int error;
+ if (strcmp(spec, "-") == 0) {
+ nparts++;
+ return (0);
+ }
+
part = calloc(1, sizeof(struct part));
if (part == NULL)
return (ENOMEM);
@@ -263,6 +340,27 @@ sparse_write(int fd, const void *ptr, size_t sz)
#endif /* SPARSE_WRITE */
void
+mkimg_chs(lba_t lba, u_int maxcyl, u_int *cylp, u_int *hdp, u_int *secp)
+{
+ u_int hd, sec;
+
+ *cylp = *hdp = *secp = ~0U;
+ if (nsecs == 1 || nheads == 1)
+ return;
+
+ sec = lba % nsecs + 1;
+ lba /= nsecs;
+ hd = lba % nheads;
+ lba /= nheads;
+ if (lba > maxcyl)
+ return;
+
+ *cylp = lba;
+ *hdp = hd;
+ *secp = sec;
+}
+
+void
mkimg_uuid(struct uuid *uuid)
{
static uint8_t gen[sizeof(struct uuid)];
@@ -357,7 +455,8 @@ main(int argc, char *argv[])
bcfd = -1;
outfd = 1; /* Write to stdout by default */
- while ((c = getopt(argc, argv, "b:f:o:p:s:vyH:P:S:T:")) != -1) {
+ while ((c = getopt_long(argc, argv, "b:f:o:p:s:vyH:P:S:T:",
+ longopts, NULL)) != -1) {
switch (c) {
case 'b': /* BOOT CODE */
if (bcfd != -1)
@@ -423,6 +522,18 @@ main(int argc, char *argv[])
if (error)
errc(EX_DATAERR, error, "track size");
break;
+ case LONGOPT_FORMATS:
+ print_formats(0);
+ exit(EX_OK);
+ /*NOTREACHED*/
+ case LONGOPT_SCHEMES:
+ print_schemes(0);
+ exit(EX_OK);
+ /*NOTREACHED*/
+ case LONGOPT_VERSION:
+ print_version();
+ exit(EX_OK);
+ /*NOTREACHED*/
default:
usage("unknown option");
}
diff --git a/usr.bin/mkimg/mkimg.h b/usr.bin/mkimg/mkimg.h
index 9558b86..281beeb 100644
--- a/usr.bin/mkimg/mkimg.h
+++ b/usr.bin/mkimg/mkimg.h
@@ -66,12 +66,29 @@ round_block(lba_t n)
return ((n + b - 1) & ~(b - 1));
}
+static inline lba_t
+round_cylinder(lba_t n)
+{
+ u_int cyl = nsecs * nheads;
+ u_int r = n % cyl;
+ return ((r == 0) ? n : n + cyl - r);
+}
+
+static inline lba_t
+round_track(lba_t n)
+{
+ u_int r = n % nsecs;
+ return ((r == 0) ? n : n + nsecs - r);
+}
+
#if !defined(SPARSE_WRITE)
#define sparse_write write
#else
ssize_t sparse_write(int, const void *, size_t);
#endif
+void mkimg_chs(lba_t, u_int, u_int *, u_int *, u_int *);
+
struct uuid;
void mkimg_uuid(struct uuid *);
diff --git a/usr.bin/mkimg/pc98.c b/usr.bin/mkimg/pc98.c
index 24b9156..2db0394 100644
--- a/usr.bin/mkimg/pc98.c
+++ b/usr.bin/mkimg/pc98.c
@@ -59,22 +59,23 @@ static struct mkimg_alias pc98_aliases[] = {
{ ALIAS_NONE, 0 }
};
-static u_int
-pc98_metadata(u_int where)
+static lba_t
+pc98_metadata(u_int where, lba_t blk)
{
- u_int secs;
-
- secs = PC98_BOOTCODESZ / secsz;
- return ((where == SCHEME_META_IMG_START) ? secs : 0);
+ if (where == SCHEME_META_IMG_START)
+ blk += PC98_BOOTCODESZ / secsz;
+ return (round_track(blk));
}
static void
-pc98_chs(u_short *cyl, u_char *hd, u_char *sec, uint32_t lba __unused)
+pc98_chs(u_short *cylp, u_char *hdp, u_char *secp, lba_t lba)
{
+ u_int cyl, hd, sec;
- *cyl = 0xffff; /* XXX */
- *hd = 0xff; /* XXX */
- *sec = 0xff; /* XXX */
+ mkimg_chs(lba, 0xffff, &cyl, &hd, &sec);
+ le16enc(cylp, cyl);
+ *hdp = hd;
+ *secp = sec;
}
static int
@@ -83,6 +84,7 @@ pc98_write(lba_t imgsz __unused, void *bootcode)
struct part *part;
struct pc98_partition *dpbase, *dp;
u_char *buf;
+ lba_t size;
int error, ptyp;
buf = malloc(PC98_BOOTCODESZ);
@@ -96,6 +98,7 @@ pc98_write(lba_t imgsz __unused, void *bootcode)
le16enc(buf + PC98_MAGICOFS, PC98_MAGIC);
dpbase = (void *)(buf + secsz);
STAILQ_FOREACH(part, &partlist, link) {
+ size = round_track(part->size);
dp = dpbase + part->index;
ptyp = ALIAS_TYPE2INT(part->type);
dp->dp_mid = ptyp;
@@ -103,7 +106,7 @@ pc98_write(lba_t imgsz __unused, void *bootcode)
pc98_chs(&dp->dp_scyl, &dp->dp_shd, &dp->dp_ssect,
part->block);
pc98_chs(&dp->dp_scyl, &dp->dp_shd, &dp->dp_ssect,
- part->block + part->size - 1);
+ part->block + size - 1);
if (part->label != NULL)
memcpy(dp->dp_name, part->label, strlen(part->label));
}
diff --git a/usr.bin/mkimg/qcow.c b/usr.bin/mkimg/qcow.c
new file mode 100644
index 0000000..5033286
--- /dev/null
+++ b/usr.bin/mkimg/qcow.c
@@ -0,0 +1,369 @@
+/*-
+ * Copyright (c) 2014 Marcel Moolenaar
+ * 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.
+ *
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/endian.h>
+#include <sys/errno.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "image.h"
+#include "format.h"
+#include "mkimg.h"
+
+/* Default cluster sizes. */
+#define QCOW1_CLSTR_LOG2SZ 12 /* 4KB */
+#define QCOW2_CLSTR_LOG2SZ 16 /* 64KB */
+
+/* Flag bits in cluster offsets */
+#define QCOW_CLSTR_COMPRESSED (1ULL << 62)
+#define QCOW_CLSTR_COPIED (1ULL << 63)
+
+struct qcow_header {
+ uint32_t magic;
+#define QCOW_MAGIC 0x514649fb
+ uint32_t version;
+#define QCOW_VERSION_1 1
+#define QCOW_VERSION_2 2
+ uint64_t path_offset;
+ uint32_t path_length;
+ uint32_t clstr_log2sz; /* v2 only */
+ uint64_t disk_size;
+ union {
+ struct {
+ uint8_t clstr_log2sz;
+ uint8_t l2_log2sz;
+ uint16_t _pad;
+ uint32_t encryption;
+ uint64_t l1_offset;
+ } v1;
+ struct {
+ uint32_t encryption;
+ uint32_t l1_entries;
+ uint64_t l1_offset;
+ uint64_t refcnt_offset;
+ uint32_t refcnt_entries;
+ uint32_t snapshot_count;
+ uint64_t snapshot_offset;
+ } v2;
+ } u;
+};
+
+static u_int clstr_log2sz;
+
+static uint64_t
+round_clstr(uint64_t ofs)
+{
+ uint64_t clstrsz;
+
+ clstrsz = 1UL << clstr_log2sz;
+ return ((ofs + clstrsz - 1) & ~(clstrsz - 1));
+}
+
+static int
+qcow_resize(lba_t imgsz, u_int version)
+{
+ uint64_t imagesz;
+
+ switch (version) {
+ case QCOW_VERSION_1:
+ clstr_log2sz = QCOW1_CLSTR_LOG2SZ;
+ break;
+ case QCOW_VERSION_2:
+ clstr_log2sz = QCOW2_CLSTR_LOG2SZ;
+ break;
+ default:
+ return (EDOOFUS);
+ }
+
+ imagesz = round_clstr(imgsz * secsz);
+
+ if (verbose)
+ fprintf(stderr, "QCOW: image size = %ju, cluster size = %u\n",
+ (uintmax_t)imagesz, (u_int)(1U << clstr_log2sz));
+
+ return (image_set_size(imagesz / secsz));
+}
+
+static int
+qcow1_resize(lba_t imgsz)
+{
+
+ return (qcow_resize(imgsz, QCOW_VERSION_1));
+}
+
+static int
+qcow2_resize(lba_t imgsz)
+{
+
+ return (qcow_resize(imgsz, QCOW_VERSION_2));
+}
+
+static int
+qcow_write(int fd, u_int version)
+{
+ struct qcow_header *hdr;
+ uint64_t *l1tbl, *l2tbl, *rctbl;
+ uint16_t *rcblk;
+ uint64_t clstr_imgsz, clstr_l2tbls, clstr_l1tblsz;
+ uint64_t clstr_rcblks, clstr_rctblsz;
+ uint64_t n, imagesz, nclstrs, ofs, ofsflags;
+ lba_t blk, blkofs, blk_imgsz;
+ u_int l1clno, l2clno, rcclno;
+ u_int blk_clstrsz;
+ u_int clstrsz, l1idx, l2idx;
+ int error;
+
+ if (clstr_log2sz == 0)
+ return (EDOOFUS);
+
+ clstrsz = 1U << clstr_log2sz;
+ blk_clstrsz = clstrsz / secsz;
+ blk_imgsz = image_get_size();
+ imagesz = blk_imgsz * secsz;
+ clstr_imgsz = imagesz >> clstr_log2sz;
+ clstr_l2tbls = round_clstr(clstr_imgsz * 8) >> clstr_log2sz;
+ clstr_l1tblsz = round_clstr(clstr_l2tbls * 8) >> clstr_log2sz;
+ nclstrs = clstr_imgsz + clstr_l2tbls + clstr_l1tblsz + 1;
+ clstr_rcblks = clstr_rctblsz = 0;
+ do {
+ n = clstr_rcblks + clstr_rctblsz;
+ clstr_rcblks = round_clstr((nclstrs + n) * 2) >> clstr_log2sz;
+ clstr_rctblsz = round_clstr(clstr_rcblks * 8) >> clstr_log2sz;
+ } while (n < (clstr_rcblks + clstr_rctblsz));
+
+ /*
+ * We got all the sizes in clusters. Start the layout.
+ * 0 - header
+ * 1 - L1 table
+ * 2 - RC table (v2 only)
+ * 3 - L2 tables
+ * 4 - RC block (v2 only)
+ * 5 - data
+ */
+
+ l1clno = 1;
+ rcclno = 0;
+ rctbl = l2tbl = l1tbl = NULL;
+ rcblk = NULL;
+
+ hdr = calloc(1, clstrsz);
+ if (hdr == NULL)
+ return (errno);
+
+ be32enc(&hdr->magic, QCOW_MAGIC);
+ be32enc(&hdr->version, version);
+ be64enc(&hdr->disk_size, imagesz);
+ switch (version) {
+ case QCOW_VERSION_1:
+ ofsflags = 0;
+ l2clno = l1clno + clstr_l1tblsz;
+ hdr->u.v1.clstr_log2sz = clstr_log2sz;
+ hdr->u.v1.l2_log2sz = clstr_log2sz - 3;
+ be64enc(&hdr->u.v1.l1_offset, clstrsz * l1clno);
+ break;
+ case QCOW_VERSION_2:
+ ofsflags = QCOW_CLSTR_COPIED;
+ rcclno = l1clno + clstr_l1tblsz;
+ l2clno = rcclno + clstr_rctblsz;
+ be32enc(&hdr->clstr_log2sz, clstr_log2sz);
+ be32enc(&hdr->u.v2.l1_entries, clstr_l2tbls);
+ be64enc(&hdr->u.v2.l1_offset, clstrsz * l1clno);
+ be64enc(&hdr->u.v2.refcnt_offset, clstrsz * rcclno);
+ be32enc(&hdr->u.v2.refcnt_entries, clstr_rcblks);
+ break;
+ default:
+ return (EDOOFUS);
+ }
+
+ if (sparse_write(fd, hdr, clstrsz) < 0) {
+ error = errno;
+ goto out;
+ }
+
+ free(hdr);
+ hdr = NULL;
+
+ ofs = clstrsz * l2clno;
+ nclstrs = 1 + clstr_l1tblsz + clstr_rctblsz;
+
+ l1tbl = calloc(1, clstrsz * clstr_l1tblsz);
+ if (l1tbl == NULL) {
+ error = ENOMEM;
+ goto out;
+ }
+
+ for (n = 0; n < clstr_imgsz; n++) {
+ blk = n * blk_clstrsz;
+ if (image_data(blk, blk_clstrsz)) {
+ nclstrs++;
+ l1idx = n >> (clstr_log2sz - 3);
+ if (l1tbl[l1idx] == 0) {
+ be64enc(l1tbl + l1idx, ofs + ofsflags);
+ ofs += clstrsz;
+ nclstrs++;
+ }
+ }
+ }
+
+ if (sparse_write(fd, l1tbl, clstrsz * clstr_l1tblsz) < 0) {
+ error = errno;
+ goto out;
+ }
+
+ clstr_rcblks = 0;
+ do {
+ n = clstr_rcblks;
+ clstr_rcblks = round_clstr((nclstrs + n) * 2) >> clstr_log2sz;
+ } while (n < clstr_rcblks);
+
+ if (rcclno > 0) {
+ rctbl = calloc(1, clstrsz * clstr_rctblsz);
+ if (rctbl == NULL) {
+ error = ENOMEM;
+ goto out;
+ }
+ for (n = 0; n < clstr_rcblks; n++) {
+ be64enc(rctbl + n, ofs);
+ ofs += clstrsz;
+ nclstrs++;
+ }
+ if (sparse_write(fd, rctbl, clstrsz * clstr_rctblsz) < 0) {
+ error = errno;
+ goto out;
+ }
+ free(rctbl);
+ rctbl = NULL;
+ }
+
+ l2tbl = malloc(clstrsz);
+ if (l2tbl == NULL) {
+ error = ENOMEM;
+ goto out;
+ }
+
+ for (l1idx = 0; l1idx < clstr_l2tbls; l1idx++) {
+ if (l1tbl[l1idx] == 0)
+ continue;
+ memset(l2tbl, 0, clstrsz);
+ blkofs = (lba_t)l1idx * blk_clstrsz * (clstrsz >> 3);
+ for (l2idx = 0; l2idx < (clstrsz >> 3); l2idx++) {
+ blk = blkofs + (lba_t)l2idx * blk_clstrsz;
+ if (blk >= blk_imgsz)
+ break;
+ if (image_data(blk, blk_clstrsz)) {
+ be64enc(l2tbl + l2idx, ofs + ofsflags);
+ ofs += clstrsz;
+ }
+ }
+ if (sparse_write(fd, l2tbl, clstrsz) < 0) {
+ error = errno;
+ goto out;
+ }
+ }
+
+ free(l2tbl);
+ l2tbl = NULL;
+ free(l1tbl);
+ l1tbl = NULL;
+
+ if (rcclno > 0) {
+ rcblk = calloc(1, clstrsz * clstr_rcblks);
+ if (rcblk == NULL) {
+ error = ENOMEM;
+ goto out;
+ }
+ for (n = 0; n < nclstrs; n++)
+ be16enc(rcblk + n, 1);
+ if (sparse_write(fd, rcblk, clstrsz * clstr_rcblks) < 0) {
+ error = errno;
+ goto out;
+ }
+ free(rcblk);
+ rcblk = NULL;
+ }
+
+ error = 0;
+ for (n = 0; n < clstr_imgsz; n++) {
+ blk = n * blk_clstrsz;
+ if (image_data(blk, blk_clstrsz)) {
+ error = image_copyout_region(fd, blk, blk_clstrsz);
+ if (error)
+ break;
+ }
+ }
+ if (!error)
+ error = image_copyout_done(fd);
+
+ out:
+ if (rcblk != NULL)
+ free(rcblk);
+ if (l2tbl != NULL)
+ free(l2tbl);
+ if (rctbl != NULL)
+ free(rctbl);
+ if (l1tbl != NULL)
+ free(l1tbl);
+ if (hdr != NULL)
+ free(hdr);
+ return (error);
+}
+
+static int
+qcow1_write(int fd)
+{
+
+ return (qcow_write(fd, QCOW_VERSION_1));
+}
+
+static int
+qcow2_write(int fd)
+{
+
+ return (qcow_write(fd, QCOW_VERSION_2));
+}
+
+static struct mkimg_format qcow1_format = {
+ .name = "qcow",
+ .description = "QEMU Copy-On-Write, version 1",
+ .resize = qcow1_resize,
+ .write = qcow1_write,
+};
+FORMAT_DEFINE(qcow1_format);
+
+static struct mkimg_format qcow2_format = {
+ .name = "qcow2",
+ .description = "QEMU Copy-On-Write, version 2",
+ .resize = qcow2_resize,
+ .write = qcow2_write,
+};
+FORMAT_DEFINE(qcow2_format);
diff --git a/usr.bin/mkimg/scheme.c b/usr.bin/mkimg/scheme.c
index 7546ae2..ff5e201 100644
--- a/usr.bin/mkimg/scheme.c
+++ b/usr.bin/mkimg/scheme.c
@@ -171,10 +171,8 @@ scheme_max_secsz(void)
lba_t
scheme_metadata(u_int where, lba_t start)
{
- lba_t secs;
- secs = scheme->metadata(where);
- return (round_block(start + secs));
+ return (scheme->metadata(where, start));
}
int
diff --git a/usr.bin/mkimg/scheme.h b/usr.bin/mkimg/scheme.h
index 8224930..d594a19 100644
--- a/usr.bin/mkimg/scheme.h
+++ b/usr.bin/mkimg/scheme.h
@@ -62,7 +62,7 @@ struct mkimg_scheme {
const char *name;
const char *description;
struct mkimg_alias *aliases;
- u_int (*metadata)(u_int);
+ lba_t (*metadata)(u_int, lba_t);
#define SCHEME_META_IMG_START 1
#define SCHEME_META_IMG_END 2
#define SCHEME_META_PART_BEFORE 3
diff --git a/usr.bin/mkimg/tests/Makefile b/usr.bin/mkimg/tests/Makefile
new file mode 100644
index 0000000..144b4fc
--- /dev/null
+++ b/usr.bin/mkimg/tests/Makefile
@@ -0,0 +1,19 @@
+# $FreeBSD$
+
+TESTSDIR= ${TESTSBASE}/usr.bin/mkimg
+
+ATF_TESTS_SH= mkimg
+
+SOURCES!= cd ${.CURDIR}; echo *.uu
+FILES= ${SOURCES:S,.gz.uu,,g}
+FILESDIR= ${TESTSDIR}
+
+${FILES}:
+ uudecode -p ${.CURDIR}/${.TARGET}.gz.uu | gunzip -c > ${.TARGET}
+
+CLEANFILES+= ${FILES}
+
+rebase:
+ (cd ${.CURDIR}; atf-sh mkimg.sh rebase)
+
+.include <bsd.test.mk>
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-apm.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-apm.qcow.gz.uu
new file mode 100644
index 0000000..0f8ec4e
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-apm.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-apm.qcow.gz
+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
+C_<;GUYW3^9TG\$_^B:^_O+G_G]O!YMO@3_\'*;=.DB.F````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-apm.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-apm.qcow2.gz.uu
new file mode 100644
index 0000000..0caab8b
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-apm.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-apm.qcow2.gz
+M'XL(")T[(U0``VEM9RTQ>#$M-#`Y-BUA<&TN<6-O=S(N;W5T`*V826_;,!!&
+M[_D53/>F32K.D)35/9N!'@JD#7H.O,A`@"Y&&J`7__A2ULB4J1DQ-N0(1@SB
+M>Q@/GT>FLZQ^*&6U,DZ90BVFRK^F"U3KQ?:E5M_&7T[:C]5!#=.9D&(6#&YP
+M6ZSS@`,)E^GN@N9QK>J0P4&3ZH)2."-6U[?`X(X.UJU;;\8H2N`^P!HG;L9>
+M]4%=7YPP>]8'0]>'?/]LDXL77']]6-<7IW()-TKB@$D5$FZ2Q"&3FDJX61)G
+MF-1<PI5)G&52"P&G$ZIXG&-26L)!$I<S*91P)HD;,2G).YWVKF!2DG<Z[=V$
+M24G>Z;1W4R8E>:?3WLV8E.2=3GLW9U*2=R!XIP*N9%*2=Q!Y=TBX1P&W8%*2
+M=Q!Y]YAP3S8XS:4D[R#R[BGAG@4<,^]`\@XB[YX3[D7`,?,.).\@\NXEX8X"
+MCIEW('D'D7>O"/<ZX)AY!Y)W$'EWW/%.,_,.).\P\NX-L;*`8^8=2MYAY)TF
+M'`0<,^]0\@XC[Y!P)N"8>8>2=QAY9PGG`HZ9=RAYAY%W.>%&`<?,.Y2\P\B[
+M@G!O`XZ9=RAYAY%W[PCW/N"8>8>2=QAY]X%P'P..F7<H>6<B[SX1[G/`,?/.
+M2-Z9R+M3PIT%'#/OC.2=B;P[)]S%!@=<:N-=EO$7X2X[GUD8]ONG"=^/-?,L
+M+_0`1[L`^RJL<<6@;]C6;]CO@(5PCLK6=\A1+_#R>X4YW*[/#GT@L+4P?C*;
+M>2>'TH'/+ZRNOC+]L[4P_N/@IZF_W$PY^Z#Z3I?+GR6#DT^WNQ^G/`Z[U=G%
+M^G\O2PXJ-\H5].P6RI75,E5WLYS<W=_>W_[Y?=/@JANDFU?A?)?J?DV6;'5V
+MX+TU#]S;YGX!!-S>6]749X9VSZRWPU6-]QOA+S\N+593SG_-4-96:Q:[P/%=
+M69Y=7QS_&%^W^V>&_;'!^A-5NG_0ZE_](6GW3[7K<T/WS_7V+T>5YXR;H7]_
+J_]4B-O4-W#^=4?_\2;W[+"^LKDZV_VJ@(>!@%1I73>>#_Z4*H1'E$P``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-apm.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-apm.raw.gz.uu
new file mode 100644
index 0000000..3f148c0
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-apm.raw.gz.uu
@@ -0,0 +1,12 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-apm.raw.gz
+M'XL(".W%'50``VEM9RTQ>#$M-#`Y-BUA<&TN<F%W+F]U=`"MD\UJPS`0A.]^
+MBNFU4"/)*RD]MK2Y%4)#S\'4#@3:Q*2!7O3PE2*)R#\)+FB]"(ME/\:S:\9\
+M`"0A!9A-%E)PL`4N]T'"O+Z7-N[*&*;P,,YN=%W'E8,PQ;T'"E>6#-2,^JH4
+MR/L%LWH;`CW.Z2,.S5RJ3R@Y2]]3UWVU$SB1ZW,]KAJKD]OS.P>T@":HQW"J
+M+53KRD'=IJN/I]UI=]AO(HXL3C6N6?]'W7?=3:J3F6=+,V>[B$L9@/W9(NJC
+MW+M'YW$H9[P=A$T2D!6((!HK7+J:O8^`RV/;/J]?'CZ6Z]0_HLSZU`S_1.*?
+M_TE2_Y#J4[G]4S?]TQ6TGMC-BW\_OWX1H[[,_G$6_&/UQ'F]8%9E__%`"L!L
+."DDX8/$'F8$ZXZ<%````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-apm.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-apm.vhd.gz.uu
new file mode 100644
index 0000000..3245790
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-apm.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-apm.vhd.gz
+M'XL(".W%'50``VEM9RTQ>#$M-#`Y-BUA<&TN=FAD+F]U=`"M5EUOVR`4?<^O
+MN-+>*BT"#+A[7-7F;5*U:L\M<W`5:6VC)M+ZD!\_+A\!V^`F&0Y!6/@>#N=^
+M`"'N`9`-R!ZD!BEPW'*0WZ"]!C"3OC';4_\*A^[M57?[S<?2/X>%`Z,DM1J:
+MHSUK@)M%6F`*%Y%K',,AP"R_W#U?;5Z>`QSS<&%A+H$S$`:$3]:1Y,@.D58W
+M#[<6\BFR:Z;LHI7Y_^9`.%":?-$$=D]'CD<X;JSZWK86E+(T0QN\#";B9D=P
+M@HRL$IHY49/-YN#DG-4Y<%<+[PL7*B8P6M,;Z2BT#,<F;((.DV9"Y6.W5>\[
+M/>+'"J$BC_SH9*XI;Y?Y4&'A8\^`8SC/;1<LRGX,EPF5_U)/#NVX'Q@1B`@3
+MS&Y_J%Z$@I2?I&1&\[(SBOP4\C.I*5A(=MN:SS9\]Q-AR-@=JN#=B_7K<-ID
+M"%_GHB*^C'/W_D<V7#KDQRF&,49RAS%\"K_OV^T?G8%CM;;KX)HI.]'[G+-)
+MYTJT[5WI%GU@]VBR;;_9;]Y>'P,<%BHLM1;Q='8O:IME)RK[5I_HV^LD3\C$
+MMQ#XZ=JQIZT[)`J/)Z2(9Q!;&^("Y\S[!'#UKK4YA;[^6CVD^FE>EQ\E)^C'
+M$OU<DJ3ZI;6%E@[QR_G-ZH>'29N)S:C?[J\+Q,"OMG[*ZT=4IB]/'.Z7PY\#
+M9+Z85JO.+%:_.@RY!ZS&D,<<KL60ZEEGGNMEZ1E6NNK*<I6YY*J+<!6ONM*7
+CK*(5.>NJ*WW)JG351;B*5UV$JWK5E;:@+OX!7ZN]MA\-````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-apm.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-apm.vhdf.gz.uu
new file mode 100644
index 0000000..3e83de7
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-apm.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-apm.vhdf.gz
+M'XL(".W%'50``VEM9RTQ>#$M-#`Y-BUA<&TN=FAD9BYO=70`K571:L(P%'WW
+M*R[L35A)DYM;][@Q?1O(9,]:;2N%J<4)VT,_?DF3V-16<2/I)23<YO3DG.26
+M,=,`4(+DP%0P&Z+IV_E%0#U]CU1CD6OUR(#%MU9=AXLN6CT:&T"NTY(!9KUU
+MP@>,NXEZ_G8):.`T/XPA83IH`R3OXO=<59_Y`!P/M5T#)_KL9-&,8X"$0X)`
+M3[:G`BC7:<MN6:7'4WDJ#_NE@T,%1YE>G/R%W2ZM!MG)P-[BG=Y.[(!;P*ZW
+MX/AAZ+.'C1VDA5=&J$`.4@`B\$P1ESJGYCW`V3'/7Q:OCQ^SA:\?8F!^=(=^
+MW-//7!)?/_#Y46C]Z*9^B8`D&3B;K7Y?W^8@.GZ!]8N9U8^E`_WU1#V/NH\!
+M1`L8C"'9ZDS"WG4MHG`U8.(#\M;>!G!SV.>;4_GCWV"RU;DHAD.OYT+_"R@!
+MGC8E)M-CC]_#=#LN=UL'YZJ?^[#R^FSQY2ZIN]V9,KB!7+7L1%\D\M5;(S"$
+M..YLW+);^>H9.#QO-B]@+1N:+CJ33F*P-FNXIOKY+__76P-'@8^*^E&.?@&@
+'6R\`T@<`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-apm.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-apm.vmdk.gz.uu
new file mode 100644
index 0000000..4b6923a
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-apm.vmdk.gz.uu
@@ -0,0 +1,82 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-apm.vmdk.gz
+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
+J^HSK5Z2^?N[^SD_^O__"^</%]K\U8>X3FJTP=S>?35_]'S/@3HZ37@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-bsd.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-bsd.qcow.gz.uu
new file mode 100644
index 0000000..e9033f4
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-bsd.qcow.gz.uu
@@ -0,0 +1,125 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-bsd.qcow.gz
+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
+D_.\5P>Z'6?[RW!Y^U!_X]J^W]_^Y&QQ^#/[Q_[+N5S>!I0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-bsd.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-bsd.qcow2.gz.uu
new file mode 100644
index 0000000..34b715e6
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-bsd.qcow2.gz.uu
@@ -0,0 +1,21 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-bsd.qcow2.gz
+M'XL(")X[(U0``VEM9RTQ>#$M-#`Y-BUB<V0N<6-O=S(N;W5T`*V8VY+20!"&
+M[WF*6<^NBIGN24@\K+KK6N6=WN@UL/`4/+P;ILDDG?XS2`52J:*&_ZN>S)=F
+M0E'$EW.E=Z%RH7'[C7O\+`>YWH?AX0Z_?_Q<]E^'183Y`J2,@<`=;L"Z2SA"
+MN,*/![R-ZU7'!HY.J3$HAPNPNJD!`W>].%ZZXV+4*L&7`",.+L9%]5&L3R?"
+MA?71W/6Q??W*4TX/5-/U<:Q/IU8(5V=Q9*0:A%MG<6RD-@BWS>*"D7I`N%T6
+M5QJI/<#YC"J/N,I(>82C+&YEI!CA0A97&RGDG<][UQ@IY)W/>[<V4L@[G_=N
+M8Z20=S[OW=9((>]\WKL'(X6\(^"=2[B=D4+>D?+N2G!/$FYOI)!WI+Q[*KAG
+M'<Y;*>0=*>^>"^Y%PAG]CI!WI+Q[*;A7"6?T.T+>D?+NM>"N$\[H=X2\(^7=
+M&\&]33BCWQ'RCI1W[T;>>:/?$?*.E7?OA54DG-'O&'G'RCLO.$HXH]\Q\HZ5
+M=RRXD'!&OV/D'2OO2L%5"6?T.T;>L?)N);@ZX8Q^Q\@[5MXU@ON0<$:_8^0=
+M*^\^"NY3PAG]CI%WK+S[++B;A#/Z'2/O@O+NB^"^)IS1[P+R+BCOO@GN-N&,
+M?A>0=T%Y=R>X[QV.K%3G75'8A^#N1_<LS;O_#&E_[(TS'I@`UO\#G*HPXII9
+M)US&";<:K(TS'CC<+H?O#GA<X7+5KFI9N9K.K?#O_9_QA,L95SCB\..H#'0%
+M^W-PQ\?1WC?K_N8"#@PW%U<)-_DXVNZQ=]8`K*Z<61:J5:Z_SJ[9'Q]23MU=
+M;<VZ]76I/D-F&DQWHCXWGF[[J]$]W:E5;'&4F:X;XC:3:SM=W=6XNNW,B\'Z
+MSCCSSFTAPSLWXFC>1D#Q?ZFB_=;XC`<.OY;#=P0&`<YV!4/5]K[%/SE0:JE#
+#$P``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-bsd.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-bsd.raw.gz.uu
new file mode 100644
index 0000000..d48f343
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-bsd.raw.gz.uu
@@ -0,0 +1,10 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-bsd.raw.gz
+M'XL(".[%'50``VEM9RTQ>#$M-#`Y-BUB<V0N<F%W+F]U=`"ME,$.@R`,AN\^
+M1;WN0$J%Z:Y+=M]I.SNS/04//U!4*@-=0C$DI.V7O]2".!F`(L#^QYYVF*O@
+MRU2G:J21`^H6E`9]ALZ&X_JQ`W.8Y^TA0C,>)W-9:9S8V(RC/=PB6![!-2XK
+MB+1J22ZXE&/"U9Y5KSB54V<1^/ZK6%WJ[N;>=IN\L,^`'\`!L/,^XL"EO[#J
+MN\0RB)6;T0=QN;W#M3Q>!CC:*1<X[I7M;5Y=':L;"C>CV4[&P<EU$#ZY$X[*
+C/@0TOBSV#[11\9YVF+O@:P(J#RQV@XH<L/H"TT^@ZP4%````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-bsd.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-bsd.vhd.gz.uu
new file mode 100644
index 0000000..1c0e8d7
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-bsd.vhd.gz.uu
@@ -0,0 +1,17 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-bsd.vhd.gz
+M'XL(".[%'50``VEM9RTQ>#$M-#`Y-BUB<V0N=FAD+F]U=`"MESUOPR`0AO?\
+MBI.Z98C@C+&[1DWG2I7:-8YC1QGZH29#!O_X<C;88(R3M-@$8<$]O'<<B##6
+M/0`R`5F#K$"FU,X$R$?(<@#5J0NV-=>?T)1?GU5Y/EY6^FD6'8PSV\HU)WM,
+M0*A),L"")I%[:D-C,*N'S6%Y_#@8'&J<F5A($`BI@@AO'LEZ=41Z7K\^M<CM
+MH"[QU0U6ZK<3P`1P;HU(C+IMK[''"655UVW)H"A:F:8X'T['X.P(E[*1E25S
+M*JB6LU,X.6=U#VZYT&O1I8I*C$S5*G0<,J2V2AL3!Z^H5+F<OHN?4S72AX%4
+MD;T^[O4E87=1IPJ:P5J!H'2><Q=:RGF,FTB5?T5/NG9"-U006&HZL'7?C=Z`
+M`EN?Y&PFYN'%".HK2)_:6ZR8J,,=S7KEOCVP)&":T79/)>1X:P3?-V]3ZUL&
+MTN6/NZ/$:[A>,+\%E^B]:U&2`1?JZ'!,L]B`$W/J*&>JNYQ-(R=SF8_L['4&
+M7@/?`\NMK+:`_?K"H._1EX&.NS/ZP'>W(%SFCN<6#J^X"RYN-[NV\^J8KZZ,
+MO!C[\<ZX<><2Q-VY'0[C'@38GBPJ`]4HOPYW-"\K]^V`J(^J:&<?FJ,JED*A
+M@=$4*F`562%6L\EV;Q9*K3#219)P$2^2A(MXD21<Q(LDX2)>)`D7\2))N*@7
+02:G^(C"V^`74/'YQ?0P`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-bsd.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-bsd.vhdf.gz.uu
new file mode 100644
index 0000000..6660765
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-bsd.vhdf.gz.uu
@@ -0,0 +1,13 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-bsd.vhdf.gz
+M'XL("._%'50``VEM9RTQ>#$M-#`Y-BUB<V0N=FAD9BYO=70`K91-;X,P#(;O
+M_`I+N_6`DI`8>JW6G2=-VJX%"E4/W2X[[)`?OQ@"Q'RUFPA1!'+\\-I.+$0[
+M`+0"D<^LRP9[B/ECHUW4T!0!30K:@$'(W'8Q3/;!#/;C^!Z'PWJ<7/-:QL6C
+MT>'4/5PO6#Z"2\A+,DHRX)8,+4YXEAAP>DV=RX2H_A2LV2IW76VSD5]89Y`U
+MR#.(S-L4!_;UA4'??BI#L7!7],$TW)QP*=\O`YRZ$RYP7+%:VW5U8JJNW+@8
+MR?AF/'AS"<)O;HM3VS8"U706=P+=KNFZ;+"O,7]:H/;`S3*(OO=A`E@#5H"&
+MWE,-N(<T"X&*GR1;?GU6Y??U)ZPPX:@@=3T_R5\E=%LP!9733_!,[X&^I^-E
+M=[U=.ES7JKH?:Z2D&P?1DW"1A_MR>'MND*=!73)-$H;9*S0(#5*RP+VZ$S_.
+IA--]L%4-A6ED=I-],,-LJR*<$2.O_]:VQ>'&1\4=ON@7D=A:0S`'````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-bsd.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-bsd.vmdk.gz.uu
new file mode 100644
index 0000000..ac4864b
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-bsd.vmdk.gz.uu
@@ -0,0 +1,81 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-bsd.vmdk.gz
+M'XL("._%'50``VEM9RTQ>#$M-#`Y-BUB<V0N=FUD:RYO=70`K9S=;]O*$<7?
+M\U<0SDO0!X%'_'X(T*9.@:(H$-Q<W/M:\:LQFL2!;10-H#^^7'+/^M`RO<3U
+M.'+$C69&.[/2V/G-@=)T^4J2O$WR/,G[I"B3%,GT3\LM2;/'Q70[UGS@_(_K
+M?_YVX->[P^'\9@D&YR4N2#6<+%;/<SX\^6*XXTM>JP>FVS$:+G->[86C#W?<
+M>&`S7#X]>'S.A;L[S0_W[D+")2%0L@I7/)/39K(O[>Y/;WSQW/XRMX?I>,LF
+MJ;*D;/TR*8MYG275<7XL3:K):)P"ODVN;^[_DUP/]]W=S8^'6[^_HSO;R3@O
+MG7W9N0A38E7I+MP#+ESC0I1#DO5)!O=P<K[[V\W7X?#?X>[^YO;[>S#=HSO;
+M/$ORQFW'V:>/M]7"/4F:E'#/D9S_^O?K]_Z5FQY^G.X8SGE-&YF>>\I#XY9E
+MXKXO;_/NAN\/+N+HO\+NW-GZXA3S<^?NHLB3JDGF[10N]G%ZN/<IS[7K[H;3
+MP_#KSQ_#^ZMOM]]#[=S9NI(U<Z!Z+E26%)D+Y5-SY2M<1/>RF4\M.7^]>?AR
+MTWV>TKP?K@YO$X8K7>VF`ZS]OI:L)Y=R\V2G;9\__N]ARC?I_<G>,-R\B3F)
+MZ;F+8U)4+M9T@/-1'),L=U?3/TT;GC+)X8R2\^WWPR^_3V]Q5ZS/G_[R"\/5
+MD]=D.6UP<ID26N54+/D73U^6R?GSQ^3*)?GKEV%^!3)<L[S-G/%R#IB71W?A
+MJ[:$=TTL=P_,)YM<GQY.R8?3_7!X>WW](9SLR26;S[=I:X.+4BZAW>M[+N=4
+MN.6DEX.>CZ+OV\.I/_UX&.[<\8:C:%V)>I^I.];\\1C7SU/-)S6Z5TQR?I]<
+MW?33F;JP_QYNOS%<M[R,IWVXET0S.V;N8GKUS.$'_PS+*\8=DPLW/-S]/'0_
+MO]Y\[Z<W6O*>X?JE=M-VEM-\/,SI`*<=/KO!J797\ZF&[3'<X';77VQP/D]?
+MR+"I\+3)^=N\O2_#J9^V-L5FN-'M[OC\/GREGCS5%#TY/U9MCGOOPV6I;P&9
+M;V6K$H7M+$\H#73H'F[OEHU=23_.GOXL>VT_SB]^I%9_,.`2SGI_9?KDYUFF
+M?KDLBE5`]U,LG;[_/'U_>MQ?Z?97BF6E7K4LFE6X?TTA?ERF6[IWX4DL6_7J
+M9-'OJ5[I6ML@EN/3ZO%7#<CU=CC^+D#+3+UR612K<%NU*WSM:%FI5RV+9A5N
+MJW:EKQTM6_7J9-'O2K;RM:/EJ%[NCK]*(=WQ:UE9^]K1,E.O7!;%*MQ6[1I?
+M.UI6ZE7+HEF%VZK=R=>.EJUZ=;+H=R7;^MK1<E0O=\<&`;G>#M?YVM$R4Z]<
+M%L4JW%;M>E\[6E;J5<NB687;JMW@:T?+5KTZ6?2[DAU][6@YJI>[RZ5V>2Q<
+ME?K:T3)3KUP6Q2K<1NTJ]CM:5NI5RZ)9A=NH7<5^1\M6O3I9]+N29;^CY:A>
+M[JZ0VA71<.QWM,S4*Y=%L0JW53OV.UI6ZE7+HEF%VZH=^QTM6_7J9-'O2I;]
+MCI:C>KF[4FI71L.QW]$R4Z]<%L4JW%;MV.]H6:E7+8MF%6ZK=NQWM&S5JY-%
+MORM9]CM:CNKE[OA+$.1Z.QS['2TS]<IE4:S";=6._8Z6E7K5LFA6X;9JQWY'
+MRU:].EGTNY)EOZ/EJ%[NCD`&<KT9KDY][6B9J5<NBV(5;J-V-?L=+2OUJF71
+MK,)MU*YFOZ-EJUZ=+/I=R;+?T7)4+W?72.V::#CV.UIFZI7+HEB%VZH=^QTM
+M*_6J9=&LPFW5COV.EJUZ=;+H=R7+?D?+4;W<'?__!+G>#L=^1\M,O7)9%*MP
+M6[5COZ-EI5ZU+)I5N*W:L=_1LE6O3A;]KF39[V@YJI>[(W^$7&^'8[^C9:9>
+MN2R*5;BMVK'?T;)2KUH6S2K<5NW8[VC9JE<GBWY7LNQWM!S5R]UU4KLN%JY)
+M?>UHF:E7+HMB%6ZC=@W['2TK]:IET:S";=2N8;^C9:M>G2SZ7<FRW]%R5"]W
+MUTOM^F@X]CM:9NJ5RZ)8A=NJ'?L=+2OUJF71K,)MU8[]CI:M>G6RZ'<ERWY'
+MRU&]W-T@M1NBX=CO:)FI5RZ+8A5NJW;L=[2LU*N61;,*MU4[]CM:MNK5R:+?
+ME2S['2U']7)WH]1NC(9COZ-EIEZY+(I5N*W:L=_1LE*O6A;-*MQ6[=CO:-FJ
+M5R>+?E>R['>T'-4KE>D9Y'HSW"E=:A<L,_7*95&LPFW4[N3[7;"LU*N61;,*
+MMU&[D^]WP;)5KTX6_:YD?;\+EJ-ZN9()OT,4:9U\OX/P.RB_@_`[1/G=R?<[
+M"+^#\CL(OT.4WYU\OX/P.RB_@_"['<GZ?@?A=U!^!^%WB"*MD^]W$'X'Y7<0
+M?H<HOSOY?@?A=U!^!^%WB/*[D^]W$'X'Y7<0?K<C6=_O(/P.RN\@_`Y1I'7R
+M_0["[Z#\#L+O$.5W)]_O(/P.RN\@_`Y1?G?R_0["[Z#\#L+O=B3K^QV$WT'Y
+M'83?(8JTVM373O@=E-]!^!VB_*YEOQ-^!^5W$'Z'*+]KV>^$WT'Y'83?[4B6
+M_4[X'93?0?@=HDBK9;\3?@?E=Q!^ARB_:]GOA-]!^1V$WR'*[UKV.^%W4'X'
+MX7<[DF6_$WX'Y7<0?H<HTFK9[X3?0?D=A-\ARN]:]COA=U!^!^%WB/*[EOU.
+M^!V4WT'XW8YDV>^$WT'Y'83?(8JT6O8[X7=0?@?A=XCRNY;]3O@=E-]!^!VB
+M_*YEOQ-^!^5W$'ZW(UGV.^%W4'X'X7>((JTN];43?@?E=Q!^ARB_Z]COA-]!
+M^1V$WR'*[SKV.^%W4'X'X7<[DF6_$WX'Y7<0?H<HTNK8[X3?0?D=A-\ARN\Z
+M]COA=U!^!^%WB/*[COU.^!V4WT'XW8YDV>^$WT'Y'83?(8JT.O8[X7=0?@?A
+M=XCRNX[]3O@=E-]!^!VB_*YCOQ-^!^5W$'ZW(UGV.^%W4'X'X7>((JV._4[X
+M'93?0?@=HORN8[\3?@?E=Q!^ARB_Z]COA-]!^1V$W^U(EOU.^!V4WT'X':)(
+MJT]][83?0?D=A-\ARN]Z]COA=U!^!^%WB/*[GOU.^!V4WT'XW8YDV>^$WT'Y
+M'83?(8JT>O8[X7=0?@?A=XCRNY[]3O@=E-]!^!VB_*YGOQ-^!^5W$'ZW(UGV
+M.^%W4'X'X7>((JV>_4[X'93?0?@=HORN9[\3?@?E=Q!^ARB_Z]GOA-]!^1V$
+MW^U(EOU.^!V4WT'X':)(JV>_$WX'Y7<0?H<HO^O9[X3?0?D=A-\ARN]Z]COA
+M=U!^!^%W.Y)EOQ-^!^5W04P'N99PR?+MPPWI4KMG)>7/_%.H7?+L[@9C?2!F
+M?6"8*2Q9_;&`2SCK_87Y-F^OTB\BS+=Y>Y5^$6&^S=NK](L(\VW>7J5?1)AO
+MF^@7$>;;)OI%A/FVB7X18;YMHE]$F&^;Z!<1YMLF^D6$^;:)?A%AOFVB7T28
+M;YOH%Q'FVR;Z183YMHE^$6&^;:)?1)AOF^@7$>;;)OI%A/FVB7X18;YMHE]$
+MF&^;Z!<1YMLF^D6$^;:)?A%AOFVB7T28;YOH%Q'FVR;Z183YMHE^$6&^;:)?
+M1)AOF^@7$>;;)OI%A/FVB7X18;YMHE\$Y]LV^D5POFVC7P3GVS;Z17"^;:-?
+M!.?;-OI%<+YMHU\$Y]LV^D5POFVC7P3GVS;Z17"^;:-?!.?;-OI%<+YMHU\$
+MY]LV^D5POFVC7P3GVS;Z17"^;:-?!.?;-OI%<+YMHU\$Y]LV^D5POFVC7P3G
+MVS;Z17"^;:-?!.?;-OI%<+YMHU\$Y]LV^D5POFVC7P3GVS;Z17"^;:-?!.?;
+M-OI%<+YMHU\$Y]LV^D5POFVC7T28;]/R5?I%A/DV+5^E7T28;]/R5?I%A/DV
+M+5^E7T28;YOH%Q'FVR;Z183YMHE^$6&^;:)?1)AOF^@7$>;;)OI%A/FVB7X1
+M8;YMHE]$F&^;Z!<1YMLF^D6$^;:)?A%AOFVB7T28;YOH%Q'FVR;Z183YMHE^
+M$6&^;:)?1)AOF^@7$>;;)OI%A/FVB7X18;YMHE]$F&^;Z!<1YMLF^D6$^;:)
+M?A%AOFVB7T28;YOH%Q'FVR;Z183YMHE^$6&^;:)?!.?;-OI%#*;Z10RF^D4,
+MIOI%#*;Z10RF^D4,IOI%#*;Z10RF^D4,IOI%#*;Z10RF^D4,IOI%#*;Z10RF
+M^D4,IOI%C&EJJ%_$:*I?Q&BJ7\1HJE_$:*I?Q&BJ7\1HJE_$:*I?Q&BJ7\1H
+MJE_$:*I?Q&BJ7\1HJE_$:*I?Q&BJ7\1HJE\\IFEJJ%\\7GR6\,YPE\DN^L!\
+MWM_RZ:"7?V\_</YP6/\)`></V"TJ]T&G19G4Q[T[_/WC;\\DG!_-$E["77QX
+M\M-P8<,[/HLYGS]@5RU3_4#HS0>6<.]\K'>/X?*7=J=SBGW)&G]X<CY_B*W:
+MZCG/[Y+B<1[_Y+T1SC=YW%]SN8WC*MT7]I=<INN:J'Y\J)[BZMVZD6ZR#M>^
+M>+8O[^[=Y>XZX\.X^"C6G>]<%V3]SEW"'6T;03EWEF7X?_GW]@/G3X?UGR5@
+-/@=\\W^I>^KAH%T`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-ebr.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-ebr.qcow.gz.uu
new file mode 100644
index 0000000..0dfdc6c
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-ebr.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-ebr.qcow.gz
+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
+4^+>=X+`>O[_*/_X7*6^YQ%^G````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-ebr.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-ebr.qcow2.gz.uu
new file mode 100644
index 0000000..426de83
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-ebr.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-ebr.qcow2.gz
+M'XL("*`[(U0``VEM9RTQ>#$M-#`Y-BUE8G(N<6-O=S(N;W5T`*V76[/2,!#'
+MW_D4P<M1CXK-;E**EZ.>BS.^Z8/Z7"[]%'QXVV9IVNUN`TRAP\"$_V\VY)>E
+MR;+P,,9;XW+C-J;:FOHS76!Z'X:7.?[^\7/5?QP7`68S)24,..QP`]9#Q(&&
+MR^QXP,JX7G4HX."4&H-2.*=6-S4@X&X7[4_7+D;!$G@-,.#4Q;BJ/@CU\82[
+MLCZ8NSZ4?S]_RO&!?+H^#/7QU%K#%4D<"*F-ABN3.!126PVW2^*<D-IKN$,2
+MYX54I>!L0I4:EPLIJ^$@B5L+*=1P+HDKA)3FG4U[MQ%2FG<V[5TII#3O;-J[
+MK9#2O+-I[W9"2O/.IKW;"RG-.U"\,Q%W$%*:=\"\6Q+N6<150DKS#IAWSPGW
+MHL-9*:5Y!\R[EX2[B3BAWX'F'3#O7A'N=<0)_0XT[X!Y]X9PMQ$G]#O0O`/F
+MW5O"O8LXH=^!YATP[]Z/O+-"OP/-.V3>?2!6%G%"OT/-.V3>6<)!Q`G]#C7O
+MD'F'A',1)_0[U+Q#YITG7!YQ0K]#S3MDWJT)5T2<T.]0\PZ9=QO"?8PXH=^A
+MYATR[SX1[G/$"?T.->^0>?>%<'<1)_0[U+QSS+NOA/L6<4*_<YIWCGGWG7#W
+M$2?T.Z=YYYAW#X1[['`@I3KOLDR^"/<TVK,P[_VGB_?'5GC5!R:`Q27`J0H#
+M;C/KA'W8&Y<!JTJKSX>]47^AODI/;^HK3(_RMO<'+-2W[./V<T^WN@SHO2G+
+M$?#/J;Y6YV83E<*K/G"\7PV?77VN`?IULR=\;@HX=\+_GOY*R^%FVQ\!IQ_F
+M::`KV)Z#:P_SO6_VS=`'AK=FRXB;/,PW)Y2#-*!6YV=VSQ4LUU_G]FBUBV=0
+M=F/;K:^)]0FM``;3G:C/C*?;_.=V9V.VBNT")*9KAKCMY-I.5[<<5[>;>3$\
+MWQEG[MP&,MRY`0?S-@)H.TMM8/VM\:L^</RU&CX#T!%PME_0Y<U?Y>(_(V[D
+%[($4````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-ebr.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-ebr.raw.gz.uu
new file mode 100644
index 0000000..bbf6836
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-ebr.raw.gz.uu
@@ -0,0 +1,11 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-ebr.raw.gz
+M'XL("._%'50``VEM9RTQ>#$M-#`Y-BUE8G(N<F%W+F]U=`"ME,T.@R`,Q^\^
+M17?=P4`'TUV7[+[+MC.Z^10\_(KX`2*H"8!H4OK+O[:%,3L`Z%E=<8,N%T,7
+MYZ*G\>8PL.M6@1;7DA<=H*7D\$&+<0?'&2"/ZSNYN&_N<+MC0"E!J0#X&O6A
+M\1((3*WL<8.^E_Z<]`D#E!4("?(*->X-^/-XKZ5#\%S_S^)P"S<)YGMP%^/E
+MG'0K(V[0<YG8]X@3*76$8+]#P<K,M2?JA9^;9V#4)2VP>K"A#YSR"[.^6R@#
+MO7`3^B`,5QE<Y9_G#@XWP@4?UR1SFU9W"M6UF9,AEYVQLW,-Q.]<B\.\%P'V
+?-PM5()T*][A!/TM_6J`8@-G^H$`#+/YC5JB9E`8`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-ebr.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-ebr.vhd.gz.uu
new file mode 100644
index 0000000..6eb54df
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-ebr.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-ebr.vhd.gz
+M'XL("._%'50``VEM9RTQ>#$M-#`Y-BUE8G(N=FAD+F]U=`"METU3PR`0AN_]
+M%>MX\]"!#6S:JZ.>G7'4JVE,'`]^C'KPD!\O!$@@"=@H34J3@7WR[K)L*&/F
+M`T`%4`O4`$E]70J@/90[`-5I3^Q;;F^AJ]]>F_KK^7MK/]W&P#CSK4)S;8\%
+M"/60$K#2#Z%'?0V=PVQ/+Y_.GE^>'`XMSCU8$`@$J2!B]AQB@SI-NCJ_N>B1
+M#Z.Z8JYNM%+?@P`F@'-O1.'4/0P:!YQ05FW;GR5452_3G<%-T#$Z.\%)-K'R
+M9"X%U7-V"4<IJS6XLXV="Y,J*C%*U:K0<2A17ZNT<7&8G2I5OC_?JX_/9J(/
+M(ZE"@SX^ZROB[J)-%72#K0*ATSGE+O24KREN(57^%3T*[82]4$%@TG5@[WX8
+MO1$%OC[B+!'S^&1$]55)O_[@\.&P&AA1:'#UX'`E1X],DHS!1![7=^+C'G.[
+MVZX#2JDKQA1XZ_35VDJ5.E8MM/&.[GP;'H.^1@-EJ:NO)-CAL0[?7]XM34<3
+M6;WKXV=P^!MN$,R/P16VE+J1?F;$.[HQ3<ROPXF4.KV$FU7.RLRYU^PF=OX\
+M`U.KI`:VLWT8`H?YA5'??BX#`W<3^F#N;J5Q93B>>SC\Q5T(<8?DW*;5G<S5
+MU9DGHYVNC"-7KH:$*]?@,&\AP+ZRJ`Q4H^9MO*.[WH:'`:)]<V1[%:&M?=D4
+M"@O,IE"X8II/8<&2R;8V"\DJS+2OIWBY_\N^GKQRGV%?3Z[<QZS8JGT]V7*?
+<:5]/KMSGV==K7-9]/:E_;(QM?@!J8S.+#`X`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-ebr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-ebr.vhdf.gz.uu
new file mode 100644
index 0000000..f298a70
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-ebr.vhdf.gz.uu
@@ -0,0 +1,14 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-ebr.vhdf.gz
+M'XL("/#%'50``VEM9RTQ>#$M-#`Y-BUE8G(N=FAD9BYO=70`K96Q;H,P$(;W
+M/,5%W3)$MK$/LD9-YTI5VS5`(,J0=NG0@8>OC3'Q82"D,A@P.M_'?[ZS8<P>
+M`/H:;=.&9CLXFM5FU=)X\3"PKD>!%E=J+SU`MUQU'=T8]W"<@>#3^M8^[A0[
+MW/HQH%*0YP'PW>D3QDL*8/G(?=K0[+?T[/5)`U0I2`4*(1-+`_X\?(RE0_)8
+M\V=QXAZN%\R7X!+CY8WT*V/:T-S*Q#X=3LZITPA6/12LBEQ[,AOX^7D&IE=)
+M"2SK;(("^_S"3=\NE"%(N#/Z(`PW-[B4CN<>3MP)%RBNF,WMO+IUJ*Z,G`PU
+M7!D+5ZZ!T)5K<2+N1B#:G457H!X5WJ<-S>N6GA8H.V"T&<3N5X0)8`U8`2K3
+M3R7@#M+,!PI:24WY_565/Y=?/\,&Q_L_1]B,OTC,:L$41&X^@B?3]_0]'<Z;
+MR_7L<&ZK<A^6:"9=:8@,PD4:[LO^[;E%'F_JDG"2T)^]0@*3P#D)O%-WI.6,
+I[3[O@JUJ*%0KTS7R0@RC6Y7!*3;P^F]N+0XCEXJNO=4?V8%!.+\(````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-ebr.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-ebr.vmdk.gz.uu
new file mode 100644
index 0000000..4db541f
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-ebr.vmdk.gz.uu
@@ -0,0 +1,82 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-ebr.vmdk.gz
+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
+>=_S&];O3_L^6L/0)S3I8N@].R[_Z/_V4$^TO7P``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-gpt.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-gpt.qcow.gz.uu
new file mode 100644
index 0000000..a67e3eb
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-gpt.qcow.gz.uu
@@ -0,0 +1,132 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-gpt.qcow.gz
+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
+8Q"_BY[E'_2+>'HXWWOOM/_VP*B?UK```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-gpt.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-gpt.qcow2.gz.uu
new file mode 100644
index 0000000..c9d99d1
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-gpt.qcow2.gz.uu
@@ -0,0 +1,26 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-gpt.qcow2.gz
+M'XL("*([(U0``VEM9RTQ>#$M-#`Y-BUG<'0N<6-O=S(N;W5T`*V92V_4,!"`
+M[_T5+F]:6.)7DN51:$LK]=8BN'')\UB)*PK\=N+8B9/)3-PNWK6BKJSY9#O?
+MC)TT2>R',<V92IG:L[9D_6_7!)O]6#;6W5W?[.:?[LC">$)$(1U*3K@%Z]+C
+M!(5+^+J#X[C9Z"2"$V/4&A3"*7)T6QT([N1H6+KA9N0@0AX"M#CR9APT/F''
+M!R/4@>,3L<<G\?738QSL2+?')^WX8%1&X?(@3B!1>PI7!'$2B2HI7!7$*22J
+MIG!-$*>1J);`\8`J/2Y%HCB%$T%<AD1)"J>"N!R)HKSC8>_V2!3E'0][5R!1
+ME'<\[%V)1%'>\;!W%1)%><?#WM5(%.6=(+QC'M<@491W`GAW['!//*Y%HBCO
+M!/#NJ<,]FW`<BZ*\$\"[YP[WPN.0>B<H[P3P[J7#O?(XI-X)RCL!O'OM<"<>
+MA]0[07DG@'>G#O?&XY!Z)RCO!/#N[<H[CM0[07DG@7?O'"OQ.*3>2<H[";SC
+M#B<\#JEWDO).`N^DPRF/0^J=I+R3P#OM<*G'(?5.4MY)X%WF<+G'(?5.4MY)
+MX-W>X=Y['%+O).6=!-Y]<+B/'H?4.TEY)X%WGQSNS..0>B<I[Q3P[K/#??$X
+MI-XIRCL%O#MWN`N/0^J=HKQ3P+M+A_LZX006-7F7)'ASN*M5S@JDWJGT@;CK
+M-8Y^6#GD.*O\<9LC5[IC`Y@_'DCNM<J>4^)-6-L)&ZL*Y$IW=!>[Y7<"#KG[
+M".`XPB7.35C;W+4/C$W#VM8UNU(N.)\=$)`)'^]FN#KR^@WI]@B@UJPH5L`?
+MX_B&=.OSR[X;Z.W60S'0@FDUX8:YZFH^OJOK&W9[_NV[@?WTTQW2+2M8Q5F1
+MLP*.CE/3_8W9IVVZ92U<[1$G*=QT+`,X<[S(Z@T<UECWA\"IK:CII<,#[JW%
+MZ609-2];9ILH)6L+5M0$[@S@TLCF*=-=IBRK6-J8]TE5:_ZH4_.4QO(^3>RV
+M+88SUIYEW)S=>F!W?[>[M["WNU^G;GR*.R.P1G=0JZ>&RIQ3T\W\@P`Q7;;$
+M8:^1_FOU3%TN=;35VSM9L$9WD*M7V-7#%\FL'IHRW;AJ8\*-N#+NZG'["C,Q
+M]7M]I3NZV]WR:X'*`:.-4*5M%3$[#"YB=AA<Q.PPN*C988`1L\/@(F:'P47,
+M#H.+FAT]L$GB;>(&9]PK,E8+\YRX^'_!UG;<#8^/Z^DV8FOKW]C$\9O11-S$
+B#6YS$\\:>K+V\Q=,-N(F;G!1-W&5F>/WT3\!FKQU%1H`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-gpt.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-gpt.raw.gz.uu
new file mode 100644
index 0000000..c8adeb3
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-gpt.raw.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-gpt.raw.gz
+M'XL("/#%'50``VEM9RTQ>#$M-#`Y-BUG<'0N<F%W+F]U=`"MEC]O@S`0Q?=\
+MBI>U52W;V`262JW42MW2JMW:@3]FC-2=#U\?A@2(C1KIP$)(Q_UR]_#C(F4X
+M`*,AJ\@U'>B?Q?+L=W>[@:;JVX#^]ZF$%5!X8,`U/B@U/>,<NFY<4@U9(5E)
+M:#7>3SAQ.?9BAFO/6=<K'9CC1,!-[7:W`:U%55T!OZ;Z]/`Z+$P.4T+[YR6,
+M@M6PYHP;>K7-O+Z7US<<GSX^"?9]:5=[:5#[_!95!K<22:IDNS_K=@-.4U:W
+M5GO"94G</H[+**O=P,56&F>VLL(>^M^[#3@KEUG%/"MSJ#-T%:HV@7M<X7+F
+MG6<H7.<X-,@=K$+3T4V;0RF@\#8I!HB&]B66."CHFH#]Z5V<`NQ!_-Z/]1DU
+M[HC82@=2ZIEAJQ2I=@^TMS?;Q1*7<:M7D'J63;URW"RQE0XDU:N">G&12+VH
+M9?I)M<DA$Z[F54\-4\/[PW^_KZ_I0'\4RS,`S0ADJ]!H/S;XW$$X1G<0CM$=
+MA&-U!P$9W4$X1G<0CM$=A&-UAP<ZR3?$":?"F.Q:%!HN6]67&L>7^I;M.KTU
+F^C>&>/QE.,8A3KCM(>YN;99QB!..=8@;_W]*RMT?5F[7A(@+````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-gpt.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-gpt.vhd.gz.uu
new file mode 100644
index 0000000..6936b13
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-gpt.vhd.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-gpt.vhd.gz
+M'XL("/'%'50``VEM9RTQ>#$M-#`Y-BUG<'0N=FAD+F]U=`"MF$MOVS`,Q^_Y
+M%!QVZS#7DB79N0Q8L1;8K7O==JCER$4/RQ[IH1C\X2?*\D.VY"$M$]5(H/#G
+M/RF*8IWG_0M`%:!:4`:4Q,^E`+6'L@*PDWYP=V7^*W3-SZ-I'A^>,O_J=CV,
+MY7.KT!SM>0'"WJ0$7N--U`$_0S=@LM?7]Q<//^X''/>XX<9"@>`@+42L[J/R
+M41V2;JZ^?'#(NTE=L58W6=D_+2`7P-CL%\6@[F[4..*$M6I;-THH:[0=1_`E
+MF$#<WRQ;XV2^L)K)C`5UYFP,I[:LSL%=[/Q:]*EB$Z.T5QLZ!B7'SS9MACBL
+MADV5I].O^L_)+/3Q1*JH41];S15I=[E/%3[\V"L0F,Y;[H*C/"YQD51Y4?14
+M:#>LK@U"+H<)[MP/HS>A8*Y/L7PCYNG%2.JK49_=6WD=N:8GNJLL?(]`K<\#
+M#A$,<:/#NL'XN3IBS.11GR138(N-!<EG\=,'XO75[7E`*:&N5\!O@[[&+8=T
+M!6^/B6&+@V`@;?&;TMGY+INYONN;CW#[_O-7A'V?W&TP70X<J@::/;1ZH6Z]
+MT[9K2\/[[.-MU-DBB;N,XW"SM8<-7&RD<6++RA]E9S@K\]"JFEL5!G0!;0WU
+M(8%[M\!1UV6#TUI!V>`1+ADT[BP_*#S(H++;I'(0#MQ*M`>[/84U`KOCI^S8
+MP]YFO]]X?8;YC(B-]$0J>L;5Y2KE;CD5[(2[$.*HZ[*I,'J2+'I[GRRQD9Y(
+M1J_NHQ</$D8OMG7'4RW+7H4X31L]YDX-NS]L_5Y?TQ/=;1:^>R#WQQ#9N<9]
+M(253*#R03*'P^Y=0(3.;BWGN*BN_*$05!G&$%09QA!4&<:05!H&$%09QA!4&
+M<805!G&D%4;1-D+*-T)%!8;A/RXZS)IT2]-5V:D7=AFXZQJA9/NTT0C%%X.R
+M$5+_:X1:DW)VY"R<)6R$%'4CI'PA)7J6H89&:*WA.<\RU-`(S6[\@F<9*MX(
+>/?=9!N((GV4@CO!9!N*(4X79WF7W#]HOQ!D`$P``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-gpt.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-gpt.vhdf.gz.uu
new file mode 100644
index 0000000..0c18ed8
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-gpt.vhdf.gz.uu
@@ -0,0 +1,19 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-gpt.vhdf.gz
+M'XL("/'%'50``VEM9RTQ>#$M-#`Y-BUG<'0N=FAD9BYO=70`K9<[;]PP#(#W
+M^Q4LNJ6HH_?IE@`-F@#=TD>V#O%#"C+DBJ(=.OC'5Y3LL^23C%XAFS!TH/F9
+MI$G11T@X``0#TF:N9<5XVZ3GN+O:>1KM+@.ZYZ,+*V#C@`'7.R5A>(\Q8.TD
+MA'JK8.R$DV7M<<URD";"#;'52LJ*&-<$W!RNO0PH);3M&?!Q]H_YUR%!*!`'
+M8.Y^`H*"9"#%">=CEWWLW]W])WCX\.4;PKXOX3+JE`,#W4-_`-NMO*/_'F[`
+M.8<P^\QF@^5%W'4>QQ$W;.!R4L:)+:M00Y<$*TEJI6,K;J#C8%MHAP+N9H53
+ME2M/H+I3L.]!&9`4>HN+00&E`-JUB?80!LRY>(`]!=8A<#Q^;HX!]K[Y^6[R
+M3]"I(G)25I2R)[!4B"Z%N\?:W@P74AROG3V-V9/5LG>8BB4G944Q>VW(7CY)
+MF+U<ZSK<E+7F38KKZF:/^JGA^L/MW^?7LF)\:-(S`,4$K.:AM+:OV!V(J]@=
+MB*O8'8BKVAT(K-@=B*O8'8BKV!V(J]H=#FA(O2&..*P]KL%0V'/HTJHIC^-1
+M-[^"8]=)N(9MC?Z-(9Y_&:;B$$?<YA"WIA3LB;,*MN(01US5(:ZFSV_%0?G^
+M4A+7>P'*M92.@6RI&0_L?QQ-__OE3YP]Y7=F6#Z25X+VC&-A*M<B+3Y$#;B.
+M_'M[]WSU\OH\X]@4U?Q@K&A7Q0XBSL)5:;CWMU\_>N33XEUFFU)Q]CH!1.`6
+M$P<^>?>4EHKR7T!SL,:"EFA[DN1'HL@6,N)\J<0W_^^[#;C:I>+^&NS^`N3M
+&#A:S#0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-gpt.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-gpt.vmdk.gz.uu
new file mode 100644
index 0000000..782cb6c
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-gpt.vmdk.gz.uu
@@ -0,0 +1,87 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-gpt.vmdk.gz
+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
+G,1A>Q#W<DQ?Q<4@FRY\'R1I>Q#V<Z46\\'?OS#[Y/TT579ZT90``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-mbr.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-mbr.qcow.gz.uu
new file mode 100644
index 0000000..40c4fb3
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-mbr.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-mbr.qcow.gz
+M'XL("+`S(E0``VEM9RTQ>#$M-#`Y-BUM8G(N<6-O=RYO=70`K9W+CAM)DD7W
+M]174^RW1S()DA-YH8`:87<]B9K;%YYH?H(\?E13AGFD\5U;=5:I$08(4%Z3G
+MT1&ZZ\ASO?[Y;;7:V&K8KH9I=3FLOO]X_K#5G1_<_UA]^^___*^W=[]]^^WG
+MF*U_\53Z\>"KF.?N;?UCW>;\CZ>.J_7T)^:^?QC-W7EU\2^\NCMO]G;NY6\_
+MWRP_YVKP_MM=S7/+VS5Q>L.?>WU?T]NUGZ?W][U=%V]WHP:W]P;_.<_]/K\^
+M%V]WI^;&>W/7]'9=O-U)S>U_"8L+6`YJ[EC,#?C42<V=B[D-/G7A.?O%Y_;G
+MW!:?,C7G.+=J<SM\*M3<<&]N_78!>ID;\2G!G97<3?B4X,Y*[O;XE.#.2NX.
+M^)3@SDKNCOB4X,Y*[D[XE.#.2^[.^)3@SDON+OB4X,XK[HR?$MQYQ9V1[UQQ
+MYQ5W1KYSQ9U7W!GYSA5W7G%GY#M7W'G%G9'O7'$7%7=&O@O%753<&?DN%'=1
+M<D>^"\5=E-R1[T)Q%R5WY+M0W$7)'?DN%'=1<D>^"\5=E-R1[T)Q-Y3<D>\&
+MQ=U0<D>^&Q1W0\6=\U."NZ'BSLEW@^)NJ+AS\MV@N!LJ[IQ\-RCNAHH[)]\-
+MBKNAXL[)=X/B;E-QY^2[C>)N4W'GY+N-XFY3<D>^VRCN-B5WY+N-XFY3<D>^
+MVRCN-B5WY+N-XFY3<D>^VRCN-B5WY+N-XFY;<D>^VRKNMB5WY+NMXFY;<1?\
+ME.!N6W$7Y+NMXFY;<1?DNZWB;EMQ%^2[K>)N6W$7Y+NMXFY;<1?DNZWB;E=Q
+M%^2[G>)N5W$7Y+N=XFY7<D>^VRGN=B5WY+N=XFY7<D>^VRGN=B5WY+N=XFY7
+M<D>^VRGN=B5WY+N=XFXLN2/?C8J[L>2.?#<J[L:*NX&?$MR-%7<#^6Y4W(T5
+M=P/Y;E3<C15W`_EN5-R-%7<#^6Y4W(T5=P/Y;E3<+?_WMYXCWTV*NZGB;B#?
+M38J[J>2.?#<I[J:2._+=I+B;2N[(=Y/B;BJY(]]-BKNIY(Y\-RGNII([\MVD
+MN-N7W)'O]HJ[?<D=^6ZON-M7W&WX*<'=ON)N0[[;*^[V%7<;\MU><;>ON-N0
+M[_:*NWW%W89\MU?<[2ON-N2[O>)N^<^0>HY\=U#<'2KN-N2[@^+N4')'OCLH
+M[@XE=^2[@^+N4')'OCLH[@XE=^2[@^+N4')'OCLH[@XE=^2[@^+N6')'OCLJ
+M[HXE=^2[H^+N6'&WY:<$=\>*NRWY[JBX.U;<;<EW1\7=L>)N2[X[*NZ.%7=;
+M\MU1<7>LN-N2[XZ*NU/%W99\=U+<G2KNMN2[D^+N5')'OCLI[DXE=^2[D^+N
+M5')'OCLI[DXE=^2[D^+N5')'OCLI[DXE=^2[D^+N7')'OCLK[LXE=^2[L^+N
+M7'&WXZ<$=^>*NQWY[JRX.U?<[<AW9\7=N>)N1[X[*^[.%7<[\MU9<7>NN-N1
+M[\Z*NTO%W8Y\=U'<72KN=N2[B^+N4G)'OKLH[BXE=^2[B^+N4G)'OKLH[BXE
+M=^2[B^+N4G)'OKLH[BXE=^2[B^#.EN_H.?"=K05WMBZY`]_96G!GZXJ[D9]B
+M[JSL[T;PG:G^SLK^;@3?F>KOK.SO1O"=J?[.ROYN!-^9ZN^L[.]&\)VI_L[*
+M_FX$WYGJ[ZSL[T;PG:G^SLK^;@3?F>KOK.SO1O"=J?[.ROYN!-^9ZN^L[.]&
+M\)VI_L[*_FX$WYGJ[ZSL[T;PG:G^SLK^;B3?J?[.ROYN)-^I_L[*_F[BIP1W
+M97\WD>]4?V=E?S>1[U1_9V5_-Y'O5']G97\WD>]4?V=E?S>1[U1_9V5_-Y'O
+M5']G97\WD>]4?V=E?S>1[U1_9V5_-Y'O5']G97\WD>]4?V=E?S>1[U1_9V5_
+M-Y'O5']G97\WD>]4?V=E?S>1[U1_9V5_-Y'O5']G97^WYZ<$=V5_MR??J?[.
+MROYN3[Y3_9V5_=V>?*?Z.RO[NSWY3O5W5O9W>_*=ZN^L[._VY#O5WUG9W^W)
+M=ZJ_L[*_VY/O5']G97^W)]^I_L[*_FY/OE/]G97]W9Y\I_H[*_N[/?E.]7=6
+M]G=[\IWJ[ZSL[_;D.]7?6=G?[<EWJK^SLK\[\%."N[*_.Y#O5']G97]W(-^I
+M_L[*_NY`OE/]G97]W8%\I_H[*_N[`_E.]7=6]G<'\IWJ[ZSL[P[D.]7?6=G?
+M'<AWJK^SLK\[D.]4?V=E?W<@WZG^SLK^[D"^4_V=E?W=@7RG^CLK^[L#^4[U
+M=U;V=P?RG>KOK.SO#N0[U=]9V=\=^2G!7=G?'<EWJK^SLK\[DN]4?V=E?W<D
+MWZG^SLK^[DB^4_V=E?W=D7RG^CLK^[LC^4[U=U;V=T?RG>KOK.SOCN0[U=]9
+MV=\=R7>JO[.ROSN2[U1_9V5_=R3?J?[.RO[N2+Y3_9V5_=V1?*?Z.RO[NR/Y
+M3O5W5O9W1_*=ZN^L[.]._)3@KNSO3N0[U=]9V=^=R'>JO[.ROSN1[U1_9V5_
+M=R+?J?[.RO[N1+Y3_9V5_=V)?*?Z.RO[NQ/Y3O5W5O9W)_*=ZN^L[.].Y#O5
+MWUG9WYW(=ZJ_L[*_.Y'O5']G97]W(M^I_L[*_NY$OE/]G97]W8E\I_H[*_N[
+M$_E.]7=6]G=G?DIP5_9W9_*=ZN^L[._.Y#O5WUG9WYW)=ZJ_L[*_.Y/O5']G
+M97]W)M^I_L[*_NY,OE/]G97]W9E\I_H[*_N[,_E.]7=6]G=G\IWJ[ZSL[\[D
+M.]7?6=G?G<EWJK^SLK\[D^]4?V=E?W<FWZG^SLK^[DR^4_V=E?W=F7RG^CLK
+M^[L+/R6X*_N["_E.]7=6]G<7\IWJ[ZSL[R[D.]7?6=G?7<AWJK^SLK^[D.]4
+M?V=E?W<AWZG^SLK^[D*^4_V=E?W=A7RG^CLK^[L+^4[U=U;V=Q?RG>KOK.SO
+M+N0[U=]9V=]=R'>JO[.RO[N0[U1_Y\MWTMRJSX'OOC_%W'GJ[Y;[]%:=._"=
+MJ_[.4W^WFKE;+=S%FI]B[CSU=ZN9N]7O;0Y\YZJ_\]3?K:[I[(+NOW/5WWGJ
+M[]K9]3GPG:O^SE-_!W/@.U?]G:?^#N;`=Z[Z.T_]W3+WH,^![USU=Y[ZNP?+
+MW*K-@>]<]7>>^KL',W</.G?@.U?]G:?^[L',W8/.'?C.57_GJ;][<+TY._"=
+MJ_[.4W_7SJ[/@>]<]7>>^CN8`]^YZN\\]7<P![YSU=]YZN^6N8=]CGRG^CM/
+M_=W#9:YS1[Y3_9VG_N[AS-W#QAW=?^>JO_/4WSV<N7O8N*/[[USU=Y[ZNX?7
+M?'9T_YVK_LY3?]?.KL^1[U1_YZF_@SGRG>KO//5W,$>^4_V=I_YNF7O4Y\AW
+MJK_SU-\]6N8:=W3_G:O^SE-_]VCF[E'GCGRG^CM/_=VCF;M'G3ORG>KO//5W
+MCZXW9T>^4_V=I_ZNG5V?(]^I_LY3?P=SY#O5WWGJ[V".?*?Z.T_]W3+WN,^1
+M[U1_YZF_>[S,=>[(=ZJ_\]3?/9ZY>]RXH_OO7/5WGOJ[QS-WCQMW=/^=J_[.
+M4W_W^)K/CNZ_<]7?>>KOVMGU.?*=ZN\\]7<P1[Y3_9VG_@[FR'>JO_/4WRUS
+M3_H<^4[U=Y[ZNR?+7...[K]SU=]YZN^>S-P]Z=R1[U1_YZF_>S)S]Z1S1[Y3
+M_9VG_N[)]>;LR'>JO_/4W[6SZW/D.]7?>>KO8(Y\I_H[3_T=S)'O5'_GJ;];
+MYI[V.?*=ZN\\]7=/E[G.'?E.]7>>^KNG,W=/&W=T_YVK_LY3?_=TYNYIXX[N
+MOW/5WWGJ[YY>\]G1_7>N^CM/_5T[NSY'OE/]G:?^#N;(=ZJ_\]3?P1SY3O5W
+MGOJ[9>Y9GR/?J?[.4W_W;)EKW-']=Z[Z.T_]W;.9NV>=._*=ZN\\]7?/9NZ>
+M=>[(=ZJ_\]3?/;O>G!WY3O5WGOJ[=G9]CGRG^CM/_1W,D>]4?^>IOX,Y\IWJ
+M[SSU=\O<\SY'OE/]G:?^[ODRU[DCWZG^SE-_]WSF[GGCCNZ_<]7?>>KOGL_<
+M/6_<T?UWKOH[3_W=\VL^.[K_SE5_YZF_:V?7Y\AWJK_SU-_!'/E.]7>>^CN8
+M(]^I_LY3?[?,O>ASY#O5WWGJ[UXL<XT[NO_.57_GJ;][,7/WHG-'OE/]G:?^
+M[L7,W8O.'?E.]7>>^KL7UYNS(]^I_LY3?]?.KL^1[U1_YZF_@SGRG>KO//5W
+M,$>^4_V=I_YNF7O9Y\AWJK_SU-^]7.8Z=^0[U=]YZN]>SMR];-S1_7>N^CM/
+M_=W+F;N7C3NZ_\Y5?^>IOWMYS6=']]^YZN\\]7?M[/H<^4[U=Y[Z.Y@CWZG^
+MSE-_!W/D.]7?>>KOEKE7?8Y\I_H[3_W=JV6N<4?WW[GJ[SSU=Z]F[EYU[LAW
+MJK_SU-^]FKE[U;DCWZG^SE-_]^IZ<W;D.]7?>>KOVMGU.?*=ZN\\]7<P1[Y3
+M_9VG_@[FR'>JO_/4WRUSK_L<^4[U=Y[ZN]?+7.>.?*?Z.T_]W>N9N]>-.[K_
+MSE5_YZF_>SUS][IQ1_??N>KO//5WKZ_Y[.C^.U?]G:?^KIU=GR/?J?[.4W\'
+M<^0[U=]YZN]@CGRG^CM/_=TR]Z;/D>]4?^>IOWNSS#7NZ/X[5_V=I_[NS<S=
+MF\X=^4[U=Y[ZNS<S=V\Z=^0[U=]YZN_>7&_.CGRG^CM/_5T[NSY'OE/]G:?^
+M#N;(=ZJ_\]3?P1SY3O5WGOJ[9>YMGR/?J?[.J_XNZ/X[5_V=5_U=T/UWKOH[
+MK_J[H/OO7/5W7O5W0???N>KOO.KO@NZ_<]7?>=7?!=U_YZJ_\ZJ_"[K_SE5_
+MYZ*_>]?GR'>JO_/4W[U;YAIW=/^=J_[.4W_W;N;N7>>.?*?Z.T_]W;N9NW>=
+M._*=ZN\\]7?OKC=G1[Y3_9VG_JZ=79\CWZG^SE-_!W/D.]7?>>KO8(Y\I_J[
+M6+Z3YM9]#GP7JK_[_A/WN%O\M.[<@>]"]7>1^KOUO+=NW-']=Z'ZNTC]W7KF
+M;MVXH_OO0O5WD?J[]36?'=U_%ZJ_B]3?M;/K<^"[4/U=I/X.YL!WH?J[2/T=
+MS('O0O5WD?J[9<[Z'/@N5'\7J;^S9:YQ1_??A>KO(O5W-K\\Z]R![T+U=Y'Z
+M.YNYL\X=^"Y4?Q>IO[/KS=F![T+U=Y'ZNW9V?0Y\%ZJ_B]3?P1SX+E1_%ZF_
+M@SGP7:C^+E)_M\QYGR/?J?XN4G_GRUSGCGRG^KM(_9W/W'GCCNZ_"]7?1>KO
+M?.;.&W=T_UVH_BY2?^?7?'9T_UVH_BY2?]?.KL^1[U1_%ZF_@SGRG>KO(O5W
+M,$>^4_U=I/YNF8L^1[Y3_5VD_BZ6N<8=W7\7JK^+U-_%S%UT[LAWJK^+U-_%
+MS%UT[LAWJK^+U-_%]>;LR'>JOXO4W[6SZW/D.]7?1>KO8(Y\I_J[2/T=S)'O
+M5'\7J;];YH8^1[Y3_5VD_FY8YCIWY#O5WT7J[X:9NZ%Q1_??A>KO(O5WP\S=
+MT+BC^^]"]7>1^KOAFL^.[K\+U=]%ZN_:V?4Y\IWJ[R+U=S!'OE/]7:3^#N;(
+M=ZJ_B]3?+7.;/D>^4_U=I/YNL\PU[NC^NU#]7:3^;C-SM^G<D>]4?Q>IO]O,
+MW&TZ=^0[U=]%ZN\VUYNS(]^I_BY2?]?.KL^1[U1_%ZF_@SGRG>KO(O5W,$>^
+M4_U=I/YNF=OV.?*=ZN\B]7?;9:YS1[Y3_5VD_FX[<[=MW-']=Z'ZNTC]W7;F
+M;MNXH_OO0O5WD?J[[36?'=U_%ZJ_B]3?M;/K<^0[U=]%ZN]@CGRG^KM(_1W,
+MD>]4?Q>IOUOF=GV.?*?ZNTC]W6Z9:]S1_7>A^KM(_=UNYF[7N2/?J?XN4G^W
+MF[G;=>[(=ZJ_B]3?[:XW9T>^4_U=I/ZNG5V?(]^I_BY2?P=SY#O5WT7J[V".
+M?*?ZNTC]W3(W]CGRG>KO(O5WXS+7N2/?J?XN4G\WSMR-C3NZ_RY4?Q>IOQMG
+M[L;&'=U_%ZJ_B]3?C==\=G3_7:C^+E)_U\ZNSY'O5'\7J;^#.?*=ZN\B]7<P
+M1[Y3_5VD_FZ9F_H<^4[U=Y'ZNVF9:]S1_7>A^KM(_=TT<S=U[LAWJK^+U-]-
+M,W=3YXY\I_J[2/W==+TY._*=ZN\B]7?M[/H<^4[U=Y'Z.Y@CWZG^+E)_!W/D
+M.]7?1>KOEKGW?8Y\I_J[2/W=^V6N<T>^4_U=I/[N_<S=^\8=W7\7JK^+U-^]
+MG[E[W[BC^^]"]7>1^KOWUWQV=/]=J/XN4G_7SJ[/D>]4?Q>IOX,Y\IWJ[R+U
+M=S!'OE/]7:3^;IG[T.?(=ZJ_B]3??5CF&G=T_UVH_BY2?_=AYNY#YXY\I_J[
+M2/W=AYF[#YT[\IWJ[R+U=Q^N-V='OE/]7:3^KIU=GR/?J?XN4G\'<^0[U=]%
+MZN]@CGRG^KM(_=TR]['/D>]4?Q>IO_NXS'7NR'>JOXO4WWV<N?O8N*/[[T+U
+M=Y'ZNX\S=Q\;=W3_7:C^+E)_]_&:SX[NOPO5WT7J[]K9]3GRG>KO(O5W,$>^
+M4_U=I/X.YLAWJK^+U-\M<Y_Z'/E.]7>1^KM/RUSCCNZ_"]7?1>KO/LW<?>K<
+MD>]4?Q>IO_LT<_>I<T>^4_U=I/[NT_7F[,AWJK^+U-^UL^MSY#O5WT7J[V".
+M?*?ZNTC]'<R1[U1_%ZF_6^8^]SGRG>KO(O5WGY>YSAWY3O5WD?J[SS-WGQMW
+M=/]=J/XN4G_W>>;N<^..[K\+U=]%ZN\^7_/9T?UWH?J[2/U=.[L^1[Y3_5VD
+M_@[FR'>JOXO4W\$<^4[U=Y'ZNV7N2Y\CWZG^+E)_]V69:]S1_7>A^KM(_=V7
+MF;LOG3ORG>KO(O5W7V;NOG3NR'>JOXO4WWVYWIP=^4[U=Y'ZNW9V?8Y\I_J[
+M2/T=S)'O5'\7J;^#.?*=ZN^&Y3MI[FN?`]\-JK\;4G_W=9GKW('OOC_%W`VI
+MO_LZ<_=UX6Y8\U/,W9#ZNZ\S=U]_;W/@NT'U=^UCF<N]\4#WW_6GBKD[W[[]
+M]O+'X.;'VQU\M=[#O_5/?/O'V_O_M,$?5_W\"X/??Z-=+C>#RQO>_+CJY_LO
+M^/ZQW\S?^?ZQMCMO^(^O46SZ#3]X>V>.OI3R7SD_NIWG5X.;S6J_OQG\G^7U
+M^=_]Z?CQU\$WN]6P66VVJ]'_[!O^O__XW_2&?\[1EX__M\[OYUR)<WO!]F?F
+M?OSQ?>=7WB5#_\2WCLG;._?@;>BO@_<7\8>OSO03\M71EX__*^S=_)7KNY_G
+M'U^`_OO_UE[^<TJZE[1]?E?]]5&B?N_M_N+UK6[?[H\_(G?W?[W=F?/B[:[N
+MSQU^^;G]]:M[</OJZ$NT_Y5/QLU?'/Z3OW/_&+G_._?GG/^](MC],,L??XKM
+BX=_Z)[[]\^W]?WX.#O/@WW:"PWK\_BI_^W]F=\)"L*<`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-mbr.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-mbr.qcow2.gz.uu
new file mode 100644
index 0000000..09fa383
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-mbr.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-mbr.qcow2.gz
+M'XL("*0[(U0``VEM9RTQ>#$M-#`Y-BUM8G(N<6-O=S(N;W5T`*V8V;+3,`Q`
+MW_L5+LL%+E!BR4Y3E@O<A1G>X`%X3I=\13^>)%;C1)'BMI/6DVG'T1G9/E:6
+M+`L?8[PU+C=N8ZJMJ?]3`]/[,VSF^/O'SU7_<UP$F,V4**'#88<;L!XB#C1<
+M9L<=5L;ULD,!!Z>H,2B%<VIV4QT"[G;13EV[&`6+P&N``:<NQE7Y0<B/1[@K
+M\X.Y\T-Y_OPICG?DT_EAR(]'K35<D<2!$+71<&42AT+45L/MDC@G1.TUW"&)
+M\T)4I>!L0I4:EPM15L-!$K<6HE##N22N$*(T[VS:NXT0I7EGT]Z50I3FG4U[
+MMQ6B-.]LVKN=$*5Y9]/>[84HS3M0O#,1=Q"B-.^`>;<DW+.(JX0HS3M@WCTG
+MW(L.9Z4HS3M@WKTDW$W$"?4.-.^`>?>*<*\C3JAWH'D'S+LWA+N-.*'>@>8=
+M,._>$NY=Q`GU#C3O@'GW?N2=%>H=:-XA\^X#L;*($^H=:MXA\\X2#B).J'>H
+M>8?,.R2<BSBAWJ'F'3+O/.'RB!/J'6K>(?-N3;@BXH1ZAYIWR+S;$.YCQ`GU
+M#C7OD'GWB7"?(TZH=ZAYA\R[+X2[BSBAWJ'FG6/>?27<MX@3ZIW3O'/,N^^$
+MNX\XH=XYS3O'O'L@W&.'`RFJ\R[+Y$:XI]&>A7GO/UV\/[;"4>^8`!:7`*<R
+M#+C-K`/V8<"-!J5PU#N.]ZOAMP.VF^T"8#T_534"TH!]V&SU"74K/?VH6Y@O
+M&I[M7=&%`2]7/=Q^YOEK]\<%0.]-68Z`?T[YP=S+X1J@7S>;S.>F@','_._I
+M[]B_&C?;A@LX_>T`=70)VW-P[=N!WIE],_2.X;W>,N(FWPXTCSP'J4/-SL_L
+MGBM87'^=VV>U77RH97?*W?J:F)]06V`PW(G\S'BXS46\>]AFJ]@N0&*X9HC;
+M3J[M=';+<7:[F1?#\YUQYLYM(,.=&W`P;R&`MK+4!M9GC8]ZQ_'7:O@-0$?`
+1V6;0Y<VE:/$?-R^$K](4````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-mbr.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-mbr.raw.gz.uu
new file mode 100644
index 0000000..f256873
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-mbr.raw.gz.uu
@@ -0,0 +1,11 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-mbr.raw.gz
+M'XL("/+%'50``VEM9RTQ>#$M-#`Y-BUM8G(N<F%W+F]U=`"ME,NRPB`,AO=]
+MBKAUP80(Q[IUQKT;=8WU]"EX>(/I!8JM[0R04F8"W_PA!$1I`(8`W9=QWN'/
+M*NV^VE<?FGYN`]8(;9L!%0,%US".%[`YVTW84$,0SA^;1B#=S<7`J['M5(1[
+M#;MRFW?$."6X/MQV&]!:<"X#WGI]5#H=)@#M$8P%^P<UK0WX<;E/`A:<+G5^
+M@J-?N$&P7H,[A%W1ROAFS#O\>$WDW^/,DCI&X/^F8&WANV?JR;XXSX!<)0U@
+MW?DH!0[YA5'?*9=!2;@+^B`/UP7<,5VO(QS]"!=2W',QM\OJ=KFZIG`R[+0R
+L5E9N@*25*S@J^Q#0YV7A&\BK\G'>X:\J[0(T';#8"1H*P.H-:WH%_)0&````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-mbr.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-mbr.vhd.gz.uu
new file mode 100644
index 0000000..92039f8
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-mbr.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-mbr.vhd.gz
+M'XL("/+%'50``VEM9RTQ>#$M-#`Y-BUM8G(N=FAD+F]U=`"METU3@S`0AN_]
+M%>MX\]!)EF2A5T<].^.H5P'!\>#'J`</_'@32$("!(NFI10FV8=W/[)-&1M>
+M`)0!M4`-D-37N0`Z0%X`J$%S8'_FYA:Z^NVUJ;^>O_?FU>T&&&>^56BN[3$#
+MH1Z2`Y;Z(?2HKZ&SF/WIY=/9\\N3Q:'!V0<+`H$@%43,GD/,J=.DJ_.;BQ[Y
+M,*K+YNI&*_6I!#`!G'LS,JONP6ET.*&LVK8_<BC+7J8]@IM@8'1V@I-L8N7)
+M7`JJY^P2CM:LMN#.=B870ZFHPLC5686.0X[Z6I6-C</L4*7R_?E>?GPV$WT8
+M*15R^OAL+(N[BZ94T$XV"H0NYS5WH:=\37$+I?*OZ%%H)\R%"@*3=@![]\/H
+MC2CP]1%G*S&/)R.JK]3ZU-IBY<(Y/M"=[\.W`U;5-F#!!H4ASCE<U<[A4HX>
+M#44R!A-Y/"$G7ORJQ\3YK=IM0"EUQY@";ZV^.G4Z&@V4N>Z^DJ#`8QV^O[Q;
+M6FY-9/7^L5DU^!O.">;'X#+32NU,OS+B`]U8)L.WQ8DU=7H)-YN<E8EKKRDF
+M=GZ>@:E54@,KO";C`5U^8=1WF,O`P-T5?3!WM]2X/)S//1S^XBZ$N&HUM^OJ
+M3N;JZL3):*<KX\B5JR'ARAUPF+818-]95`6J6?-S?*"[WH?O`8CFER/93Q&:
+MWI=,H3#`9`J%;:;I%&9LM=BV5B$9A8GV]11O]W_9UY/7[A/LZ\FV^Y@5V[2O
+?)]/N$^WKR;;[-/MZC4NZKR?UCXVQW0]_N`=E#`X`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-mbr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-mbr.vhdf.gz.uu
new file mode 100644
index 0000000..171e991
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-mbr.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-mbr.vhdf.gz
+M'XL("/+%'50``VEM9RTQ>#$M-#`Y-BUM8G(N=FAD9BYO=70`K96Q;H,P$(;W
+M/,5%W3(@^[`/LD9-YTI5VS5`(,J0=NG0@8>OC3'8.)"D,AQ@=/;'?[ZS8<P<
+M``*!%5?N\XYVE_AGN]JL.AHO'P/F#)HF`"8*:'"5PJD.R@K9-Y0Q#EJXNI1Q
+M!LC[MC%HD_%8)P[N.(P*;=[AXA*#L^$VCP&EA*((@.]6'\9.A]!`F8&0(`ER
+MO#?@S_W')&"#X['FS^#P%FX0S._!I7J4T].MC'E'.Y:)>5J<6%*G$*Q^*%@9
+MN?9$/AGGYAF86B45L+SWH0\<\@NCOFTH`[UP%_1!&&ZA<9G?GSLXO!$N^+AR
+M,;?+ZM:ANBIR,N1T9=RY<C7$7[D&AW$W`NQV%E6!JE=XGW>TKXE_&J#H@=%F
+MD/I?$:5`#5`-)'4[$T!;R'(7B'XEM=7W5UW]G'_=#&L<'_X<H>GQF.K50AE@
+MH3]"1]UV]#WM3YOSY61Q=JNR'Q:D)UTJB`C")3_<E]W;<X<\C.K2<)+(G;U2
+M`!/`N1=XK^[@ES-U^[P-MFZ@E)U,:]Z+Y[BZ56F<9)-1_\VMP5'D4E&UM_H#
+(GF2M3+\(````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-mbr.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-mbr.vmdk.gz.uu
new file mode 100644
index 0000000..bcbad1e
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-mbr.vmdk.gz.uu
@@ -0,0 +1,82 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-mbr.vmdk.gz
+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
+E69AE]6+<_KW_Q/6[T_:_%;`,@&8=+/TGL>5?_1_0^/1A@%\`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-pc98.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-pc98.qcow.gz.uu
new file mode 100644
index 0000000..efca490
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-pc98.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-pc98.qcow.gz
+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
+"````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-pc98.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-pc98.qcow2.gz.uu
new file mode 100644
index 0000000..afb67c9
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-pc98.qcow2.gz.uu
@@ -0,0 +1,21 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-pc98.qcow2.gz
+M'XL("*8[(U0``VEM9RTQ>#$M-#`Y-BUP8SDX+G%C;W<R+F]U=`"MF-N2TS`,
+MAN_[%"Z'!18HL62G"8<%]L`,=W`!7+?=]BGZ\&QB;90H4MSMI,UDIN/^W\CQ
+M%S5N4:27<]&[4+I0N\/6/7RF`USOP_!PQ]\_?J[ZK^,BP7QAI)2!@!UNP+IA
+M'%BXPH\'O([K58<*#AY38U`.%\SJI@84W.6BO73M8E0B@><`$\Y<C+/J@U2?
+M3(0SZX.YZT/]^L7'G!PHI^O#5)],K2U<E<6!DJHMW":+0R6UM7"[+"XHJ7L+
+MM\_BHI(Z&#B?4>4!5RHI;^$@BULK*;1P(8NKE)3EG<][5RLIRSN?]VZCI"SO
+M?-Z[K9*RO/-Y[W9*RO+.Y[V[5U*6=V!XYQBW5U*6=R"\6Q+N&>,.2LKR#H1W
+MSPGWHL-Y+65Y!\*[EX2[8)S2[\#R#H1WKPCWFG%*OP/+.Q#>O2'<)>.4?@>6
+M=R"\>TNX=XQ3^AU8WH'P[OW(.Z_T.["\0^'=!V(5C%/Z'5K>H?#.$PX8I_0[
+MM+Q#X1T2+C!.Z7=H>8?"NTBXDG%*OT/+.Q3>K0E7,4[I=VAYA\*[FG`?&:?T
+M.[2\0^'=)\)]9IS2[]#R#H5W7PAWQ3BEWZ'E71#>?27<-\8I_2Y8W@7AW7?"
+M73-.Z7?!\BX([VX(=]OA0$MUWA6%?A#N;G3/PKS/GX&?C[URM@<F@-53@%,5
+M)EP]ZX1CFG"CP48YVP/'Z]7PW0%;89X`C-%MQL`_:<(Q"5,'MPO:O`X'/DZX
+M?G%N86*S)+->/V@G'-?-71%+5\&I%?Z[^ZM,&.:;<,+9VWD:Z`KVI^#:[7SO
+MF[[_<&8.#!_.EHR;W,XW>Y2]-F!6%^>5!:`2N?XZMYNK'>]"Q:-MM[Z.ZU.:
+M`0RF.U&?&T^W^=7M=L=B%=L%R$S7#7';R;6=KFXYKFXW\V*@O#-.O',;R/#.
+I33B8MQ&$]+]>T?;(T=D>./Y:#=\)&`@XVQ4,9?/;L?@/'U:4T(,4````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-pc98.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-pc98.raw.gz.uu
new file mode 100644
index 0000000..5398eae
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-pc98.raw.gz.uu
@@ -0,0 +1,11 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-pc98.raw.gz
+M'XL("//%'50``VEM9RTQ>#$M-#`Y-BUP8SDX+G)A=RYO=70`K91!#H,@$$7W
+MGF+<=F%@'*INFW3?3=NU-?44'+X@5`4$-0$,,?GP\C\#,&8:`"&P?F.,"_)6
+MN5T6EV*B\?$<4`CH0^!3`2<<:G\=P4"@_KP/QG'Y'$%67OOCN!)#D%T5%39P
+M-BYEWC^<`HL&2("X0HM'';[OKXW`F"^PP>$>;C;,C^!JO6HU4[E%/N-B@L&5
+MEE4N.$JY4PCV/156Y#TLB*VW;EUG8.H,#\!:JZ$+G.L+B[\NM(%.W(0_"./V
+M&M>X\_D*ASMQP<5]DK5-NRM#=T/F8M3^S3AX<S7$O;D&AWD?`II>9G4"]1L9
+9C'%!/BJW&R!98+8=)-3`X@?$\J!S108`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-pc98.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-pc98.vhd.gz.uu
new file mode 100644
index 0000000..8df641e
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-pc98.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-pc98.vhd.gz
+M'XL("//%'50``VEM9RTQ>#$M-#`Y-BUP8SDX+G9H9"YO=70`K9=-;X,P#(;O
+M_16N=NNA2HP3VNNT[CQIVG8M9;3:81]:>^B!'[\8$DCX6KL%*`H*?O+:<4PJ
+M1'T`Z`3T'G0!6G$[)=!K2%<`IM->6-VE?80R__PH\M/;>6F/<E;#I/"M0G.V
+MQP3(#)("9CR(?N4VE`ZSO-D<%F_O!X=#BW,#DP9"4`9"O7&T:-0QZ?[V\:Y"
+M;EMU25]=:V5^.P)!(*7W1N+4;1N-#8Z,U7Y?72ED62737<%#T-$ZV\$IT;'R
+M9`X%U7-V"*>GK*[!+69V+NI4,8F1FKL)G804N6W2QL6A=YE4.1^_LN]CT=&'
+M(ZFB&WVRUY>,NXLV5="];!40I_.4NU!13EW<0*K\*WHZM"/;,$$0RG5@Y7X8
+MO18%OCXMQ43,QR=C5%_&^LS:$MG`?;RCO%V&9P/<[:\#*L5+J`M\<@[GK&]-
+MD--0W'TG+UH=^4CV_7E^B\CQP\IAE7*Y5!I6>*G"E\WS@,,8S^$:A[_A&L'R
+M$EQB:Y][TZC%YFLSVE'CYI8U;W$TI8[77'&5LRINLF"^ZMCY\PS"Y'`.8N55
+M!0_8S"^T^M9]&1BX.Z$/^NYFC$O#]Z6'PU_<A1"WFYS;:77SOKH\\F2\=E?&
+MA2N7(>'*K7$8MQ!059E-!G*-[-W'.\J'97C60+2E/MJW`VUMCJ:0+#":0K+5
+M.:)"*B:3[=HLU%9AI(TXXR)NQ!D7<2/.N(@;<<9%W(@S+N)&G'%1-^+:_,42
++8O8#/[LV_KT-````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-pc98.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-pc98.vhdf.gz.uu
new file mode 100644
index 0000000..49a64aa
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-pc98.vhdf.gz.uu
@@ -0,0 +1,14 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-pc98.vhdf.gz
+M'XL("//%'50``VEM9RTQ>#$M-#`Y-BUP8SDX+G9H9&8N;W5T`*V5L6Z#,!"&
+M]SS%1=TR1/BP#UBCIG.EJNT:0B'*T';IT(&'KVU,\&$@266PD-'AC__WV><D
+MZ2X`B9"4$\_Y0+O;\KM=;5:6)IK[@$I!&0)?-=#BT.@K)%02=&_4H&F&Q@+M
+M=G3U.*&#(<B-F@U,X)Q=&7G^T!I6&4@%BB#'6Q6^[]\F#&,\PQT.K^$N@L4M
+MN-2,\K[4:E%<<'.!#K=VK/6`DTOJ-"*I[S*KXBX6Q'PTSL\S)'H-5Y#D+H8<
+M>,DO#/J*4`8RNPOZ(+1;&ES&OQ<>#J_8!8X[+N9V6=TZ5%=%3D8ZWADW[EP#
+MX3NWPV'<0B!M9=8KT-3(X#D?:)^W_.Z`T@&CS2"YLX-2H`:H!E*FGTF@`K+<
+M!R)?26WU_557/^=?/\,&)T85W6]F/*9FMU`&6)J?T(?I>_H>]J?-^?/4X_I2
+MU?]8DIETI2$RL$O<[M/NY=$B#X.Z-)PD\F?OJ$\H"4(PXT[=@2]GLOGMS=8-
+D')65V3?VP@*3I<K@5#(:]=_<=CB*O%3TJ;;Z`TU!^3)P"```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-pc98.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-pc98.vmdk.gz.uu
new file mode 100644
index 0000000..f76b425
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-pc98.vmdk.gz.uu
@@ -0,0 +1,82 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-pc98.vmdk.gz
+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
+.8+X`OOH_SBV/UN!>````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.qcow.gz.uu
new file mode 100644
index 0000000..ddcfe73
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.qcow.gz.uu
@@ -0,0 +1,125 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-vtoc8.qcow.gz
+M'XL("+,S(E0``VEM9RTQ>#$M-#`Y-BUV=&]C."YQ8V]W+F]U=`"MG=NN&\>2
+M!=_]%=3]+C$SFV2W[C@8'&`>!CB#^0'S^DS,LSY^).WN*NUD+.49V+)@2!!J
+M@;L4#AAVH+1>WWU;K3:V&K:K85I=#JOO/Y^_V^J7G]S_OOKVW__\S[>_?OOV
+MQ]V8K7]S*OU\\)7-<_>V_M'G_,>IXVH]_1MSW[_CW"^?+OX?G^Z7+_9V[N4?
+M=U\LGW,U&/<&5_/<>OY\)FYO^/<^W]?TY=K=[?U]7ZZ++W>C!K?W!O\US_TY
+M?SX77^Y.S8WWYJ[IRW7QY4YJ;O];6%S`<E!SQV)NP%,G-7<NYC9XZL)S]IO?
+MV[NY+9XR-><XMVIS.SP5:FZX-[=^NP"]S(UX2G!G)7<3GA+<6<G='D\)[JSD
+M[H"G!'=6<G?$4X([*[D[X2G!G9?<G?&4X,Y+[BYX2G#G%7?&IP1W7G%GY#M7
+MW'G%G9'O7''G%7=&OG/%G5?<&?G.%7=><6?D.U?<1<6=D>]"<1<5=T:^"\5=
+ME-R1[T)Q%R5WY+M0W$7)'?DN%'=1<D>^"\5=E-R1[T)Q%R5WY+M0W`TE=^2[
+M07$WE-R1[P;%W5!QYWQ*<#=4W#GY;E#<#15W3KX;%'=#Q9V3[P;%W5!QY^2[
+M07$W5-PY^6Y0W&TJ[IQ\MU'<;2KNG'RW4=QM2N[(=QO%W:;DCGRW4=QM2N[(
+M=QO%W:;DCGRW4=QM2N[(=QO%W:;DCGRW4=QM2^[(=UO%W;;DCGRW5=QM*^Z"
+M3PGNMA5W0;[;*NZV%7=!OMLJ[K85=T&^VRKNMA5W0;[;*NZV%7=!OMLJ[G85
+M=T&^VRGN=A5W0;[;*>YV)7?DNYWB;E=R1[[;*>YV)7?DNYWB;E=R1[[;*>YV
+M)7?DNYWB;E=R1[[;*>[&DCORW:BX&TONR'>CXFZLN!OXE.!NK+@;R'>CXFZL
+MN!O(=Z/B;JRX&\AWH^)NK+@;R'>CXFZLN!O(=Z/B;OG/WWJ.?#<I[J:*NX%\
+M-RGNII([\MVDN)M*[LAWD^)N*KDCWTV*NZGDCGPW*>ZFDCORW:2XFTKNR'>3
+MXFY?<D>^VRON]B5WY+N]XFY?<;?A4X*[?<7=AGRW5]SM*^XVY+N]XFY?<;<A
+MW^T5=_N*NPWY;J^XVU?<;<AW>\7=\K\A]1SY[J"X.U3<;<AW!\7=H>2.?'=0
+MW!U*[LAW!\7=H>2.?'=0W!U*[LAW!\7=H>2.?'=0W!U*[LAW!\7=L>2.?'=4
+MW!U+[LAW1\7=L>)NRZ<$=\>*NRWY[JBX.U;<;<EW1\7=L>)N2[X[*NZ.%7=;
+M\MU1<7>LN-N2[XZ*NU/%W99\=U+<G2KNMN2[D^+N5')'OCLI[DXE=^2[D^+N
+M5')'OCLI[DXE=^2[D^+N5')'OCLI[DXE=^2[D^+N7')'OCLK[LXE=^2[L^+N
+M7'&WXU."NW/%W8Y\=U;<G2ON=N2[L^+N7'&W(]^=%7?GBKL=^>ZLN#M7W.W(
+M=V?%W:7B;D>^NRCN+A5W._+=17%W*;DCWUT4=Y>2._+=17%W*;DCWUT4=Y>2
+M._+=17%W*;DCWUT4=Y>2._+=17!GRP_T'/C.UH([6Y?<@>]L+;BS=<7=R*>8
+M.RO[NQ%\9ZJ_L[*_&\%WIOH[*_N[$7QGJK^SLK\;P7>F^CLK^[L1?&>JO[.R
+MOQO!=Z;Z.RO[NQ%\9ZJ_L[*_&\%WIOH[*_N[$7QGJK^SLK\;P7>F^CLK^[L1
+M?&>JO[.ROQO!=Z;Z.RO[NQ%\9ZJ_L[*_&\EWJK^SLK\;R7>JO[.ROYOXE."N
+M[.\F\IWJ[ZSL[R;RG>KOK.SO)O*=ZN^L[.\F\IWJ[ZSL[R;RG>KOK.SO)O*=
+MZN^L[.\F\IWJ[ZSL[R;RG>KOK.SO)O*=ZN^L[.\F\IWJ[ZSL[R;RG>KOK.SO
+M)O*=ZN^L[.\F\IWJ[ZSL[R;RG>KOK.SO)O*=ZN^L[._V?$IP5_9W>_*=ZN^L
+M[._VY#O5WUG9W^W)=ZJ_L[*_VY/O5']G97^W)]^I_L[*_FY/OE/]G97]W9Y\
+MI_H[*_N[/?E.]7=6]G=[\IWJ[ZSL[_;D.]7?6=G?[<EWJK^SLK_;D^]4?V=E
+M?[<GWZG^SLK^;D^^4_V=E?W=GGRG^CLK^[L#GQ+<E?W=@7RG^CLK^[L#^4[U
+M=U;V=P?RG>KOK.SO#N0[U=]9V=\=R'>JO[.ROSN0[U1_9V5_=R#?J?[.RO[N
+M0+Y3_9V5_=V!?*?Z.RO[NP/Y3O5W5O9W!_*=ZN^L[.\.Y#O5WUG9WQW(=ZJ_
+ML[*_.Y#O5']G97]W(-^I_L[*_N[(IP1W97]W)-^I_L[*_NY(OE/]G97]W9%\
+MI_H[*_N[(_E.]7=6]G='\IWJ[ZSL[X[D.]7?6=G?'<EWJK^SLK\[DN]4?V=E
+M?W<DWZG^SLK^[DB^4_V=E?W=D7RG^CLK^[LC^4[U=U;V=T?RG>KOK.SOCN0[
+MU=]9V=\=R7>JO[.ROSOQ*<%=V=^=R'>JO[.ROSN1[U1_9V5_=R+?J?[.RO[N
+M1+Y3_9V5_=V)?*?Z.RO[NQ/Y3O5W5O9W)_*=ZN^L[.].Y#O5WUG9WYW(=ZJ_
+ML[*_.Y'O5']G97]W(M^I_L[*_NY$OE/]G97]W8E\I_H[*_N[$_E.]7=6]G<G
+M\IWJ[ZSL[\Y\2G!7]G=G\IWJ[ZSL[\[D.]7?6=G?G<EWJK^SLK\[D^]4?V=E
+M?W<FWZG^SLK^[DR^4_V=E?W=F7RG^CLK^[LS^4[U=U;V=V?RG>KOK.SOSN0[
+MU=]9V=^=R7>JO[.ROSN3[U1_9V5_=R;?J?[.RO[N3+Y3_9V5_=V9?*?Z.RO[
+MNPN?$MR5_=V%?*?Z.RO[NPOY3O5W5O9W%_*=ZN^L[.\NY#O5WUG9WUW(=ZJ_
+ML[*_NY#O5']G97]W(=^I_L[*_NY"OE/]G97]W85\I_H[*_N["_E.]7=6]G<7
+M\IWJ[ZSL[R[D.]7?6=G?7<AWJK_SY0=I;M7GP'??3S%WGOJ[Y3V]5><.?.>J
+MO_/4WZUF[E8+=['F4\R=I_YN-7.W^K/-@>]<]7>>^KO5-=U=T/MWKOH[3_U=
+MN[L^![YSU=]YZN]@#GSGJK_SU-_!'/C.57_GJ;];YA[T.?"=J_[.4W_W8)E;
+MM3GPG:O^SE-_]V#F[D'G#GSGJK_SU-\]F+E[T+D#W[GJ[SSU=P^N-W<'OG/5
+MWWGJ[]K=]3GPG:O^SE-_!W/@.U?]G:?^#N;`=Z[Z.T_]W3+WL,^1[U1_YZF_
+M>[C,=>[(=ZJ_\]3?/9RY>]BXH_?O7/5WGOJ[AS-W#QMW]/Z=J_[.4W_W\)KO
+MCMZ_<]7?>>KOVMWU.?*=ZN\\]7<P1[Y3_9VG_@[FR'>JO_/4WRUSC_H<^4[U
+M=Y[ZNT?+7...WK]SU=]YZN\>S=P]ZMR1[U1_YZF_>S1S]ZAS1[Y3_9VG_N[1
+M]>;NR'>JO_/4W[6[ZW/D.]7?>>KO8(Y\I_H[3_T=S)'O5'_GJ;];YA[W.?*=
+MZN\\]7>/E[G.'?E.]7>>^KO',W>/&W?T_IVK_LY3?_=XYNYQXX[>OW/5WWGJ
+M[QY?\]W1^W>N^CM/_5V[NSY'OE/]G:?^#N;(=ZJ_\]3?P1SY3O5WGOJ[9>Y)
+MGR/?J?[.4W_W9)EKW-'[=Z[Z.T_]W9.9NR>=._*=ZN\\]7=/9NZ>=.[(=ZJ_
+M\]3?/;G>W!WY3O5WGOJ[=G=]CGRG^CM/_1W,D>]4?^>IOX,Y\IWJ[SSU=\O<
+MTSY'OE/]G:?^[NDRU[DCWZG^SE-_]W3F[FGCCMZ_<]7?>>KOGL[</6W<T?MW
+MKOH[3_W=TVN^.WK_SE5_YZF_:W?7Y\AWJK_SU-_!'/E.]7>>^CN8(]^I_LY3
+M?[?,/>MSY#O5WWGJ[YXM<XT[>O_.57_GJ;][-G/WK'-'OE/]G:?^[MG,W;/.
+M'?E.]7>>^KMGUYN[(]^I_LY3?]?NKL^1[U1_YZF_@SGRG>KO//5W,$>^4_V=
+MI_YNF7O>Y\AWJK_SU-\]7^8Z=^0[U=]YZN^>S]P];]S1^W>N^CM/_=WSF;OG
+MC3MZ_\Y5?^>IOWM^S7='[]^YZN\\]7?M[OH<^4[U=Y[Z.Y@CWZG^SE-_!W/D
+M.]7?>>KOEKD7?8Y\I_H[3_W=BV6N<4?OW[GJ[SSU=R]F[EYT[LAWJK_SU-^]
+MF+E[T;DCWZG^SE-_]^)Z<W?D.]7?>>KOVMWU.?*=ZN\\]7<P1[Y3_9VG_@[F
+MR'>JO_/4WRUS+_L<^4[U=Y[ZNY?+7.>.?*?Z.T_]W<N9NY>-.WK_SE5_YZF_
+M>SES][)Q1^_?N>KO//5W+Z_Y[NC].U?]G:?^KMU=GR/?J?[.4W\'<^0[U=]Y
+MZN]@CGRG^CM/_=TR]ZK/D>]4?^>IOWNUS#7NZ/T[5_V=I_[NU<S=J\X=^4[U
+M=Y[ZNU<S=Z\Z=^0[U=]YZN]>76_NCGRG^CM/_5V[NSY'OE/]G:?^#N;(=ZJ_
+M\]3?P1SY3O5WGOJ[9>YUGR/?J?[.4W_W>IGKW)'O5'_GJ;][/7/WNG%'[]^Y
+MZN\\]7>O9^Y>-^[H_3M7_9VG_N[U-=\=O7_GJK_SU-^UN^MSY#O5WWGJ[V".
+M?*?Z.T_]'<R1[U1_YZF_6^;>]#GRG>KO//5W;Y:YQAV]?^>JO_/4W[V9N7O3
+MN2/?J?[.4W_W9N;N3>>.?*?Z.T_]W9OKS=V1[U1_YZF_:W?7Y\AWJK_SU-_!
+M'/E.]7>>^CN8(]^I_LY3?[?,O>USY#O5WWG5WP6]?^>JO_.JOPMZ_\Y5?^=5
+M?Q?T_IVK_LZK_B[H_3M7_9U7_5W0^W>N^CNO^KN@]^]<]7=>]7=![]^YZN]<
+M]'?O^ASY3O5WGOJ[=\M<XX[>OW/5WWGJ[][-W+WKW)'O5'_GJ;][-W/WKG-'
+MOE/]G:?^[MWUYN[(=ZJ_\]3?M;OK<^0[U=]YZN]@CGRG^CM/_1W,D>]4?Q?+
+M#]+<NL^![T+U=]]_X1YWBY_6G3OP7:C^+E)_MY[WUHT[>O\N5'\7J;];S]RM
+M&W?T_EVH_BY2?[>^YKNC]^]"]7>1^KMV=WT.?!>JOXO4W\$<^"Y4?Q>IOX,Y
+M\%VH_BY2?[?,69\#WX7J[R+U=[;,->[H_;M0_5VD_L[FCV>=._!=J/XN4G]G
+M,W?6N0/?A>KO(O5W=KVY._!=J/XN4G_7[J[/@>]"]7>1^CN8`]^%ZN\B]7<P
+M![X+U=]%ZN^6.>]SY#O5WT7J[WR9Z]R1[U1_%ZF_\YD[;]S1^W>A^KM(_9W/
+MW'GCCMZ_"]7?1>KO_)KOCMZ_"]7?1>KOVMWU.?*=ZN\B]7<P1[Y3_5VD_@[F
+MR'>JOXO4WRUST>?(=ZJ_B]3?Q3+7N*/W[T+U=Y'ZNYBYB\X=^4[U=Y'ZNYBY
+MB\X=^4[U=Y'ZN[C>W!WY3O5WD?J[=G=]CGRG^KM(_1W,D>]4?Q>IOX,Y\IWJ
+M[R+U=\O<T.?(=ZJ_B]3?#<M<YXY\I_J[2/W=,',W-.[H_;M0_5VD_FZ8N1L:
+M=_3^7:C^+E)_-USSW='[=Z'ZNTC]7;N[/D>^4_U=I/X.YLAWJK^+U-_!'/E.
+M]7>1^KME;M/GR'>JOXO4WVV6N<8=O7\7JK^+U-]M9NXVG3ORG>KO(O5WFYF[
+M3>>.?*?ZNTC]W>9Z<W?D.]7?1>KOVMWU.?*=ZN\B]7<P1[Y3_5VD_@[FR'>J
+MOXO4WRUSVSY'OE/]7:3^;KO,=>[(=ZJ_B]3?;6?NMHT[>O\N5'\7J;_;SMQM
+M&W?T_EVH_BY2?[>]YKNC]^]"]7>1^KMV=WV.?*?ZNTC]'<R1[U1_%ZF_@SGR
+MG>KO(O5WR]RNSY'O5'\7J;_;+7.-.WK_+E1_%ZF_V\W<[3IWY#O5WT7J[W8S
+M=[O.'?E.]7>1^KO=]>;NR'>JOXO4W[6[ZW/D.]7?1>KO8(Y\I_J[2/T=S)'O
+M5'\7J;];YL8^1[Y3_5VD_FY<YCIWY#O5WT7J[\:9N[%Q1^_?A>KO(O5WX\S=
+MV+BC]^]"]7>1^KOQFN^.WK\+U=]%ZN_:W?4Y\IWJ[R+U=S!'OE/]7:3^#N;(
+M=ZJ_B]3?+7-3GR/?J?XN4G\W+7.-.WK_+E1_%ZF_FV;NILX=^4[U=Y'ZNVGF
+M;NK<D>]4?Q>IOYNN-W='OE/]7:3^KMU=GR/?J?XN4G\'<^0[U=]%ZN]@CGRG
+M^KM(_=TR][[/D>]4?Q>IOWN_S'7NR'>JOXO4W[V?N7O?N*/W[T+U=Y'ZN_<S
+M=^\;=_3^7:C^+E)_]_Z:[X[>OPO5WT7J[]K=]3GRG>KO(O5W,$>^4_U=I/X.
+MYLAWJK^+U-\M<Q_Z'/E.]7>1^KL/RUSCCMZ_"]7?1>KO/LS<?>C<D>]4?Q>I
+MO_LP<_>A<T>^4_U=I/[NP_7F[LAWJK^+U-^UN^MSY#O5WT7J[V".?*?ZNTC]
+M'<R1[U1_%ZF_6^8^]CGRG>KO(O5W'Y>YSAWY3O5WD?J[CS-W'QMW]/Y=J/XN
+M4G_W<>;N8^..WK\+U=]%ZN\^7O/=T?MWH?J[2/U=N[L^1[Y3_5VD_@[FR'>J
+MOXO4W\$<^4[U=Y'ZNV7N4Y\CWZG^+E)_]VF9:]S1^W>A^KM(_=VGF;M/G3OR
+MG>KO(O5WGV;N/G7NR'>JOXO4WWVZWMP=^4[U=Y'ZNW9W?8Y\I_J[2/T=S)'O
+M5'\7J;^#.?*=ZN\B]7?+W.<^1[Y3_5VD_N[S,M>Y(]^I_BY2?_=YYNYSXX[>
+MOPO5WT7J[S[/W'UNW-'[=Z'ZNTC]W>=KOCMZ_RY4?Q>IOVMWU^?(=ZJ_B]3?
+MP1SY3O5WD?H[F"/?J?XN4G^WS'WI<^0[U=]%ZN^^+'.-.WK_+E1_%ZF_^S)S
+M]Z5S1[Y3_5VD_N[+S-V7SAWY3O5WD?J[+]>;NR/?J?XN4G_7[J[/D>]4?Q>I
+MOX,Y\IWJ[R+U=S!'OE/]W;#\(,U][7/@NT'U=T/J[[XN<YT[\-WW4\S=D/J[
+MKS-W7Q?NAC6?$G_N<?IBORZ]\=LV1W_>=CM5S/WR[=L?+W\.;GY^OF&[VOEJ
+MN_GQ??#5)E;#\.-_7:Z&DQK\Y_^>S__XG_\8_NO>Y]O\_9_O_C^W]OO!<;6>
+M5FO'P;NY7_ZYG<JYWWV^NSGZ<Z/_PAS]N=$X]T-/W_^-X[OCSVGNSU_FZ,^-
+M_BN_&;?/./W\]XH?;P6.]>"#7P;OYGY\N7>'\^^PJ;GOO_#MP<WGNYOK7Z[_
+M<L3OS1E]NA^/&ZYNYKJF\F<L;N\!?CK0U%]`A9YQXKG3?G4X_WS2[G(S]_#+
+J//?S&:<?4MK#W_4O?/O7V_M_W:$RS(-_&WO#>OO]4_[Q?X8;4W9_I0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.qcow2.gz.uu
new file mode 100644
index 0000000..426bfa7
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.qcow2.gz.uu
@@ -0,0 +1,21 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-vtoc8.qcow2.gz
+M'XL("*@[(U0``VEM9RTQ>#$M-#`Y-BUV=&]C."YQ8V]W,BYO=70`K9C;CM,P
+M$(;O^Q3N<EY@B6?L-.&PP.ZR$A=((%Z`IG$?@.L^/$[LULED)BY5VK129?V?
+MQO;7J=.B"`^EK%:F5*96^T;YS_$"-?@POM3AU^/WF^'CL`HP70@I9L#@"3=B
+MW2<<2+A"3P<TCQM4APP.CJDI*(<S8G5S`PSN>M4O7;\9%4G@)<"`$S?CHOH@
+MU$<3YL+Z8.GZD%\_>\S1@7*^/@SUT=1&PE59'#"I6L)MLSAD4HV$VV5QADFU
+M$LYE<99)[06<SJCB<263TA(.LK@-DT()9[*XBDE)WNF\=S63DKS3>>^V3$KR
+M3N>]:YB4Y)W.>[=C4I)W.N]=RZ0D[T#P3B6<8U*2=T"\6T?<5<+MF93D'1#O
+MGD3<TQ-.<RG).R#>/8NXYPG']#N0O`/BW8N(>YEP3+\#R3L@WKV*N.N$8_H=
+M2-X!\>YUQ+U).*;?@>0=$._>3KS33+\#R3LDWKV+K"+AF'Z'DG=(O-,1!PG'
+M]#N4O$/B'4:<23BFWZ'D'1+O;,25"<?T.Y2\0^+=)N*JA&/Z'4K>(?&NCKCW
+M"<?T.Y2\0^+=AXC[F'!,OT/).R3>?8JXVX1C^AU*WAGBW>>(^Y)P3+\SDG>&
+M>/<UXNX2CNEW1O+.$._N(^[AA`,N=?*N*/@KXKY-OK.P[/G3I/.Q9M[E@1E@
+M]3_`N0H#KEYTPC9,V-\Z;D"5MKN\$A:[G?1-1)E6`C[^=>[N]X/Y,:S/+GU#
+M8-/Z%=PR4535'\=!6C\[6K\ZB\MLAPT'LT6F&W#-N3C_X^*/]JU3SA'<GP%N
+MM_!FZ,ET77?R]\>IZ@S@>@`,N&ZZ(4QWF/EOX#BL#NM)?0&7I@N#"(QPFJO.
+MGQ;[UQC7)IRF/6MVLFNV.K>H*GU?/@O7;E7CNI-MLYG@KHZXOB_[`Y"_:9V^
+;RP.'GS?C9U#%1.!B[IFR:U2K?VQQ7;KP$@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.raw.gz.uu
new file mode 100644
index 0000000..f5ae94e
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.raw.gz.uu
@@ -0,0 +1,10 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-vtoc8.raw.gz
+M'XL("/3%'50``VEM9RTQ>#$M-#`Y-BUV=&]C."YR87<N;W5T`*V230Z",!"%
+M]YSBX=(%:8=296N,.Q,3+R#8>@#7/;QMA@0*Y<>$H73S>%_F,2,$%Z`T3@1=
+MA:,(50FE4"HO&'A]>N!N7VLOSZNZ%UPN8YCT8M(BE@17C,IEQPYXCGQR&7B&
+MJ"$H"61<W;OJ5=Q2?XQK]HK+N'8K3OO;P%A8.\*]!KCWSL.0D[@6?N`DPY]<
+M!>;CN#+$9?-XPK,X+[A\TA_C^K@TL%"$DZGN4/`;XTR/DW^M2I[LSNZZ*O*S
+M%6<:M!9$*/4$=]`=CH*K\M\WB7M><(\B?GA55`?<;?<4!6#V`]&)2;VR!```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhd.gz.uu
new file mode 100644
index 0000000..aadaa42
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhd.gz.uu
@@ -0,0 +1,17 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-vtoc8.vhd.gz
+M'XL("/3%'50``VEM9RTQ>#$M-#`Y-BUV=&]C."YV:&0N;W5T`*V6R6[",!"&
+M[SS%2+UQ0-[BP+5JN56JU!?`21S40Q<!!PX\?&<29W$2!R@.QC)RYO,_X[$9
+MQNH'0$O0)6@+.J%QJD!O(%T#X*1KHNJY^PF7_.?;YJ?/\\H]ET4-XZQOY9N3
+MO9"@<)$4A*%%=$%CN#28U=/K?OGYM6]PPN&:A94&)2!!B!JMHUFKCDC;YX^7
+M"KGKU,FQNLX*OYD"IH#SWANR4;=K-;8XA59E6;44C*ED-LW[X4UTS@YP"1M8
+M]61.!;7G[!1.SUG=@ULNW%[4J8*)D6*/H>.0"AICVC1Q&#5,E?/QUQR.=J!/
+M!%)%M_KX:$Z&W14N543SLE.@*)WGW(6*<AKB)E+EH>AIWTZY`0:!)<V$J-SW
+MH]>AH*]/<S83\_!F!/49TH?'"W>4;H&D.V=2XT01<GA[L!9/FG[SXV<"N_OO
+M^)FU9W?E=*R!;>C6"::+V716F\</FS&QW*UQV:TXNKX**"Q8.\#M>K@\\F9D
+M(W<M9;*\#<B&[F;DKAR\SUT?P-%%RD;Z:ESGKNB9"`\WNEQ(';3'K(\K6MQ0
+MXQ5GV:0Z&S55LO)67&$@LR`ER&2$DXG#Y62%?T3,3/3AB<O[RO_4J2+<O1+M
+MHA*Q%2H'C*80@3:R0LYF,^/>\ZN=PDA5'^$B5GV$BUCU$2YBU4>XB%4?X2)6
+2?82+6O7I*O<6?^^O%OLJ#```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhdf.gz.uu
new file mode 100644
index 0000000..bcf2071
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vhdf.gz.uu
@@ -0,0 +1,14 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-vtoc8.vhdf.gz
+M'XL("/7%'50``VEM9RTQ>#$M-#`Y-BUV=&]C."YV:&1F+F]U=`"ME,MN@S`0
+M1??YBBMUEP7R<PC;JLVN4J7^0""8J(NV4M5%%_[XVK%)L'$>JC"#!1KF>*X]
+M#&-A`(I0"Y#VI@2TA%*0Y!P]G']NL-MO8Q[?GNBE"L.N`HP[9S&$77/8*AMV
+MM8[`31+'KP,W8`V8*`(#KCE'-3=QU_(+N'8IN0'7W8LC-_?H#8S)<+L);K_P
+M8?"97`-WX/(^(,OE<B]79M_S.%_`.8=EL_P"[BQ73$)$@N.E[%"%.\7U)UR>
+MXPVQK)B=6;14^'`OKF_1&4@)J6<XJ2-.^"CMOF\+\V6'?:W2*Y2*BL#%:H]B
+MHR()&D#FV*LD:@5J4&^F0)$<,^S^Z]/L?]Y_I_M'L5$-0]E\O'!-T"U20[1^
+M$>K]\R2_A^?#^OWC,.)$5#4N[%KJJ9/F*BF5NW5]=/QU1YR<;Q)-=Z]38`J<
+M)\)C=KNT6#Q.G<2:`9T^ICE:\I(XBK7G<9IE4?\O98^CA4O%U=[J#P!,R,C=
+#!@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vmdk.gz.uu
new file mode 100644
index 0000000..238837c
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-4096-vtoc8.vmdk.gz.uu
@@ -0,0 +1,81 @@
+# $FreeBSD$
+begin 644 img-1x1-4096-vtoc8.vmdk.gz
+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
+5%`'0[+U7^,]AS;[Z/YH4:2:>70``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-apm.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-apm.qcow.gz.uu
new file mode 100644
index 0000000..99f2a7b
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-apm.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-1x1-512-apm.qcow.gz
+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
+HSV](YW>>P#_Y)[[^\N;^?VX'FS3XF[UA<[[^!I]_^C_<Q@LX=*8`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-apm.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-apm.qcow2.gz.uu
new file mode 100644
index 0000000..88ef9cd
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-apm.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-1x1-512-apm.qcow2.gz
+M'XL("(\[(U0``VEM9RTQ>#$M-3$R+6%P;2YQ8V]W,BYO=70`K9A);]LP$$;O
+M^15,]Z9-*LZ0E-P]FX$>"J0->@Z\R$"`+D8:H!?_^%+6R)2I&3$VY`A"#.)[
+M&`^?QZ:SK'XH9;4R3IF16DR5?TX7J-:3[4NMOHV_G+0?JX,:IC,AQ2P8W."V
+M6.<!!Q(NT]T%S>-:U2&#@R;5!:5P1JRN;X'!'1VL6[?>C")*X#[`&B=NQE[U
+M05U?G#![U@=#UX=\_VR3BQ=<?WU8UQ>G<@E7)''`I$82;I+$(9.:2KA9$F>8
+MU%S"E4F<95(+`:<3JGB<8U):PD$2ES,IE'`FB2N8E.2=3GLW8E*2=SKMW81)
+M2=[IM'=3)B5YI]/>S9B4Y)U.>S=G4I)W('BG`JYD4I)W$'EW2+A'`;=@4I)W
+M$'GWF'!/-CC-I23O(/+N*>&>!1PS[T#R#B+OGA/N1<`Q\PXD[R#R[B7AC@*.
+MF7<@>0>1=Z\(]SK@F'D'DG<0>7?<\4XS\PXD[S#R[@VQLH!CYAU*WF'DG28<
+M!!PS[U#R#B/OD'`FX)AYAY)W&'EG"><"CIEW*'F'D7<YX8J`8^8=2MYAY-V(
+M<&\#CIEW*'F'D7?O"/<^X)AYAY)W&'GW@7`?`XZ9=RAY9R+O/A'N<\`Q\\Y(
+MWIG(NU/"G04<,^^,Y)V)O#LGW,4&!UQJXUV6\1?A+COO61CV^Z<)WX\U<Y<7
+M>H#%+L"^"FO<:-`7;.L7['?`0CA'9>M/R*(7>/F]PAQNUV>'/A#86A@_F<V\
+MDT/IP.<75E=?F?[96AC_=O#3U%]NIIQ]4'VGR^7/DL')I]O=CU,>A]WJ[&+]
+MOY<E!Y4;Y49T=POERFJ9JKM93N[N;^]O__R^:7#5!Z2;5^%\E^I^399L=7;@
+MO34/W-MFJ@`!M_=6-?69H=TSZ^UP5>/]1OC+CTN+U93S7S.4M=6:Q2YP?%>6
+M9]<7QS_&U^W^F6%_;+#^1)7N'[3Z5[])VOU3[?K<T/USO?W+4>4YXV;HW]]_
+HM8A-?4/WKZ#^^9-Z]RXOK*Y.MO]JH"'@8!4:5TWG@_\+*`W"Y1,`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-apm.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-apm.raw.gz.uu
new file mode 100644
index 0000000..025d7ad
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-apm.raw.gz.uu
@@ -0,0 +1,12 @@
+# $FreeBSD$
+begin 644 img-1x1-512-apm.raw.gz
+M'XL(".3%'50``VEM9RTQ>#$M-3$R+6%P;2YR87<N;W5T`*V3S6K#,!"$[WZ*
+MZ;50(\DKJ3FFM+D50D//P=0.!-K4I(%>]/"5(HG(/PDN:+T(BV4_QK-KQGP`
+M)"$%F$T64G`PPN4^2)B7M]+&71G#%![&V8VNZ[AR$*:X]T#ARI*!FE%?E0)Y
+MOV#6KT.@QSE]Q*&92_4!)6?I6W;=9SN!$[D^U^.JL3JY.[]S0`MH@EJ$4^V@
+M6E<.ZK9=?3SM3_OOPS;BR.)4XYKU?]1]U=VD.IEYMC1SMA27,@#[LT741[EW
+MC\[C4,YX.PB;)"`K$$$T5KAT-7L?`5?'MGW:/#^\KS:I?T29]:D9_HG$/_^3
+MI/XAU:=R^Z=N^J<K:#VQFQ?_?G[](D9]N?U[#/ZQ>N*\7C#KLO]X(`5@-H4D
+,'+#X`^%)]I"G!0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-apm.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-apm.vhd.gz.uu
new file mode 100644
index 0000000..ad1859a
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-apm.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-1x1-512-apm.vhd.gz
+M'XL(".7%'50``VEM9RTQ>#$M-3$R+6%P;2YV:&0N;W5T`*U6RVX;(13=^RNN
+ME%VD6L#`G739JO&N4I2HZV0Z9B)+36+%EIJ%/SY<'H9Y,+5=QA@Q8N[A<.X#
+M&',/`%:`':`&5#2N)>!7J&\`S*1OPO;<O\*A?7O5[7[SL?3/8>'`.$NM^N9D
+M+RJ09I$:1$.+X)K&<`@PRZO;Y^O-RW.`$QXN+"P1I`!E0.1H'61'=H2T^O[P
+MPT(^17;5F%VT,O_?$I@$SI,OJL#NZ<CQ"">-5=?95D/36)JA]5YZ$W&S`SC%
+M!E8)S2E1D\U.P>&<U3EPUPOO"Q<J)C!JTQOI.-2"QB9L@@ZC9D+E8[=MWG=Z
+MP$]D0@6/_/AHKLIO5_A0$>%CST!2.,]M%RS*?@@W$2K_I1[V[:0?&!&8"A/"
+M;K^O7H2"E!]R-J-YWAE9?@WQ,ZFI1$AVVZI_;?CVGF#8T!U-QKL7Z]?2M,D0
+MN9Z*BO@RS-V[GY/ATA(_R2F,*9);BN%3^'W;;O_H"3A1:KL.KAJS4YW/.9MT
+MKD3;WI5NU05VCR;;]IO]YNWU,<!1H:)2:Q%/9_?2;"?9J<*^U2?Z-B2-\(!]
+MWT+@ITO'GK;N0!*>3D@5SR"Q-L05S9GW$>#J76MS"GWYM7I(]=.R+#_.3M!/
+M)/JY)$GU2VL+SQWBE_.;U8\.DWHB-J-^N[\N$`._TOH)KQ]K)OK\Q.%NV?\Y
+M0.&+:;'J+&+U*\-0>L!B#&7,X5(,.<XZ\UPOHV=8Z*J+^2ISR567X`I>==&7
+BK*P5.^NJB[YD%;KJ$ES!JR[!%;WJHBVHBT^(Z?)+'PT`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-apm.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-apm.vhdf.gz.uu
new file mode 100644
index 0000000..189b488
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-apm.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-1x1-512-apm.vhdf.gz
+M'XL(".7%'50``VEM9RTQ>#$M-3$R+6%P;2YV:&1F+F]U=`"M54UOPC`,O?,K
+M+.V&M*I-'(<=-PUND]#0SE!HBRH-J!C2=NB/7SYI2@MB4U,K2N3F]?G9<>/8
+M#@`4(!C$RF)GW,S-_L*@GKY':L21'_7(@B6W3EV'BRY&/1I;0*;=(@;,.N=X
+M")BT'?7\[1+0PFE^F(",M=$&2-S%[[FJ/O,>.#94N!:.=]F)PJP3`,E`(M"3
+MFZD`RK7;L5M6Z?%4GLK#?NGA4,%1I@_+O[#;I54O.S%P;O'.W*);,`?8SBUX
+M?CAT[:%)!VGA52*4(0/!`1%8IH@+[5/[#N#LF.<OB]?'C]DBU`]Q8'YTAWXL
+MT,]>DE`_"/G1T/K13?TD!RE[:K/1[^O;%J+G-[1^$Z=?G/;,UQWU/&H_%A`=
+MX&`,R75GXNZN:Q&Y[P&3$)`UZ36`F\,^WYS*G_`&D^O.1=%O^CSC^E]`$EAJ
+M6DRFUP&_A^EV7.ZV'LYW/_]AE>MSBB^CI':X,Y5@`[EJV/&N2!2JMT9=RTG2
+M"MRQ6X7J63@\!YL7L!:&IK?6IN7H[<T:SG2_\.7_YM;"T<"EHGZ4HU\LKXQY
+$T@<`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-apm.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-apm.vmdk.gz.uu
new file mode 100644
index 0000000..d704c00
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-apm.vmdk.gz.uu
@@ -0,0 +1,82 @@
+# $FreeBSD$
+begin 644 img-1x1-512-apm.vmdk.gz
+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
+G]:M]_=S]G9_\=_^%\X>+[?_6A+E/:+;"W-U\-GWU?YW"XEV37@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-bsd.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-bsd.qcow.gz.uu
new file mode 100644
index 0000000..1aab948
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-bsd.qcow.gz.uu
@@ -0,0 +1,125 @@
+# $FreeBSD$
+begin 644 img-1x1-512-bsd.qcow.gz
+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
+C[Q7![H=9_O+<'G[4'_CVK[?W_[D;''X,_O'_LNY7-X&E````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-bsd.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-bsd.qcow2.gz.uu
new file mode 100644
index 0000000..0fb9958
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-bsd.qcow2.gz.uu
@@ -0,0 +1,21 @@
+# $FreeBSD$
+begin 644 img-1x1-512-bsd.qcow2.gz
+M'XL(")$[(U0``VEM9RTQ>#$M-3$R+6)S9"YQ8V]W,BYO=70`K9C;DM)`$(;O
+M>8I9SZZ*F>Y)2#RLNNM:Y9W>Z#6P\!0\O!NFR22=_C-(!5*IHH;_JY[,EV9"
+M4<27<Z5WH7*A<?N->_PL![G>A^'A#K]__%SV7X=%A/D"I(R!P!UNP+I+.$*X
+MPH\'O(WK5<<&CDZI,2B'"["ZJ0$#=[TX7KKC8M0JP9<`(PXNQD7U4:Q/)\*%
+M]='<];%]_<I33@]4T_5QK$^G5@A79W%DI!J$6V=Q;*0V"+?-XH*1>D"X7197
+M&JD]P/F,*H^XRDAYA*,L;F6D&.%"%E<;*>2=SWO7&"GDG<][MS92R#N?]VYC
+MI)!W/N_=UD@A[WS>NP<CA;PCX)U+N)V10MZ1\NY*<$\2;F^DD'>DO'LJN&<=
+MSELIY!TI[YX+[D7"&?V.D'>DO'LIN%<)9_0[0MZ1\NZUX*X3SNAWA+PCY=T;
+MP;U-.*/?$?*.E'?O1MYYH]\1\HZ5=^^%522<T>\8><?*.R\X2CBCWS'RCI5W
+M++B0<$:_8^0=*^]*P54)9_0[1MZQ\FXEN#KAC'['R#M6WC6"^Y!P1K]CY!TK
+M[SX*[E/"&?V.D7>LO/LLN)N$,_H=(^^"\NZ+X+XFG-'O`O(N*.^^">XVX8Q^
+M%Y!W07EW)[CO'8ZL5.==4=B'X.Y']RS-N_\,:7_LC3,>F`#6_P.<JC#BFEDG
+M7,8)MQJLC3,>.-PNA^\.>%SA<M6N:EFYFLZM\._]G_&$RQE7..+PXZ@,=`7[
+M<W#'Q]'>-^O^Y@(.##<75PDW^3C:[K%WU@"LKIQ9%JI5KK_.KMD?'U).W5UM
+MS;KU=:D^0V8:3'>B/C>>;ONKT3W=J55L<929KAOB-I-K.UW=U;BZ[<R+P?K.
+M.//.;2'#.S?B:-Y&0/%_J:+]UOB,!PZ_EL-W!`8!SG8%0]7VOL4_.5!JJ4,3
+"````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-bsd.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-bsd.raw.gz.uu
new file mode 100644
index 0000000..874e570
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-bsd.raw.gz.uu
@@ -0,0 +1,10 @@
+# $FreeBSD$
+begin 644 img-1x1-512-bsd.raw.gz
+M'XL(".;%'50``VEM9RTQ>#$M-3$R+6)S9"YR87<N;W5T`*V4P0Z#(`R&[SY%
+MO>Y`2H7IKDMVWVD[.[,]!0\_4%0J`UU",22D[9>_U((X&8`BP/['GG:8J^#+
+M5*=JI)$#ZA:4!GV&SH;C^K$#<YCG[2%",QXG<UEIG-C8C*,]W")8'L$U+BN(
+MM&I)+KB48\+5GE6O.)539Q'X_JM87>KNYMYVF[RPSX`?P`&P\S[BP*6_L.J[
+MQ#*(E9O1!W&YO<.U/%X&.-HI%SCNE>UM7ET=JQL*-Z/93L;!R740/KD3CLH^
+B!#2^+/8/M%'QGG:8N^!K`BH/+':#BARP^@+33Z#K!04`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-bsd.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-bsd.vhd.gz.uu
new file mode 100644
index 0000000..ef644e4
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-bsd.vhd.gz.uu
@@ -0,0 +1,17 @@
+# $FreeBSD$
+begin 644 img-1x1-512-bsd.vhd.gz
+M'XL(".;%'50``VEM9RTQ>#$M-3$R+6)S9"YV:&0N;W5T`*V7/6_#(!"&]_R*
+MD[IEB.",L;M&3>=*E=HUCF-'&?JA)D,&__AR-MA@C).TV`1AP3V\=QR(,-8]
+M`#(!68.L0*;4S@3(1\AR`-6I"[8UUY_0E%^?57D^7E;Z:18=C#/;RC4G>TQ`
+MJ$DRP((FD7MJ0V,PJX?-87G\.!@<:IR96$@0"*F""&\>R7IU1'I>OSZUR.V@
+M+O'5#5;JMQ/`!'!NC4B,NFVOL<<)9577;<F@*%J9IC@?3L?@[`B7LI&5)7,J
+MJ):S4S@Y9W4/;KG0:]&EBDJ,3-4J=!PRI+9*&Q,'KZA4N9R^BY]3-=*'@521
+MO3[N]25A=U&G"IK!6H&@=)YS%UK*>8R;2)5_14^Z=D(W5!!8:CJP==^-WH`"
+M6Y_D;";FX<4(ZBM(G]I;K)BHPQW->N6^/;`D8)K1=D\EY'AK!-\W;U/K6P;2
+MY8^[H\1KN%XPOP67Z+UK49(!%^KH<$RSV(`3<^HH9ZJ[G$TC)W.9C^SL=09>
+M`]\#RZVLMH#]^L*@[]&7@8Z[,_K`=[<@7.:.YQ8.K[@++FXWN[;SZIBOKHR\
+M&/OQSKAQYQ+$W;D=#N,>!-B>+"H#U2B_#G<T+ROW[8"HCZIH9Q^:HRJ60J&!
+MT10J8!59(5:SR79O%DJM,-)%DG`1+Y*$BWB1)%S$BR3A(EXD"1?Q(DFXJ!=)
+/J?XB,+;X!=0\?G%]#```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-bsd.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-bsd.vhdf.gz.uu
new file mode 100644
index 0000000..7edc3a0
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-bsd.vhdf.gz.uu
@@ -0,0 +1,13 @@
+# $FreeBSD$
+begin 644 img-1x1-512-bsd.vhdf.gz
+M'XL(".;%'50``VEM9RTQ>#$M-3$R+6)S9"YV:&1F+F]U=`"ME$UO@S`,AN_\
+M"DN[]8"2D!AZK=:=)TW:K@4*50_=+COLD!^_&`+$?+6;"%$$<OSPVDXL1#L`
+MM`*1SZS+!GN(^6.C7=30%`%-"MJ`0<C<=C%,]L$,]N/X'H?#>IQ<\UK&Q:/1
+MX=0]7"]8/H)+R$LR2C+@E@PM3GB6&'!Z39W+A*C^%*S9*G==;;.17UAGD#7(
+M,XC,VQ0']O6%0=]^*D.Q<%?TP33<G'`IWR\#G+H3+G!<L5K;=75BJJ[<N!C)
+M^&8\>',)PF]NBU/;-@+5=!9W`MVNZ;ILL*\Q?UJ@]L#-,HB^]V$"6`-6@(;>
+M4PVXAS0+@8J?)%M^?5;E]_4GK##AJ"!U/3_)7R5T6S`%E=-/\$SO@;ZGXV5W
+MO5TZ7->JNA]KI*0;!]&3<)&'^W)X>VZ0IT%=,DT2AMDK-`@-4K+`O;H3/\Z$
+HTWVP50V%:61VDWTPPVRK(IP1(Z__UK;%X<9'Q1V^Z!>1V%I#,`<`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-bsd.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-bsd.vmdk.gz.uu
new file mode 100644
index 0000000..84e2c3e
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-bsd.vmdk.gz.uu
@@ -0,0 +1,81 @@
+# $FreeBSD$
+begin 644 img-1x1-512-bsd.vmdk.gz
+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
+,!WSS?ZE[ZN&@70``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-ebr.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-ebr.qcow.gz.uu
new file mode 100644
index 0000000..8e8e277
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-ebr.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-1x1-512-ebr.qcow.gz
+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
+3MYW@L!Z_O\H__A<I;[G$7Z<`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-ebr.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-ebr.qcow2.gz.uu
new file mode 100644
index 0000000..07c721f
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-ebr.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-1x1-512-ebr.qcow2.gz
+M'XL("),[(U0``VEM9RTQ>#$M-3$R+65B<BYQ8V]W,BYO=70`K9=;L](P$,??
+M^13!RU&/BLUN4HJ7HYZ+,[[I@_I<+OT4?'C;9FG:[6X#3*'#P(3_;S;DEZ7)
+MLO`PQEOC<N,VIMJ:^C-=8'H?AI<Y_O[Q<]5_'!<!9C,E)0PX['`#UD/$@8;+
+M['C`RKA>=2C@X)0:@U(XIU8W-2#@;A?M3]<N1L$2>`TPX-3%N*H^"/7QA+NR
+M/IB[/I1_/W_*\8%\NCX,]?'46L,521P(J8V&*Y,X%%);#;=+XIR0VFNX0Q+G
+MA52EX&Q"E1J7"RFKX2")6PLIU'`NB2N$E.:=37NW$5*:=S;M72FD-.]LVKNM
+MD-*\LVGO=D)*\\ZFO=L+*<T[4+PS$7<04IIWP+Q;$NY9Q%5"2O,.F'?/"?>B
+MPUDII7D'S+N7A+N).*'?@>8=,.]>$>YUQ`G]#C3O@'GWAG"W$2?T.]"\`^;=
+M6\*]BSBAWX'F'3#OWH^\LT*_`\T[9-Y](%86<4*_0\T[9-Y9PD'$"?T.->^0
+M>8>$<Q$G]#O4O$/FG2=<'G%"OT/-.V3>K0E71)S0[U#S#IEW&\)]C#BAWZ'F
+M'3+O/A'N<\0)_0XU[Y!Y]X5P=Q$G]#O4O'/,NZ^$^Q9Q0K]SFG>.>?>=</<1
+M)_0[IWGGF'</A'OL<""E.N^R3+X(]S3:LS#O_:>+]\=6>-4')H#%)<"I"@-N
+M,^N$?=@;EP&K2JO/A[U1?Z&^2D]OZBM,C_*V]P<LU+?LX_9S3[>Z#.B]*<L1
+M\,^IOE;G9A.5PJL^<+Q?#9]=?:X!^G6S)WQN"CAWPO^>_DK+X6;;'P&G'^9I
+MH"O8GH-K#_.];_;-T`>&MV;+B)L\S#<GE(,TH%;G9W;/%2S77^?V:+6+9U!V
+M8]NMKXGU":T`!M.=J,^,I]O\YW9G8[:*[0(DIFN&N.WDVDY7MQQ7MYMY,3S?
+M&6?NW`8RW+D!!_,V`F@[2VU@_:WQJSYP_+4:/@/0$7"V7]#ES5_EXC\C;N3L
+$@10`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-ebr.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-ebr.raw.gz.uu
new file mode 100644
index 0000000..70326d3
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-ebr.raw.gz.uu
@@ -0,0 +1,11 @@
+# $FreeBSD$
+begin 644 img-1x1-512-ebr.raw.gz
+M'XL(".?%'50``VEM9RTQ>#$M-3$R+65B<BYR87<N;W5T`*V4S0Z#(`S'[SY%
+M=]W!0`?379?LOLNV,[KY%#S\BO@!(J@)@&A2^LN_MH4Q.P#H65UQ@RX70Q?G
+MHJ?QYC"PZU:!%M>2%QV@I>3P08MQ!\<9((_K.[FX;^YPNV-`*4&I`/@:]:'Q
+M$@A,K>QQ@[Z7_IST"0.4%0@)\@HU[@WX\WBOI4/P7/_/XG`+-PGF>W`7X^6<
+M="LC;M!SF=CWB!,I=81@OT/!RLRU)^J%GYMG8-0E+;!ZL*$/G/(+L[Y;*`.]
+M<!/Z(`Q7&5SEG^<.#C?"!1_7)'.;5G<*U;69DR&7G;&S<PW$[UR+P[P7`?8W
+>"U4@G0KWN$$_2W]:H!B`V?Z@0`,L_F-6J)F4!@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-ebr.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-ebr.vhd.gz.uu
new file mode 100644
index 0000000..c1f997c
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-ebr.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-1x1-512-ebr.vhd.gz
+M'XL(".?%'50``VEM9RTQ>#$M-3$R+65B<BYV:&0N;W5T`*V735/#(!"&[_T5
+MZWCST($-;-JKHYZ=<=2K:4P<#WZ,>O"0'R\$2"`)V"A-2I.!??+NLFPH8^8#
+M0`50"]0`27U="J`]E#L`U6E/[%MN;Z&KWUZ;^NOY>VL_W<;`./.M0G-MCP4(
+M]9`2L-(/H4=]#9W#;$\OG\Z>7YX<#BW./5@0"`2I(&+V'&*#.DVZ.K^YZ)$/
+MH[IBKFZT4M^#`":`<V]$X=0]#!H'G%!6;=N?)515+].=P4W0,3H[P4DVL?)D
+M+@75<W8)1RFK-;BSC9T+DRHJ,4K5JM!Q*%%?J[1Q<9B=*E6^/]^KC\]FH@\C
+MJ4*#/C[K*^+NHDT5=(.M`J'3.>4N])2O*6XA5?X5/0KMA+U006#2=6#O?AB]
+M$06^/N(L$?/X9$3U54F__N#PX;`:&%%H</7@<"5'CTR2C,%$'M=WXN,><[O;
+MK@-*J2O&%'CK]-7:2I4Z5BVT\8[N?!L>@[Y&`V6IJZ\DV.&Q#M]?WBU-1Q-9
+MO>OC9W#X&VX0S(_!%;:4NI%^9L0[NC%-S*_#B90ZO82;5<[*S+G7["9V_CP#
+M4ZND!K:S?1@"A_F%4=]^+@,#=Q/Z8.YNI7%E.)Y[./S%70AQA^3<IM6=S-75
+MF2>CG:Z,(U>NAH0KU^`P;R'`OK*H#%2CYFV\H[O>AH<!HGUS9'L5H:U]V10*
+M"\RF4+ABFD]AP9+)MC8+R2K,M*^G>+G_R[Z>O'*?85]/KMS'K-BJ?3W9<I]I
+;7T^NW.?9UVM<UGT]J7]LC&U^`&IC,XL,#@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-ebr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-ebr.vhdf.gz.uu
new file mode 100644
index 0000000..c7d0a81
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-ebr.vhdf.gz.uu
@@ -0,0 +1,14 @@
+# $FreeBSD$
+begin 644 img-1x1-512-ebr.vhdf.gz
+M'XL(".?%'50``VEM9RTQ>#$M-3$R+65B<BYV:&1F+F]U=`"ME;%N@S`0AO<\
+MQ47=,D2VL0^R1DWG2E7;-4`@RI!VZ="!AZ^-,?%A(*0R&#`ZW\=_OK-AS!X`
+M^AIMTX9F.SB:U6;5TGCQ,+"N1X$65VHO/4"W7'4=W1CW<)R!X-/ZUC[N%#O<
+M^C&@4I#G`?#=Z1/&2PI@^<A]VM#LM_3L]4D#5"E(!0HA$TL#_CQ\C*5#\ECS
+M9W'B'JX7S)?@$N/EC?0K8]K0W,K$/AU.SJG3"%8]%*R*7'LR&_CY>0:F5TD)
+M+.ML@@+[_,)-WRZ4(4BX,_H@##<WN)2.YQY.W`D7**Z8S>V\NG6HKHR<##5<
+M&0M7KH'0E6MQ(NY&(-J=15>@'A7>IPW-ZY:>%B@[8+09Q.Y7A`E@#5@!*M-/
+M)>`.TLP'"EI)3?G]594_EU\_PP;'^S]'V(R_2,QJP11$;CZ")]/W]#T=SIO+
+M]>QP;JMR'Y9H)EUIB`S"11KNR_[MN44>;^J2<)+0G[U"`I/`.0F\4W>DY8SM
+H/N^"K6HH5"O3-?)"#*-;E<$I-O#Z;VXM#B.7BJZ]U1_9@4$XOP@`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-ebr.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-ebr.vmdk.gz.uu
new file mode 100644
index 0000000..9ad3787
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-ebr.vmdk.gz.uu
@@ -0,0 +1,82 @@
+# $FreeBSD$
+begin 644 img-1x1-512-ebr.vmdk.gz
+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
+=_,;UN]/^SY:P]`G-.EBZ#T[+O_H__903[2]?````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-gpt.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-gpt.qcow.gz.uu
new file mode 100644
index 0000000..93e4a77
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-gpt.qcow.gz.uu
@@ -0,0 +1,132 @@
+# $FreeBSD$
+begin 644 img-1x1-512-gpt.qcow.gz
+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
+4N4?](MX>AAN9_O;_@'C+'O6L````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-gpt.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-gpt.qcow2.gz.uu
new file mode 100644
index 0000000..7528fc4
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-gpt.qcow2.gz.uu
@@ -0,0 +1,26 @@
+# $FreeBSD$
+begin 644 img-1x1-512-gpt.qcow2.gz
+M'XL(")4[(U0``VEM9RTQ>#$M-3$R+6=P="YQ8V]W,BYO=70`K9A+;YPP$(#O
+M^15.WTT:BL<VC[Z3-"OE4B55>VL/+(]3%:EWVM]>C`T&,P/)UKMHE<B:3V/S
+MS=@0Q^;#F.),)DSFK-FS[G][`9O\,[]8>[N[CJ:?]LC`>$Q$(0-2C+@9Z]+A
+M@,+%?#G`<=PD.X'@8(A:@K9PDLQN;0#!G1SU2]??C,R+$(<`#8Z\&0?E!R8_
+M/T(>F!^$SD_@ZZ>&.'\@6<]/F/S\J)3"99LX0*)R"E=LX@02M:=PY29.(E$5
+MA:LW<0J):@@<WU"EPR5(%*=PL(E+D2A!X>0F+D.B*._XMG<Y$D5YQ[>]*Y`H
+MRCN^[=T>B:*\X]O>E4@4Y1W?]JY"HBCO@/"..5R-1%'>@>?=L<4]<K@&B:*\
+M`\^[QQ;W9,1Q+(KR#CSOGEK<,X=#^AU0WH'GW7.+>^%P2+\#RCOPO'MI<2<.
+MA_0[H+P#S[M3BWOE<$B_`\H[\+P[6WC'D7X'E'?"\^ZU9<4.A_0[07DG/.^X
+MQ8'#(?U.4-X)SSMA<=+AD'XG*.^$YYVRN,3AD'XG*.^$YUUJ<9G#(?U.4-X)
+MS[O<XMXX'-+O!.6=\+Q[:W'O'`[I=X+R3GC>O;>X#PZ']#M!>2<][SY:W">'
+M0_J=I+R3GG?G%G?A<$B_DY1WTO/NTN(^CSC`HD;OXAB_+.YJ4;.`]#N9W!.W
+M6^+HAY5#CK/2';<Y\DL/K`"SAP/)O5::<TJX"2LS86U5@?S2`^U%-/^.P+YV
+M'P`<,ISC[(25J5WSP%C7K&GL95;*!F>3`P(RX>-H@JL"KU]?;@\`*L6*8@'\
+M/N37EUM77^;=0&>WZIN!`J;DB.OGJLII?E>[:W9S_O6;AOUPT^W+3>-J_;!4
+M)%YVG)KNU1?$/F7*+6W\U1YP@L*-QS(/IX\7:;6"PR[6_B%P<BUJ?.EPCWMK
+M<"J>1TW;%LL4RX`E):L*$O=KADL"FR?U\#YA:<F26K]/*AO]1Y7HIS26=65B
+MMFWHSU@Y2[D^NW7`]NXVNC.PL^CWJ<U/<FL$=M$#U.I)6#-")[4Q73;'8:^1
+M_FOU=%_>JV"KEUM9L(L>(%>O,*N'+Y)."BV9=EBUH>`&W#[PZB5ZN*N/KG\O
+M?^F!]B::?PU06F"P#&72E`&K0^,"5H?&!:P.C0M:'1H8L#HT+F!U:%S`ZM"X
+MH-71`>LXW":N<=J]/&.J8KED335/@]R.V^@G.MT:UK;^E4T<OQEUP$U<XU8W
+?\;0F)VL_?[W)!MS$-2[H)BY3??P^^@=.=Z`2%1H`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-gpt.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-gpt.raw.gz.uu
new file mode 100644
index 0000000..98d9945
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-gpt.raw.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-1x1-512-gpt.raw.gz
+M'XL(".C%'50``VEM9RTQ>#$M-3$R+6=P="YR87<N;W5T`*V534_#,`R&[_L5
+MWA5$E*1)FIWXD$#B-A#<N/1C/:%)W,M_)VX:UG9Q89+3J*KD^JGM^*VEC`O`
+M:)!5YDX;^@<QO_K-U6:@J?HR8/@^AK``B@",N"88I<9W#@?HNG%+-7A%9VE!
+MJ_0\XL1I;<4$UYZ\SC9MF.)$Q*5TN\N`UD)5G0'?4WQZ.`X+QH'9@0[O2S`*
+MK`9K?G%#KK:9QO?X]`S[^]<WA'V<TM4J&%4#1D)30MLMHE-DNG?+="-.HY=9
+M5COA"A*WS>.*>+8T+K=IG%GSBCWTO[.-."OG7G[JY2UX#:Z!MB)QGS.<8^X\
+M@^;:0=F`.X!5T'3XT#I0*L079.('2*AO"W('I0)=([`_OHACA-V(K^LQ/J/&
+MCLAMVD!5S^BUCL"@_D@7YKB"NWH>JV?9JK<;FR6W:0-9O2I6+U\D4C)]JEI2
+M2,+5S-5S:`[Z"/_O\SMMZ/=B?D6@&8%L$8;F<XSJ0!RC.A#'J`[$L:H#@8SJ
+M0!RC.A#'J`[$L:HC`+WD&^*(&X:X@;*%MH!B.<2I<=R+;W&;2=?KM=&_,L3S
+CA^$9ASCBUH=X02:;UB)9QB&..-8A'H"5E)L?B^NWCH@+````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-gpt.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-gpt.vhd.gz.uu
new file mode 100644
index 0000000..61a70ff
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-gpt.vhd.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-1x1-512-gpt.vhd.gz
+M'XL(".C%'50``VEM9RTQ>#$M-3$R+6=P="YV:&0N;W5T`*V82V^<,!"`[_D5
+M4_66JA0;V[#'1DVDWM+7+8>`@6BE=OM(#E'%CZ_'V(`7FW238;V(E7<^YN7Q
+MR'D^7@"J`-6#ZD!)?"X%J!V4%8"9=(/;.W,_8=`_#YU^V#]F[AK.1AC+EU*A
+M.,KS`H1Y20F\QI>H%I]A\)CL]>7=^?['G<=QA_,O%@H$!VD@8O4>E4_:(>GJ
+MXLL'B[R=M2O6VLU2YML(R`4PMOA'X;6[G72<<,)(];T=)90URDXC^!%,(.YO
+MEJUQ,C^26J@9<^K"V!A.;4F=@CL_<[$84\4D1FGNQG4,2H[/)FV\'U;#I,KC
+M_:_ZSWUWI!]/I(J:]&.KN2)M+G>IPOV?G08"TWG+7+"4AV-<)%5>Y#T5ROGH
+M&B?DTD]P:W[HO1D%2_T4RS=\G@Y&4K\:]3-K*Z\C]_3$<)&%GPG8-*<!O0=#
+MW&1PH]%_MHYTW6S1F"2S8XN-@.0+_S4M<7R;_C2@E%#7*^`WKY^VX9"VX.TP
+M,4QQ$`RD*7YS.EO;I5[J=WGU$:[??_Z*L)O97(WITK6X@DS5[=LC[=8K;3)W
+M'UMLFH_9Q_NHL442]RZZ=C4N-J-4&A<;:9S8DG);V?\74BWS4*I:2E42*@Y*
+M0ULG<=\#''5=[G"Z45!JW,(E`VWW\E;A1@:562:5A7#@)NYF8S>[<(/`X?`I
+M.XRPM]GO-TZ_CKF,B(WT1,I['=_*"%3J"7,AQ%'7Y:Y"[TDR[^U<LL1&>B+I
+MO7KT7MQ)J%1LZ4Z[6I:]"G$-K?>8;1_-^C#U>WU/3PS76?@9@=QM0V3[&G>%
+ME$Q#X8!D&@JW?@DU9&(SF*=&6;F@$%48Q!%6&,015AC$D588!!)6&,015AC$
+M$588Q)%6&$7;""G7".6E#4`!31>JD6QI!A\(WW)X'-]JGS8:H7@P*!LA]50C
+MU'=)8_UU9"QA(Z2H&R'E"BG168;RC=!:A^><92C?""U>_(*S#!5OA)Y[EH$X
+8PK,,Q!&>92"..%6P;SG[!W<O66(`$P``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-gpt.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-gpt.vhdf.gz.uu
new file mode 100644
index 0000000..7e6c736
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-gpt.vhdf.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-1x1-512-gpt.vhdf.gz
+M'XL(".G%'50``VEM9RTQ>#$M-3$R+6=P="YV:&1F+F]U=`"METMOU#`0@._[
+M*P;U5D2P'=O)'EO12MS*Z]9#\["KE6`1$@<.^?%X_"!VU@X4.1E%64W\99X9
+M+R'N`.`,R)"YEA7+;9.>R^'Z8&ET?!G0O!]-V``;`W2XR2@)PV>4`JV]$&I7
+MN<5&6K+>6URS'J2)<'.\:B-E18QK'"ZXJU\&%`*&X0+X)=C';#H$<`G\",P\
+M3X!3$`P$_X.SOHLIMN_N_CT\W'S\C+#'U5U&C5+-0%J01]#SQCI:=O>T<=?A
+MC$$8?::SSK9%W-MM]!RN1=R\@\M)&<?W5KD:^K?<.IP@Z:H^7M4+Z!G(">:A
+MB/N:X&3ERN.H'B5T$T@%@L*D\6:60*FQS[1);R$,F,G[$3H*;$3@<O[0G!WL
+M3?/CM;>/4U\1.2DK2M'C;*\BT*B_N`LIKJT=O1ZC)ZI%[^B+)2=E13%Z@XM>
+M/DAH5*YU#<Y'K7F5XL;*T9.H-OUAOM^7U[)B>6C2TP&Y!U:S4&@]5>P.Q%7L
+M#L15[`[$5>T.!%;L#L15[`[$5>P.Q%7M#@-4I-X01YRMO<XFH(51I684Q_$2
+M$A'&9<"QO=&_,\3SR5`5ASCB=H>X5D5GP[%QMN(01US5(2[]]EN:W9GM+RGP
+MON.X6>OZ&,C6FK'`Z?M933]/O^+H(8ZZBL@*KF<M%J;L@`WX$CGC?63?U=WS
+M]>G;<\`Q[U5X,5:TJ6(#X1?NRM3=^]M/[RSR:;4N\YF2<?1&#H3C)R9VW%OW
+ME):*M#N@X*S2F$O"5TE^)(IL(2/.EDK\\/_FUN%JEXKY:W#X#1@%S56S#0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-gpt.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-gpt.vmdk.gz.uu
new file mode 100644
index 0000000..cec7ced
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-gpt.vmdk.gz.uu
@@ -0,0 +1,87 @@
+# $FreeBSD$
+begin 644 img-1x1-512-gpt.vmdk.gz
+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
+BDU_BXY!.-OP\2-;P2]S#F7Z)%_[IG=D7_P=,%9H/M&4`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-mbr.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-mbr.qcow.gz.uu
new file mode 100644
index 0000000..903950a4
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-mbr.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-1x1-512-mbr.qcow.gz
+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
+AW_HGOOWS[?U_?@X.\^#?=H+#>OS^*G_[?V9WPD*PIP``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-mbr.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-mbr.qcow2.gz.uu
new file mode 100644
index 0000000..0b7d7db
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-mbr.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-1x1-512-mbr.qcow2.gz
+M'XL(")<[(U0``VEM9RTQ>#$M-3$R+6UB<BYQ8V]W,BYO=70`K9C9LM,P#$#?
+M^Q4NRP4N4&+)3E.6"]R%&=[@`7A.EWQ%/YXD5N-$D>*VD]:3:<?1&=D^5I8L
+M"Q]CO#4N-VYCJJVI_U,#T_LS;.;X^\?/5?]S7`28S90HH<-AAQNP'B(.-%QF
+MQQU6QO6R0P$'IZ@Q*(5S:G93'0+N=M%.7;L8!8O`:X`!IR[&5?E!R(]'N"OS
+M@[GS0WG^_"F.=^33^6'(CT>M-5R1Q($0M=%P91*'0M16P^V2."=$[37<(8GS
+M0E2EX&Q"E1J7"U%6PT$2MQ:B4,.Y)*X0HC3O;-J[C1"E>6?3WI5"E.:=37NW
+M%:(T[VS:NYT0I7EGT][MA2C-.U"\,Q%W$*(T[X!YMR3<LXBKA"C-.V#>/2?<
+MBPYGI2C-.V#>O23<3<0)]0XT[X!Y]XIPKR-.J'>@>0?,NS>$NXTXH=Z!YATP
+M[]X2[EW$"?4.-.^`>?=^Y)T5ZAUHWB'S[@.QLH@3ZAUJWB'SSA(.(DZH=ZAY
+MA\P[))R+.*'>H>8=,N\\X?*($^H=:MXA\VY-N"+BA'J'FG?(O-L0[F/$"?4.
+M->^0>?>)<)\C3JAWJ'F'S+LOA+N+.*'>H>:=8]Y])=RWB!/JG=.\<\R[[X2[
+MCSBAWCG-.\>\>R#<8X<#*:KS+LOD1KBGT9Z%>>\_7;P_ML)1[Y@`%I<`IS(,
+MN,VL`_9AP(T&I7#4.X[WJ^&W`[:;[0)@/3]5-0+2@'W8;/4)=2L]_:A;F"\:
+MGNU=T84!+U<]W'[F^6OWQP5`[TU9CH!_3OG!W,OA&J!?-YO,YZ:`<P?\[^GO
+MV+\:-]N&"SC][0!U=`G;<W#MVX'>F7TS]([AO=XRXB;?#C2//`>I0\W.S^R>
+M*UA<?YW;9[5=?*AE=\K=^IJ8GU!;8##<B?S,>+C-1;Q[V&:KV"Y`8KAFB-M.
+MKNUT=LMQ=KN9%\/SG7'FSFT@PYT;<#!O(8"VLM0&UF>-CWK'\==J^`U`1\#9
+09M#ES:5H\1\W+X2OTA0`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-mbr.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-mbr.raw.gz.uu
new file mode 100644
index 0000000..494fe71
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-mbr.raw.gz.uu
@@ -0,0 +1,11 @@
+# $FreeBSD$
+begin 644 img-1x1-512-mbr.raw.gz
+M'XL(".G%'50``VEM9RTQ>#$M-3$R+6UB<BYR87<N;W5T`*V4R[+"(`R&]WV*
+MN'7!A`C'NG7&O1MUC?7T*7AX@^D%BJWM#)!29@+?_"$$1&D`A@#=EW'>X<\J
+M[;[:5Q^:?FX#U@AMFP$5`P77,(X7L#G;3=A00Q#.'YM&(-W-Q<"KL>U4A'L-
+MNW*;=\0X);@^W'8;T%IP+@/>>GU4.ATF`.T1C`7[!S6M#?AQN4\"%IPN=7Z"
+MHU^X0;!>@SN$7='*^&;,._QX3>3?X\R2.D;@_Z9@;>&[9^K)OCC/@%PE#6#=
+M^2@%#OF%4=\IET%)N`OZ(`_7!=PQ7:\C'/T(%U+<<S&WR^IVN;JF<#+LM#)6
+K5FZ`I)4K."K[$-#G9>$;R*OR<=[AKRKM`C0=L-@)&@K`Z@UK>@7\E`8`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-mbr.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-mbr.vhd.gz.uu
new file mode 100644
index 0000000..69446fd
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-mbr.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-1x1-512-mbr.vhd.gz
+M'XL(".K%'50``VEM9RTQ>#$M-3$R+6UB<BYV:&0N;W5T`*V735.#,!"&[_T5
+MZWCST$F69*%71ST[XZA7`<'QX,>H!P_\>!-(0@($BZ:E%";9AW<_LDT9&UX`
+ME`&U0`V0U->Y`#I`7@"H07-@?^;F%KKZ[;6IOYZ_]^;5[0889[Y5:*[M,0.A
+M'I(#EOHA]*BOH;.8_>GET]GSRY/%H<'9!PL"@2`51,R>0\RITZ2K\YN+'ODP
+MJLOFZD8K]:D$,`&<>S,RJ^[!:70XH:S:MC]R*,M>ICV"FV!@=':"DVQBY<E<
+M"JKG[!*.UJRVX,YV)A=#J:C"R-59A8Y#COI:E8V-P^Q0I?+]^5Y^?#83?1@I
+M%7+Z^&PLB[N+IE303C8*A"[G-7>AIWQ-<0NE\J_H46@GS(4*`I-V`'OWP^B-
+M*/#U$6<K,8\G(ZJOU/K4VF+EPCD^T)WOP[<#5M4V8,$&A2'..5S5SN%2CAX-
+M13(&$WD\(2=>_*K'Q/FMVFU`*77'F`)OK;XZ=3H:#92Y[KZ2H,!C';Z_O%M:
+M;DUD]?ZQ637X&\X)YL?@,M-*[4R_,N(#W5@FP[?%B35U>@DWFYR5B6NO*29V
+M?IZ!J552`RN\)N,!77YAU'>8R\#`W15],'>WU+@\G,\]'/[B+H2X:C6WZ^I.
+MYNKJQ,EHIROCR)6K(>'*'7"8MA%@WUE4!:I9\W-\H+O>A^\!B.:7(]E/$9K>
+METRA,,!D"H5MIND49FRUV+96(1F%B?;U%&_W?]G7D]?N$^SKR;;[F!7;M*\G
+>T^X3[>O)MOLT^WJ-2[JO)_6/C;'=#W^X!V4,#@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-mbr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-mbr.vhdf.gz.uu
new file mode 100644
index 0000000..b9c8a97
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-mbr.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-1x1-512-mbr.vhdf.gz
+M'XL(".K%'50``VEM9RTQ>#$M-3$R+6UB<BYV:&1F+F]U=`"ME;%N@S`0AO<\
+MQ47=,B#[L`^R1DWG2E7;-4`@RI!VZ="!AZ^-,=@XD*0R'&!T]L=_OK-AS!P`
+M`H$55^[SCG:7^&>[VJPZ&B\?`^8,FB8`)@IH<)7"J0[*"MDWE#$.6KBZE'$&
+MR/NV,6B3\5@G#NXXC`IMWN'B$H.SX3:/`:6$H@B`[U8?QDZ'T$"9@9`@"7*\
+M-^#/_<<D8(/CL>;/X/`6;A#,[\&E>I33TZV,>4<[EHEY6IQ84J<0K'XH6!FY
+M]D0^&>?F&9A:)16PO/>A#QSR"Z.^;2@#O7`7]$$8;J%QF=^?.SB\$2[XN'(Q
+MM\OJUJ&Z*G(RY'1EW+ER-<1?N0:'<3<"['8658&J5WB?=[2OB7\:H.B!T6:0
+M^E\1I4`-4`TD=3L30%O(<A>(?B6UU?=77?V<?]T,:QP?_ARAZ?&8ZM5"&6"A
+M/T)'W7;T/>U/F_/E9'%VJ[(?%J0G72J(",(E/]R7W=MSASR,ZM)PDLB=O5(`
+M$\"Y%WBO[N"7,W7[O`VV;J"4G4QKWHOGN+I5:9QDDU'_S:W!4>124;6W^@.>
+'9*U,OP@`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-mbr.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-mbr.vmdk.gz.uu
new file mode 100644
index 0000000..2464362
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-mbr.vmdk.gz.uu
@@ -0,0 +1,82 @@
+# $FreeBSD$
+begin 644 img-1x1-512-mbr.vmdk.gz
+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
+DF&7U8MS^O?_$];O3]K\5L`R`9ATL_2>QY5_]']#X]&&`7P``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-pc98.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-pc98.qcow.gz.uu
new file mode 100644
index 0000000..5a36a47
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-pc98.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-1x1-512-pc98.qcow.gz
+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
+!````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-pc98.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-pc98.qcow2.gz.uu
new file mode 100644
index 0000000..632e42a
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-pc98.qcow2.gz.uu
@@ -0,0 +1,21 @@
+# $FreeBSD$
+begin 644 img-1x1-512-pc98.qcow2.gz
+M'XL(")D[(U0``VEM9RTQ>#$M-3$R+7!C.3@N<6-O=S(N;W5T`*V8VY+3,`R&
+M[_L4+H<%%BBQ9*<)AP7VP`QW<`%<M]WV*?KP;&)ME"A2W.VDS62FX_[?R/$7
+M-6Y1I)=ST;M0NE"[P]8]?*8#7._#\'#'WS]^KOJOXR+!?&&DE(&`'6[`NF$<
+M6+C"CP>\CNM5APH.'E-C4`X7S.JF!A3<Y:*]=.UB5"*!YP`3SER,L^J#5)],
+MA#/K@[GK0_WZQ<><'"BGZ\-4GTRM+5R5Q8&2JBW<)HM#);6U<+LL+BBI>PNW
+MS^*BDCH8.)]1Y0%7*BEOX2"+6RLIM'`ABZN4E.6=SWM7*RG+.Y_W;J.D+.]\
+MWKNMDK*\\WGO=DK*\L[GO;M74I9W8'CG&+=74I9W(+Q;$NX9XPY*RO(.A'?/
+M"?>BPWDM97D'PKN7A+M@G-+OP/(.A'>O"/>:<4J_`\L[$-Z](=PEXY1^!Y9W
+M(+Q[2[AWC%/Z'5C>@?#N_<@[K_0[L+Q#X=T'8A6,4_H=6MZA\,X3#ABG]#NT
+MO$/A'1(N,$[I=VAYA\*[2+B2<4J_0\L[%-ZM"5<Q3NEW:'F'PKN:<!\9I_0[
+MM+Q#X=TGPGUFG-+OT/(.A7=?"'?%.*7?H>5=$-Y])=PWQBG]+EC>!>'==\)=
+M,T[I=\'R+@CO;@AWV^%`2W7>%85^$.YN=,_"O,^?@9^/O7*V!R:`U5.`4Q4F
+M7#WKA&.:<*/!1CG;`\?KU?#=`5MAG@",T6W&P#]IPC$)4P>W"]J\#@<^3KA^
+M<6YA8K,DLUX_:"<<U\U=$4M7P:D5_KO[JTP8YIMPPMG;>1KH"O:GX-KM?.^;
+MOO]P9@X,'\Z6C)O<SC=[E+TV8%87YY4%H!*Y_CJWFZL=[T+%HVVWOH[K4YH!
+M#*8[49\;3[?YU>UVQV(5VP7(3-<-<=O)M9VN;CFN;C?S8J"\,TZ\<QO(\,Y-
+H.)BW$83TOU[1]LC1V1XX_EH-WPD8"#C;%0QE\]NQ^`\?5I30@Q0`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-pc98.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-pc98.raw.gz.uu
new file mode 100644
index 0000000..4145c82
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-pc98.raw.gz.uu
@@ -0,0 +1,11 @@
+# $FreeBSD$
+begin 644 img-1x1-512-pc98.raw.gz
+M'XL(".K%'50``VEM9RTQ>#$M-3$R+7!C.3@N<F%W+F]U=`"ME$$.@R`01?>>
+M8MQV86`<JFZ;=-]-V[4U]10<OB!4!00U`0PQ^?#R/P,P9AH`(;!^8XP+\E:Y
+M71:78J+Q\1Q0".A#X%,!)QQJ?QW!0*#^O`_&<?D<059>^^.X$D.07145-G`V
+M+F7>/YP"BP9(@+A"BT<=ON^OC<"8+[#!X1YN-LR/X&J]:C53N44^XV*"P966
+M52XX2KE3"/8]%5;D/2R(K;=N76=@Z@P/P%JKH0N<ZPN+ORZT@4[<A#\(X_8:
+MU[CS^0J'.W'!Q7V2M4V[*T-W0^9BU/[-.'AS-<2]N0:'>1\"FEYF=0+U&QF,
+8<4$^*K<;(%E@MATDU,#B!\3RH'-%!@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-pc98.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-pc98.vhd.gz.uu
new file mode 100644
index 0000000..01016a5
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-pc98.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-1x1-512-pc98.vhd.gz
+M'XL(".O%'50``VEM9RTQ>#$M-3$R+7!C.3@N=FAD+F]U=`"METUO@S`,AN_]
+M%:YVZZ%*C!/:Z[3N/&G:=BUEM-IA'UI[Z($?OQ@22/A:NP4H"@I^\MIQ3"I$
+M?0#H!/0>=`%:<3LET&M(5P"FTUY8W:5]A#+__"CRT]MY:8]R5L.D\*U"<[;'
+M!,@,D@)F/(A^Y3:4#K.\V1P6;^\'AT.+<P.3!D)0!D*]<;1HU#'I_O;QKD)N
+M6W5)7UUK97X[`D$@I?=&XM1M&XT-CHS5?E]=*619)=-=P4/0T3K;P2G1L?)D
+M#@75<W8(IZ>LKL$M9G8NZE0QB9&:NPF=A!2Y;=+&Q:%WF50Y'[^R[V/1T8<C
+MJ:(;?;+7EXR[BS95T+UL%1"G\Y2[4%%.7=Q`JOPK>CJT(]LP01#*=6#E?AB]
+M%@6^/BW%1,S')V-47\;ZS-H2V<!]O*.\789G`]SMKP,JQ4NH"WQR#N>L;TV0
+MTU#<?2<O6AWY2/;]>7Z+R/'#RF&5<KE4&E9XJ<*7S?.`PQC/X1J'O^$:P?(2
+M7&)KGWO3J,7F:S/:4>/FEC5O<32ECM=<<96S*FZR8+[JV/GS#,+D<`YBY54%
+M#]C,+[3ZUGT9&+@[H0_Z[F:,2\/WI8?#7]R%$+>;G-MI=?.^NCSR9+QV5\:%
+M*Y<AX<JM<1BW$%!5F4T&<HWLW<<[RH=E>-9`M*4^VK<#;6V.II`L,)I"LM4Y
+MHD(J)I/MVBS45F&DC3CC(F[$&1=Q(\ZXB!MQQD7<B#,NXD:<<5$WXMK\Q1)B
+*]@,_NS;^O0T`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-pc98.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-pc98.vhdf.gz.uu
new file mode 100644
index 0000000..94e27d6
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-pc98.vhdf.gz.uu
@@ -0,0 +1,14 @@
+# $FreeBSD$
+begin 644 img-1x1-512-pc98.vhdf.gz
+M'XL(".O%'50``VEM9RTQ>#$M-3$R+7!C.3@N=FAD9BYO=70`K96Q;H,P$(;W
+M/,5%W3)$^+`/6*.F<Z6J[1I"(<K0=NG0@8>O;4SP82!)9;"0T>&/__?9YR3I
+M+@")D)03S_E`N]ORNUUM5I8FFON`2D$9`E\UT.+0Z"LD5!)T;]2@:8;&`NUV
+M=/4XH8,AR(V:#4S@G%T9>?[0&E892`6*(,=;%;[OWR8,8SS#'0ZOX2Z"Q2VX
+MU(SROM1J45QP<X$.MW:L]8"32^HT(JGO,JOB+A;$?#3.SS,D>@U7D.0NAAQX
+MR2\,^HI0!C*["_H@M%L:7,:_%QX.K]@%CCLNYG99W3I45T5.1CK>&3?N7`/A
+M.[?#8=Q"(&UEUBO0U,C@.1]HG[?\[H#2`:/-(+FS@U*@!J@&4J:?2:`"LMP'
+M(E]);?7]55<_YU\_PP8G1A7=;V8\IF:W4`98FI_0A^E[^A[VI\WY\]3C^E+5
+M_UB2F72E(3*P2]SNT^[ET2(/@[HTG"3R9^^H3R@)0C#C3MV!+V>R^>W-U@T<
+CE979-_;"`I.ERN!4,AKUW]QV.(J\5/2IMOH#34'Y,G`(````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-pc98.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-pc98.vmdk.gz.uu
new file mode 100644
index 0000000..7f13ae4
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-pc98.vmdk.gz.uu
@@ -0,0 +1,82 @@
+# $FreeBSD$
+begin 644 img-1x1-512-pc98.vmdk.gz
+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
+-O@"^^C_.+8_6X%X`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-vtoc8.qcow.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.qcow.gz.uu
new file mode 100644
index 0000000..e8eb9e2
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.qcow.gz.uu
@@ -0,0 +1,125 @@
+# $FreeBSD$
+begin 644 img-1x1-512-vtoc8.qcow.gz
+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
+I]_,9IQ]2VL/?]2]\^]?;^W_=H3+,@W\;>\-Z^_U3_O%_AAM3=G^E````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-vtoc8.qcow2.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.qcow2.gz.uu
new file mode 100644
index 0000000..c389b8f
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.qcow2.gz.uu
@@ -0,0 +1,21 @@
+# $FreeBSD$
+begin 644 img-1x1-512-vtoc8.qcow2.gz
+M'XL(")L[(U0``VEM9RTQ>#$M-3$R+79T;V,X+G%C;W<R+F]U=`"MF-N.TS`0
+MAN_[%.YR7F")9^PTX;#`[K(2%T@@7H"F<1^`ZSX\3NS6R60F+E7:M%)E_9_&
+M]M>ITZ((#Z6L5J94IE;[1OG/\0(U^#"^U.'7X_>;X>.P"C!=""EFP.`)-V+=
+M)QQ(N$)/!S2/&U2'#`Z.J2DHAS-B=7,##.YZU2]=OQD52>`EP(`3-^.B^B#4
+M1Q/FPOI@Z?J07S][S-&!<KX^#/71U$;"55D<,*E:PFVS.&12C83;97&&2;42
+MSF5QEDGM!9S.J.)Q)9/2$@ZRN`V30@EGLKB*24G>Z;QW-9.2O--Y[[9,2O).
+MY[UKF)3DG<Y[MV-2DG<Z[UW+I"3O0/!.)9QC4I)W0+Q;1]Q5PNV9E.0=$.^>
+M1-S3$TYS*<D[(-X]B[CG"<?T.Y"\`^+=BXA[F7!,OP/).R#>O8JXZX1C^AU(
+MW@'Q[G7$O4DXIM^!Y!T0[]Y.O--,OP/).R3>O8NL(N&8?H>2=TB\TQ$'"<?T
+M.Y2\0^(=1IQ).*;?H>0=$N]LQ)4)Q_0[E+Q#XMTFXJJ$8_H=2MXA\:Z.N/<)
+MQ_0[E+Q#XMV'B/N8<$R_0\D[)-Y]BKC;A&/Z'4K>&>+=YXC[DG!,OS.2=X9X
+M]S7B[A*.Z7=&\LX0[^XC[N&$`RYU\JXH^"OBODV^L[#L^=.D\[%FWN6!&6#U
+M/\"Y"@.N7G3"-DS8WSIN0)6VN[P2%KN=]$U$F58"/OYU[N[W@_DQK,\N?4-@
+MT_H5W#)15-4?QT%:/SM:OSJ+RVR'#0>S1:8;<,VY./_CXH_VK5/.$=R?`6ZW
+M\&;HR71==_+WQZGJ#.!Z``RX;KHA3'>8^6_@.*P.ZTE]`9>F"X,(C'":J\Z?
+M%OO7&-<FG*8]:W:R:[8ZMZ@J?5\^"]=N5>.ZDVVSF>"NCKB^+_L#D+]IG;[+
+:`X>?-^-G4,5$X&+NF;)K5*M_;'%=NO`2````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-vtoc8.raw.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.raw.gz.uu
new file mode 100644
index 0000000..c35f98d
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.raw.gz.uu
@@ -0,0 +1,10 @@
+# $FreeBSD$
+begin 644 img-1x1-512-vtoc8.raw.gz
+M'XL(".S%'50``VEM9RTQ>#$M-3$R+79T;V,X+G)A=RYO=70`K9)-#H(P$(7W
+MG.+AT@5IAU)E:XP[$Q,O(-AZ`-<]O&V&!`KEQX2A=/-X7^8Q(P07H#1.!%V%
+MHPA5":50*B\8>'UZX&Y?:R_/J[H77"YCF/1BTB*6!%>,RF7'#GB.?'(9>(:H
+M(2@)9%S=N^I5W%)_C&OVBLNX=BM.^]O`6%@[PKT&N/?.PY"3N!9^X"3#GUP%
+MYN.X,L1E\WC"LS@ON'S2'^/ZN#2P4(23J>Y0\!OC3(^3?ZU*GNS.[KHJ\K,5
+L9QJT%D0H]01WT!V.@JORWS>)>UYPCR)^>%54!]QM]Q0%8/8#T8E)O;($````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhd.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhd.gz.uu
new file mode 100644
index 0000000..e3f9594
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhd.gz.uu
@@ -0,0 +1,17 @@
+# $FreeBSD$
+begin 644 img-1x1-512-vtoc8.vhd.gz
+M'XL(".S%'50``VEM9RTQ>#$M-3$R+79T;V,X+G9H9"YO=70`K9;);L(P$(;O
+M/,5(O7%`WN+`M6JY5:K4%\!)'-1#%P$'#CQ\9Q)G<1('*`[&,G+F\S_CL1G&
+MZ@=`2]`E:`LZH7&J0&\@70/@I&NBZKG["9?\Y]OFI\_SRCV710WCK&_EFY.]
+MD*!PD12$H45T06.X-)C5T^M^^?FU;W#"X9J%E08E($&(&JVC6:N.2-OGCY<*
+MN>O4R;&ZS@J_F0*F@//>&[)1MVLUMCB%5F59M12,J60VS?OA373.#G`)&UCU
+M9$X%M>?L%$[/6=V#6R[<7M2I@HF18H^AXY`*&F/:-'$8-4R5\_'7'(YVH$\$
+M4D6W^OAH3H;=%2Y51/.R4Z`HG>?<A8IR&N(F4N6AZ&G?3KD!!H$ES82HW/>C
+MUZ&@KT]S-A/S\&8$]1G2A\<+=Y1N@:0[9U+C1!%R>'NP%D^:?O/C9P*[^^_X
+MF;5G=^5TK(%MZ-8)IHO9=%:;QP^;,;'<K7'9K3BZO@HH+%@[P.UZN#SR9F0C
+M=RUELKP-R(;N9N2N'+S/71_`T47*1OIJ7.>NZ)D(#S>Z7$@=M,>LCRM:W%#C
+M%6?9I#H;-56R\E9<82"S("7(9(23B</E9(5_1,Q,].&)R_O*_]2I(MR]$NVB
+M$K$5*@>,IA"!-K)"SF8SX][SJYW"2%4?X2)6?82+6/41+F+51[B(51_A(E9]
+1A(M:]>DJ]Q9_[Z\6^RH,````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhdf.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhdf.gz.uu
new file mode 100644
index 0000000..bb8e698
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vhdf.gz.uu
@@ -0,0 +1,14 @@
+# $FreeBSD$
+begin 644 img-1x1-512-vtoc8.vhdf.gz
+M'XL(".S%'50``VEM9RTQ>#$M-3$R+79T;V,X+G9H9&8N;W5T`*V4RVZ#,!!%
+M]_F**W67!?)S"-NJS:Y2I?Y`()BHB[92U447_OC:L4FP<1ZJ,(,%&N9XKCT,
+M8V$`BE`+D/:F!+2$4I#D'#V<?VZPVV]C'M^>Z*4*PZX"C#MG,81=<]@J&W:U
+MCL!-$L>O`S=@#9@H`@.N.4<U-W'7\@NX=BFY`=?=BR,W]^@-C,EPNPENO_!A
+M\)E<`W?@\CX@R^5R+U=FW_,X7\`YAV6S_`+N+%=,0D2"XZ7L4(4[Q?4G7)[C
+M#;&LF)U9M%3X<"^N;]$92`FI9SBI(T[X*.V^;POS98=]K=(KE(J*P,5JCV*C
+M(@D:0.;8JR1J!6I0;Z9`D1PS[/[KT^Q_WG^G^T>Q40U#V7R\<$W0+5)#M'X1
+MZOWS)+^'Y\/Z_>,PXD14-2[L6NJID^8J*96[=7UT_'5'G)QO$DUWKU-@"IPG
+MPF-VN[18/$Z=Q)H!G3ZF.5KRDCB*M>=QFF51_R]ECZ.%2\75WNH/`$S(R-T&
+"````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vmdk.gz.uu b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vmdk.gz.uu
new file mode 100644
index 0000000..2cc570c
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-1x1-512-vtoc8.vmdk.gz.uu
@@ -0,0 +1,81 @@
+# $FreeBSD$
+begin 644 img-1x1-512-vtoc8.vmdk.gz
+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
+4`=#LO5?XSV'-OOH_FA1I)IY=````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-apm.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-apm.qcow.gz.uu
new file mode 100644
index 0000000..491ab80
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-apm.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-apm.qcow.gz
+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
+F$//[_<;GUYW3^9TG\$_^B:^_O+G_G]O!YMO@3_\'*;=.DB.F````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-apm.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-apm.qcow2.gz.uu
new file mode 100644
index 0000000..aa257d4
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-apm.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-apm.qcow2.gz
+M'XL("+@[(U0``VEM9RTV,W@R-34M-#`Y-BUA<&TN<6-O=S(N;W5T`*V826_;
+M,!!&[_D53/>F32K.D)35/9N!'@JD#7H.O,A`@"Y&&J`7__A2ULB4J1DQ-N0(
+M1@SB>Q@/GT>FLZQ^*&6U,DZ90BVFRK^F"U3KQ?:E5M_&7T[:C]5!#=.9D&(6
+M#&YP6ZSS@`,)E^GN@N9QK>J0P4&3ZH)2."-6U[?`X(X.UJU;;\8H2N`^P!HG
+M;L9>]4%=7YPP>]8'0]>'?/]LDXL77']]6-<7IW()-TKB@$D5$FZ2Q"&3FDJX
+M61)GF-1<PI5)G&52"P&G$ZIXG&-26L)!$I<S*91P)HD;,2G).YWVKF!2DG<Z
+M[=V$24G>Z;1W4R8E>:?3WLV8E.2=3GLW9U*2=R!XIP*N9%*2=Q!Y=TBX1P&W
+M8%*2=Q!Y]YAP3S8XS:4D[R#R[BGAG@4<,^]`\@XB[YX3[D7`,?,.).\@\NXE
+MX8X"CIEW('D'D7>O"/<ZX)AY!Y)W$'EWW/%.,_,.).\P\NX-L;*`8^8=2MYA
+MY)TF'`0<,^]0\@XC[Y!P)N"8>8>2=QAY9PGG`HZ9=RAYAY%W.>%&`<?,.Y2\
+MP\B[@G!O`XZ9=RAYAY%W[PCW/N"8>8>2=QAY]X%P'P..F7<H>6<B[SX1[G/`
+M,?/.2-Z9R+M3PIT%'#/OC.2=B;P[)]S%!@=<:N-=EO$7X2X[GUD8]ONG"=^/
+M-?,L+_0`1[L`^RJL<<6@;]C6;]CO@(5PCLK6=\A1+_#R>X4YW*[/#GT@L+4P
+M?C*;>2>'TH'/+ZRNOC+]L[4P_N/@IZF_W$PY^Z#Z3I?+GR6#DT^WNQ^G/`Z[
+MU=G%^G\O2PXJ-\H5].P6RI75,E5WLYS<W=_>W_[Y?=/@JANDFU?A?)?J?DV6
+M;'5VX+TU#]S;YGX!!-S>6]749X9VSZRWPU6-]QOA+S\N+593SG_-4-96:Q:[
+MP/%=69Y=7QS_&%^W^V>&_;'!^A-5NG_0ZE_](6GW3[7K<T/WS_7V+T>5YXR;
+MH7]__]4B-O4-W#^=4?_\2;W[+"^LKDZV_VJ@(>!@%1I73>>#_Z4*H1'E$P``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-apm.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-apm.raw.gz.uu
new file mode 100644
index 0000000..13210f0
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-apm.raw.gz.uu
@@ -0,0 +1,12 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-apm.raw.gz
+M'XL("/[%'50``VEM9RTV,W@R-34M-#`Y-BUA<&TN<F%W+F]U=`"MD\UJPS`0
+MA.]^BNFU4"/)*RD]MK2Y%4)#S\'4#@3:Q*2!7O3PE2*)R#\)+FB]"(ME/\:S
+M:\9\`"0A!9A-%E)PL`4N]T'"O+Z7-N[*&*;P,,YN=%W'E8,PQ;T'"E>6#-2,
+M^JH4R/L%LWH;`CW.Z2,.S5RJ3R@Y2]]3UWVU$SB1ZW,]KAJKD]OS.P>T@":H
+MQW"J+53KRD'=IJN/I]UI=]AO(HXL3C6N6?]'W7?=3:J3F6=+,V>[B$L9@/W9
+M(NJCW+M'YW$H9[P=A$T2D!6((!HK7+J:O8^`RV/;/J]?'CZ6Z]0_HLSZU`S_
+M1.*?_TE2_Y#J4[G]4S?]TQ6TGMC-BW\_OWX1H[[,_G$6_&/UQ'F]8%9E__%`
+1"L!L"DDX8/$'F8$ZXZ<%````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-apm.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-apm.vhd.gz.uu
new file mode 100644
index 0000000..0349231
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-apm.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-apm.vhd.gz
+M'XL("/_%'50``VEM9RTV,W@R-34M-#`Y-BUA<&TN=FAD+F]U=`"M5EUOVR`4
+M?<^ON-+>*BT"#-?=T]1JS=ND:M6>6\O!5:2UC9I(ZX-__+A\U#@&U\UP$,'"
+M]W`X]P,8<P\`5H`=H`94-*XEX#>H+P',I&_"]MR_0M^^/.OVN'M;^Z=?.3#.
+M8JNQ.=F+"J19I`;1T"*XI3'T`6;]Y>;Q8O?T&."$APL+2P0I0!D0.5D'V3L[
+M0MI<W_VPD`\#NVK*;K!R?UT'51=]405V#[;_'F]6&BOS/;4:*F5IAC9Z&4T0
+MG%I'3X!3[,0JHID2-=IL"@[GK#X#=['ROG"A8@*C-KV1CD,M:&S")N@P:294
+MW@[[YO6@3_B)3*C@.S\^F:ORVQ4^5$3XV#.0%,YSVP6+<CR%2X3*?ZF'8SOI
+M!T8$IL*$L-L?JS=`0<P/.9O1/.^,++^&^)G45"(DNVW51QN^^44P[-0=3<:[
+M9^O7TK3)$+E-1<7PPL<3_>W/9+BTQ$]R"F.*Y)9B>`F_J_W^CT[`B5+;=7#5
+ME)WJ?,[9I',EVO:N=*LNL+LWV7;<'7<OS_<!C@H5E5J+N)S=4[-/LE.%?:L7
+M^O8RRA,V\2T$?KIT[&GK#B3AZ814PQDDMH:XHCGS/@'<O&IM3J&OOS=WL7Y:
+MEN7'V0+]1*2?2Y)8O[BV\-PA?CZ_6?WH,*D3L3GH=_CK`C'P*ZU?X_5C3:+/
+M3_2WZ_'/`0I?3(M59S%4OS(,I0<LQE`..5R*(=>SSORLE]$S+'35Q7R5.>>J
+J2W`%K[KH2U;6ROTMO>JB+UF%KKH$5_"J2W!%K[IH"^KJ'[J1;&,?#0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-apm.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-apm.vhdf.gz.uu
new file mode 100644
index 0000000..e1b6626
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-apm.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-apm.vhdf.gz
+M'XL("/_%'50``VEM9RTV,W@R-34M-#`Y-BUA<&TN=FAD9BYO=70`K57);L(P
+M$+WS%2/UAM3(\3*FIRXJW"JAHIXA(@F*5""B2.TA'U^OX"P@6MF,+$<3/]Z\
+M9T\(L0.`"Q`4B`KB@IGY_-P):*;OB1HD\:,96;#TVJ[+<$EG-*.Q!:0Z+0CP
+MO+>/A8!I.]',W[J`%D[SXRE(H@/7@.(F?L]U_5D,P-%8Y5HXUF<G2K-.`20%
+MR0$?W(PE8*'3CMVRS@['ZECM=TL/QQ4<YGJS_`N[;58/LA.1O>4W>CMQ"^H`
+MV]Z"Y\=CGSUN[$`MO#)"!:<@&'`.-%?$A<ZIYQ[@[%`4+XO7^X_9(M2/\\C\
+M\`;]:*"?O22A?A#RP]CZX57])`,I!\[F6;^O;WL0/;_(^J7$Z4>R@?ERHIDG
+M[9\%Y`XP&D-TW1F9N^M:1.9[P"0$I&=[#>!ZORO6Q^HGO,'HNG-9#H?>3YG^
+M%J`$FID6D^MUP.]NNAE7VXV'\]W/_['R^F1QMTILESM3!AO(U9D=ZXN$'?44
+M3U:V"G?L5F9^#(OEIV*+$KBEZ:/UT$IHN*>V&1;.=+_PY?]Z:^$P\E%1'\K1
+)+TV"K"_2!P``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-apm.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-apm.vmdk.gz.uu
new file mode 100644
index 0000000..860e005
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-apm.vmdk.gz.uu
@@ -0,0 +1,83 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-apm.vmdk.gz
+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
+,]*O_`W*E&0&37@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-bsd.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-bsd.qcow.gz.uu
new file mode 100644
index 0000000..c016f6e
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-bsd.qcow.gz.uu
@@ -0,0 +1,126 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-bsd.qcow.gz
+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
+#I0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-bsd.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-bsd.qcow2.gz.uu
new file mode 100644
index 0000000..b27f56c
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-bsd.qcow2.gz.uu
@@ -0,0 +1,21 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-bsd.qcow2.gz
+M'XL("+H[(U0``VEM9RTV,W@R-34M-#`Y-BUB<V0N<6-O=S(N;W5T`*V8VY+3
+M,`R&[_L4Y@P+E%AR3ARVL+#,<`<W<-UVVZ?H\.RL:R5*%"E>.FD[F>FX_S=R
+M_%E)6A3IY5SI7:A<:-UQY^Z_TP?<X,OXXTZ_OO]8#U^G58+YPD@I`_6AQXU8
+M?QD'%J[PTP&OXP;5H8*#+C4%Y7#!K&YN0,%=K<ZG[KP8C4C@)<"$,Q?CHOH@
+MU2<3X<+Z8.GZ4#]_99>3`]5\?9CJDZG:PC59'"BIUL)MLSA44CL+M\_B@I*Z
+MLW#&SAW@2B5U-'`^H\H]KE)2WL)!%E<K*;1P(8MKE)3EG<][URHIRSN?]VZK
+MI"SO?-Z[G9*RO/-Y[_9*RO+.Y[V[4U*6=V!XYQAW4%*6=R"\>T2XQXP[*BG+
+M.Q#>/2'<TQ[GM93E'0COGA'N.>.4?@>6=R"\>T&XEXQ3^AU8WH'P[A7AKABG
+M]#NPO`/AW6O"O6&<TN_`\@Z$=V\GWGFEWX'E'0KOWA&K8)S2[]#R#H5WGG#`
+M.*7?H>4="N^0<(%Q2K]#RSL4WI6$JQBG]#NTO$/A74VXAG%*OT/+.Q3>M81[
+MSSBEWZ'E'0KO/A#N(^.4?H>6=RB\^T2X:\8I_0XM[X+P;D.XSXQ3^EVPO`O"
+MNR^$NV&<TN^"Y5T0WGTEW+<>!UJJ]ZXH]`_A;B=[%I:]_PQ\?^R5HSTP`VS^
+M!SA78<*UBTZX3!..&FR5HSUPNEF/WSWPO,)E'5>UK%P##ZWPS^WOZ83+!5<X
+MX>S'41KH"NZWX`2W&>#B%>TX^.5P'=W>\_8?$@>XZ\3K<+./H_$>^Z`-F),M
+M%Y8%&I$;KG.\M8MWX%UW%[=F_?HZKD^1&4;3G:G/3:<;KQK]TYU8CXB#S'3=
+M&!>O&F)?\A)FSMYF6MU^X<5`N3,>N',C9+QS$PZ6;020_I<JXJ^F1WO@]',]
+6?B=@(.!B9S!4L?>M_@&MW,<Y0Q,`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-bsd.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-bsd.raw.gz.uu
new file mode 100644
index 0000000..b44538e
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-bsd.raw.gz.uu
@@ -0,0 +1,11 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-bsd.raw.gz
+M'XL("`#&'50``VEM9RTV,W@R-34M-#`Y-BUB<V0N<F%W+F]U=`"ME#L.@S`,
+M0'=.X;E#E&])%RI5ZMZIG2F%4^3P38`4FQ#H$`<B(MM/_N!P/@F`EL#;C3VO
+M<#=&EZM.U4B3`6AJT`;,&:PWY\M##D3A7O<GP^)FG-CSRN/82B).'N%BP&K(
+MX:X(I[QR0)9<(*].@.KG`_Y&N&9Z(T[O1><KP?LM13994ZIVL;=VY8?[#*('
+MH8#;62<I\-=?6.*[I&%(DNY.?)"FVP9<3>T%PLF#=('BW@&'^DE:>%"])HVN
+M*]P,M9Z,/R<W0.CD3CA9]B*0X\WB_T!OE>YYA7LPNB:@GH'%*EA_K"=67[CE
+&;;$%!0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-bsd.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-bsd.vhd.gz.uu
new file mode 100644
index 0000000..9e10396
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-bsd.vhd.gz.uu
@@ -0,0 +1,17 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-bsd.vhd.gz
+M'XL("`#&'50``VEM9RTV,W@R-34M-#`Y-BUB<V0N=FAD+F]U=`"MESUOPR`0
+MAO?\BI.Z9;#P&6-W::*HZ5RI4CN[Q(XR]$--APS^\>5LB`]_)6VQ"<*">WB/
+M.Q`1HGT`5`*J`E6"2JF=25"WD.4`IM,6;.K8?D*M/]Y+_7TX1?:I%RTL%MS*
+M-R=[3$":23+`@B91.VI#[3#1S7:_/+SM'0XMSDTL%4B$U$#D8)Y<G-41Z6'S
+M=-]7EPS5=5;M/%4%2<5&)%Q=%*TX3AHK,YZ*@DHV,EWQ/KP.CO/4I:)GQ62.
+M+2IS=@RGYJQ^@ULN;"S:5#&)D9E:@(HA0VJ;M''K,"@F54['S^+K6/;TX42J
+M*!:,?I^<=A=MJJ`;;!5($CCG+C248Q\WDBK_6CWEVTG;,(L@4M>!C?O^ZG4H
+MX/I4+&;6?#H8D_H*TF?VEBA&ZNF.>A/Y[QFH"9AFM-U3!3E>NX(OV^>Q^.J)
+M=/GC[M!X"><$\]/`QZT8+FG#T5%8\H*.(2F[;SF"NS._=8>3<^HH9\JQCDEG
+MT\#)K/.>'8\SQ"7$"8B<934#GN,+G;[;H0STW)W1!T-W"\)E_OB8X?""N^#C
+M7NVYS`9W(;RP>NNA.ATX&+O^SKARYQ+$W[DM#L,>!-B<+"8#S:AA/=U1/T;^
+MVP+1'E7!SCYT1U4HA=("@RDTP#*P0BQGD^VW6:BLPD`72<(%O$@2+N!%DG`!
+>+Y*$"WB1)%S`BR3A@EXDE?F+(,3B!S97<<M]#```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-bsd.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-bsd.vhdf.gz.uu
new file mode 100644
index 0000000..1605f5a
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-bsd.vhdf.gz.uu
@@ -0,0 +1,14 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-bsd.vhdf.gz
+M'XL("`#&'50``VEM9RTV,W@R-34M-#`Y-BUB<V0N=FAD9BYO=70`K90[3\,P
+M$(#W_(J3V#I$?L==:%519B0DF$-PJ@[`PL#@'X\OB1M?G@C%=J)8=_?E'O8Q
+MU@X`)8"5$^]Y@3_E=/ILES4T@4!=@-*@#=B@SOI%-D3@7\\O>3I\A^-+5O.X
+M?#`B3JSAHL.RGL,=$IP,PCK19#RQJCA(U^_5!.X^/,<>IY:\"YE@;DHP&ZS>
+M*G>QMG9@E]89N`,N@=E.)BCP5E_H_=N/W1`DW`7_8!QNB;B"ZO,$)U;"!8I[
+M0QPGRGT)5[)W''M7;5P,.;P9?[RY"*$WM\6);1N!:#I+.(%!:_R>%_BGG,X6
+MJ#K@9AFT7>\S$DP-QH'1^%TH,'LH;`H4]"3YZNO35=_7G[3"B.-M,YA<:"\D
+MWA93@"CQ)^8=OQ/_[LZ7W?7C$G&Q5<4?*X-)UP&B1N%:&N[CZ?EAZ)T<)\F2
+M[''T,VU[(7"2O4.*4[=@G6M:(.\7V1#!9*M"G&8#J__6ML69C8]*.'S9+_P)
+&SWLP!P``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-bsd.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-bsd.vmdk.gz.uu
new file mode 100644
index 0000000..3df9b01
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-bsd.vmdk.gz.uu
@@ -0,0 +1,81 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-bsd.vmdk.gz
+M'XL("`'&'50``VEM9RTV,W@R-34M-#`Y-BUB<V0N=FUD:RYO=70`K9Q;;R/'
+M$87?_2L:\EL>B#F<^\,FCB,'"((`AFW8K^;<8B'V[D(K!%F`/S[3,WU:9T2-
+M>V"5S%VREE7%[NIAB?[J@%FV_CA7=*XH7#&XLG(9W/Q/Z\UE^;,QWXKXQ/6?
+M]__Z\<2?KTZGZQ=K,O@H"4&FZ<38O,[U].*'Z<Z_%[5Y8KZ=D^ER']7=!(9T
+MYYTG=M/-]7#GUT*XNLOR].`?2#H7$[E-NO*5/>UN]O=6]Z<O0O'\^G*_AOEX
+MJ];5N:NZ8+JJ7.S<U>?EN<S5L],T)_S2W3]\^H^['S_UCP\?GSZ$]9W]V<[.
+M1>7]J]YGF#=65_Z!?\*G:WV*:G3YX'+XI]WU\>\/OXZG_XZ/GQX^O'\';O?L
+MS[;(7='ZY7C_[/FV,?R+9*Z"?PUW_=L_[M^%*S<[?;P\,IV/FA<RO_:\#\U;
+M5<[_N;TMJQO?/_F,4_B)J_-G&XI3+J]=^`=EX>K6+<LI?>[S_/00MKS4KG\<
+M+T_C#Y\_CN_N?OOP/M;.GZTO6;LD:I9"Y:[,?:JP-5^^TF?TE\UR:N[ZZ\/3
+M+P_]]_,V/XUWIR\=TU6^=O,!-F%=ZZ[GD&KW9.=E7[_YW].\7S>$DWU@NF41
+MRR;FUR[/KJQ]KOD`\[EV>>[RQN5+^GG!\TX*>"=W_?#^]-U/#E7>%.[[;__Z
+M'=,U<[K9<U[@'#)O:+.G<MU_^?*R=-?OOW%W?I,__#(N5R#3M>O;S#NOYX#%
+M//L'H6IK>M_$"O_$<K+N_O)T<5]?/HVG+^_OOXXG>_&;+9;;O+319ZG6U/[Z
+M7LHY%VX]Z?6@EZ,8ANYT&2X?G\9'?[SQ*#I_M0YAI_Y8B^=CW+Y.O9S4Y*\8
+M=WWG[AZ&^4Q]VG^/'WYCNGZ]C.=U^$NB70)S_V"^>I;T8WB%]8KQQ^33C4^/
+MGT_]YU\?W@_S&\V]8[IAK=V\G/DTUT7%-;U<5'S9N79W>%[:G)OI1E^B=5%-
+M>&/,N=9U/%<AGV^EOX4J7#^??ADOP[PL=W<NR[MX%-/+H]`2O:C">M!S+=:C
+M"`O[?/HT]B%=GH4#G#;%6=?D+^7Y2EY7M&V@3Q\>EZ55^9WVX_SE[[*W]N/B
+MYE=J_0<3KNFLUU=E+WZ?Y1I7B%%N$OK?8MGZ,>#T[?/Z*K^^2CQKC6K$:#?I
+M?IY3?+S=;N4OL8MX=AK5BS$<J5[E?U^,XCF]K!X_:D`>[Z?C9P%ZYAI5B%%N
+MTNW5K@RUHV>M48T8[2;=7NVJ4#MZ=AK5BS$<VFP=:D?/2:/\'3]*(3OPL:QJ
+M0NWHF6M4(4:Y2;=7NS;4CIZU1C5BM)MT>[6[A-K1L].H7HSAT&:[4#MZ3AKE
+M[]@@((_WT_6A=O3,-:H0H]RDVZO=$&I'SUJC&C':3;J]VHVA=O3L-*H78SBT
+MV2G4CIZ31OF[0FI7I-+56:@=/7.-*L0H-^EV:E>SW]&SUJA&C':3;J=V-?L=
+M/3N-ZL48#FV6_8Z>DT;YNU)J5R;3L=_1,]>H0HQRDVZO=NQW]*PUJA&CW:3;
+MJQW['3T[C>K%&`YMEOV.GI-&^;M*:E<ET['?T3/7J$*,<I-NKW;L=_2L-:H1
+MH]VDVZL=^QT].XWJQ1@.;9;]CIZ31OD[?@B"/-Y/QWY'SURC"C'*3;J]VK'?
+MT;/6J$:,=I-NKW;L=_3L-*H78SBT6?8[>DX:Y>\:J5V32M=DH7;TS#6J$*/<
+MI-NI7<-^1\]:HQHQVDVZG=HU['?T[#2J%V,XM%GV.WI.&N7O6JE=FTS'?D?/
+M7*,*,<I-NKW:L=_1L]:H1HQVDVZO=NQW].PTJA=C.+19]CMZ3AKE[_B_4)#'
+M^^G8[^B9:U0A1KE)MU<[]CMZUAK5B-%NTNW5COV.GIU&]6(,AS;+?D?/2:/\
+M'?DCY/%^.O8[>N8:58A1;M+MU8[]CIZU1C5BM)MT>[5COZ-GIU&]&,.AS;+?
+MT7/2*'_72^WZ5+HV"[6C9ZY1A1CE)MU.[5KV.WK6&M6(T6[2[=2N9;^C9Z=1
+MO1C#H<VRW]%STBA_-TCMAF0Z]CMZYAI5B%%NTNW5COV.GK5&-6*TFW1[M6._
+MHV>G4;T8PZ'-LM_1<](H?S=*[<9D.O8[>N8:58A1;M+MU8[]CIZU1C5BM)MT
+M>[5COZ-GIU&]&,.AS;+?T7/2*'\W2>VF9#KV.WKF&E6(46[2[=6._8Z>M48U
+M8K2;='NU8[^C9Z=1O1C#H<VRW]%STJA,IF>0Q[OI+ME:N^B9:U0A1KE)MU.[
+M2^AWT;/6J$:,=I-NIW:7T.^B9Z=1O1C#H<V&?A<])XWR)1-^AR32NH1^!^%W
+M4'X'X7=(\KM+Z'<0?@?E=Q!^AR2_NX1^!^%W4'X'X7<'-AOZ'83?0?D=A-\A
+MB;0NH=]!^!V4WT'X'9+\[A+Z'83?0?D=A-\AR>\NH=]!^!V4WT'XW8'-AGX'
+MX7=0?@?A=T@BK4OH=Q!^!^5W$'Z')+^[A'X'X7=0?@?A=TCRNTOH=Q!^!^5W
+M$'YW8+.AWT'X'93?0?@=DDBKRT+MA-]!^1V$WR')[SKV.^%W4'X'X7=(\KN.
+M_4[X'93?0?C=@<VRWPF_@_(["+]#$FEU['?"[Z#\#L+OD.1W'?N=\#LHOX/P
+M.R3Y7<=^)_P.RN\@_.[`9MGOA-]!^1V$WR&)M#KV.^%W4'X'X7=(\KN._4[X
+M'93?0?@=DORN8[\3?@?E=Q!^=V"S['?"[Z#\#L+OD$1:'?N=\#LHOX/P.R3Y
+M7<=^)_P.RN\@_`Y)?M>QWPF_@_(["+\[L%GV.^%W4'X'X7=((JT^"[43?@?E
+M=Q!^AR2_Z]GOA-]!^1V$WR')[WKV.^%W4'X'X7<'-LM^)_P.RN\@_`Y)I-6S
+MWPF_@_(["+]#DM_U['?"[Z#\#L+OD.1W/?N=\#LHOX/PNP.;9;\3?@?E=Q!^
+MAR32ZMGOA-]!^1V$WR')[WKV.^%W4'X'X7=(\KN>_4[X'93?0?C=@<VRWPF_
+M@_(["+]#$FGU['?"[Z#\#L+OD.1W/?N=\#LHOX/P.R3Y7<]^)_P.RN\@_.[`
+M9MGOA-]!^1V$WR&)M(8LU$[X'93?0?@=DOQN8+\3?@?E=Q!^AR2_&]COA-]!
+M^1V$WQW8+/N=\#LHOX/P.R21UL!^)_P.RN\@_`Y)?C>PWPF_@_(["+]#DM\-
+M['?"[Z#\#L+O#FR6_4[X'93?0?@=DDAK8+\3?@?E=Q!^AR2_&]COA-]!^1V$
+MWR')[P;V.^%W4'X'X7<'-LM^)_P.RN\@_`Y)I#6PWPF_@_(["+]#DM\-['?"
+M[Z#\#L+OD.1W`_N=\#LHOX/PNP.;9;\3?@?E=U%,!WDLZ=SZ)Z0;L[5VKTK*
+M7_FG6#OWZNI&8WT@%GU@G"FLN_IC"==TUNN+\VW>WJ1?1)QO\_8F_2+B?)NW
+M-^D7$>?;O+U)OX@XWS;1+R+.MTWTBXCS;1/](N)\VT2_B#C?-M$O(LZW3?2+
+MB/-M$_TBXGS;1+^(.-\VT2\BSK=-](N(\VT3_2+B?-M$OX@XWS;1+R+.MTWT
+MBXCS;1/](N)\VT2_B#C?-M$O(LZW3?2+B/-M$_TBXGS;1+^(.-\VT2\BSK=-
+M](N(\VT3_2+B?-M$OX@XWS;1+R+.MTWTBXCS;1/](N)\VT2_",ZW;?2+X'S;
+M1K\(SK=M](O@?-M&OPC.MVWTB^!\VT:_",ZW;?2+X'S;1K\(SK=M](O@?-M&
+MOPC.MVWTB^!\VT:_",ZW;?2+X'S;1K\(SK=M](O@?-M&OPC.MVWTB^!\VT:_
+M",ZW;?2+X'S;1K\(SK=M](O@?-M&OPC.MVWTB^!\VT:_",ZW;?2+X'S;1K\(
+MSK=M](O@?-M&OPC.MVWTB^!\VT:_",ZW;?2+X'S;1K^(.-^FYYOTBXCS;7J^
+M2;^(.-^FYYOTBXCS;7J^2;^(.-\VT2\BSK=-](N(\VT3_2+B?-M$OX@XWS;1
+M+R+.MTWTBXCS;1/](N)\VT2_B#C?-M$O(LZW3?2+B/-M$_TBXGS;1+^(.-\V
+MT2\BSK=-](N(\VT3_2+B?-M$OX@XWS;1+R+.MTWTBXCS;1/](N)\VT2_B#C?
+M-M$O(LZW3?2+B/-M$_TBXGS;1+^(.-\VT2\BSK=-](N(\VT3_2+B?-M$OPC.
+MMVWTBQA-]8L83?6+&$WUBQA-]8L83?6+&$WUBQA-]8L83?6+&$WUBQA-]8L8
+M3?6+&$WUBQA-]8L83?6+&$WUBYBRS%"_B,E4OXC)5+^(R52_B,E4OXC)5+^(
+MR52_B,E4OXC)5+^(R52_B,E4OXC)5+^(R52_B,E4OXC)5+^(R52_>,ZRS%"_
+M>+[Y+N&#Z6XWN^H#BV5]Z[>#WOZ]_\3UZ]/VOYAP^8+=LO9?=%I6KCD?7>%/
+MW_SXRH:+L]F&UW0W7Y[\,EWD7=->NK](.M_@)_'<?!=S#Y>/SW;Q2KH_G^2;
+MHHOE"W9W5Z=SBF.;-?[RY&+Y$EOUU7/V'<:#'WZ>?_'>B.?KGM?7WB[CO-GN
+M[ZS/W6[7-U']^E`]C\V[=6>[;IO.-U$]S\T1)JKWU>WJ>N/#N/DJUH/O7)]D
+G^\Y=TYUM&T&U=)9U^'_[]_X3UV]/V__6A,62\(O_`X=39<Z@70``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-ebr.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-ebr.qcow.gz.uu
new file mode 100644
index 0000000..c5c9257
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-ebr.qcow.gz.uu
@@ -0,0 +1,128 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-ebr.qcow.gz
+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
+A?^>_\/4?[Q_^=3?8I,$_[02;;_2=SX_^!PM'3SM0J```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-ebr.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-ebr.qcow2.gz.uu
new file mode 100644
index 0000000..304b694
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-ebr.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-ebr.qcow2.gz
+M'XL("%[N+50``VEM9RTV,W@R-34M-#`Y-BUE8G(N<6-O=S(N;W5T`*V8VY+3
+M,`R&[_<IS!D6*+'DI`F'%A:6&>[@`KA.3T_1X=FI:R5V%"G>=M)V,NVX_S=R
+M_%E-6A3A84QIC:N,:\QA8TZ?Z04F^3!\F>.O[S\6Z>-X$V"V4%+"P'+?XP:L
+M?Q$'&JZPXP$KXY+J4,!!EQJ#<CBG5C<U(.!N;\ZG[KP8-4O@-<"`4Q?CJOH@
+MU,<3[LKZ8.[Z4#Y_99?C`]5T?1CJXZFEAJNS.!!2C89KLS@44AL-M\WBG)#:
+M:3AEYR:X4D@=%)S-J'+"54+*:CC(XI9""C6<R^)J(:5Y9_/>-4)*\\[FO6N%
+ME.:=S7NW$5*:=S;OW59(:=[9O'<[(:5Y!XIW)N+V0DKS#IAWCPCW..(.0DKS
+M#IAW3PCWM,=9*:5Y!\R[9X1['G%"OP/-.V#>O2#<RX@3^AUHW@'S[A7A;B-.
+MZ'>@>0?,N]>$>Q-Q0K\#S3M@WKT=>6>%?@>:=\B\>T>L(N*$?H>:=\B\LX2#
+MB!/Z'6K>(?,."><B3NAWJ'F'S+N2<%7$"?T.->^0>;<D7!UQ0K]#S3MDWC6$
+M>Q]Q0K]#S3MDWGT@W,>($_H=:MXA\^X3X581)_0[U+QSS+LUX3Y'G-#OG.:=
+M8]Y](=Q=Q`G]SFG>.>;=5\)]ZW$@I7KOBD)^$>Y^M&=AWNM/%Z^/K7#4!R:`
+M]27`J0H#KIEUPF78&Q<"Y0D'G-\;83)MV9ELR6?*;VW<%6E]ZV#S*L7MYI[N
+MX3)@69JV'0%_=_7!9!F7U[?<^V&_*UOAJ`\<[Q;#9P>LP[\#2[_)RLK4\-`*
+M_][_$=:WGN^&+^#T?P=HH"NX[X@CW#K!^0N,0_+-=%L-O$O?)[C5(G;F$V[R
+MWP%_R[.7!M3)EO/*4O>]I;<U66=_I>UOB+H?6W:EW*^OB?4)O04&TYVHSXRG
+MZW_$^YMMMAX>!YGIFB%NTW<680DS9V\UKFX[\V)8OC,>N',]9+AS`P[F;03-
+DN;.<##Q]:WS4!XX_%\-G`#H"SG8&7>5_>V_^`UMI__/2%```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-ebr.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-ebr.raw.gz.uu
new file mode 100644
index 0000000..024a0b2
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-ebr.raw.gz.uu
@@ -0,0 +1,12 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-ebr.raw.gz
+M'XL("%[N+50``VEM9RTV,W@R-34M-#`Y-BUE8G(N<F%W+F]U=`"ME,T.@R`,
+MQ^\^1<\[&$"9[*+)DMUWV79&IT_APZ\5=2#XE4"%2`J__$L+C)D&@#WXK3OZ
+M=-'ZY)(,-%Z?!_(@T.`:VL5IF98T9AU-:9QQ#<[;@+X*#5MIX[ZQP^W.`:4$
+MK3W@:](G(J>C:,F="V`Z,*X[^GOJV@140\'(`G()\@I*'%7X>;P#^56,QPK8
+MX,0>;A)L*BB$JRQ<AL[.6FDJ<=QEUYW];^%*TR=<OJ4.3X*U(<=JL#)NL2@T
+M=Y^=9^`M\`R8&GW"!<[YA;^^FR]#..%NZ`,_7$VXPEW/+9S8"1=<7#V_+($4
+M[IQ>Z:MK(B>#+V_&P9M+$/?F&IR(^Q#<AI<%*Q!7^>.ZHW^FKAE@/@*CG2"]
+,?(PE/\L2J-?E!@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-ebr.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-ebr.vhd.gz.uu
new file mode 100644
index 0000000..4a2ad29
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-ebr.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-ebr.vhd.gz
+M'XL("%_N+50``VEM9RTV,W@R-34M-#`Y-BUE8G(N=FAD+F]U=`"METUOXR`0
+MAN_Y%2/UUH.%QX#=2R)5S9Y7JMJ>L6M7/>R'FCWDX!^_C(%D\%>:EI@@K&$>
+MWH$!"R'<#T`7H#O0+6A%[5*"OH.R`K!&7W"H<_\*??/G=]O\>S]F_M=O'"P7
+MW"MV)W\L0-I!2D!#@^A7:D,?,-G-_NWV_==;P*''A8&E!HF@+$1.QJG$21V1
+M?MP_/HS5%5-U9R\W3M=!T;$>!5>793N.D];+]J>BH9.#S%"BE\C`<9$Z)49>
+M3.;<I+)@YW!ZS>L:W.W&KX5+%9L8I:T%Z!Q*I+9-FS`/DV)3Y7CX:SX.[4@?
+M+J2*9HLQMLGE<-&G"H;.7H$D@6OAPD`YC'$SJ?*MV=.QG_0-.PE"!0,.X<>S
+M=T8!UZ=SL3+GRXNQJ,^LQO6%@.OZ>N#*[J@;OSL$&$4U[=+<[U7OW]CW=D;?
+MSFW;+<>]I@ZWNPZH%!@S`3X%?4WBY:@J,MNS4YB9>MG0WV?Q<P(.":-*.LZ5
+MA@H_J_!E_SRSOI59.`ZN#]CA\!(N".:G?8S;,5SAMAM/U;,7SSO>9KBM^P><
+M7%-'9T([9U@,5B5.%E.-_/@Z0]Y"7H"HO`UCX&E]X:SO;BH#HW!7],$T7$.X
+M,NZ?,QQ>"!=B7'TZ66:6\,+L;:?JFL2+48]WQB=W+D'BG>MPF/8@,,/)8C/0
+M]IK6RX;^9Q8_#HC^4Y3LVX;^,$VF4'I@,H46V"96:-)^/[17F.BB0+B$%P7"
+D);PH$"[A18%P"2\*A$MX42!<THN"ME=`(3;_`?39ZI==#@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-ebr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-ebr.vhdf.gz.uu
new file mode 100644
index 0000000..c48c7d2
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-ebr.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-ebr.vhdf.gz
+M'XL("%_N+50``VEM9RTV,W@R-34M-#`Y-BUE8G(N=FAD9BYO=70`K94[;\,@
+M$(#W_(J3NF6(``,F2R)%3>=*5=O9<7&4H>W2H8-_?#EC',[&>508C$`'G^_%
+MF3'_`+@WV><%[6KTM(OEHJ/QP_U`G@1Z7(VG.&ZK%(Y%@TL<!USMUC:AW]8U
+M]VQBW$=N<YO[@$I!54V`KT$_D3D<I46Q%,"JQ#@O:'<KV@+0=`FC2I`*E`8C
+M;M7P??^6B*]A/)?!'B>NX8+"/H-2N&V$*YRPB7;Z3.Q/Q7D7SR/<QK\!)R]I
+MYSS!;$HP:ZS*FRS&-7HNCC-P"[P`9GJ9H,`AOG#6;SU50Q!S+^@'4W,KQ)5T
+M/X]PXHJY0'&'H;(D0GC%>YNI=G7F8/#QS;CQYB*$WER/$WD+P;JK+"X#W:[I
+M."]HGU>T>:#L@=D\:/I_FRY`-Z`M:(7S4H)>0VEBH*"9U-;?7[;^.?W&$48<
+M]\4@V?&\*/"VZ!)$A1_1'SB/]'O8'Y>GSV/`A5(5/BPU.ETYB)R8:ZBY3[N7
+MQ[%VQ=1)AGB/HYYQV7.&$^]M8YP<C+6V*X'\W,F"")*E"G&*C4[]-[8>IS.G
+.BOOO+OX`/$*Q[A`)````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-ebr.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-ebr.vmdk.gz.uu
new file mode 100644
index 0000000..3ad6aa6
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-ebr.vmdk.gz.uu
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-ebr.vmdk.gz
+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
+7)L!+!#3KX"7\'I'LB_\#:C6@$!Y@````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-gpt.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-gpt.qcow.gz.uu
new file mode 100644
index 0000000..624c326
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-gpt.qcow.gz.uu
@@ -0,0 +1,132 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-gpt.qcow.gz
+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
+;Z)M]Q"_BY[E'_2+>'HXWWOOM/_VP*B?UK```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-gpt.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-gpt.qcow2.gz.uu
new file mode 100644
index 0000000..b082a2d
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-gpt.qcow2.gz.uu
@@ -0,0 +1,26 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-gpt.qcow2.gz
+M'XL("+X[(U0``VEM9RTV,W@R-34M-#`Y-BUG<'0N<6-O=S(N;W5T`*V92V_4
+M,!"`[_T5+F]:6.)7DN51:$LK]=8BN'')\UB)*PK\=N+8B9/)3-PNWK6BKJSY
+M9#O?C)TT2>R',<V92IG:L[9D_6_7!)O]6#;6W5W?[.:?[LC">$)$(1U*3K@%
+MZ]+C!(5+^+J#X[C9Z"2"$V/4&A3"*7)T6QT([N1H6+KA9N0@0AX"M#CR9APT
+M/F''!R/4@>,3L<<G\?738QSL2+?')^WX8%1&X?(@3B!1>PI7!'$2B2HI7!7$
+M*22JIG!-$*>1J);`\8`J/2Y%HCB%$T%<AD1)"J>"N!R)HKSC8>_V2!3E'0][
+M5R!1E'<\[%V)1%'>\;!W%1)%><?#WM5(%.6=(+QC'M<@491W`GAW['!//*Y%
+MHBCO!/#NJ<,]FW`<BZ*\$\"[YP[WPN.0>B<H[P3P[J7#O?(XI-X)RCL!O'OM
+M<"<>A]0[07DG@'>G#O?&XY!Z)RCO!/#N[<H[CM0[07DG@7?O'"OQ.*3>2<H[
+M";SC#B<\#JEWDO).`N^DPRF/0^J=I+R3P#OM<*G'(?5.4MY)X%WF<+G'(?5.
+M4MY)X-W>X=Y['%+O).6=!-Y]<+B/'H?4.TEY)X%WGQSNS..0>B<I[Q3P[K/#
+M??$XI-XIRCL%O#MWN`N/0^J=HKQ3P+M+A_LZX006-7F7)'ASN*M5S@JDWJGT
+M@;CK-8Y^6#GD.*O\<9LC5[IC`Y@_'DCNM<J>4^)-6-L)&ZL*Y$IW=!>[Y7<"
+M#KG[".`XPB7.35C;W+4/C$W#VM8UNU(N.)\=$)`)'^]FN#KR^@WI]@B@UJPH
+M5L`?X_B&=.OSR[X;Z.W60S'0@FDUX8:YZFH^OJOK&W9[_NV[@?WTTQW2+2M8
+MQ5F1LP*.CE/3_8W9IVVZ92U<[1$G*=QT+`,X<[S(Z@T<UECWA\"IK:CII<,#
+M[JW%Z609-2];9ILH)6L+5M0$[@S@TLCF*=-=IBRK6-J8]TE5:_ZH4_.4QO(^
+M3>RV+88SUIYEW)S=>F!W?[>[M["WNU^G;GR*.R.P1G=0JZ>&RIQ3T\W\@P`Q
+M7;;$8:^1_FOU3%TN=;35VSM9L$9WD*M7V-7#%\FL'IHRW;AJ8\*-N#+NZG'[
+M"C,Q]7M]I3NZV]WR:X'*`:.-4*5M%3$[#"YB=AA<Q.PPN*C988`1L\/@(F:'
+MP47,#H.+FAT]L$GB;>(&9]PK,E8+\YRX^'_!UG;<#8^/Z^DV8FOKW]C$\9O1
+E1-S$#6YS$\\:>K+V\Q=,-N(F;G!1-W&5F>/WT3\!FKQU%1H`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-gpt.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-gpt.raw.gz.uu
new file mode 100644
index 0000000..d413df2
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-gpt.raw.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-gpt.raw.gz
+M'XL("`+&'50``VEM9RTV,W@R-34M-#`Y-BUG<'0N<F%W+F]U=`"MEC]O@S`0
+MQ?=\BI>U52W;V`262JW42MW2JMW:@3]FC-2=#U\?A@2(C1KIP$)(Q_UR]_#C
+M(F4X`*,AJ\@U'>B?Q?+L=W>[@:;JVX#^]ZF$%5!X8,`U/B@U/>,<NFY<4@U9
+M(5E):#7>3SAQ.?9BAFO/6=<K'9CC1,!-[7:W`:U%55T!OZ;Z]/`Z+$P.4T+[
+MYR6,@M6PYHP;>K7-O+Z7US<<GSX^"?9]:5=[:5#[_!95!K<22:IDNS_K=@-.
+M4U:W5GO"94G</H[+**O=P,56&F>VLL(>^M^[#3@KEUG%/"MSJ#-T%:HV@7M<
+MX7+FG6<H7.<X-,@=K$+3T4V;0RF@\#8I!HB&]B66."CHFH#]Z5V<`NQ!_-Z/
+M]1DU[HC82@=2ZIEAJQ2I=@^TMS?;Q1*7<:M7D'J63;URW"RQE0XDU:N">G&1
+M2+VH9?I)M<DA$Z[F54\-4\/[PW^_KZ_I0'\4RS,`S0ADJ]!H/S;XW$$X1G<0
+MCM$=A&-U!P$9W4$X1G<0CM$=A&-UAP<ZR3?$":?"F.Q:%!HN6]67&L>7^I;M
+I.KTU^C>&>/QE.,8A3KCM(>YN;99QB!..=8@;_W]*RMT?5F[7A(@+````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-gpt.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-gpt.vhd.gz.uu
new file mode 100644
index 0000000..0dfa2d8
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-gpt.vhd.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-gpt.vhd.gz
+M'XL("`+&'50``VEM9RTV,W@R-34M-#`Y-BUG<'0N=FAD+F]U=`"MF#MOW#`,
+M@/?[%2RZI:ACR9+L6UHT:`)T2U];A_@A!QEZ?5R&#/[Q%67Y(5MRX81W@LZ&
+MS,\D15$\I6G_`5`9J!:4!B7Q.A>@CI`7`&;0-6Y[YFZAJW^==/WX\)2X3W?H
+M82R=2_GB*,\S$.8E.?`27Z(:O(9NP"2OK^\O'G[>#SCN<,.+A0+!01J(6+U'
+MI:-V2+JY^OK1(N\F[;*U=I-4_].VD+6S)[)!NSO;OY\;*XR4>1Y;#JF$5$S-
+MN_$&)F,7OI/I0FJF9LBI,V-#.+4EM0=W<7!ST8>*"8S<],9U#'*.UR9L!C^L
+MF@F5I_/O\N]9+_3CD5!1HWYL-9;%S>4N5/CPL--`8#AOF0N6\KC$!4+E1=Y3
+MOMPPN\8))G#<#;?F^]Z;4##73[%TP^?QR8CJ5Z)^9FVE9:"/#W17B?\=@56U
+M#SAXT,>-!E<U^L_F$:TGB_H@F1R;;4Q(.O-?U1#/;]7N`TH)9;D"?A_TJ^UT
+M2)OPCA@8)CD(!M(DORF<K>VRGNMW??,);C]\^8:P'Y.Y-89+PZ&HH3Y"6RVT
+M6Z^T[=Q2\S[Z>!LT-HOB+L,X7&QMLX$+M3A.;$FYK6R'L3+UI8JY5*:ARJ`M
+MH6PBN'<+''5>UCA<*<AKW,(E@]KNY8T"Q@`*LTP*"^'`C8IF8S>[<(7`[O0Y
+M.?6PM\F?-TX_S5Q$A%I\(.8];?-R$3,WGQ)VQ%SP<=1Y61?H/4GFO:,+EE"+
+M#T2]5_;>"SL)O1=:NN.NEB2O?%Q%ZSUF=PVS/DS^7O?Q@>XV\;\]D+MMB&Q?
+MXRZ1DFDH')!,0^'6+Z&&3&].YMY95FY2B#(,X@@S#.((,PSB2#,,`@DS#.((
+M,PSB"#,,XD@SC*(MA)0KA+("-,,_+I4?-?&2IBN2<Z_8I6>N+82BY=-&(12>
+M#,I"2/VO$&IUS-B1LS"6L!!2U(60<HF4Z"Q##8706H?GG&6HH1":O?@%9QDJ
+@7`@]]RP#<81G&8@C/,M`''&H,%.['/X!4B?R+P`3````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-gpt.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-gpt.vhdf.gz.uu
new file mode 100644
index 0000000..820c91d
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-gpt.vhdf.gz.uu
@@ -0,0 +1,19 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-gpt.vhdf.gz
+M'XL("`/&'50``VEM9RTV,W@R-34M-#`Y-BUG<'0N=FAD9BYO=70`K9<[;]PP
+M#,?W^Q0LLJ6HHK=]2XL&38!NZ6OK$#^D($.O*-JA@S]\1<EWEGR2T0MD$X8/
+MM'[FGR9-'Z5A`Y`<:)<YEAW3+4GW:7>]\S367P9T]\<05D#B@`$W."?E>(TQ
+M8.ULE/E58;$S09=SCR/+1DF$&^-5*RL[8AP)N*-<>QE0*>BZ,^"W8WS</PX%
+M4H/<`W?74Y`,%`<E3SBO70UQ?'?W'^'A_>>O"/N^R.7,.4<.[0##'FR_BH[]
+MO]R`<P%A]KG-BA5%W$T>)Q`W;N!R5L;)K56AABX1JVBZJHU7"0.]`-M!-Q9P
+M;U<X7;GR)+I[#<T`VH!B,%@\&34P!M"Z-FD]A`-W(>ZA8<![!$Z'3^008&_(
+MK]=S?)+-%9&SLJ.4/8FE0MN2W`9K>U,NI#A1.WLM9D]5R]Y^+I:<E1W%['4A
+M>_DD8?9RK>MP<];(JQ37U\T>\U/#]8=[?Y\?RX[I@:1[`,H96"U"9>U0L3L0
+M5[$[$%>Q.Q!7M3L06+$[$%>Q.Q!7L3L05[4['-#0>D,<<5A[H@7#H!'0IU53
+M'L=32WZ'P&X2N89OC?Z-(9Y_&*;B$$?<YA"WIB3VQ%F)K3C$$5=UB.OY\UL+
+MT+Z_M,+S1H)V+=7&0+[4C`<./P]F^//\-\Z>]F]F6#Z25X;KN<#"U*Y%.KR)
+M'O$\BN_J[NGZ^<?3$<=G5<<;8T6[*G80>297IW+O;[]\\,C');K,:TJOLN?B
+M%#81/D?WZ(_O8K'R)-98<,JI7"SYD3BRA8PX7RKQQ2]]M@%7NU3<7X/=/VC0
+&,#.S#0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-gpt.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-gpt.vmdk.gz.uu
new file mode 100644
index 0000000..8292403
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-gpt.vmdk.gz.uu
@@ -0,0 +1,88 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-gpt.vmdk.gz
+M'XL("`/&'50``VEM9RTV,W@R-34M-#`Y-BUG<'0N=FUD:RYO=70`K5Q=C]S&
+M$7SWKYB<'QPDR(*U_%H^*(B=LP,C"*#(3O*2ARR_XD-L23D=C`C8'Q\..357
+MO+LY4KX^\;3;VN[:Z9YE<U5=8)8M/\X5K2L*5_2NK%P&-_W3<K@LOS>FXWCB
+M"Y<_7__E[P?^_/IPN'RV@,%'20@RA1-C]3Z7PX,?PAV?BUJ],!W'3;C<1[6/
+M`@/<,?%"$JZ87CP^%<+5G>>7>_]$X%P$<BNX\HF<DLD^M[K??!:*Y]>7^S5,
+MVULUKLY=U0;35>5LYZX^SJ]EKIZ<Q@GP<W=]\^$_[GKXT-W>O+][%]9W]'L[
+M.1>5]Z\ZCS`E5E?^B7_!PS4>HAI<WKL<_F5WN?WFYL?A\/-P^^'FW=M78+I'
+MO[=%[HK&+\?[9_?'RO!ODKD*_CW<Y8_?7K\*G]SL\/Y\2S@?-2UD>N\I#\6M
+M*N=_'Q_SZH:W=QYQ##]Q=7YO0W'*^;T+_Z0L7-VX>3FEQSY.+_<AY;EVW>UP
+MOAN^__A^>'7UT[NWL79^;WW)FAGH-!<J=V7NH4)JOGRE1_0?FWG7W.7'F[L?
+M;KKOIC0_#%>'SQWA*E^[:0-/85U+UE-(E=S9:=F7K_]W-^7K^K"S-X2;%S$G
+M,;UW>71E[;&F#9RWXNCRPC^;_FE:\)1)`>_D+N_>'M[\8SK%?;&^>_WE&\*=
+MIJC)<UK@%#(EM,JI7/(O'WXLW>6[K]V53_+['X;Y$TBX9CG-O/.R#YC-HW\2
+MJK;`^R96^!?FG777Y[NS^^K\83A\?GW]5=S9LT^VF(]I:8-'J19H__F>RSD5
+M;MGI9:/GK>C[]G#NS^_OAEN_O7$K6E^B/F3JM[6XW\;U^]3S3HW^$^,NK]S5
+M33_MJ8?]]_#N)\)UR\=X6H?_2#1S8.Z?3)^>&7X([[!\8OPV>;CA[O;CH?OX
+MX\W;?CK1W"O"]4OMIN7D65A47-/#1<6WG6IWE=TO;<(FW.!+M"SJ%$Z,"6M9
+MQWT5_">F]$>HPN7CX8?AW$_+<E?'LKR*6S$^W`HMT8,J+!L]U6+9BK"PCX</
+M0Q?@\BQLX+@JSK(FEU<NS\.*U@WT[MWMO+0JO])^G#^\EKVT'Q>/+JGU+P1<
+MX*S75V4/KF>YQA5BE"M`?Q7+IM\_3+^O[]=7^?55XEEKU$F,9@7WKPGB_>-T
+M*_\1.XMGJU&=&/V>ZE6^M0WB.3ZL'K]J0)ZGX?A=@)ZY1A5BE"NX5.W*4#MZ
+MUAIU$J-9P:5J5X7:T;/5J$Z,?E>R=:@=/4>-\@_\*H5LQ]>RZA1J1\]<HPHQ
+MRA5<JG9-J!T]:XTZB=&LX%*U.X?:T;/5J$Z,?E>R;:@=/4>-\@]L$)#G:;@N
+MU(Z>N4858I0KN%3M^E`[>M8:=1*C6<&E:C>$VM&SU:A.C'Y7LF.H'3U'C?(/
+MA=2NV(*KLU`[>N8:58A1KN`2M:O9[^A9:]1)C&8%EZA=S7Y'SU:C.C'Z7<FR
+MW]%SU"C_4$KMRDTX]CMZYAI5B%&NX%*U8[^C9ZU1)S&:%5RJ=NQW]&PUJA.C
+MWY4L^QT]1XWR#Y74KMJ$8[^C9ZY1A1CE"BY5._8[>M8:=1*C6<&E:L=^1\]6
+MHSHQ^EW)LM_1<]0H_\`O09#G:3CV.WKF&E6(4:[@4K5COZ-GK5$G,9H57*IV
+M['?T;#6J$Z/?E2S['3U'C?(/)&0@SY-PIRS4CIZY1A5BE"NX1.U.['?TK#7J
+M)$:S@DO4[L1^1\]6HSHQ^EW)LM_1<]0H_]!([9I-./8[>N8:58A1KN!2M6._
+MHV>M42<QFA5<JG;L=_1L-:H3H]^5+/L=/4>-\@_\+Q3D>1J._8Z>N4858I0K
+MN%3MV._H66O428QF!9>J'?L=/5N-ZL3H=R7+?D?/4:/\`_E'R/,T'/L=/7.-
+M*L0H5W"IVK'?T;/6J),8S0HN53OV.WJV&M6)T>]*EOV.GJ-&^8=.:M=MP359
+MJ!T]<XTJQ"A7<(G:->QW]*PUZB1&LX)+U*YAOZ-GJU&=&/VN9-GOZ#EJE'_H
+MI7;])AS['3USC2K$*%=PJ=JQW]&SUJB3&,T*+E4[]CMZMAK5B='O2I;]CIZC
+M1OF'06HW;,*QW]$SUZA"C'(%EZH=^QT]:XTZB=&LX%*U8[^C9ZM1G1C]KF39
+M[^@Y:I1_&*5VXR8<^QT]<XTJQ"A7<*G:L=_1L]:HDQC-"BY5._8[>K8:U8G1
+M[TJ6_8Z>HT9E,CV#/$_"G;.E=M$SUZA"C'(%EZC=.?2[Z%EKU$F,9@67J-TY
+M]+OHV6I4)T:_*]G0[Z+GJ%&^9,+?89/2.H=^!^'OH/P=A+_#)G]W#OT.PM]!
+M^3L(?X=-_NX<^AV$OX/R=Q#^;D>RH=]!^#LH?P?A[[!):9U#OX/P=U#^#L+?
+M89._.X=^!^'OH/P=A+_#)G]W#OT.PM]!^3L(?[<CV=#O(/P=E+^#\'?8I+3.
+MH=]!^#LH?P?A[[#)WYU#OX/P=U#^#L+?89._.X=^!^'OH/P=A+_;D6SH=Q#^
+M#LK?0?@[;%):;19J)_P=E+^#\'?8Y.]:]COA[Z#\'82_PR9_U[+?"7\'Y>\@
+M_-V.9-GOA+^#\G<0_@Z;E%;+?B?\'92_@_!WV.3O6O8[X>^@_!V$O\,F?]>R
+MWPE_!^7O(/S=CF39[X2_@_)W$/X.FY16RWXG_!V4OX/P=]CD[UKV.^'OH/P=
+MA+_#)G_7LM\)?P?E[R#\W8YDV>^$OX/R=Q#^#IN45LM^)_P=E+^#\'?8Y.]:
+M]COA[Z#\'82_PR9_U[+?"7\'Y>\@_-V.9-GOA+^#\G<0_@Z;E%:7A=H)?P?E
+M[R#\'3;YNX[]3O@[*'\'X>^PR=]U['?"WT'Y.PA_MR-9]COA[Z#\'82_PR:E
+MU;'?"7\'Y>\@_!TV^;N._4[X.RA_!^'OL,G?=>QWPM]!^3L(?[<C6?8[X>^@
+M_!V$O\,FI=6QWPE_!^7O(/P=-OF[COU.^#LH?P?A[[#)WW7L=\+?0?D["'^W
+M(UGV.^'OH/P=A+_#)J75L=\)?P?E[R#\'3;YNX[]3O@[*'\'X>^PR=]U['?"
+MWT'Y.PA_MR-9]COA[Z#\'82_PR:EU6>A=L+?0?D["'^'3?ZN9[\3_@[*WT'X
+M.VSR=SW[G?!W4/X.PM_M2);]3O@[*'\'X>^P26GU['?"WT'Y.PA_ATW^KF>_
+M$_X.RM]!^#ML\G<]^YWP=U#^#L+?[4B6_4[X.RA_!^'OL$EI]>QWPM]!^3L(
+M?X=-_JYGOQ/^#LK?0?@[;/)W/?N=\'=0_@["W^U(EOU.^#LH?P?A[[!):?7L
+M=\+?0?D["'^'3?ZN9[\3_@[*WT'X.VSR=SW[G?!W4/X.PM_M2);]3O@[*'\7
+MQ720YP+GEM\`-V1+[9Z4E#_Q3[%V[LG5#=;ZP''<"Y@_G:[?XY@NLF>7\>GK
+MPZQ?C#./I>J_#'"!,ZX?XOQ=RG0?]ZGZ2L3Y.X\7Z2L1Y^\\7J2O1)R_\WB1
+MOA)Q_FZBKT2<OYOH*Q'G[R;Z2L3YNXF^$G'^;J*O1)R_F^@K$>?O)OI*Q/F[
+MB;X2<?YNHJ]$G+^;Z"L1Y^\F^DK$^;N)OA)Q_FZBKT2<OYOH*Q'G[R;Z2L3Y
+MNXF^$G'^;J*O1)R_F^@K$>?O)OI*Q/F[B;X2<?YNHJ]$G+^;Z"L1Y^\F^DK$
+M^;N)OA)Q_FZBKT2<OYOH*Q'G[R;Z2L3YNXF^$IR_V^@KP?F[C;X2G+_;Z"O!
+M^;N-OA*<O]OH*\'YNXV^$IR_V^@KP?F[C;X2G+_;Z"O!^;N-OA*<O]OH*\'Y
+MNXV^$IR_V^@KP?F[C;X2G+_;Z"O!^;N-OA*<O]OH*\'YNXV^$IR_V^@KP?F[
+MC;X2G+_;Z"O!^;N-OA*<O]OH*\'YNXV^$IR_V^@KP?F[C;X2G+_;Z"O!^;N-
+MOA*<O]OH*\'YNXV^$IR_V^@KP?F[C;X2<?Y.SQ?I*Q'G[_1\D;X2<?Y.SQ?I
+M*Q'G[_1\D;X2<?YNHJ]$G+^;Z"L1Y^\F^DK$^;N)OA)Q_FZBKT2<OYOH*Q'G
+M[R;Z2L3YNXF^$G'^;J*O1)R_F^@K$>?O)OI*Q/F[B;X2<?YNHJ]$G+^;Z"L1
+MY^\F^DK$^;N)OA)Q_FZBKT2<OYOH*Q'G[R;Z2L3YNXF^$G'^;J*O1)R_F^@K
+M$>?O)OI*Q/F[B;X2<?YNHJ]$G+^;Z"L1Y^\F^DK$^;N)OA*<O]OH*S&8ZBLQ
+MF.HK,9CJ*S&8ZBLQF.HK,9CJ*S&8ZBLQF.HK,9CJ*S&8ZBLQF.HK,9CJ*S&8
+MZBLQF.HK,9CJ*S%FF:&^$J.IOA*CJ;X2HZF^$J.IOA*CJ;X2HZF^$J.IOA*C
+MJ;X2HZF^$J.IOA*CJ;X2HZF^$J.IOA*CJ;X2HZF^\IAEF:&^\OCH7L<[X1XG
+MN^@#CS#55QZ/SR[CT]=7S/5;[J[Z^._T"Y>O#NL_$1#MIP%RA6LX)ES`GQN+
+MUFL8W#B&8U'.W6<8[V+]1,*_/@A<;UR__?N['&7ISN='@'_C^N;]+4I_/^:B
+MF6_.RSOSED6$FW,O.UW?U]]\ZUY_^>9[#_;/^W3GVSMWN2?;BMJCK%>'=+I_
+M>O/X["CFVSM/U3_63R:;)^&^>.ID*^;;.X_],W!/'6FXXKFH3[T3>#'?WEFC
+M5'WK\L&UN1O/[MPGX'[_`*XR_N3-=YYM*U=W_O[!)5PWW^RYKSPM[4[3:;*<
+M$T=W[+T2H88[^CLR'RYO_WIXNX#][O#?WX;U+7>>Q=-'^H54]8KY+N^G5+IU
+MHF&OV[S`Y=;5\]]7VM*L>DWXL#QUI%](5N^\5"]Q59NJ]]2I.\'QJO:K-5QK
+M6[UROFHLPI/'?Z=?N+P^K/\L@$4`-%MAX6\I:'=V>#C#L\/#&9X='L[T[/"`
+MAF>'AS,\.SR<X=GAX4S/CL+?,-+N(N[AL'QCKBLWUOX+Q&H9R<OQY?#S]+W"
+M_WRQ2G?F').7_F<NXD]OQF!X$?=PSU[$QR&9+'\>)&MX$?=PIA?QPM^],_OL
+)_ZT-&`6T90``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-mbr.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-mbr.qcow.gz.uu
new file mode 100644
index 0000000..2a4ea04
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-mbr.qcow.gz.uu
@@ -0,0 +1,128 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-mbr.qcow.gz
+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
+H[V;Y]MOB!/[)/_'E'^\>?K\;;-+@+SO!YBM]Y_-O_P.[1]$3H:@`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-mbr.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-mbr.qcow2.gz.uu
new file mode 100644
index 0000000..4524f2b
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-mbr.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-mbr.qcow2.gz
+M'XL("&+N+50``VEM9RTV,W@R-34M-#`Y-BUM8G(N<6-O=S(N;W5T`*V8VY+3
+M,`Q`W_<KS!T6*+'DW+BTL+#,\`8/P'-Z^XH.WTY2*[&C2/&VDS:3:<?5&=D^
+M4I-DF7\9DUOC"N-J<]R:]CL=8*(OX\.<?GW_L8I?IQL/LYD2)0R4AP$W8OT+
+M.-!PF9T.6!D798<"#OJH*2B%<VIV<P,"[O;FO'3GS:A8!%X#]#AU,Z[*#WQ^
+M/,)=F1\LG1_*ZY?W<7R@F,\/?7X\JM1P51('0E2MX9HD#H6HK8;;)7%.B-IK
+M.*5R(UPN1!T5G$VHTN(*(<IJ.$CB2B$*-9Q+XBHA2O/.IKVKA2C-.YOVKA&B
+M-.]LVKNM$*5Y9]/>[80HS3N;]FXO1&G>@>*=";B#$*5Y!\R[1X1[''!'(4KS
+M#IAW3PCW=,!9*4KS#IAWSPCW/."$?@>:=\"\>T&XEP$G]#O0O`/FW2O"W0:<
+MT.]`\PZ8=Z\)]R;@A'X'FG?`O'L[\<X*_0XT[Y!Y]XY86<`)_0XU[Y!Y9PD'
+M`2?T.]2\0^8=$LX%G-#O4/,.F7<YX8J`$_H=:MXA\ZXD7!5P0K]#S3MDWM6$
+M>Q]P0K]#S3MDWGT@W,>`$_H=:MXA\^X3X=8!)_0[U+QSS+L-X3X'G-#OG.:=
+M8]Y](=Q=P`G]SFG>.>;=5\)]&W`@10W>99E\$.Y^4K.P[/6G"]?'5CCK`S/`
+MZA+@7(8>5R\ZX=Q/N-.@$<[ZP.EN-7X/P'.Q70"L:`7'.)IP[HO-KTZ3]Z5A
+MJ4!H>CL;RBR>\,:7QWH5X?8+K]^Y/BX`YKEIF@GP=Y\?S*9Q>7[E8>']K?SC
+MAK*KVKPP%3PTP[_W?Z9"M[C%*MCC],<---`G/+38"6X3X;HKEF/TR[A.1][%
+MGR/<>A5:?8N;?=S0W4,=I`%ULOFRLE1#LQILC?:YNW3O[K#Z?V]VZ3WLKPGY
+M"<T*1M.=R<],I]M=%0QW[VP_.APDIFO&N.W0680M3*S>>IK=;N'-L+PR'EBY
+M'61<N1X'RS:"^MQ96@/;7TW/^L#IYVK\]D!'P,56T!7=?]O-?U_U;%8C%0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-mbr.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-mbr.raw.gz.uu
new file mode 100644
index 0000000..b3375d7
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-mbr.raw.gz.uu
@@ -0,0 +1,12 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-mbr.raw.gz
+M'XL("&+N+50``VEM9RTV,W@R-34M-#`Y-BUM8G(N<F%W+F]U=`"ME,V.A"`,
+MQ^\^1<][(`5E92Y.LLG>][(S9\;5I_#AMUAURN#'F$"18`J__$L+B-P`*@/H
+M5\9MQ_"E8AN*CV*DZ<<YH$-`G0`5`1G7$HX6D$QOPUCVX3>,P8&AM_3?37/N
+M,!!!7<FH-4K@_I9=:=]VC#C9GN'VYX#6@O<)\'?69W9EG-=7=YGSZ\:"L354
+M%NPG./.NPOOW[44AXW2N@!EGCG"S8*Z@-=Q5X$IR]F(E5^*T2]:=G`M<P]^,
+MJ_;4T4E@M^;8#-;F+19'%N^3>0;=@2X!W>0S,7#)+SSU75(9)@IW1Q^DX?J`
+MJ^/U6N#,0;@0XQ[+R[*2PH/3:U)U;>9DZ->;\>;-#9#XYC+.Y'T(+N/+0A5(
+<J])QVS'\J-@86$W`;"<87C[$XA^HPB9UY08`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-mbr.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-mbr.vhd.gz.uu
new file mode 100644
index 0000000..695a3e9
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-mbr.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-mbr.vhd.gz
+M'XL("&+N+50``VEM9RTV,W@R-34M-#`Y-BUM8G(N=FAD+F]U=`"METMOW"`0
+MQ^_[*4;J+0<+CP&3RZX4-3U7JMJ>L6-'.?2A;@\Y^,.7,>`%OS;;S)I%6,"/
+M/\S#0@C_`]`5Z!YT!UI1NY:@[Z$V`*XS%!SK,KS"T/[ZV;5_7UZ+\!L.'E:*
+M=%8^G>9C!=(M4@-:6D0_41N&B"D^/#[?O?QXCC@,N+BPU"`1E(/(Q3I&3.J(
+M].GAR\>YNFJI[C++K]/W4/7)B"I55Q2G%"?=+#>>BH9>CC)CR5ZRCA27J5-B
+M-BN1N7:HR6;7<'IOUBVXNT.PA7<5YQBUJP7H$FJDMG.;>`Z+XESE]?S;_CEW
+M,WVXX2HZ,<:\3VYO%X.K8!P<%$@2N+==&"GG.6[%5=YU>CJ?)T/#'8)0L0/'
+M[>>G=T%!JD^78N?,MXVQJ<^2/A=;PJ[4VQW#0Y$_$[!I;@,:X:,CQTT;;MH0
+M'0*LHIJBM`RQ&LZO=>_=BD%./FR/R?DU3\SV;?K;@$J!M0O@UZBOW95QNSYC
+MF.UK1H=1-:5SI<'@6Q5^?_RV$K_&;J2#_\M^QN(U7!2<9OL<=TIPE0^W"R5)
+M3IG?I>T$=_3_B)-[ZB@G=&L=FYM5S,YBS6Q>:F<H.R@K$";T80Z<[`L7??=+
+M&9AM=T<?++=K"5?GX\L$AU>V"SFNF3++B@FOG-YQJ:YE-D8SCXPW1BY!\LCU
+M..1-!';,+,X#W:AEO=TQ?"[RQP,Q?(K8OFT8DBF;0AF`;`H=L&-6:'F_'SHH
+L9+HH$([QHD`XQHL"X1@O"H1CO"@0CO&B0#C6BX)V5T`A#O\`HP_9YET.````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-mbr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-mbr.vhdf.gz.uu
new file mode 100644
index 0000000..1e1f537
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-mbr.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-mbr.vhdf.gz
+M'XL("&+N+50``VEM9RTV,W@R-34M-#`Y-BUM8G(N=FAD9BYO=70`K94];\,@
+M$(;W_(J3NF6P``,F2R)%3>=*5=O9<7"4(>W2H8-_?.^,[8"Q\U%A",(Z>/(>
+M=YP9<P^`%,#*B7'>T&RSL#6+Y:*E\?UC0,.`\0B8(=#A*L3A`I19*AKSFEYI
+M)`.C7N&[[>:N0X.$;(,-GW7FX0[#KKC/&UJ<_US<K1\#*@5E&0'?>WWBJHS'
+M]14V<7Q-FS"J`*E`:3#B7H6?NX^10H?CJ1QV.'$+UPMV&32%VWBX'(VUM])E
+M8K?+SSM_[N'6[M?CY#5U>!+,3AEFG55ID\5@"_?Y<09N@>?`3&<3(7"(+UST
+MK6(9(G#WBCZ(W2T)5X3KN8<3-]R%$+<?*LM$"&^<WCI65R4.!A_?C#MO+D'"
+MF^MP(FTA6+65!3,05\7CO*%YS<+F@+(#)CM!TWW;=`ZZ!FU!*YH7$O0*"N,#
+M19A)3?7]9:N?TZ\?8<)Q5PPF.^T7.=T678`HZ4_T@>:>OJ?=<7DZ'WM<7ZKZ
+M/Y::#ETA1$;NFM#=E^W;\UA='A^2"4Z/DTZ_[*'CP>EM?)P<G+6V+8'\TH.7
+=P#!9J@BGV&C7?V/K<#IQJN!W=_$'S:-I2Q`)````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-mbr.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-mbr.vmdk.gz.uu
new file mode 100644
index 0000000..5ebc9fc
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-mbr.vmdk.gz.uu
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-mbr.vmdk.gz
+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
+>O7WCZ;O3_,\$>(F`9AV\A%],DGWQ?Q6YC7-O8```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-pc98.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-pc98.qcow.gz.uu
new file mode 100644
index 0000000..bfa03be
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-pc98.qcow.gz.uu
@@ -0,0 +1,126 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-pc98.qcow.gz
+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
+J".9;L_SX[70'_]8O?/OZ[N$_/P>'-OC;GN#P'9?U^H__!PSBQAVCJ```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-pc98.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-pc98.qcow2.gz.uu
new file mode 100644
index 0000000..be431e6
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-pc98.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-pc98.qcow2.gz
+M'XL("&/N+50``VEM9RTV,W@R-34M-#`Y-BUP8SDX+G%C;W<R+F]U=`"MF-MR
+MTS`00-_S%>(.!8*U*_G")2F%,L,;/`#/B9M\189O)XH42U[O6FU0XO$TH^Z9
+ME?9H(Z>J_$LIJY6IE>G4?JN.G\,%*ODPOM3AY[?OR_1U6'B8KH0H9J#9#;@1
+MZV_$@82K]'1`\[@D.V1P<(Z:@G(X(V8W-\#@KA:GI3L5HR41>`G0X\1B7)0?
+M^/QHA+DP/RB='_+K9\]Q=*">SP]]?C2JD7!M%@=,5"?A-ED<,E%;"==G<8:)
+MNI-PPLY-<):)V@LXG5'EB*N9*"WA((MKF"B4<":+:YDHR3N=]ZYCHB3O=-Z[
+M#1,E>:?SWFV9*,D[G?>N9Z(D[W3>NSLF2O(.!.]4Q.V8*,D[(-X]"KC'$;=G
+MHB3O@'CW).">#CC-14G>`?'N6<`]CSBFWX'D'1#O7@3<RXAC^AU(W@'Q[E7`
+M744<T^]`\@Z(=Z\#[DW$,?T.).^`>/=VXIUF^AU(WB'Q[EU@51'']#N4O$/B
+MG0XXB#BFWZ'D'1+O,.!,Q#']#B7OD'AG`ZZ..*;?H>0=$N^:@&LCCNEW*'F'
+MQ+LNX-Y''-/O4/(.B7<?`NYCQ#']#B7OD'CW*>!6$<?T.Y2\,\2[=<!=1QS3
+M[XSDG2'>?0ZXFXAC^IV1O#/$NR\!]W7``1<U>%=5_!5PMY,]"V7/GR:>CS5S
+MEP=F@.U#@',9>EQ7=,+63]AIL&'N\L#A9CE^#\"3,`\`6JLV4^`O/V'KA>F,
+MZ@TWK[!/M#SA=;I^MK0PUI6DZ/H!^X3V'QDVN\(9MOX'A\;M6UNK%NZ;X9_;
+MWU.EC[AB)?$X^0>','!.>&BR$]PZP;DSRS[YSU0VU>O8X-._$]QJ&9O]$3?[
+M@X-[BMIQ`^)D;5E9VJ%=G:^TSN[P[IZQSM_?Y/`]U%?%_)AV!:/ISN2GIM-U
+MYX+A^9W4P^$@,UTUQKES05K/40DSJ[>:9M<7+H:F.^.>.]=!QCO7XZ!L(^A.
+CG>5HH.OBD[L\</BQ'+\]T`1@L14TM?MV6_P#%UJW"245````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-pc98.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-pc98.raw.gz.uu
new file mode 100644
index 0000000..3e69394
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-pc98.raw.gz.uu
@@ -0,0 +1,12 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-pc98.raw.gz
+M'XL("&3N+50``VEM9RTV,W@R-34M-#`Y-BUP8SDX+G)A=RYO=70`K91-CX,@
+M$(;O_HKWO`<#(U2]M$F3WO>RNV=K]%?XXY<O+2-^M`F@B!EX\@XSC!"^`8H@
+MNHUQWS#=2]ZGXJMP-#E^!M0:70K\,4"'(ZNO5>@5S&SUH!K=3":&J0SM%KXS
+M3AIC"@J[=@T+KEQPP5V5^?Q('`KY7&$]9%;8.(6ZAM+0%S3TKL*_Q^]*H<=E
+M"XG'T1EN%AR29P-WBW"5,8[1RCC9T$M40_B)YQ'NZM\9IX[4F9,0PY9AUUF=
+M-UD:T_F^.,Z0`V0%T00;<>`27[STM:D,8NX>Z$/J;F=Q-5\O(QR=N`N.>UI<
+M%$\6PI/3NZ;J^LS!D.N;\>;-M1!^<SV.\A:"UE46DX&VBB?COF'Z+GGW0!6`
+0V4[05CXABG]2`B^9YP8`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-pc98.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-pc98.vhd.gz.uu
new file mode 100644
index 0000000..056cb49
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-pc98.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-pc98.vhd.gz
+M'XL("&3N+50``VEM9RTV,W@R-34M-#`Y-BUP8SDX+G9H9"YO=70`K9=-3^P@
+M%(;W\RM.XLY%0T^!,ALG,>K:Q.A=,[VM<7'5."Y<],?+*3"%TG8<+],.H0$>
+MWO,!!,;L#T!6(#N0+4A!]9J#W$*M`$RC>W$H2_<)??/VVC:?+U^%^_4;"RM9
+M."H>3N.Q`FXFJ0$U32+_4AUZCRDN;I\O7_X]>QPZG)^82^`(PD!X,H]B1W5$
+MNKM^N)FJJU)UXR@[3]=!U04]JE!=4>Q"'#>C3']Z)71\D.G?Z"-J"'&1.L$F
+MHP*9<TX-C)W#R;51Y^`N-RX6-E5,8M2F9"!+J)'J)FV\'Y+7I,K7X5U_'-J)
+M/EQ(%1D$8]K&E\U%ERKH.SL%G`2NF0L#Y3#%S:3*?WE/QN.XJQ@G,.$;<#`_
+M]MZ(@E"?+-F*SY>#L:A/DSZSMIB>*9<;^NLB?H[`?7<>4`C0*?#1&]R0OBV'
+MAL_YW2W9)&-&@W=Q?)N%[/MU?-O,_D.]*N1\A4IE5J@&A:*F#5U(4/A3A7]N
+MGV96L-+90F)Q>`KG!8?[?8S;!;C*+KB1$B0;-"54K?L(ZP'NROX]CJ^IHUVA
+MG6M8-%9D3A:M)N/".$/90ED!4ZX-8^`QOC#JVZ8R,#)W11^DYFK"U7'_,L#A
+M"7,AQNW=R>M[1B$\X;VK5%V3.1C[Z<KXX<HE2+QR+0[S;@1ZV%E,!M(NGI3+
+M#?U]$3\6B.XPRG:ZH3L]LBGD#IA-(7?G1T:%NEE-MG.S4#J%F:X*A,MX52!<
+CQJL"X3)>%0B7\:I`N(Q7!<)EO2I(<PED;/,-H6X,)U\.````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-pc98.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-pc98.vhdf.gz.uu
new file mode 100644
index 0000000..8662222
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-pc98.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-pc98.vhdf.gz
+M'XL("&3N+50``VEM9RTV,W@R-34M-#`Y-BUP8SDX+G9H9&8N;W5T`*V5.V^#
+M,!#']WR*D[IE0'YCED2*FLZ5JK8SI2;*D';IT($/7QL;XL.01V5,B-'A'_][
+M^"#$'P""`:EGKLN&;E?@T:W6JYY&V_N`4D*=`E\ML,<QIZ\2T`BPL\D)O.UG
+M-#%T13BVX7_`46M,06'5HF'$%2,NN"LRQX^1BT+N5UB:S`IUKU"6("1(!9K=
+MJO!]_S91Z''94N)Q[!IN$!R*9P:WC7#<&MOHR;C8H*'`3;B)YQ%NXW\#3EQ2
+M9R-!S)QAT5F9MUBT'7A=G&>@!B@'HH.-8>"87SCKJU(9#+E[01^D[M8.5^+G
+M:81C5]P%C/MPN"B?*(57HK=)U369DT&G.^/&G>L@>.=Z',O;"*J^L]@*=%T\
+MN2X;NN<"#P\4`9@M@CI\W10'U8(RH*2;EP)4!:6.@0Q74M=\?YGFY_@;9]CA
+MJ&\&LZ=;S[C;+:H$5KN7J$\WC_0][`_KX^DPX(96-;Q8*!=T:2$B<5=C=Y]V
+M+X]3=3P-DD;1HTYGW/:LXRAZVQ@G1F>-Z5L@/9_H!AEF6Y7#23)9]=_<>IS*
+/7"KVP[OZ`WO*69D2"0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-pc98.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-pc98.vmdk.gz.uu
new file mode 100644
index 0000000..c3521af
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-pc98.vmdk.gz.uu
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-pc98.vmdk.gz
+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
+3@&8=S/Q'DR1?_!^)[K:L<6``````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.qcow.gz.uu
new file mode 100644
index 0000000..50e4d02
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-vtoc8.qcow.gz
+M'XL(",PS(E0``VEM9RTV,W@R-34M-#`Y-BUV=&]C."YQ8V]W+F]U=`"MG<EN
+M'%<21??^BM(L49)5$?%RTDAT-PSTH@$W^@><0]4ZT:M>^..;DMX@1MZK\"03
+M!@4Z+XI/AT>R??!X/G_]<3IU<DK]*4VGZW*Z^WE^D],W/[G_=OKUWS_]\\=O
+M?_SZP]<Q.7_GJ7L_E],PGJ8\=V_K?VU./S^UGLY3./?E3=#<-Z_.?O.KN_?)
+M'N=N?OCZR>+G]+<-GMSKD]]Q>E_>#+Z^<YU3^%1B<]V]N=L\]W.=^XM/3\GI
+M];]M\!=W>OI[3R]Z?799X7,#&QSO#>[N]=EE@T]-;&[^+LQVN<"G%C:W!G-7
+M^-3&YB[?G[OBIZYX3K[SB_%U#OW:2OEZ/WY`X=RISJ&O#"E?3\</I'MSYSQW
+M6^?05X:4KZ?C!_I[<S__6(`N<PD^1;B3B+MK!Y\BW$G$W;6'3Q'N).+N.L"G
+M"'<2<C?"IPAW&G(WP:<(=QIR-\.G"'<:<K?`IPAW&G*'?*>,.PVY0[Y3QIV&
+MW"'?*>-.0^Z0[Y1QIP%W"?Y>IHP["[A+\/<R8]Q9P%V"?Q(PQIT%W"7X)P%C
+MW%G`73HCWQGCS@+NTAGYSAAW%G"7SLAWQKBS@+MT1KXSQIV%W"'?&>,NA=PA
+MWR7&70JY0[Y+C+L4<H=\EQAW*>0.^2XQ[E+('?)=8MRED#ODN\2X2R%WR'>)
+M<9<B[@0_1;CK(NX$^:YCW'41=X)\US'NNH@[0;[K&'==Q)T@WW6,NR[B3I#O
+M.L9=%W$GR'<=XZZ+N!/DNXYQUX7<(=]UC+L^Y`[YKF?<]2%WR'<]XZX/N4.^
+MZQEW?<@=\EW/N.M#[I#O>L9='W*'?-<S[OJ0.^2[GG'71]PI?HIP-T3<*?+=
+MP+@;(NX4^6Y@W`T1=XI\-S#NAH@[1;X;&'=#Q)TBWPV,NR'B3I'O!L;=$'&G
+MR'<#XVX(N4.^&QAW8\@=\MW(N!M#[I#O1L;=&'*'?#<R[L:0.^2[D7$WAMPA
+MWXV,NS'D#OEN9-R-(7?(=R/C;HRX,_P4X:[\YWD^AWPW,>ZFB#M#OIL8=U/$
+MG2'?38R[*>+.D.\FQMT4<6?(=Q/C;HJX,^2[B7$W1=P9\MW$N)M"[I#O)L;=
+M''*'?#<S[N:0.^2[F7$WA]PAW\V,NSGD#OEN9MS-(7?(=S/C;@ZY0[Z;&7=S
+MR!WRW<RXFR/N$GZ*<%?^-RF?0[Y;&'=+Q%U"OEL8=TO$74*^6QAW2\1=0KY;
+M&'=+Q%U"OEL8=TO$74*^6QAW2\1=0KY;&'=+R!WRW<*X6T/ND.]6QMT:<H=\
+MMS+NUI`[Y+N5<;>&W"'?K8R[->0.^6YEW*TA=\AW*^-N#;E#OEL9=VO$78>?
+M(MQM$7<=\MW&N-LB[CKDNXUQMT7<=<AW&^-NB[CKD.\VQMT6<=<AWVV,NRWB
+MKD.^VQAW6\1=AWRW,>ZVD#ODNXUQ=PFY0[Z[,.XN(7?(=Q?&W27D#OGNPKB[
+MA-PAWUT8=Y>0.^2["^/N$G*'?'=AW%U"[I#O+HR[2\1=CY\BW%TC[GKDNROC
+M[AIQUR/?71EWUXB['OGNRKB[1MSUR'=7QMTUXJY'OKLR[JX1=SWRW95Q=XVX
+MZY'OKHR[:\@=\MV5<"?E'3X'?"=GPIV<0^Z`[^1,N)-SR!WPG9P)=W(.N0.^
+M$];?2=3?I1[X3EA_)U%_EWK@.V']G43]7>J![X3U=Q+U=W?_E@*?(MQ%_5T:
+M@.^$]7<2]7=I`+X3UM])U-^E`?A.6'\G47^7!N`[8?V=1/U=&H#OA/5W$O5W
+M:0"^$];?2=3?I0'X3EA_)U%_EP;@.V']G43]71J0[UA_)U%_EP;D.];?2=3?
+MI0'YCO5W$O5W:4"^8_V=1/U=&I#O6'\G47^7!N0[UM])U-^E`?F.]7<2]G<C
+M?HIP%_9W(_(=Z^\D[.]&Y#O6WTG8WXW(=ZR_D["_&Y'O6'\G87\W(M^Q_D["
+M_FY$OF/]G83]W8A\Q_H["?N[$?F.]7<2]G<C\AWK[R3L[T;D.];?2=C?C<AW
+MK+^3L+\;D>]8?R=A?S<BW['^3L+^;D2^8_V=A/W=B'S'^CL)^[L)/T6X"_N[
+M"?F.]7<2]G<3\AWK[R3L[R;D.];?2=C?3<AWK+^3L+^;D.]8?R=A?S<AW['^
+M3L+^;D*^8_V=A/W=A'S'^CL)^[L)^8[U=Q+V=Q/R'>OO).SO)N0[UM])V-]-
+MR'>LOY.POYN0[UA_)V%_-R'?L?Y.POYN0KYC_9V$_=V,GR+<A?W=C'S'^CL)
+M^[L9^8[U=Q+V=S/R'>OO).SO9N0[UM])V-_-R'>LOY.POYN1[UA_)V%_-R/?
+ML?Y.POYN1KYC_9V$_=V,?,?Z.PG[NQGYCO5W$O9W,_(=Z^\D[.]FY#O6WTG8
+MW\W(=ZR_D["_FY'O6'\G87\W(]^Q_D["_F[!3Q'NPOYN0;YC_9V$_=V"?,?Z
+M.PG[NP7YCO5W$O9W"_(=Z^\D[.\6Y#O6WTG8WRW(=ZR_D["_6Y#O6'\G87^W
+M(-^Q_D["_FY!OF/]G83]W8)\Q_H["?N[!?F.]7<2]G<+\AWK[R3L[Q;D.];?
+M2=C?+<AWK+^3L+];D.]8?R=A?[?BIPAW87^W(M^Q_D["_FY%OF/]G83]W8I\
+MQ_H["?N[%?F.]7<2]G<K\AWK[R3L[U;D.];?2=C?K<AWK+^3L+];D>]8?R=A
+M?[<BW['^3L+^;D6^8_V=A/W=BGS'^CL)^[L5^8[U=Q+V=ROR'>OO).SO5N0[
+MUM])V-^MR'>LOY.PO]OP4X2[L+_;D.]8?R=A?[<AW['^3L+^;D.^8_V=A/W=
+MAGS'^CL)^[L-^8[U=Q+V=QOR'>OO).SO-N0[UM])V-]MR'>LOY.PO]N0[UA_
+M)V%_MR'?L?Y.POYN0[YC_9V$_=V&?,?Z.PG[NPWYCO5W$O9W&_(=Z^\D[.\V
+MY#O6WTG8WUWP4X2[L+^[(-^Q_D["_NZ"?,?Z.PG[NPOR'>OO).SO+LAWK+^3
+ML+^[(-^Q_D["_NZ"?,?Z.PG[NPOR'>OO).SO+LAWK+_3\HZ;.[4YX+N[IS!W
+MZOJ[<M_?J7$'?*>LOU/7WYTR=Z?&'?"=LOY.77]WRMR=&G?`=\KZ.W7]W6D_
+MG!WPG;+^3EU_5\^NS0'?*>OOU/5W8`[X3EE_IZZ_.\ZA^^^4]7?J^KLR]Z#-
+M`=\IZ^_4]7</RESE#MU_IZR_4]??/<C</:C<H?OOE/5WZOJ[!YF[!Y4[=/^=
+MLOY.77_W8#^<'?"=LOY.77]7SZ[-`=\IZ^_4]7=@#OA.67^GKK\#<\!WROH[
+M=?U=F7O8YI#O6'^GKK][6.8:=\AWK+]3U]\]S-P];-PAW['^3EU_]S!S][!Q
+MAWS'^CMU_=W#_7!VR'>LOU/7W]6S:W/(=ZR_4]??@3GD.];?J>OO#G/=&3]%
+MN'/]79E[U.:0[UA_IZZ_>U3F3G4.^8[U=^KZNT>9NT>W=0[YCO5WZOJ[1YF[
+M1[_4.>0[UM^IZ^\>[8>S0[YC_9VZ_JZ>79M#OF/]G;K^#LPAW['^3EU_!^:0
+M[UA_IZZ_*W./VQSR'>OOU/5WC\M<XP[YCO5WZOJ[QYF[QXT[Y#O6WZGK[QYG
+M[AXW[I#O6'^GKK][O!_.#OF.]7?J^KMZ=FT.^8[U=^KZ.S"'?,?Z.W7]W7$.
+MW7^GK+]3U]^5N2=M#OF.]7?J^KLG9:YRA^Z_4];?J>OOGF3NGE3NT/UWROH[
+M=?W=D\S=D\H=NO].67^GKK][LA_.#OF.]7?J^KMZ=FT.^8[U=^KZ.S"'?,?Z
+M.W7]'9A#OF/]G;K^KLP];7/(=ZR_4]??/2USC3OD.];?J>OOGF;NGC;ND.]8
+M?Z>NOWN:N7O:N$.^8_V=NO[NZ7XX.^0[UM^IZ^_JV;4YY#O6WZGK[\`<\AWK
+M[]3U=\<Y=/^=LOY.77]7YIZU.>0[UM^IZ^^>E;G*';K_3EE_IZZ_>Y:Y>U:Y
+M0_??*>OOU/5WSS)WSRIWZ/X[9?V=NO[NV7XX.^0[UM^IZ^_JV;4YY#O6WZGK
+M[\`<\AWK[]3U=V`.^8[U=^KZNS+WO,TAW['^3EU_][S,->Z0[UA_IZZ_>YZY
+M>]ZX0[YC_9VZ_NYYYNYYXP[YCO5WZOJ[Y_OA[)#O6'^GKK^K9]?FD.]8?Z>N
+MOP-SR'>LOU/7WQWGT/UWROH[=?U=F7O1YI#O6'^GKK][4>8J=^C^.V7]G;K^
+M[D7F[D7E#MU_IZR_4]??O<C<O:C<H?OOE/5WZOJ[%_OA[)#O6'^GKK^K9]?F
+MD.]8?Z>NOP-SR'>LOU/7WX$YY#O6WZGK[\K<39M#OF/]G;K^[J;,->Z0[UA_
+MIZZ_N\G<W33ND.]8?Z>NO[O)W-TT[I#O6'^GKK^[V0]GAWS'^CMU_5T]NS:'
+M?,?Z.W7]'9A#OF/]G;K^[CB'[K]3UM^IZ^_*W,LVAWS'^CMU_=W+,E>Y0_??
+M*>OOU/5W+S-W+RMWZ/X[9?V=NO[N9>;N9>4.W7^GK+]3U]^]W`]GAWS'^CMU
+M_5T]NS:'?,?Z.W7]'9A#OF/]G;K^#LPAW['^3EU_5^9>M3GD.];?J>OO7I6Y
+MQAWR'>OOU/5WKS)WKQIWR'>LOU/7W[W*W+UJW"'?L?Y.77_W:C^<'?(=Z^_4
+M]7?U[-H<\AWK[]3U=V`.^8[U=^KZN^,<NO].67^GKK\K<Z_;'/(=Z^_4]7>O
+MRUSE#MU_IZR_4]??O<[<O:[<H?OOE/5WZOJ[UYF[UY4[=/^=LOY.77_W>C^<
+M'?(=Z^_4]7?U[-H<\AWK[]3U=V`.^8[U=^KZ.S"'?,?Z.W7]79G[L<TAW['^
+M3J/^KD/WWRGK[S3J[SIT_YVR_DZC_JY#]]\IZ^\TZN\Z=/^=LOY.H_ZN0_??
+M*>OO-.KO.G3_G;+^3J/^KD/WWRGK[Y3T=V_:'/(=Z^_4]7=ORESE#MU_IZR_
+M4]??O<G<O:G<H?OOE/5WZOJ[-YF[-Y4[=/^=LOY.77_W9C^<'?(=Z^_4]7?U
+M[-H<\AWK[]3U=V`.^8[U=^KZ.S"'?,?Z.ROON+ESFP.^,];?W7W@'G?%3^?&
+M'?"=L?[.7']WSGOGQAWPG;'^SEQ_=\[<G1MWP'?&^CMS_=UY/YP=\)VQ_LY<
+M?U?/KLT!WQGK[\SU=V`.^,Y8?V>NOSO.H?OOC/5WYOJ[,B=M#OC.6']GKK^3
+M,E>Y0_??&>OOS/5WDE^>5.[0_7?&^CMS_9UD[J1RA^Z_,];?F>OO9#^<'?"=
+ML?[.7']7SZ[-`=\9Z^_,]7=@#OC.6']GKK\#<\!WQOH[<_U=F=,VAWS'^CMS
+M_9V6N<8=\AWK[\SU=YJYT\8=\AWK[\SU=YJYT\8=\AWK[\SU=[H?S@[YCO5W
+MYOJ[>G9M#OF.]7?F^CLPAWS'^CMS_=UQ#MU_9ZR_,]??E3EK<\AWK+\SU]]9
+MF:O<H?OOC/5WYOH[R]Q9Y0[=?V>LOS/7WUGFSBIWZ/X[8_V=N?[.]L/9(=^Q
+M_LY<?U?/KLTAW['^SEQ_!^:0[UA_9ZZ_`W/(=ZR_,]??E;G4YI#O6']GKK]+
+M9:YQAWS'^CMS_5W*W*7&'?(=Z^_,]7<I<Y<:=\AWK+\SU]^E_7!VR'>LOS/7
+MW]6S:W/(=ZR_,]??@3GD.];?F>OOCG/H_CMC_9VY_J[,=6T.^8[U=^;ZNZ[,
+M5>[0_7?&^CMS_5V7N>LJ=^C^.V/]G;G^KLO<=94[=/^=L?[.7'_7[8>S0[YC
+M_9VY_JZ>79M#OF/]G;G^#LPAW['^SEQ_!^:0[UA_9ZZ_*W-]FT.^8_V=N?ZN
+M+W.-.^0[UM^9Z^_ZS%W?N$.^8_V=N?ZNS]SUC3OD.];?F>OO^OUP=LAWK+\S
+MU]_5LVMSR'>LOS/7WX$YY#O6WYGK[XYSZ/X[8_V=N?ZNS`UM#OF.]7?F^KNA
+MS%7NT/UWQOH[<_W=D+D;*G?H_CMC_9VY_F[(W`V5.W3_G;'^SEQ_-^R'LT.^
+M8_V=N?ZNGEV;0[YC_9VY_@[,(=^Q_LY<?P?FD.]8?V>NORMS8YM#OF/]G;G^
+M;BQSC3OD.];?F>OOQLS=V+A#OF/]G;G^;LS<C8T[Y#O6WYGK[\;]<';(=ZR_
+M,]??U;-K<\AWK+\SU]^!.>0[UM^9Z^^.<^C^.V/]G;G^KLQ-;0[YCO5WYOJ[
+MJ<Q5[M#]=\;Z.W/]W92YFRIWZ/X[8_V=N?YNRMQ-E3MT_YVQ_LY<?S?MA[-#
+MOF/]G;G^KIY=FT.^8_V=N?X.S"'?L?[.7'\'YI#O6']GKK\K<V_;'/(=Z^_,
+M]7=ORUSC#OF.]7?F^KNWF;NWC3OD.];?F>OOWF;NWC;ND.]8?V>NOWN['\X.
+M^8[U=^;ZNWIV;0[YCO5WYOH[,(=\Q_H[<_W=<0[=?V>LOS/7WY6Y=VT.^8[U
+M=^;ZNW=EKG*'[K\SUM^9Z^_>9>[>5>[0_7?&^CMS_=V[S-V[RAVZ_\Y8?V>N
+MOWNW'\X.^8[U=^;ZNWIV;0[YCO5WYOH[,(=\Q_H[<_T=F$.^8_V=N?ZNS+UO
+M<\AWK+\SU]^]+W.-.^0[UM^9Z^_>9^[>-^Z0[UA_9ZZ_>Y^Y>]^X0[YC_9VY
+M_N[]?C@[Y#O6WYGK[^K9M3GD.];?F>OOP!SR'>OOS/5WQSET_YVQ_LY<?U?F
+M/K0YY#O6WYGK[SZ4N<H=NO_.6']GKK_[D+G[4+E#]]\9Z^_,]7<?,G<?*G?H
+M_CMC_9VY_N[#?C@[Y#O6WYGK[^K9M3GD.];?F>OOP!SR'>OOS/5W8`[YCO5W
+MYOJ[,O>QS2'?L?[.7'_WL<PU[I#O6']GKK_[F+G[V+A#OF/]G;G^[F/F[F/C
+M#OF.]7?F^KN/^^'LD.]8?V>NOZMGU^:0[UA_9ZZ_`W/(=ZR_,]??'>?0_7?&
+M^CMS_5V9^]3FD.]8?V>NO_M4YBIWZ/X[8_V=N?[N4^;N4^4.W7]GK+\SU]]]
+MRMQ]JMRA^^^,]7?F^KM/^^'LD.]8?V>NOZMGU^:0[UA_9ZZ_`W/(=ZR_,]??
+M@3GD.];?I?*.F[MM<\!WB?5WR?5WMV6N<0=\=_<4YBZY_NXV<W?;N`.^2ZR_
+M2ZZ_N\W<W3;N@.\2Z^_J6YD[],;H_KOV5##WS8]??[CY,MB?/W\X]:=!3WWW
+M^2WIJ;-32I_+CR\9Q08'?_KOY?*W__Q#[5_?OKX>W;GTYU[???;D^X/CZ3R=
+MS@H'O\Y]P]X4SGWO]7V=0]_K_4_,H>_U#N<^4W?W!YB[WS(N;NZ7;^;0]WK_
+M,[\8QZLYRA]3SO8'/MUZ-8>U?_CZY;>M.[N0.6ESG_Q<^W35/:6G]CQX=2?X
+MZMJ7VG+W;X5V_ZGO?K)_1W/H6]O_<530U1QX;IM/RQTG<KJN?`Y=S?%G4!F^
+F#'Z6Y@S^SC_PZ\\_WO_KZV#*@W_9*TQW7CF??_@_"8E_G;^F````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.qcow2.gz.uu
new file mode 100644
index 0000000..32a7f31
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.qcow2.gz.uu
@@ -0,0 +1,21 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-vtoc8.qcow2.gz
+M'XL(",0[(U0``VEM9RTV,W@R-34M-#`Y-BUV=&]C."YQ8V]W,BYO=70`K9C;
+M;M-`$(;O\Q3+J4"!DIW9=6Q.A1XB<8$$X@6(8_L!N$/*P[.Q-QE[/.--(J=6
+MI-3]/\VNO_ZUNUQV+V.\-2XSKC!-:<+G>(#I?1@>9O=K_?VF_]HM.IA=*JG1
+M"6M6Q1$W8/TC'&BX$!>^)>)ZTZ&`@T-J#$KAG#K=U`D!=[UHMZZ]&#E+X"7`
+M#J=>C(OF@VX^GG`7S@=SSX?R_OD+Y\/YY\-Z*L<'SU+S82.D5AHN3^&<E"HT
+MW":)LT*JU'#;)`Z$5*7AZB0.A52CX&Q2%>>$E-5PD,1Y(84:SB5QF9#R&B[I
+MG5L)*<T[F_8N%U*:=S;M72&D-.]LVKN-D-*\LVGO2B&E>0>*=X9P6R&E>0?,
+MNR<1]Y1PE9#2O`/FW;.(>TZX6DAIW@'S[D7$71%.Z#O0O`/FW<N(>W7$>2FE
+M>0?,N]<1=TTXH>]`\PZ8=V\B[BWAA+X#S3M@WKT;>>>%O@/-.V3>O8^L)>&$
+MOD/-.V3>V8@#P@E]AYIWR+S#B'.$$_H.->^0>><C+B.<T'>H>8?,NU7$Y803
+M^@XU[Y!Y5T3<!\()?8>:=\B\^QAQGP@G]!UJWB'S[G/$?2&<T'>H>>>8=[<1
+M]Y5P0M\YS3O'O/L6<7>$$_K.:=XYYMU]Q#T03N@[IWGGF'>/$;<F7#/K_:>C
+M^W<KO.LG)H#Y^4#UCV/`%;,NV'<+#AN]`I/Y_1&4\+B_DJ&3]@WC*A&X_EO7
+M=[\?`'_TYO-S/Q!XVK_E8(,48-[>CH.V?WZP?T42-S5?A]O,M=P.5YZ*"_4=
+M;NVKVM0UP_WIX;8S7PP[6FY]N//'"Y9K#\M%^N&F;;[0?PJN]\MVRW&T7&`I
+M^D>-E:8SXG35$5=NJ?-.V;U["3?Y9'O^WIW<?-7&E,$3:YJMCH/)(<Y6)<M;
+C8+AG"4_!XW?]Q.[GS?"K`[H(G&W"\(`67HO_;MD=L>$3````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.raw.gz.uu
new file mode 100644
index 0000000..941ae5b
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.raw.gz.uu
@@ -0,0 +1,11 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-vtoc8.raw.gz
+M'XL("`;&'50``VEM9RTV,W@R-34M-#`Y-BUV=&]C."YR87<N;W5T`*V206[#
+M(!!%]S[%7W=A,8!MO*J45ME5JM0+U#9P@*PY?$AP0HRQXT0>T`AIYC_-%\-8
+M"$#6:#CJZG(E1R4@)00'A']I^);DPAU/QAS^OKGX*:_AB@`C7YSWCZK%@BN3
+M<,7'"%03':T#%5@+QK/`@&NCJGV*6YLOX+J][`9<OQ57^ZRA#8Q)</\/N&'G
+MSZ"970,*#_&&7;K9%;'9VDL6=@E'$?>9XJ)=GJ@XHCXS';+3Z3NN'R#%5+5J
+M]BN',[NN"MFM.-VA]WM"L,,RCJ\.\>JJ-%I=@97OZC)YN>!^R^D)P'X$[C4A
+.-4K5C!5GC7NA2P,%````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhd.gz.uu
new file mode 100644
index 0000000..7c4a413
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-vtoc8.vhd.gz
+M'XL("`;&'50``VEM9RTV,W@R-34M-#`Y-BUV=&]C."YV:&0N;W5T`*V6S6[;
+M,`S'[WD*`KOU8,B4+-NG`NO6VX`!>X')MEP4P]:AW:&'//Q(6XXE?ZU9F0B.
+M#(D__2E1#)4:/P!6@^W!>K`%]TL#MH:R`J#!T'!XYN$5SNW3+]_^>7S-PN=\
+M&F&YBJU2<[9'#886*0$=+V([[L-YPF0?/C_<//Y\F'`8<-/"QH)!*`AB%NOD
+M4*F+.B;=?_SV::E.+]7%5ORCH>]!]]$,':O+LML89\B*YG.ST(\RIY:\)`,Q
+M+E%7J(55I'1K4R-GMW#VR.H:W,TIG,48*A08)3T5V!Q*Y#Z%S;0/JT:A\OKR
+MVSV_^(4^W`D5>]&7K\;:?7<QA`I.DX,"BN7FT%T8*#^6N%6HO'/W;&IGTDV*
+M7\89M#NJV'?7SKN'TZ91(]6J/#J,;/!7K7"H#JR.<#ON.G:7;BL%"">58KZV
+M&@$T];K-_;M_]IXN+NHOB3ZW$RS_?1RN2NS^<=DJ4#4GL=WC</5L5;__[CHG
+MY>Z(:]Z*HYRA.N@\>+_`?8]PK?!A-"MW_1#_:DB_5[O;3.[J>?)XKRBS[^"B
+MO'R[Q+7)58L;PFR_H0XVU7477-."T:G5H;-W6S@O&BI-_U9<YZ"A.,FA/\C*
+M[:&(:T,%0UX12U0HK5!WE>=A^BM7;N.Y/W#^FJ7?$6B"0C&7"2BKT`:@F$)+
+M1:2HPK*K4?24JZ!0J&YFG&#=S#C!NIEQ@G4SXP3K9L8)ULV,$ZV;"4BQ=_H+
+(%O'FLVP-````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhdf.gz.uu
new file mode 100644
index 0000000..d5ecd33
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vhdf.gz.uu
@@ -0,0 +1,14 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-vtoc8.vhdf.gz
+M'XL("`?&'50``VEM9RTV,W@R-34M-#`Y-BUV=&]C."YV:&1F+F]U=`"ME+UN
+MPR`4A?<\Q9&Z98C,C[$]1>I/MDJ5^@*U#409VDI5APY^^&*P8R#832-CA(C@
+M?)Q++C?+7`.X0$$A\KYSBIR!<S`*,#.3,%NBCN[PI=3]ZR-ESSO;NHV#$;-X
+MN7]0S2YTNZAUF^T`+`,=60:6R"ID-`ETN&I257_BEOPY7+U6N`[77(L39I20
+M"DI%N#</UZ[\9Y"+<!6(F[`;PB5CN&S:K'4_,CV'(Q-N'^.F<&FDHICT"7=(
+MNI-G7-."LU"U&.Q#"J=6316BK\7)&HW)$P+=SN/HHHG_IDHA2PO,S:XZ,<XO
+M="^[\'/`9@"NY9"40^43#$)#*%O\&`H.4:$H?2`-\@9=^_FAVN_3CW>#%M=7
+M/I.]R=[KJ:FEYI`"M.X/$;*?>_[NGH[;T_MQQ-$AJO%@4Z//I3E^$F48[L$4
+MYM@=BR_)5[DW:'PR'3X:__;V/HZ?@S4%2#?6YMB#'\%"*OLL+L\BU<UOP^+$
+/RJEB<F_S"YNC6FHN!P``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vmdk.gz.uu
new file mode 100644
index 0000000..06f3b92
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-4096-vtoc8.vmdk.gz.uu
@@ -0,0 +1,83 @@
+# $FreeBSD$
+begin 644 img-63x255-4096-vtoc8.vmdk.gz
+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
+H_/^/2K\`KOZ`R__OO^"_9VS_6P$U`IJ=4/U[HRR_^A][EZ;PS5\`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-apm.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-apm.qcow.gz.uu
new file mode 100644
index 0000000..d037063
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-apm.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-63x255-512-apm.qcow.gz
+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
+K]_NMSV](YW>>P#_Y)[[^\N;^?VX'FS3XF[UA<[[^!I]_^C_<Q@LX=*8`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-apm.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-apm.qcow2.gz.uu
new file mode 100644
index 0000000..290ead4
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-apm.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-63x255-512-apm.qcow2.gz
+M'XL("*H[(U0``VEM9RTV,W@R-34M-3$R+6%P;2YQ8V]W,BYO=70`K9A);]LP
+M$$;O^15,]Z9-*LZ0E-P]FX$>"J0->@Z\R$"`+D8:H!?_^%+6R)2I&3$VY`A"
+M#.)[&`^?QZ:SK'XH9;4R3IF16DR5?TX7J-:3[4NMOHV_G+0?JX,:IC,AQ2P8
+MW."V6.<!!Q(NT]T%S>-:U2&#@R;5!:5P1JRN;X'!'1VL6[?>C")*X#[`&B=N
+MQE[U05U?G#![U@=#UX=\_VR3BQ=<?WU8UQ>G<@E7)''`I$82;I+$(9.:2KA9
+M$F>8U%S"E4F<95(+`:<3JGB<8U):PD$2ES,IE'`FB2N8E.2=3GLW8E*2=SKM
+MW81)2=[IM'=3)B5YI]/>S9B4Y)U.>S=G4I)W('BG`JYD4I)W$'EW2+A'`;=@
+M4I)W$'GWF'!/-CC-I23O(/+N*>&>!1PS[T#R#B+OGA/N1<`Q\PXD[R#R[B7A
+MC@*.F7<@>0>1=Z\(]SK@F'D'DG<0>7?<\4XS\PXD[S#R[@VQLH!CYAU*WF'D
+MG28<!!PS[U#R#B/OD'`FX)AYAY)W&'EG"><"CIEW*'F'D7<YX8J`8^8=2MYA
+MY-V(<&\#CIEW*'F'D7?O"/<^X)AYAY)W&'GW@7`?`XZ9=RAY9R+O/A'N<\`Q
+M\\Y(WIG(NU/"G04<,^^,Y)V)O#LGW,4&!UQJXUV6\1?A+COO61CV^Z<)WX\U
+M<Y<7>H#%+L"^"FO<:-`7;.L7['?`0CA'9>M/R*(7>/F]PAQNUV>'/A#86A@_
+MF<V\DT/IP.<75E=?F?[96AC_=O#3U%]NIIQ]4'VGR^7/DL')I]O=CU,>A]WJ
+M[&+]OY<E!Y4;Y49T=POERFJ9JKM93N[N;^]O__R^:7#5!Z2;5^%\E^I^399L
+M=7;@O34/W-MFJ@`!M_=6-?69H=TSZ^UP5>/]1OC+CTN+U93S7S.4M=6:Q2YP
+M?%>69]<7QS_&U^W^F6%_;+#^1)7N'[3Z5[])VOU3[?K<T/USO?W+4>4YXV;H
+KW]]_M8A-?4/WKZ#^^9-Z]RXOK*Y.MO]JH"'@8!4:5TWG@_\+*`W"Y1,`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-apm.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-apm.raw.gz.uu
new file mode 100644
index 0000000..b47d4c6
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-apm.raw.gz.uu
@@ -0,0 +1,12 @@
+# $FreeBSD$
+begin 644 img-63x255-512-apm.raw.gz
+M'XL("/7%'50``VEM9RTV,W@R-34M-3$R+6%P;2YR87<N;W5T`*V3S6K#,!"$
+M[WZ*Z;50(\DKJ3FFM+D50D//P=0.!-K4I(%>]/"5(HG(/PDN:+T(BV4_QK-K
+MQGP`)"$%F$T64G`PPN4^2)B7M]+&71G#%![&V8VNZ[AR$*:X]T#ARI*!FE%?
+ME0)YOV#6KT.@QSE]Q*&92_4!)6?I6W;=9SN!$[D^U^.JL3JY.[]S0`MH@EJ$
+M4^V@6E<.ZK9=?3SM3_OOPS;BR.)4XYKU?]1]U=VD.IEYMC1SMA27,@#[LT74
+M1[EWC\[C4,YX.PB;)"`K$$$T5KAT-7L?`5?'MGW:/#^\KS:I?T29]:D9_HG$
+M/_^3I/XAU:=R^Z=N^J<K:#VQFQ?_?G[](D9]N?U[#/ZQ>N*\7C#KLO]X(`5@
+/-H4D'+#X`^%)]I"G!0``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-apm.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-apm.vhd.gz.uu
new file mode 100644
index 0000000..68c3838
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-apm.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-63x255-512-apm.vhd.gz
+M'XL("/;%'50``VEM9RTV,W@R-34M-3$R+6%P;2YV:&0N;W5T`*U66VO;,!1^
+MSZ\XT+="@Z['W=/86/,V*"M[;HTCE\#:AB:P/OC'5T>76HYES\WD"$5&/I\^
+M?><B,>8?`)2`+:`!U#2N%.`7J*X![&1HPO4\O$+7O#R;YKA[6X>G6WDPSE*K
+MH3G9"PG*+E*!J&D1W-(8N@BSOKAYO-P]/48X$>#BP@I!"=`61(W60?;!CI`V
+MW^]^.,B'GIT<L^NM_%_;@FR3+V1D]^#ZK^EFE;6RWU.K0&I',[;!RV""X/0Z
+M>2*<9B=6"<V<J,EF<W`X9_49N,M5\(4/%1L8E>VM=!PJ06,;-E&'4;.A\G;8
+MUZ\'<\)/3(0*?O#CHSDYO5T10D7$CP,#1>$\MUUP*,=3N$RH_)=Z.+1386!%
+M8#I."+?]H7H]%*3\D+,9S:>=,<FO)GXV-;6(R>Z:_->&;WX1##MU1SWAW;/U
+M:VC:9HC:YJ*B?^'#B>[V9S9<&N*G.(4Q17)#,;R$W[?]_H_)P(E2V_5P<LQ.
+MMR'G7-+Y$NUZ7[IU&]G=VVP[[HZ[E^?["$>%BDJM0US.[JG>9]GIPKXU"WT;
+MDT8$P*%O(?(SI6//.'<@"4\GI.[/(+&UQ#7-V?<1X.;5&'L*7?W>W*7Z&566
+M'V<+]!.)?CY)4OW2VL*G#O'S^<WJ1X=)E8G-7K_#7Q^(D5]I_430C]69?GJB
+MNUT/?QY0A&):K#J+OOJ58:@"8#&&JL_A4@PYSCKSLU[&P+#051>GJ\PY5UV"
+I*WC5Q5"R)JW\W]*K+H:25>BJ2W`%K[H$5_2JBZZ@KMX!;=,CGA\-````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-apm.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-apm.vhdf.gz.uu
new file mode 100644
index 0000000..6096dac
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-apm.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-63x255-512-apm.vhdf.gz
+M'XL("/;%'50``VEM9RTV,W@R-34M-3$R+6%P;2YV:&1F+F]U=`"M54UKPD`0
+MO?LK!GH3&I+=R<2>^D'U5I!*SQI,(H&JP0KM(3^^^ZF[211;=AV6#9-]OGEO
+M=Q+'>@!@"BF#6$1L@JOY_-P):*?OD1AQ9$<[TF#)M5V7X:+.:$=C#<AD.HT!
+MB]X^[@(F?J*=OW4!-9SDAPEDL0Q:`Z4W\7MNFL]R`(Z%*E?#\3Z[M%+K!"!C
+MD"'0@YFI`BIEVK!;-OGA6!_K_6YIX5#`42$W9W]AM\V;079I8&_Q1F_1+)@!
+M]+T%RP]#GSU4=I`47A@A`AFD'!"!%8)X*G/BN0<X.Y3ER^+U_F.V</5##,R/
+M;M"/.?KI2^+J!RX_"JT?7=4OXY!E`V?SK-_7MSZ(EE]H_29&OS@?F"\GVGGD
+M_S0@&L!@#,ET9^+FKDL1N>T!$Q>0G>U5@.O]KEP?ZQ_W!I/ISE4U''(_X_);
+M0!FP7+680JX=?G?3S;C>;BR<[7[VCX77)XN[59)?[DP8K"!79W:\+Q)UU!,\
+M>>45;MBMU/SH%HNG8LL*4-.TX3UX"0GWY)NAX53W<U_^K[<:C@(?%?&A'/T"
+(P78/5M('````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-apm.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-apm.vmdk.gz.uu
new file mode 100644
index 0000000..89cfd3e
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-apm.vmdk.gz.uu
@@ -0,0 +1,83 @@
+# $FreeBSD$
+begin 644 img-63x255-512-apm.vmdk.gz
+M'XL("/;%'50``VEM9RTV,W@R-34M-3$R+6%P;2YV;61K+F]U=`"MG%MOY,81
+MA=_]*PCYQ0B0`<_P_K!`[,@&@L#`PNLDCPZOL9#U2I"$)`O,CP^;[-,ZE,1M
+MPBIEY)G:J:KIKJ9*RE<'3-/U*TGR+LGS)!^2HDQ2)/,_K8\DS9Z,^7&N^<;E
+MK]<__OW$KV].I\M7:S*X*`E!JNG$V'S.Y?3LB^G.7XK:O#$_SM%TF8OJ7@3Z
+M=.>=-W;3Y?.;Y]="N+IV>7MP+R1=$A(EFW3%*WO:W>R75O>'KWSQW/HRMX;Y
+M>,LFJ;*D[+R9E,5B9TEU7MY+DVIVFN:$7R?7-P__3J['A_[^YN[QUJ_O[,YV
+M=LY+YU_V+L.\L:IT+]P;+EWC4I1CD@U)!O=V<KG_X>;C>/K/>/]P<_OI';C=
+MLSO;/$ORQBW'^:=/CXWA/B1-2KC/2"Y__LOU.W_EIJ>[]I[I7-2\D/FSYWUH
+MWK),W/?+Q[*Z\=.CRSCYK[`Z=[:^.,7RV;E[4>1)U23+<@J7^SR_/?@M+[7K
+M[\?V<?SY\]WX[NJWVT^A=NYL7<F:)5&]%"I+BLRE\EMSY2M<1G?9+*>67#[>
+M//YZTW^8M_DP7IV^3IBN=+6;#[#VZUIW/8>4NR<[+_OR_?\>Y_TF@S_9&Z9;
+M%K%L8O[LXIP4E<LU'^!R%.<DR]VK^9_F!<\[R>&<DLOMI]-/_YA_Q%VQ/KS_
+M]B>FJ^>HV7->X!PR;VBSIV+=?_'\LDPN'[Y/KMPF?_YU7*Y`IFO6'S/GO)X#
+M%O/L7OBJK>E=$\O=&\O))M?M8YM\USZ,IZ^OK[\+)]NZS>;+8U[:Z+*4:VIW
+M?2_EG`NWGO1ZT,M1#$-W:H?V[G&\=\<;CJ)S)1K\3MVQYD_'N/V<:CFIR5TQ
+MR>5=<G4SS&?JTOYKO/V-Z?KU,I[7X2Z)9@G,W(OYZEG2C_X3UBO&'9-+-S[>
+M?S[UGS_>?!KF'[3D'=,-:^WFY62I7U18T_-%A8^=:W>5/BUMSLUTHRO1NJC:
+M_V#,N=9U/%7!73&%>_@J7#Z??AW;85Y6<G4NBJMP%-/SH]`2/:O">M!S+=:C
+M\`O[?'H8>Y\N2_T!3IOBK&M*LC+),K^B;0-]O+U?EE9F5]J/L^>_R][:C_,7
+MOU*KWYEP36>]OC)]]OLLT[A<C&*3T/T62^?O/\W?[Y_65[KUE>)9:50M1K-)
+M]\\YQ=W+[9;N$FO%L].H7HSA2/5*U]I&\9R>5X]_:D!>[Z?CWP+TS#0J%Z/8
+MI-NK7>%K1\]*HVHQFDVZO=J5OG;T[#2J%V,XM-G*UXZ>DT:Y)_XIA?3`GV5E
+M[6M'STRC<C&*3;J]VC6^=O2L-*H6H]FDVZM=ZVM'STZC>C&&0YOM?.WH.6F4
+M>V*#@+S>3]?[VM$STZA<C&*3;J]V@Z\=/2N-JL5H-NGV:C?ZVM&STZA>C.'0
+M9B=?.WI.&N6><JE='DM7I;YV],PT*A>CV*3;J5W%?D?/2J-J,9I-NIW:5>QW
+M].PTJA=C.+19]CMZ3AKEG@JI71%-QWY'STRC<C&*3;J]VK'?T;/2J%J,9I-N
+MKW;L=_3L-*H78SBT6?8[>DX:Y9Y*J5T93<=^1\],HW(QBDVZO=JQW]&STJA:
+MC&:3;J]V['?T[#2J%V,XM%GV.WI.&N6>^$<0Y/5^.O8[>F8:E8M1;-+MU8[]
+MCIZ51M5B-)MT>[5COZ-GIU&]&,.AS;+?T7/2*/=$(`-YO9NN3GWMZ)EI5"Y&
+ML4FW4[N:_8Z>E4;58C2;=#NUJ]GOZ-EI5"_&<&BS['?TG#3*/352NR::COV.
+MGIE&Y6(4FW1[M6._HV>E4;48S2;=7NW8[^C9:50OQG!HL^QW])PTRCWQ_T)!
+M7N^G8[^C9Z91N1C%)MU>[=COZ%EI5"U&LTFW5SOV.WIV&M6+,1S:+/L=/2>-
+M<D_DCY#7^^G8[^B9:50N1K%)MU<[]CMZ5AI5B]%LTNW5COV.GIU&]6(,AS;+
+M?D?/2:/<4R^UZV/IFM37CIZ91N5B%)MT.[5KV._H66E4+4:S2;=3NX;]CIZ=
+M1O5B#(<VRWY'STFCW-,@M1NBZ=COZ)EI5"Y&L4FW5SOV.WI6&E6+T6S2[=6.
+M_8Z>G4;U8@R'-LM^1\])H]S3*+4;H^G8[^B9:50N1K%)MU<[]CMZ5AI5B]%L
+MTNW5COV.GIU&]6(,AS;+?D?/2:/<TR2UFZ+IV._HF6E4+D:Q2;=7._8[>E8:
+M58O1;-+MU8[]CIZ=1O5B#(<VRWY'STFC4IF>05[OIFO3M7;!,].H7(QBDVZG
+M=JWO=\&STJA:C&:3;J=VK>]WP;/3J%Z,X=!F?;\+GI-&N9()OT,4:;6^WT'X
+M'93?0?@=HORN]?T.PN^@_`["[Q#E=ZWO=Q!^!^5W$'YW8+.^WT'X'93?0?@=
+MHDBK]?T.PN^@_`["[Q#E=ZWO=Q!^!^5W$'Z'*+]K?;^#\#LHOX/PNP.;]?T.
+MPN^@_`["[Q!%6JWO=Q!^!^5W$'Z'*+]K?;^#\#LHOX/P.T3Y7>O['83?0?D=
+MA-\=V*SO=Q!^!^5W$'Z'*-+J4E\[X7=0?@?A=XCRNX[]3O@=E-]!^!VB_*YC
+MOQ-^!^5W$'YW8+/L=\+OH/P.PN\015H=^YWP.RB_@_`[1/E=QWXG_`[*[R#\
+M#E%^U['?";^#\CL(OSNP6?8[X7=0?@?A=X@BK8[]3O@=E-]!^!VB_*YCOQ-^
+M!^5W$'Z'*+_KV.^$WT'Y'83?'=@L^YWP.RB_@_`[1)%6QWXG_`[*[R#\#E%^
+MU['?";^#\CL(OT.4WW7L=\+OH/P.PN\.;);]3O@=E-]!^!VB2*M/?>V$WT'Y
+M'83?(<KO>O8[X7=0?@?A=XCRNY[]3O@=E-]!^-V!S;+?";^#\CL(OT,4:?7L
+M=\+OH/P.PN\0Y7<]^YWP.RB_@_`[1/E=SWXG_`[*[R#\[L!FV>^$WT'Y'83?
+M(8JT>O8[X7=0?@?A=XCRNY[]3O@=E-]!^!VB_*YGOQ-^!^5W$'YW8+/L=\+O
+MH/P.PN\015H]^YWP.RB_@_`[1/E=SWXG_`[*[R#\#E%^U[/?";^#\CL(OSNP
+M6?8[X7=0?@?A=X@BK2'UM1-^!^5W$'Z'*+\;V.^$WT'Y'83?(<KO!O8[X7=0
+M?@?A=P<VRWXG_`[*[R#\#E&D-;#?";^#\CL(OT.4WPWL=\+OH/P.PN\0Y7<#
+M^YWP.RB_@_"[`YMEOQ-^!^5W$'Z'*-(:V.^$WT'Y'83?(<KO!O8[X7=0?@?A
+M=XCRNX']3O@=E-]!^-V!S;+?";^#\CL(OT,4:0WL=\+OH/P.PN\0Y7<#^YWP
+M.RB_@_`[1/G=P'XG_`[*[R#\[L!FV>^$WT'Y71#305Y+NF3]]NG&=*W=JY+R
+M5_XIU"YY=76CL3X0BSXPS!367?V^A&LZZ_6%^38?;](O(LRW^7B3?A%AOLW'
+MF_2+"/-M/MZD7T28;YOH%Q'FVR;Z183YMHE^$6&^;:)?1)AOF^@7$>;;)OI%
+MA/FVB7X18;YMHE]$F&^;Z!<1YMLF^D6$^;:)?A%AOFVB7T28;YOH%Q'FVR;Z
+M183YMHE^$6&^;:)?1)AOF^@7$>;;)OI%A/FVB7X18;YMHE]$F&^;Z!<1YMLF
+M^D6$^;:)?A%AOFVB7T28;YOH%Q'FVR;Z183YMHE^$6&^;:)?!.?;-OI%<+YM
+MHU\$Y]LV^D5POFVC7P3GVS;Z17"^;:-?!.?;-OI%<+YMHU\$Y]LV^D5POFVC
+M7P3GVS;Z17"^;:-?!.?;-OI%<+YMHU\$Y]LV^D5POFVC7P3GVS;Z17"^;:-?
+M!.?;-OI%<+YMHU\$Y]LV^D5POFVC7P3GVS;Z17"^;:-?!.?;-OI%<+YMHU\$
+MY]LV^D5POFVC7P3GVS;Z17"^;:-?!.?;-OI%<+YMHU]$F&_3\TWZ183Y-CW?
+MI%]$F&_3\TWZ183Y-CW?I%]$F&^;Z!<1YMLF^D6$^;:)?A%AOFVB7T28;YOH
+M%Q'FVR;Z183YMHE^$6&^;:)?1)AOF^@7$>;;)OI%A/FVB7X18;YMHE]$F&^;
+MZ!<1YMLF^D6$^;:)?A%AOFVB7T28;YOH%Q'FVR;Z183YMHE^$6&^;:)?1)AO
+MF^@7$>;;)OI%A/FVB7X18;YMHE]$F&^;Z!<1YMLF^D6$^;:)?A%AOFVB7P3G
+MVS;Z18RF^D6,IOI%C*;Z18RF^D6,IOI%C*;Z18RF^D6,IOI%C*;Z18RF^D6,
+MIOI%C*;Z18RF^D6,IOI%C*;Z14QI:JA?Q&2J7\1DJE_$9*I?Q&2J7\1DJE_$
+M9*I?Q&2J7\1DJE_$9*I?Q&2J7\1DJE_$9*I?Q&2J7\1DJE_$9*I?/*=I:JA?
+M/+^XE_#!="\WN^H#\V5]>>'N7:KW^EWO:OR%A-__Y-)\\VQ]N?GZEOOUNMNK
+M#B_B,DV([1N7]S^^5K]\N5]OOMS6U-W&=+U?[X'U?7MW]W%\)=V+>S'_WNVN
+MZ;*7JRLF?Z/?Y?Z=.>^6RWL*%Q-7]\M=>_]X\WAS^^D7IEONUSOXV[@>7]UO
+M[=VKJS.^%W.>'SQ;$I&S3[@]VX3KL[[W9YXOQU'R?L>%NXMNL=Q1]SS,"R_<
+M>T7V,N$/]^/XW8?K/_[MAP]:OSPW7E]YH'XJA5M_2+1^B:[/6GN<EU^L7Y4E
+M5?7*M?E4OX?_KA<BUV==O]K7S]W?^<5_]]^XO#]M_[<FS'U"LQ7F[N:SZ5?_
+)!]R'M=*37@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-bsd.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-bsd.qcow.gz.uu
new file mode 100644
index 0000000..97e3920
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-bsd.qcow.gz.uu
@@ -0,0 +1,126 @@
+# $FreeBSD$
+begin 644 img-63x255-512-bsd.qcow.gz
+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
+"````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-bsd.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-bsd.qcow2.gz.uu
new file mode 100644
index 0000000..3663da0
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-bsd.qcow2.gz.uu
@@ -0,0 +1,21 @@
+# $FreeBSD$
+begin 644 img-63x255-512-bsd.qcow2.gz
+M'XL("*P[(U0``VEM9RTV,W@R-34M-3$R+6)S9"YQ8V]W,BYO=70`K9C;DM,P
+M#(;O^Q3F#`N46').'+:PL,QP!S=PW7;;I^CP[*QK)4H4*5XZ:3N9Z;C_-W+\
+M64E:%.GE7.E=J%QHW7'G[K_3!]S@R_CC3K^^_U@/7Z=5@OG"2"D#]:''C5A_
+M&0<6KO#3`:_C!M6A@H,N-07E<,&L;FY`P5VMSJ?NO!B-2.`EP(0S%^.B^B#5
+M)Q/APOI@Z?I0/W]EEY,#U7Q]F.J3J=K"-5D<**G6PFVS.%12.PNWS^*"DKJS
+M<,;.'>!*)74T<#ZCRCVN4E+>PD$65RLIM'`ABVN4E.6=SWO7*BG+.Y_W;JND
+M+.]\WKN=DK*\\WGO]DK*\L[GO;M34I9W8'CG&'=04I9W(+Q[1+C'C#LJ*<L[
+M$-X](=S3'N>UE.4=".^>$>XYXY1^!Y9W(+Q[0;B7C%/Z'5C>@?#N%>&N&*?T
+M.["\`^'=:\*]89S2[\#R#H1W;R?>>:7?@>4="N_>$:M@G-+OT/(.A7>><,`X
+MI=^AY1T*[Y!P@7%*OT/+.Q3>E82K&*?T.[2\0^%=3;B&<4J_0\L[%-ZUA'O/
+M.*7?H>4="N\^$.XCXY1^AY9W*+S[1+AKQBG]#BWO@O!N0[C/C%/Z7;"\"\*[
+M+X2[89S2[X+E71#>?27<MQX'6JKWKBCT#^%N)WL6EKW_#'Q_[)6C/3`#;/X'
+M.%=APK6+3KA,$XX:;)6C/7"Z68_?/?"\PF4=5[6L7`,/K?#/[>_IA,L%5SCA
+M[,=1&N@*[K?@!+<9X.(5[3CXY7`=W=[S]A\2![CKQ.MPLX^C\1[[H`V8DRT7
+ME@4:D1NN<[RUBW?@77<7MV;]^CJN3Y$91M.=J<]-IQNO&OW3G5B/B(/,=-T8
+M%Z\:8E_R$F;.WF9:W7[AQ4"Y,QZX<R-DO',3#I9M!)#^ERKBKZ9'>^#T<SU^
+5)V`@X&)G,%2Q]ZW^`:W<QSE#$P``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-bsd.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-bsd.raw.gz.uu
new file mode 100644
index 0000000..31141a5
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-bsd.raw.gz.uu
@@ -0,0 +1,11 @@
+# $FreeBSD$
+begin 644 img-63x255-512-bsd.raw.gz
+M'XL("/;%'50``VEM9RTV,W@R-34M-3$R+6)S9"YR87<N;W5T`*V4.PZ#,`Q`
+M=T[AN4.4;TD7*E7JWJF=*853Y/!-@!2;$.@0!R(BVT_^X'`^"8"6P-N-/:]P
+M-T:7JT[52),!:&K0!LP9K#?GRT,.1.%>]R?#XF:<V//*X]A*(DX>X6+`:LCA
+MK@BGO')`EEP@KTZ`ZN<#_D:X9GHC3N]%YRO!^RU%-EE3JG:QMW;EA_L,H@>A
+M@-M9)RGPUU]8XKND84B2[DY\D*;;!EQ-[07"R8-T@>+>`8?Z25IX4+TFC:XK
+MW`RUGHP_)S=`Z.1..%GV(I#CS>+_0&^5[GF%>S"Z)J">@<4J6'^L)U9?N.5M
+%L04%````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-bsd.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-bsd.vhd.gz.uu
new file mode 100644
index 0000000..2e7c657
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-bsd.vhd.gz.uu
@@ -0,0 +1,17 @@
+# $FreeBSD$
+begin 644 img-63x255-512-bsd.vhd.gz
+M'XL("/?%'50``VEM9RTV,W@R-34M-3$R+6)S9"YV:&0N;W5T`*V7/6_#(!"&
+M]_R*D[IEL/`98W=IHJCI7*E2.[O$CC+T0TV'#/[QY6R(#W\E;;$)PH)[>(\[
+M$!&B?0!4`JH"58)*J9U)4+>0Y0"FTQ9LZMA^0JT_WDO]?3A%]JD7+2P6W,HW
+M)WM,0)I),L"")E$[:D/M,-'-=K\\O.T=#BW.32P52(340.1@GER<U1'I8?-T
+MWU>7#-5U5NT\505)Q48D7%T4K3A.&BLSGHJ"2C8R7?$^O`Z.\]2EHF?%9(XM
+M*G-V#*?FK'Z#6RYL+-I4,8F1F5J`BB%#:INT<>LP*"953L?/XNM8]O3A1*HH
+M%HQ^GYQV%VVJH!ML%4@2..<N-)1C'S>2*O]:/>7;2=LPBR!2UX&-^_[J=2C@
+M^E0L9M9\.AB3^@K29_:6*$;JZ8YZ$_GO&:@)F&:TW5,%.5Z[@B_;Y['XZHET
+M^>/NT'@)YP3ST\#'K1@N:</145CR@HXA*;MO.8*[,[]UAY-SZBAGRK&.26?3
+MP,FL\YX=CS/$)<0)B)QE-0.>XPN=OMNA#/3<G=$'0W<+PF7^^)CA\(*[X.->
+M[;G,!G<AO+!ZZZ$Z'3@8N_[.N'+G$L3?N2T.PQX$V)PL)@/-J&$]W5$_1O[;
+M`M$>5<'./G1'52B%T@*#*33`,K!"+&>3[;=9J*S"0!=)P@6\2!(NX$62<`$O
+=DH0+>)$D7,"+).&"7B25^8L@Q.('-E=QRWT,````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-bsd.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-bsd.vhdf.gz.uu
new file mode 100644
index 0000000..c102a9f
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-bsd.vhdf.gz.uu
@@ -0,0 +1,14 @@
+# $FreeBSD$
+begin 644 img-63x255-512-bsd.vhdf.gz
+M'XL("/?%'50``VEM9RTV,W@R-34M-3$R+6)S9"YV:&1F+F]U=`"ME#M/PS`0
+M@/?\BI/8.D1^QUUH55%F)"280W"J#L#"P.`?CR^)&U^>",5VHEAW]^4>]C'6
+M#@`E@)43[WF!/^5T^FR7-32!0%V`TJ`-V*#.^D4V1.!?SR]Y.GR'XTM6\[A\
+M,").K.&BP[*>PQT2G`S".M%D/+&J.$C7[]4$[CX\QQZGEKP+F6!N2C`;K-XJ
+M=[&V=F"7UAFX`RZ!V4XF*/!67^C]VX_=$"3<!?]@'&Z)N(+J\P0G5L(%BGM#
+M'"?*?0E7LG<<>U=M7`PYO!E_O+D(H3>WQ8EM&X%H.DLX@4%K_)X7^*><SA:H
+M.N!F&;1=[S,23`W&@='X72@P>RAL"A3T)/GJZ]-5W]>?M,*(XVTSF%QH+R3>
+M%E.`*/$GYAV_$__NSI?=]>,2<;%5Q1\K@TG7`:)&X5H:[N/I^6'HG1PGR9+L
+M<?0S;7LA<)*]0XI3MV"=:UH@[Q?9$,%DJT*<9@.K_]:VQ9F-CTHX?-DO_`G/
+%>S`'````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-bsd.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-bsd.vmdk.gz.uu
new file mode 100644
index 0000000..79b142e
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-bsd.vmdk.gz.uu
@@ -0,0 +1,81 @@
+# $FreeBSD$
+begin 644 img-63x255-512-bsd.vmdk.gz
+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
+FSEW3G6T;0;5TEG7X?_OW_A/7;T_;_]:$Q9+PB_\#AU-ESJ!=````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-ebr.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-ebr.qcow.gz.uu
new file mode 100644
index 0000000..39509f6
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-ebr.qcow.gz.uu
@@ -0,0 +1,128 @@
+# $FreeBSD$
+begin 644 img-63x255-512-ebr.qcow.gz
+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
+@Y[_P]1_O'_YU-]BDP3_M!)MO])W/C_X'"T=/.U"H````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-ebr.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-ebr.qcow2.gz.uu
new file mode 100644
index 0000000..71e3879
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-ebr.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-63x255-512-ebr.qcow2.gz
+M'XL("%+N+50``VEM9RTV,W@R-34M-3$R+65B<BYQ8V]W,BYO=70`K9C;DM,P
+M#(;O]RG,&18HL>2D"8<6%I89[N`"N$Y/3]'AV:EK)784*=YVTG8R[;C_-W+\
+M64U:%.%A3&F-JXQKS&%C3I_I!2;Y,'R9XZ_O/Q;IXW@38+904L+`<M_C!JQ_
+M$0<:KK#C`2OCDNI0P$&7&H-R.*=6-S4@X&YOSJ?NO!@U2^`UP(!3%^.J^B#4
+MQQ/NROI@[OI0/G]EE^,#U71]&.KCJ:6&J[,X$%*-AFNS.!12&PVWS>*<D-II
+M.&7G)KA22!T4G,VH<L)50LIJ.,CBED(*-9S+XFHAI7EG\]XU0DKSSN:]:X64
+MYIW->[<14IIW-N_=5DAIWMF\=SLAI7D'BG<FXO9"2O,.F'>/"/<XX@Y"2O,.
+MF'=/"/>TQUDII7D'S+MGA'L><4*_`\T[8-Z](-S+B!/Z'6C>`?/N%>%N(T[H
+M=Z!Y!\R[UX1[$W%"OP/-.V#>O1UY9X5^!YIWR+Q[1ZPBXH1^AYIWR+RSA(.(
+M$_H=:MXA\PX)YR).Z'>H>8?,NY)P5<0)_0XU[Y!YMR1<'7%"OT/-.V3>-81[
+M'W%"OT/-.V3>?2#<QX@3^AUJWB'S[A/A5A$G]#O4O'/,NS7A/D><T.^<YIUC
+MWGTAW%W$"?W.:=XYYMU7PGWK<2"E>N^*0GX1[GZT9V'>ZT\7KX^M<-0')H#U
+M)<"I"@.NF77"9=@;%P+E"0><WQMA,FW9F6S)9\IO;=P5:7WK8/,JQ>WFGN[A
+M,F!9FK8=`7]W]<%D&9?7M]S[8;\K6^&H#QSO%L-G!ZS#OP-+O\G*RM3PT`K_
+MWO\1UK>>[X8OX/1_!VB@*[COB"/<.L'Y"XQ#\LUT6PV\2]\GN-4B=N83;O+?
+M`7_+LY<&U,F6\\I2][VEMS599W^E[6^(NA];=J7<KZ^)]0F]!0;3G:C/C*?K
+M?\3[FVVV'AX'F>F:(6[3=Q9A"3-G;S6N;COS8EB^,QZX<SUDN',##N9M!,VY
+CLYP,/'UK?-0'CC\7PV<`.@+.=@9=Y7][;_X#6VG_\](4````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-ebr.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-ebr.raw.gz.uu
new file mode 100644
index 0000000..019b487
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-ebr.raw.gz.uu
@@ -0,0 +1,12 @@
+# $FreeBSD$
+begin 644 img-63x255-512-ebr.raw.gz
+M'XL("%+N+50``VEM9RTV,W@R-34M-3$R+65B<BYR87<N;W5T`*V4S0Z#(`S'
+M[SY%SSL80)GLHLF2W7?9=D:G3^'#KQ5U(/B50(5("K_\2PN,F0:`/?BM._IT
+MT?KDD@PT7I\'\B#0X!K:Q6F9EC1F'4UIG'$-SMN`O@H-6VGCOK'#[<X!I02M
+M/>!KTB<BIZ-HR9T+8#HPKCOZ>^K:!%1#P<@"<@GR"DH<5?AYO`/Y58S'"MC@
+MQ!YN$FPJ*(2K+%R&SLY::2IQW&77G?UOX4K3)UR^I0Y/@K4AQVJP,FZQ*#1W
+MGYUGX"WP#)@:?<(%SOF%O[Z;+T,XX6[H`S]<3;C"7<\MG-@)%UQ</;\L@13N
+MG%[IJVLB)X,O;\;!FTL0]^8:G(C[$-R&EP4K$%?YX[JC?Z:N&6`^`J.=(+U\
++C"4_RQ*HU^4&````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-ebr.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-ebr.vhd.gz.uu
new file mode 100644
index 0000000..eae437d
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-ebr.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-63x255-512-ebr.vhd.gz
+M'XL("%/N+50``VEM9RTV,W@R-34M-3$R+65B<BYV:&0N;W5T`*V736_C(!"&
+M[_D5(_76@X7'@-U+(E7-GE>JVIZQ:U<][(>:/>3@'[^,@63P5YJ6F""L81[>
+M@0$+(=P/0!>@.]`M:$7M4H*^@[("L$9?<*AS_PI]\^=WV_Q[/V;^UV\<+!?<
+M*W8G?RQ`VD%*0$.#Z%=J0Q\PV<W^[?;]UUO`H<>%@:4&B:`L1$[&J<1)'9%^
+MW#\^C-454W5G+S=.UT'1L1X%5Y=E.XZ3ULOVIZ*ADX/,4**7R,!QD3HE1EY,
+MYMRDLF#G<'K-ZQK<[<:OA4L5FQBEK07H'$JDMDV;,`^38E/E>/AK/@[M2!\N
+MI(IFBS&VR>5PT:<*ALY>@22!:^'"0#F,<3.I\JW9T[&?]`T["4(%`P[AQ[-W
+M1@'7IW.Q,N?+B[&HSZS&]86`Z_IZX,KNJ!N_.P08137MTMSO5>_?V/=V1M_.
+M;=LMQ[VF#K>[#J@4&#,!/@5]3>+EJ"HRV[-3F)EZV=#?9_%S`@X)HTHZSI6&
+M"C^K\&7_/+.^E5DX#JX/V.'P$BX(YJ=]C-LQ7.&V&T_5LQ?/.]YFN*W[!YQ<
+M4T=G0CMG6`Q6)4X64XW\^#I#WD)>@*B\#6/@:7WAK.]N*@.C<%?TP31<0[@R
+M[I\S'%X(%V)<?3I99I;PPNQMI^J:Q(M1CW?&)W<N0>*=ZW"8]B`PP\EB,]#V
+MFM;+AOYG%C\.B/Y3E.S;AOXP3:90>F`RA1;8)E9HTGX_M%>8Z*)`N(07!<(E
+CO"@0+N%%@7`)+PJ$2WA1(%S2BX*V5T`A-O\!]-GJEUT.````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-ebr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-ebr.vhdf.gz.uu
new file mode 100644
index 0000000..edf4354
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-ebr.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-63x255-512-ebr.vhdf.gz
+M'XL("%/N+50``VEM9RTV,W@R-34M-3$R+65B<BYV:&1F+F]U=`"ME3MOPR`0
+M@/?\BI.Z98@``R9+(D5-YTI5V]EQ<92A[=*A@W]\.6,<SL9Y5!B,0`>?[\69
+M,?\`N#?9YP7M:O2TB^6BH_'#_4">!'I<C:<X;JL4CD6#2QP'7.W6-J'?UC7W
+M;&+<1VYSF_N`2D%538"O03^1.1RE1;$4P*K$."]H=RO:`M!T":-*D`J4!B-N
+MU?!]_Y:(KV$\E\$>)Z[A@L(^@U*X;80KG+")=OI,[$_%>1?/(]S&OP$G+VGG
+M/,%L2C!KK,J;+,8U>BZ.,W`+O`!F>IF@P"&^<-9O/55#$',OZ`=3<RO$E70_
+MCW#BBKE`<8>ALB1">,5[FZEV=>9@\/'-N/'F(H3>7(\3>0O!NJLL+@/=KNDX
+M+VB?5[1YH.R!V3QH^G^;+D`WH"UHA?-2@EY#:6*@H)G4UM]?MOXY_<811ASW
+MQ2#9\;PH\+;H$D2%']$?.(_T>]@?EZ?/8\"%4A4^+#4Z73F(G)AKJ+E/NY?'
+ML7;%U$F&>(^CGG'9<X83[VUCG!R,M;8K@?S<R8((DJ4*<8J-3OTWMAZG,Z>*
+-^^\N_@`\0K'N$`D`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-ebr.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-ebr.vmdk.gz.uu
new file mode 100644
index 0000000..ada1aea
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-ebr.vmdk.gz.uu
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 img-63x255-512-ebr.vmdk.gz
+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
+6P$L$-.O@)?P>D>R+_P-J-:`0'F``````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-gpt.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-gpt.qcow.gz.uu
new file mode 100644
index 0000000..4753ee6
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-gpt.qcow.gz.uu
@@ -0,0 +1,132 @@
+# $FreeBSD$
+begin 644 img-63x255-512-gpt.qcow.gz
+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
+7+^+GN4?](MX>AAN9_O;_@'C+'O6L````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-gpt.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-gpt.qcow2.gz.uu
new file mode 100644
index 0000000..26ffd0b
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-gpt.qcow2.gz.uu
@@ -0,0 +1,26 @@
+# $FreeBSD$
+begin 644 img-63x255-512-gpt.qcow2.gz
+M'XL("+`[(U0``VEM9RTV,W@R-34M-3$R+6=P="YQ8V]W,BYO=70`K9A+;YPP
+M$(#O^15.WTT:BL<VC[Z3-"OE4B55>VL/+(]3%:EWVM]>C`T&,P/)UKMHE<B:
+M3V/SS=@0Q^;#F.),)DSFK-FS[G][`9O\,[]8>[N[CJ:?]LC`>$Q$(0-2C+@9
+MZ]+A@,+%?#G`<=PD.X'@8(A:@K9PDLQN;0#!G1SU2]??C,R+$(<`#8Z\&0?E
+M!R8_/T(>F!^$SD_@ZZ>&.'\@6<]/F/S\J)3"99LX0*)R"E=LX@02M:=PY29.
+M(E$5A:LW<0J):@@<WU"EPR5(%*=PL(E+D2A!X>0F+D.B*._XMG<Y$D5YQ[>]
+M*Y`HRCN^[=T>B:*\X]O>E4@4Y1W?]JY"HBCO@/"..5R-1%'>@>?=L<4]<K@&
+MB:*\`\^[QQ;W9,1Q+(KR#CSOGEK<,X=#^AU0WH'GW7.+>^%P2+\#RCOPO'MI
+M<2<.A_0[H+P#S[M3BWOE<$B_`\H[\+P[6WC'D7X'E'?"\^ZU9<4.A_0[07DG
+M/.^XQ8'#(?U.4-X)SSMA<=+AD'XG*.^$YYVRN,3AD'XG*.^$YUUJ<9G#(?U.
+M4-X)S[O<XMXX'-+O!.6=\+Q[:W'O'`[I=X+R3GC>O;>X#PZ']#M!>2<][SY:
+MW">'0_J=I+R3GG?G%G?A<$B_DY1WTO/NTN(^CSC`HD;OXAB_+.YJ4;.`]#N9
+MW!.W6^+HAY5#CK/2';<Y\DL/K`"SAP/)O5::<TJX"2LS86U5@?S2`^U%-/^.
+MP+YV'P`<,ISC[(25J5WSP%C7K&GL95;*!F>3`P(RX>-H@JL"KU]?;@\`*L6*
+M8@'\/N37EUM77^;=0&>WZIN!`J;DB.OGJLII?E>[:W9S_O6;AOUPT^W+3>-J
+M_;!4)%YVG)KNU1?$/F7*+6W\U1YP@L*-QS(/IX\7:;6"PR[6_B%P<BUJ?.EP
+MCWMK<"J>1TW;%LL4RX`E):L*$O=KADL"FR?U\#YA:<F26K]/*AO]1Y7HIS26
+M=65BMFWHSU@Y2[D^NW7`]NXVNC.PL^CWJ<U/<FL$=M$#U.I)6#-")[4Q73;'
+M8:^1_FOU=%_>JV"KEUM9L(L>(%>O,*N'+Y)."BV9=EBUH>`&W#[PZB5ZN*N/
+MKG\O?^F!]B::?PU06F"P#&72E`&K0^,"5H?&!:P.C0M:'1H8L#HT+F!U:%S`
+MZM"XH-71`>LXW":N<=J]/&.J8KED335/@]R.V^@G.MT:UK;^E4T<OQEUP$U<
+BXU8W\;0F)VL_?[W)!MS$-2[H)BY3??P^^@=.=Z`2%1H`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-gpt.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-gpt.raw.gz.uu
new file mode 100644
index 0000000..2a259cb
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-gpt.raw.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-63x255-512-gpt.raw.gz
+M'XL("/G%'50``VEM9RTV,W@R-34M-3$R+6=P="YR87<N;W5T`*V534_#,`R&
+M[_L5WA5$E*1)FIWXD$#B-A#<N/1C/:%)W,M_)VX:UG9Q89+3J*KD^JGM^*VE
+MC`O`:)!5YDX;^@<QO_K-U6:@J?HR8/@^AK``B@",N"88I<9W#@?HNG%+-7A%
+M9VE!J_0\XL1I;<4$UYZ\SC9MF.)$Q*5TN\N`UD)5G0'?4WQZ.`X+QH'9@0[O
+M2S`*K`9K?G%#KK:9QO?X]`S[^]<WA'V<TM4J&%4#1D)30MLMHE-DNG?+="-.
+MHY=95COA"A*WS>.*>+8T+K=IG%GSBCWTO[.-."OG7G[JY2UX#:Z!MB)QGS.<
+M8^X\@^;:0=F`.X!5T'3XT#I0*L079.('2*AO"W('I0)=([`_OHACA-V(K^LQ
+M/J/&CLAMVD!5S^BUCL"@_D@7YKB"NWH>JV?9JK<;FR6W:0-9O2I6+U\D4C)]
+MJEI22,+5S-5S:`[Z"/_O\SMMZ/=B?D6@&8%L$8;F<XSJ0!RC.A#'J`[$L:H#
+M@8SJ0!RC.A#'J`[$L:HC`+WD&^*(&X:X@;*%MH!B.<2I<=R+;W&;2=?KM=&_
+F,L3SA^$9ASCBUH=X02:;UB)9QB&..-8A'H"5E)L?B^NWCH@+````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-gpt.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-gpt.vhd.gz.uu
new file mode 100644
index 0000000..0473ed9
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-gpt.vhd.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-63x255-512-gpt.vhd.gz
+M'XL("/G%'50``VEM9RTV,W@R-34M-3$R+6=P="YV:&0N;W5T`*U82V^<,!"^
+MYU=,U5NJ4F-LPYZJ1DVDWM)';CT$#$0KM=M'<LB!'U^/L1<,-NDFPUI>D)F/
+M;YX>F;'Q`E`%J!Y4!TKB?2E`[:"L`,RB&]S.N7N$0?\Z=/IA_YBY:S@;P7(V
+MEPK%49X7(,Q'2N`U?D2U>`^#A\E>7]Z=[W_>>3CNX/R'A0+!01H0L?J.8D=V
+MB'1U\?6CA;R=V!5K=I/4^-?W4/2S-PK/[M;.[^?*"B-EWL=1`I/`Q#2"AV!A
+M4G9A.\D64C.:,:/.E(W!J2VI4^#.SYPOQE`Q@5&:V9@NAY+CO0D;;X?5,*'R
+M>/^[_GO?+?CQ1*BH([]\M5:DU>4N5+A_V3$0&,Y;ZH)%>5C"14+E1=93H9SW
+MKC&""1SWP*WZH?4F*)CS4SG;L'G:&4E^-?(SN<7JR)Q>&"ZR\'<$;)K3`+T%
+M0[BCPHU&^]DZTG631F.03(8M-AS"9O9K6F+_-OUI@%)"7:\`;SP_;=TA;<';
+M86"8XB!RD*;X3>%L=9=ZSN_RZA-<?_CR#<&^3^IJ#)>NQ0PR5;=O%^S6F794
+M=Q]+-LW'Z.-]5-DB"?<NFKL:D\V02L/%1AI.;$FYK>S_"ZF6+)2JYE*5A(J#
+MTM#62;@?`1QU7>YPN5%0:MS"90[:[N6M@CPW_$R:5!:$`S=^-QN[V84;!!P.
+MG[/#"/8V^_/&\>MR%Q&QD5Y(6:_C6Q&!I)Y0%T(XZKK<56@]26:]G0N6V$@O
+M)*U7C]:+&PE)Q5+WN*MEV:L0KJ&U7F[;1Y,?IGZOY_3"<)V%OQ&0NVV(;%_C
+MKI"2,10.D(RA</E+R#`7F\X\U<O*.86HPB`<885!.,(*@W"D%08!"2L,PA%6
+M&(0CK#`(1UIA%&TCI%PCQ$KK@`*:+J21;&D&[PC?<G@XOM4^;31"<6=0-D+J
+MJ4:H[Y+*^FNA+&$CI*@;(>4**=%9AO*-T)K#<\XRE&^$9A]^P5F&BC="SSW+
+:0#C"LPR$(SS+0#CB4,&^Y>P?_R=O5``3````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-gpt.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-gpt.vhdf.gz.uu
new file mode 100644
index 0000000..b9a9b8a
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-gpt.vhdf.gz.uu
@@ -0,0 +1,19 @@
+# $FreeBSD$
+begin 644 img-63x255-512-gpt.vhdf.gz
+M'XL("/G%'50``VEM9RTV,W@R-34M-3$R+6=P="YV:&1F+F]U=`"METUOU#`0
+MAN_[*P9Q*R+8CNUD3XB*5N)6/GKCT'S8U4JP"(D#A_QX9NRDL;-VH,B)%7DU
+M\9-YQS.9+&/^`)`"6)>XY@W3=16?T^'JX&B\?QX0GT\N;(`5`CUN0",3=(\Q
+M8.T\&'>K_&(<-5OG#E>M!ZL"W!BNVHR\(<15'K?(M<\#*@5==P&\7_P3;CL4
+M2`WR"`+O9R`Y*`%*/N&<=C6$_MW<?H"[=Y^^$.SK*E=P-)H16`WZ"';<>,?S
+M<D\;N1Z'#E'TA4V*K;.X-]OH>5Q-N'$'EQIYG-Q;Y7/HW_;6XQ2+5[7AJE9!
+M*T`/,'99W+<(IPMGGB1SKZ$90!M0'`9+DU$#Y^@?EDGK(`($[OL1&@ZB)^!T
+M_EB=/>QU]?/5[)_D<T:D1MZ0BYX4>QE!3OU%+L2XNG3T6HJ>*A:]XYPLJ9$W
+M9*/7^>BE@T1.I4H7<7/4JA<QKB\</4UFK`]\?U]>\X;IKHI/#Y0SL)B'RMJA
+M8'40KF!U$*Y@=1"N:'40L&!U$*Y@=1"N8'40KFAU(-"P<DV<<"[W&K<!-?0F
+M=B/;CJ=E(Y9VN>#$7NO?:>+IS3`%FSCA=INX-5FQR[$16[")$ZYH$]?SY[?&
+MKS-77UK1O)'TL=:T(5"L.>.`PX^S&7Z=?H?1(QSW&9$<M%[4E)BZ`='10_1(
+M\\"_ES>/5Z?OCPM.S*J6!U-&8Q8C1%[(U;'<V^O/[QWR8?4N\9K2F^BAG[6-
+MA,_>/;CKVU"L?!)K+*!R)M<1_8@,R40FG$N5\.;_W5N/*YTJ^-?@\`>4./-P
+$LPT`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-gpt.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-gpt.vmdk.gz.uu
new file mode 100644
index 0000000..ea3a546
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-gpt.vmdk.gz.uu
@@ -0,0 +1,88 @@
+# $FreeBSD$
+begin 644 img-63x255-512-gpt.vmdk.gz
+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
+%E+1E````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-mbr.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-mbr.qcow.gz.uu
new file mode 100644
index 0000000..e99d8f8
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-mbr.qcow.gz.uu
@@ -0,0 +1,128 @@
+# $FreeBSD$
+begin 644 img-63x255-512-mbr.qcow.gz
+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
+G9OGVV^($_LD_\>4?[QY^OQMLTN`O.\'F*WWG\V__`[M'T1.AJ```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-mbr.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-mbr.qcow2.gz.uu
new file mode 100644
index 0000000..bea1353
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-mbr.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-63x255-512-mbr.qcow2.gz
+M'XL("%7N+50``VEM9RTV,W@R-34M-3$R+6UB<BYQ8V]W,BYO=70`K9C;DM,P
+M#$#?]RO,'18HL>3<N+2PL,SP!@_`<WK[B@[?3E(KL:-(\;:3-I-IQ]49V3Y2
+MDV29?QF36^,*XVISW)KV.QU@HB_CPYQ^??^QBE^G&P^SF1(E#)2'`3=B_0LX
+MT'"9G0Y8&1=EAP(.^J@I*(5S:G9S`P+N]N:\=.?-J%@$7@/T.'4SKLH/?'X\
+MPEV9'RR='\KKE_=Q?*"8SP]]?CRJU'!5$@="5*WAFB0.A:BMAMLE<4Z(VFLX
+MI7(C7"Y$'16<3:C2X@HARFHX2.)*(0HUG$OB*B%*\\ZFO:N%*,T[F_:N$:(T
+M[VS:NZT0I7EGT][MA"C-.YOV;B]$:=Z!XIT)N(,0I7D'S+M'A'L<<$<A2O,.
+MF'=/"/=TP%DI2O,.F'?/"/<\X(1^!YIWP+Q[0;B7`2?T.]"\`^;=*\+=!IS0
+M[T#S#IAWKPGW)N"$?@>:=\"\>SOQS@K]#C3OD'GWCEA9P`G]#C7OD'EG"0<!
+M)_0[U+Q#YAT2S@6<T.]0\PZ9=SGABH`3^AUJWB'SKB1<%7!"OT/-.V3>U81[
+M'W!"OT/-.V3>?2#<QX`3^AUJWB'S[A/AU@$G]#O4O'/,NPWA/@><T.^<YIUC
+MWGTAW%W`"?W.:=XYYMU7PGT;<"!%#=YEF7P0[GY2L[#L]:<+U\=6..L#,\#J
+M$N!<AAY7+SKAW$^XTZ`1SOK`Z6XU?@_`<[%=`*QH!<<XFG#NB\VO3I/WI6&I
+M0&AZ.QO*+)[PQI?'>A7A]@NOW[D^+@#FN6F:"?!WGQ_,IG%Y?N5AX?VM_..&
+MLJO:O#`5/#3#O_=_ID*WN,4JV./TQPTTT"<\M-@);A/ANBN68_3+N$Y'WL6?
+M(]QZ%5I]BYM]W-#=0QVD`76R^;*R5$.S&FR-]KF[=._NL/I_;W;I/>RO"?D)
+MS0I&TYW)STRGVUT5#'?O;#\Z'"2F:\:X[=!9A"U,K-YZFMUNX<VPO#(>6+D=
+L9%RY'@?+-H+ZW%E:`]M?3<_ZP.GG:OSV0$?`Q5;0%=U_V\U_7_5L5B,5````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-mbr.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-mbr.raw.gz.uu
new file mode 100644
index 0000000..dc6c0cb
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-mbr.raw.gz.uu
@@ -0,0 +1,12 @@
+# $FreeBSD$
+begin 644 img-63x255-512-mbr.raw.gz
+M'XL("%;N+50``VEM9RTV,W@R-34M-3$R+6UB<BYR87<N;W5T`*V4S8Z$(`S'
+M[SY%SWL@!65E+DZRR=[WLC-GQM6G\.&W6'7*X,>80)%@"K_\2PN(W``J`^A7
+MQFW'\*5B&XJ/8J3IQSF@0T"=`!4!&=<2CA:03&_#6/;A-XS!@:&W]-]-<^XP
+M$$%=R:@U2N#^EEUIWW:,.-F>X?;G@-:"]PGP=]9G=F6<UU=WF?/KQH*Q-506
+M["<X\Z["^_?M12'C=*Z`&6>.<+-@KJ`UW%7@2G+V8B57XK1+UIV<"US#WXRK
+M]M3126"WYM@,UN8M%D<6[Y-Y!MV!+@'=Y#,Q<,DO//5=4ADF"G=''Z3A^H"K
+MX_5:X,Q!N!#C'LO+LI+"@]-K4G5MYF3HUYOQYLT-D/CF,L[D?0@NX\M"%4BK
+;TG';,?RHV!A83<!L)QA>/L3B'ZC")G7E!@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-mbr.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-mbr.vhd.gz.uu
new file mode 100644
index 0000000..251e27e
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-mbr.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-63x255-512-mbr.vhd.gz
+M'XL("%;N+50``VEM9RTV,W@R-34M-3$R+6UB<BYV:&0N;W5T`*V72V_<(!#'
+M[_LI1NHM!PN/`9/+KA0U/5>JVIZQ8T<Y]*%N#SGXPY<QX`6_-MO,FD58P(\_
+MS,-""/\#T!7H'G0'6E&[EJ#OH38`KC,4'.LRO,+0_OK9M7]?7HOP&PX>5HIT
+M5CZ=YF,%TBU2`UI:1#]1&X:(*3X\/M^]_'B..`RXN+#4(!&4@\C%.D9,ZHCT
+MZ>'+Q[FZ:JGN,LNOT_=0]<F(*E57%*<4)]TL-YZ*AEZ.,F/)7K*.%)>I4V(V
+M*Y&Y=JC)9M=P>F_6+;B[0["%=Q7G&+6K!>@2:J2V<YMX#HOB7.7U_-O^.7<S
+M?;CA*CHQQKQ/;F\7@ZM@'!P42!*XMUT8*><Y;L55WG5Z.I\G0\,=@E"Q`\?M
+MYZ=W04&J3Y=BY\RWC;&ISY(^%UO"KM3;'<-#D3\3L&EN`QKAHR/'31MNVA`=
+M`JRBFJ*T#+$:SJ]U[]V*04X^;(_)^35/S/9M^MN`2H&U"^#7J*_=E7&[/F.8
+M[6M&AU$UI7.EP>!;%7Y__+82O\9NI(/_RW[&XC5<%)QF^QQW2G"5#[<+)4E.
+MF=^E[01W]/^(DWOJ*"=T:QV;FU7,SF+-;%YJ9R@[*"L0)O1A#ISL"Q=]]TL9
+MF&UW1Q\LMVL)5^?CRP2'5[8+.:Z9,LN*":^<WG&IKF4V1C./C#=&+D'RR/4X
+MY$T$=LPLS@/=J&6]W3%\+O+'`S%\BMB^;1B2*9M"&8!L"AVP8U9H>;\?.BAD
+KNB@0CO&B0#C&BP+A&"\*A&.\*!".\:)`.-:+@G970"$._P"C#]GF70X`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-mbr.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-mbr.vhdf.gz.uu
new file mode 100644
index 0000000..0ba7533
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-mbr.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-63x255-512-mbr.vhdf.gz
+M'XL("%;N+50``VEM9RTV,W@R-34M-3$R+6UB<BYV:&1F+F]U=`"ME3UOPR`0
+MAO?\BI.Z9;```R9+(D5-YTI5V]EQ<)0A[=*A@W]\[XSM@+'S46$(PCIX\AYW
+MG!ES#X`4P,J)<=[0;+.P-8OEHJ7Q_6-`PX#Q")@AT.$JQ.$"E%DJ&O.:7FDD
+M`Z->X;OMYJY#@X1L@PV?=>;A#L.NN,\;6IS_7-RM'P,J!649`=][?>*JC,?U
+M%39Q?$V;,*H`J4!I,.)>A9^[CY%"A^.I''8X<0O7"W89-(7;>+@<C;6WTF5B
+MM\O/.W_NX=;NU^/D-75X$LQ.&6:=56F3Q6`+]_EQ!FZ!Y\!,9Q,A<(@O7/2M
+M8ADB</>*/HC=+0E7A.NYAQ,WW(40MQ\JRT0(;YS>.E97)0X&']^,.V\N0<*;
+MZW`B;2%8M94%,Q!7Q>.\H7G-PN:`L@,F.T'3?=MT#KH&;4$KFA<2]`H*XP-%
+MF$E-]?UEJY_3KQ]APG%7#"8[[1<YW19=@"CI3_2!YIZ^I]UQ>3H?>UQ?JOH_
+MEIH.72%$1NZ:T-V7[=OS6%T>'Y()3H^33K_LH>/!Z6U\G!R<M;8M@?S2@Y?`
+<,%FJ"*?8:-=_8^MP.G&JX'=W\0?-HVE+$`D`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-mbr.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-mbr.vmdk.gz.uu
new file mode 100644
index 0000000..fe22486
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-mbr.vmdk.gz.uu
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 img-63x255-512-mbr.vmdk.gz
+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
+=?>/IN]/\SP1XB8!F';R$7TR2??%_%;F-<V]@````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-pc98.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-pc98.qcow.gz.uu
new file mode 100644
index 0000000..75e7cd5
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-pc98.qcow.gz.uu
@@ -0,0 +1,126 @@
+# $FreeBSD$
+begin 644 img-63x255-512-pc98.qcow.gz
+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
+IYENS_/CM=`?_UB]\^_KNX3\_!X<V^-N>X/`=E_7ZC_\'#.+&':.H````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-pc98.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-pc98.qcow2.gz.uu
new file mode 100644
index 0000000..2d392cd
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-pc98.qcow2.gz.uu
@@ -0,0 +1,22 @@
+# $FreeBSD$
+begin 644 img-63x255-512-pc98.qcow2.gz
+M'XL("%?N+50``VEM9RTV,W@R-34M-3$R+7!C.3@N<6-O=S(N;W5T`*V8VW+3
+M,!!`W_,5X@X%@K4K^<(E*84RPQL\`,^)FWQ%AF\GBA1+7N]:;5#B\32C[IF5
+M]F@CIZK\2RFKE:F5Z=1^JXZ?PP4J^3"^U.'GM^_+]'58>)BNA"AFH-D-N!'K
+M;\2!A*OT=$#SN"0[9'!PCIJ"<C@C9C<WP."N%J>E.Q6C)1%X"=#CQ&)<E!_X
+M_&B$N3`_*)T?\NMGSW%TH)[/#WU^-*J1<&T6!TQ4)^$V61PR45L)UV=QAHFZ
+MDW#"SDUPEHG:"SB=4>6(JYDH+>$@BVN8*)1P)HMKF2C).YWWKF.B).]TWKL-
+M$R5YI_/>;9DHR3N=]ZYGHB3O=-Z[.R9*\@X$[U3$[9@HR3L@WCT*N,<1MV>B
+M).^`>/<DX)X..,U%2=X!\>Y9P#V/.*;?@>0=$.]>!-S+B&/Z'4C>`?'N5<!=
+M11S3[T#R#HAWKP/N3<0Q_0XD[X!X]W;BG6;Z'4C>(?'N76!5$<?T.Y2\0^*=
+M#CB(.*;?H>0=$N\PX$S$,?T.)>^0>&<#KHXXIM^AY!T2[YJ`:R..Z7<H>8?$
+MNR[@WD<<T^]0\@Z)=Q\"[F/$,?T.)>^0>/<IX%81Q_0[E+PSQ+MUP%U''-/O
+MC.2=(=Y]#KB;B&/ZG9&\,\2[+P'W=<`!%S5X5U7\%7"WDST+9<^?)IZ/-7.7
+M!V:`[4.`<QEZ7%=TPM9/V&FP8>[RP.%F.7X/P),P#P!:JS93X"\_8>N%Z8SJ
+M#3>OL$^T/.%UNGZVM##6E:3H^@'[A/8?&3:[PAFV_@>'QNU;6ZL6[IOAG]O?
+M4Z6/N&(E\3CY!X<P<$YX:+(3W#K!N3/+/OG/5#;5Z]C@T[\3W&H9F_T1-_N#
+M@WN*VG$#XF1M65G:H5V=K[3.[O#NGK'.W]_D\#W45\7\F'8%H^G.Y*>FTW7G
+M@N'YG=3#X2`S737&N7-!6L]1"3.KMYIFUQ<NAJ8[XYX[UT'&.]?CH&PCZ$Z=
+BY6B@Z^*3NSQP^+$<OSW0!&"Q%32U^W9;_`,76K<))14`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-pc98.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-pc98.raw.gz.uu
new file mode 100644
index 0000000..029e51d
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-pc98.raw.gz.uu
@@ -0,0 +1,12 @@
+# $FreeBSD$
+begin 644 img-63x255-512-pc98.raw.gz
+M'XL("%?N+50``VEM9RTV,W@R-34M-3$R+7!C.3@N<F%W+F]U=`"ME$V/@R`0
+MAN_^BO>\!P,C5+VT29/>][*[9VOT5_CCER\M(WZT":"(&7CR#C.,$+X!BB"Z
+MC7'?,-U+WJ?BJW`T.7X&U!I="OPQ0(<CJZ]5Z!7,;/6@&MU,)H:I#.T6OC-.
+M&F,*"KMV#0NN7'#!797Y_$@<"OE<83UD5M@XA;J&TM`7-/2NPK_'[TJAQV4+
+MB<?1&6X6'))G`W>+<)4QCM'*.-G02U1#^(GG$>[JWQFGCM29DQ##EF'769TW
+M61K3^;XXSI`#9`71!!MQX!)?O/2UJ0QB[A[H0^IN9W$U7R\C')VX"XY[6EP4
+M3Q;"D].[INKZS,&0ZYOQYLVU$'YS/8[R%H+651:3@;:*)^.^8?HN>?=`%8#9
+/3M!6/B&*?U("+YGG!@``
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-pc98.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-pc98.vhd.gz.uu
new file mode 100644
index 0000000..dd48100
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-pc98.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-63x255-512-pc98.vhd.gz
+M'XL("%CN+50``VEM9RTV,W@R-34M-3$R+7!C.3@N=FAD+F]U=`"METU/["`4
+MAO?S*T[BSD5#3X$R&R<QZMK$Z%TSO:UQ<=4X+ESTQ\LI,(72=APOTPZA`1[>
+M\P$$QNP/0%8@.Y`M2$'UFH/<0JT`3*-[<2A+]PE]\_;:-I\O7X7[]1L+*UDX
+M*AY.X[$";B:I`35-(O]2'7J/*2YNGR]?_CU['#J<GYA+X`C"0'@RCV)'=42Z
+MNWZXF:JK4G7C*#M/UT'5!3VJ4%U1[$(<-Z-,?WHE='R0Z=_H(VH(<9$ZP2:C
+M`IES3@V,G</)M5'GX"XW+A8V54QBU*9D($NHD>HF;;P?DM>DRM?A77\<VHD^
+M7$@5&01CVL:7S467*N@[.P6<!*Z9"P/E,,7-I,I_>4_&X[BK&"<PX1MP,#_V
+MWHB"4)\LV8K/EX.QJ$^3/K.VF)XIEQOZZR)^CL!]=QY0"-`I\-$;W)"^+8>&
+MS_G=+=DD8T:#=W%\FX7L^W5\V\S^0[TJY'R%2F56J`:%HJ8-74A0^%.%?VZ?
+M9E:PTME"8G%X"N<%A_M]C-L%N,HNN)$2)!LT)52M^PCK`>[*_CV.KZFC7:&=
+M:U@T5F1.%JTFX\(X0]E"60%3K@UCX#&^,.K;IC(P,G=%'Z3F:L+5<?\RP.$)
+M<R'&[=W)ZWM&(3SAO:M479,Y&/OIROCARB5(O'(M#O-N!'K864P&TBZ>E,L-
+M_7T1/Q:([C#*=KJA.SVR*>0.F$TA=^='1H6Z64VV<[-0.H69K@J$RWA5(%S&
+BJP+A,EX5")?QJD"XC%<%PF6]*DAS"61L\PVA;@PG7PX`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-pc98.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-pc98.vhdf.gz.uu
new file mode 100644
index 0000000..5600c7a
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-pc98.vhdf.gz.uu
@@ -0,0 +1,15 @@
+# $FreeBSD$
+begin 644 img-63x255-512-pc98.vhdf.gz
+M'XL("%CN+50``VEM9RTV,W@R-34M-3$R+7!C.3@N=FAD9BYO=70`K94[;X,P
+M$,?W?(J3NF5`?F.61(J:SI6JMC.E)LJ0=NG0@0]?&QOBPY!'94R(T>$?_WOX
+M(,0?`((!J6>NRX9N5^#1K=:KGD;;^X!20IT"7RVPQS&GKQ+0"+"SR0F\[6<T
+M,71%.+;A?\!1:TQ!8=6B8<05(RZX*S+'CY&+0NY76)K,"G6O4)8@)$@%FMVJ
+M\'W_-E'H<=E2XG'L&FX0'(IG!K>-<-P:V^C)N-B@H<!-N(GG$6[C?P-.7%)G
+M(T',G&'169FW6+0=>%V<9Z`&*`>B@XUAX)A?..NK4AD,N7M!'Z3NU@Y7XN=I
+MA&-7W`6,^W"X*)\HA5>BMTG5-9F30:<[X\:=ZR!XYWH<R]L(JKZSV`IT73RY
+M+ANZYP(/#Q0!F"V".GS=%`?5@C*@I)N7`E0%I8Z!#%=2UWQ_F>;G^!MGV.&H
+M;P:SIUO/N-LMJ@16NY>H3S>/]#WL#^OCZ3#@AE8UO%@H%W1I(2)Q5V-WGW8O
+MCU-U/`V21M&C3F?<]JSC*'K;&"=&9XWI6R`]G^@&&69;E<-),EGUW]QZG,I<
+.*O;#N_H#>\I9F1()````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-pc98.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-pc98.vmdk.gz.uu
new file mode 100644
index 0000000..b2d29cc
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-pc98.vmdk.gz.uu
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 img-63x255-512-pc98.vmdk.gz
+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
+29AW,_$>3)%_\'XGNMJQQ8```
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-vtoc8.qcow.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.qcow.gz.uu
new file mode 100644
index 0000000..791a1e0
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.qcow.gz.uu
@@ -0,0 +1,127 @@
+# $FreeBSD$
+begin 644 img-63x255-512-vtoc8.qcow.gz
+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
+E?I;F#/[./_#KSS_>_^OK8,J#?]DK3'=>.9]_^#\)B7^=OZ8`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-vtoc8.qcow2.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.qcow2.gz.uu
new file mode 100644
index 0000000..0a79ac2
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.qcow2.gz.uu
@@ -0,0 +1,21 @@
+# $FreeBSD$
+begin 644 img-63x255-512-vtoc8.qcow2.gz
+M'XL("+8[(U0``VEM9RTV,W@R-34M-3$R+79T;V,X+G%C;W<R+F]U=`"MF-MN
+MTT`0AN_S%,NI0(&2G=EU;$Z%'B)Q@03B!8AC^P&X0\K#L[$W&7L\XTTBIU:D
+MU/T_S:Z__K6[7'8O8[PU+C.N,$UIPN=X@.E]&!YF]VO]_:;_VBTZF%TJJ=$)
+M:U;%$3=@_2,<:+@0%[XEXGK3H8"#0VH,2N&<.MW4"0%WO6BWKKT8.4O@)<`.
+MIUZ,B^:#;CZ><!?.!W//A_+^^0OGP_GGPWHJQP?/4O-A(Z16&BY/X9R4*C3<
+M)HFS0JK4<-LD#H14I>'J)`Z%5*/@;%(5YX24U7"0Q'DAA1K.)7&9D/(:+NF=
+M6PDIS3N;]BX74IIW-NU=(:0T[VS:NXV0TKRS:>]*(:5Y!XIWAG!;(:5Y!\R[
+M)Q'WE'"5D-*\`^;=LXA[3KA:2&G>`?/N1<1=$4[H.]"\`^;=RXA[=<1Y*:5Y
+M!\R[UQ%W33BA[T#S#IAW;R+N+>&$O@/-.V#>O1MYYX6^`\T[9-Z]CZPEX82^
+M0\T[9-[9B`/""7V'FG?(O,.(<X03^@XU[Y!YYR,N(YS0=ZAYA\R[5<3EA!/Z
+M#C7OD'E71-P'P@E]AYIWR+S[&'&?""?T'6K>(?/N<\1](9S0=ZAYYYAWMQ'W
+ME7!"WSG-.\>\^Q9Q=X03^LYIWCGFW7W$/1!.Z#NG>>>8=X\1MR9<,^O]IZ/[
+M=RN\ZR<F@/GY0/6/8\`5LR[8=PL.&[T"D_G]$93PN+^2H9/V#>,J$;C^6]=W
+MOQ\`?_3F\W,_$'C:O^5@@Q1@WMZ.@[9_?K!_11(W-5^'V\RUW`Y7GHH+]1UN
+M[:O:U#7#_>GAMC-?##M:;GVX\\<+EFL/RT7ZX:9MOM!_"J[WRW;+<;1<8"GZ
+M1XV5IC/B=-415VZI\T[9O7L)-_ED>_[>G=Q\U<:4P1-KFJV.@\DASE8ERUM@
+BN&<)3\'C=_W$[N?-\*L#N@B<;<+P@!9>B_]NV1VQX1,`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-vtoc8.raw.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.raw.gz.uu
new file mode 100644
index 0000000..c949873
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.raw.gz.uu
@@ -0,0 +1,11 @@
+# $FreeBSD$
+begin 644 img-63x255-512-vtoc8.raw.gz
+M'XL("/W%'50``VEM9RTV,W@R-34M-3$R+79T;V,X+G)A=RYO=70`K9)!;L,@
+M$$7W/L5?=V$Q@&V\JI16V56JU`O4-G"`K#E\2'!"C+'C1![0"&GF/\T7PU@(
+M0-9H..KJ<B5')2`E!`>$?VGXEN3"'4_&'/Z^N?@IK^&*`"-?G/>/JL6"*Y-P
+MQ<<(5!,=K0,56`O&L\"`:Z.J?8I;FR_@NKWL!ER_%5?[K*$-C$EP_P^X8>?/
+MH)E=`PH/\89=NMD5L=G:2Q9V"4<1]YGBHEV>J#BB/C,=LM/I.ZX?(,54M6KV
+M*X<SNZX*V:TXW:'W>T*PPS*.KP[QZJHT6EV!E>_J,GFYX'[+Z0G`?@3N-2$U
+-2M6,%6>->Z%+`P4`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhd.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhd.gz.uu
new file mode 100644
index 0000000..523a1ae
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhd.gz.uu
@@ -0,0 +1,18 @@
+# $FreeBSD$
+begin 644 img-63x255-512-vtoc8.vhd.gz
+M'XL("/W%'50``VEM9RTV,W@R-34M-3$R+79T;V,X+G9H9"YO=70`K9;-;MLP
+M#,?O>0H"N_5@R)0LVZ<"Z];;@`%[@<FV7!3#UJ'=H8<\_$A;CB5_K5F9"(X,
+MB3_]*5$,E1H_`%:#[<%ZL`7W2P.VAK("H,'0<'CFX17.[=,OW_YY?,W"YWP:
+M8;F*K5)SMD<-AA8I`1TO8CONPWG"9!\^/]P\_GR8<!APT\+&@D$H"&(6Z^10
+MJ8LZ)MU__/9IJ4XOU<56_*.A[T'WT0P=J\NRVQAGR(KF<[/0CS*GEKPD`S$N
+M45>HA56D=&M3(V>W</;(ZAK<S2F<Q1@J%!@E/178'$KD/H7-M`^K1J'R^O+;
+M/;_XA3[<"15[T9>OQMI]=S&$"DZ3@P**Y>;071@H/Y:X5:B\<_=L:F?238I?
+MQAFT.ZK8=]?.NX?3IE$CU:H\.HQL\%>M<*@.K(YP.^XZ=I=N*P4()Y5BOK8:
+M`33UNLW]NW_VGBXNZB^)/K<3+/]]'*Y*[/YQV2I0-2>QW>-P]6Q5O__N.B?E
+M[HAKWHJCG*$ZZ#QXO\!]CW"M\&$T*W?]$/]J2+]7N]M,[NIY\GBO*+/OX**\
+M?+O$M<E5BQO";+^A#C;5=1=<TX+1J=6ALW=;."\:*DW_5ESGH*$XR:$_R,KM
+MH8AK0P5#7A%+5"BM4'>5YV'Z*U=NX[D_</Z:I=\1:()",9<)**O0!J"80DM%
+MI*C"LJM1])2KH%"H;F:<8-W,.,&ZF7&"=3/C!.MFQ@G6S8P3K9L)2+%W^@L6
+'\>:S;`T`````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhdf.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhdf.gz.uu
new file mode 100644
index 0000000..d8c4d3d
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vhdf.gz.uu
@@ -0,0 +1,14 @@
+# $FreeBSD$
+begin 644 img-63x255-512-vtoc8.vhdf.gz
+M'XL("/[%'50``VEM9RTV,W@R-34M-3$R+79T;V,X+G9H9&8N;W5T`*V4O6[#
+M(!2%]SS%D;IEB,R/L3U%ZD^V2I7Z`K4-1!G:2E6'#G[X8K!C(-A-(V.$B.!\
+MG$LN-\M<`[A`02'ROG.*G(%S,`HP,Y,P6Z*.[O"EU/WK(V7/.]NZC8,1LWBY
+M?U#-+G2[J'6;[0`L`QU9!I;(*F0T"72X:E)5?^*6_#E<O5:X#M=<BQ-FE)`*
+M2D6X-P_7KOQGD(MP%8B;L!O")6.X;-JL=3\R/8<C$VX?XZ9P::2BF/0)=TBZ
+MDV=<TX*S4+48[$,*IU9-%:*OQ<D:C<D3`MW.X^BBB?^F2B%+"\S-KCHQSB]T
+M+[OP<\!F`*[ED)1#Y1,,0D,H6_P8"@Y1H2A](`WR!EW[^:':[]./=X,6UU<^
+MD[W)WNNIJ:7FD`*T[@\1LI][_NZ>CMO3^W'$T2&J\6!3H\^E.7X291CNP13F
+MV!V++\E7N3=H?#(=/AK_]O8^CI^#-05(-];FV(,?P4(J^RPNSR+5S6_#XL3*
+.J6)R;_,+FZ-::BX'````
+`
+end
diff --git a/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vmdk.gz.uu b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vmdk.gz.uu
new file mode 100644
index 0000000..d9340d1
--- /dev/null
+++ b/usr.bin/mkimg/tests/img-63x255-512-vtoc8.vmdk.gz.uu
@@ -0,0 +1,83 @@
+# $FreeBSD$
+begin 644 img-63x255-512-vtoc8.vmdk.gz
+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
+G_X]*OP"N_H#+_^^_X+]G;/];`34"FIU0_7NC++_Z'WN7IO#-7P``
+`
+end
diff --git a/usr.bin/mkimg/tests/mkimg.sh b/usr.bin/mkimg/tests/mkimg.sh
new file mode 100755
index 0000000..8dfb74c
--- /dev/null
+++ b/usr.bin/mkimg/tests/mkimg.sh
@@ -0,0 +1,164 @@
+# $FreeBSD$
+
+mkimg_blksz_list="512 4096"
+mkimg_format_list="qcow qcow2 raw vhd vhdf vmdk"
+mkimg_geom_list="1x1 63x255"
+mkimg_scheme_list="apm bsd ebr gpt mbr pc98 vtoc8"
+
+bootcode()
+{
+ case $1 in
+ bsd|pc98) echo 8192 ;;
+ gpt|mbr) echo 512 ;;
+ *) echo 0 ;;
+ esac
+ return 0
+}
+
+mkcontents()
+{
+ local byte count name
+
+ byte=$1
+ count=$2
+
+ name=_tmp-$byte-$count.bin
+ jot -b $byte $(($count/2)) > $name
+ echo $name
+ return 0
+}
+
+makeimage()
+{
+ local blksz bootarg bootsz format geom nhds nsecs partarg pfx scheme
+
+ format=$1
+ scheme=$2
+ blksz=$3
+ geom=$4
+ pfx=$5
+ shift 5
+
+ nsecs=${geom%x*}
+ nhds=${geom#*x}
+
+ bootsz=`bootcode $scheme`
+ if test $bootsz -gt 0; then
+ bootarg="-b `mkcontents B $bootsz`"
+ else
+ bootarg=""
+ fi
+
+ partarg=""
+ for P in $*; do
+ partarg="$partarg -p $P"
+ done
+ if test -z "$partarg"; then
+ local swap ufs
+ swap="-p freebsd-swap::128K"
+ ufs="-p freebsd-ufs:=`mkcontents P 4194304`"
+ partarg="$ufs $swap"
+ fi
+
+ imagename=$pfx-$geom-$blksz-$scheme.$format
+
+ mkimg -y -f $format -o $imagename -s $scheme -P $blksz -H $nhds -T $nsecs \
+ $bootarg $partarg
+ echo $imagename
+ return 0
+}
+
+mkimg_rebase()
+{
+ local baseline image result tmpfile update
+
+ image=$1
+ result=$2
+
+ baseline=$image.gz.uu
+ update=yes
+
+ if test -f $baseline; then
+ tmpfile=_tmp-baseline
+ uudecode -p $baseline | gunzip -c > $tmpfile
+ if cmp -s $tmpfile $result; then
+ update=no
+ fi
+ fi
+
+ if test $update = yes; then
+ # Prevent keyword expansion when writing the keyword.
+ (echo -n '# $'; echo -n FreeBSD; echo '$') > $baseline
+ gzip -c $result | uuencode $image.gz >> $baseline
+ fi
+
+ rm $image $result _tmp-*
+ return 0
+}
+
+mkimg_test()
+{
+ local blksz format geom scheme
+
+ geom=$1
+ blksz=$2
+ scheme=$3
+ format=$4
+
+ case $scheme in
+ ebr|mbr|pc98)
+ bsd=`makeimage raw bsd $blksz $geom _tmp`
+ partinfo="freebsd:=$bsd"
+ ;;
+ *)
+ partinfo=""
+ ;;
+ esac
+ image=`makeimage $format $scheme $blksz $geom img $partinfo`
+ result=$image.out
+ hexdump -C $image > $result
+ if test "x$mkimg_update_baseline" = "xyes"; then
+ mkimg_rebase $image $result
+ else
+ baseline=`atf_get_srcdir`/$image
+ atf_check -s exit:0 cmp -s $baseline $result
+ fi
+ return 0
+}
+
+atf_test_case rebase
+rebase_body()
+{
+ local nm
+
+ mkimg_update_baseline=yes
+ for nm in $mkimg_tests; do
+ ${nm}_body
+ done
+ return 0
+}
+
+atf_init_test_cases()
+{
+ local B F G S nm
+
+ for G in $mkimg_geom_list; do
+ for B in $mkimg_blksz_list; do
+ for S in $mkimg_scheme_list; do
+ for F in $mkimg_format_list; do
+ nm="${S}_${G}_${B}_${F}"
+ atf_test_case $nm
+ eval "${nm}_body() { mkimg_test $G $B $S $F; }"
+ mkimg_tests="${mkimg_tests} ${nm}"
+ atf_add_test_case $nm
+ done
+ done
+ done
+ done
+
+ # XXX hack to make updating the baseline easier
+ if test "${__RUNNING_INSIDE_ATF_RUN}" != "internal-yes-value"; then
+ atf_add_test_case rebase
+ fi
+}
+
diff --git a/usr.bin/mkimg/vhd.c b/usr.bin/mkimg/vhd.c
index af3d95e..6b9d6a0 100644
--- a/usr.bin/mkimg/vhd.c
+++ b/usr.bin/mkimg/vhd.c
@@ -64,7 +64,7 @@ __FBSDID("$FreeBSD$");
struct vhd_footer {
uint64_t cookie;
-#define VHD_FOOTER_COOKIE 0x636f6e6563746978
+#define VHD_FOOTER_COOKIE 0x636f6e6563746978ULL
uint32_t features;
#define VHD_FEATURES_TEMPORARY 0x01
#define VHD_FEATURES_RESERVED 0x02
@@ -236,7 +236,7 @@ vhd_resize(lba_t imgsz)
struct vhd_dyn_header {
uint64_t cookie;
-#define VHD_HEADER_COOKIE 0x6378737061727365
+#define VHD_HEADER_COOKIE 0x6378737061727365ULL
uint64_t data_offset;
uint64_t table_offset;
uint32_t version;
diff --git a/usr.bin/mkimg/vmdk.c b/usr.bin/mkimg/vmdk.c
index 176b97b..a07d0b8 100644
--- a/usr.bin/mkimg/vmdk.c
+++ b/usr.bin/mkimg/vmdk.c
@@ -110,7 +110,7 @@ static int
vmdk_write(int fd)
{
struct vmdk_header hdr;
- uint32_t *gt, *gd;
+ uint32_t *gt, *gd, *rgd;
char *buf, *desc;
off_t cur, lim;
uint64_t imagesz;
@@ -143,25 +143,37 @@ vmdk_write(int fd)
le32enc(&hdr.ngtes, VMDK_NGTES);
sec = desc_len / VMDK_SECTOR_SIZE + 1;
- le64enc(&hdr.rgd_offset, sec);
- le64enc(&hdr.gd_offset, sec);
ngrains = imagesz / grainsz;
ngts = (ngrains + VMDK_NGTES - 1) / VMDK_NGTES;
gdsz = (ngts * sizeof(uint32_t) + VMDK_SECTOR_SIZE - 1) &
~(VMDK_SECTOR_SIZE - 1);
+
gd = calloc(gdsz, 1);
if (gd == NULL) {
free(desc);
return (ENOMEM);
}
-
+ le64enc(&hdr.gd_offset, sec);
sec += gdsz / VMDK_SECTOR_SIZE;
for (n = 0; n < ngts; n++) {
le32enc(gd + n, sec);
sec += VMDK_NGTES * sizeof(uint32_t) / VMDK_SECTOR_SIZE;
}
+ rgd = calloc(gdsz, 1);
+ if (rgd == NULL) {
+ free(gd);
+ free(desc);
+ return (ENOMEM);
+ }
+ le64enc(&hdr.rgd_offset, sec);
+ sec += gdsz / VMDK_SECTOR_SIZE;
+ for (n = 0; n < ngts; n++) {
+ le32enc(rgd + n, sec);
+ sec += VMDK_NGTES * sizeof(uint32_t) / VMDK_SECTOR_SIZE;
+ }
+
sec = (sec + grainsz - 1) & ~(grainsz - 1);
if (verbose)
@@ -174,6 +186,7 @@ vmdk_write(int fd)
gtsz = ngts * VMDK_NGTES * sizeof(uint32_t);
gt = calloc(gtsz, 1);
if (gt == NULL) {
+ free(rgd);
free(gd);
free(desc);
return (ENOMEM);
@@ -198,13 +211,18 @@ vmdk_write(int fd)
error = errno;
if (!error && sparse_write(fd, gt, gtsz) < 0)
error = errno;
+ if (!error && sparse_write(fd, rgd, gdsz) < 0)
+ error = errno;
+ if (!error && sparse_write(fd, gt, gtsz) < 0)
+ error = errno;
free(gt);
+ free(rgd);
free(gd);
free(desc);
if (error)
return (error);
- cur = VMDK_SECTOR_SIZE + desc_len + gdsz + gtsz;
+ cur = VMDK_SECTOR_SIZE + desc_len + (gdsz + gtsz) * 2;
lim = sec * VMDK_SECTOR_SIZE;
if (cur < lim) {
buf = calloc(VMDK_SECTOR_SIZE, 1);
diff --git a/usr.bin/mkimg/vtoc8.c b/usr.bin/mkimg/vtoc8.c
index 8eb7d24..2f5cf0f 100644
--- a/usr.bin/mkimg/vtoc8.c
+++ b/usr.bin/mkimg/vtoc8.c
@@ -53,13 +53,12 @@ static struct mkimg_alias vtoc8_aliases[] = {
{ ALIAS_NONE, 0 }
};
-static u_int
-vtoc8_metadata(u_int where)
+static lba_t
+vtoc8_metadata(u_int where, lba_t blk)
{
- u_int secs;
- secs = (where == SCHEME_META_IMG_START) ? nsecs * nheads : 0;
- return (secs);
+ blk += (where == SCHEME_META_IMG_START) ? 1 : 0;
+ return (round_cylinder(blk));
}
static int
@@ -87,10 +86,6 @@ vtoc8_write(lba_t imgsz, void *bootcode __unused)
be16enc(&vtoc8.nsecs, nsecs);
be16enc(&vtoc8.magic, VTOC_MAGIC);
- error = image_set_size(imgsz);
- if (error)
- return (error);
-
be32enc(&vtoc8.map[VTOC_RAW_PART].nblks, imgsz);
STAILQ_FOREACH(part, &partlist, link) {
n = part->index + ((part->index >= VTOC_RAW_PART) ? 1 : 0);
diff --git a/usr.bin/netstat/inet6.c b/usr.bin/netstat/inet6.c
index 78383ac..96fdcaf 100644
--- a/usr.bin/netstat/inet6.c
+++ b/usr.bin/netstat/inet6.c
@@ -345,8 +345,8 @@ static const char *srcrule_str[] = {
"matching label",
"public/temporary address",
"alive interface",
- "preferred interface",
- "rule #10",
+ "better virtual status",
+ "preferred source",
"rule #11",
"rule #12",
"rule #13",
@@ -540,13 +540,13 @@ ip6_ifstats(char *ifname)
}
strcpy(ifr.ifr_name, ifname);
- printf("ip6 on %s:\n", ifr.ifr_name);
-
if (ioctl(s, SIOCGIFSTAT_IN6, (char *)&ifr) < 0) {
- perror("Warning: ioctl(SIOCGIFSTAT_IN6)");
+ if (errno != EPFNOSUPPORT)
+ perror("Warning: ioctl(SIOCGIFSTAT_IN6)");
goto end;
}
+ printf("ip6 on %s:\n", ifr.ifr_name);
p(ifs6_in_receive, "\t%ju total input datagram%s\n");
p(ifs6_in_hdrerr, "\t%ju datagram%s with invalid header received\n");
p(ifs6_in_toobig, "\t%ju datagram%s exceeded MTU received\n");
@@ -945,13 +945,13 @@ icmp6_ifstats(char *ifname)
}
strcpy(ifr.ifr_name, ifname);
- printf("icmp6 on %s:\n", ifr.ifr_name);
-
if (ioctl(s, SIOCGIFSTAT_ICMP6, (char *)&ifr) < 0) {
- perror("Warning: ioctl(SIOCGIFSTAT_ICMP6)");
+ if (errno != EPFNOSUPPORT)
+ perror("Warning: ioctl(SIOCGIFSTAT_ICMP6)");
goto end;
}
+ printf("icmp6 on %s:\n", ifr.ifr_name);
p(ifs6_in_msg, "\t%ju total input message%s\n");
p(ifs6_in_error, "\t%ju total input error message%s\n");
p(ifs6_in_dstunreach, "\t%ju input destination unreachable error%s\n");
diff --git a/usr.bin/opiekey/Makefile b/usr.bin/opiekey/Makefile
index e017f4d..0ee8570 100644
--- a/usr.bin/opiekey/Makefile
+++ b/usr.bin/opiekey/Makefile
@@ -15,9 +15,9 @@ LDADD= -lopie -lmd
LINKS= ${BINDIR}/opiekey ${BINDIR}/otp-md4
LINKS+= ${BINDIR}/opiekey ${BINDIR}/otp-md5
-LINKS+= ${BINDIR}/opiekey ${BINDIR}/otp-sha
+LINKS+= ${BINDIR}/opiekey ${BINDIR}/otp-sha1
-MLINKS= opiekey.1 otp-md4.1 opiekey.1 otp-md5.1 opiekey.1 otp-sha.1
+MLINKS= opiekey.1 otp-md4.1 opiekey.1 otp-md5.1 opiekey.1 otp-sha1.1
.PATH: ${OPIE_DIST}
diff --git a/usr.bin/rctl/rctl.8 b/usr.bin/rctl/rctl.8
index f7afee9..3f72b91 100644
--- a/usr.bin/rctl/rctl.8
+++ b/usr.bin/rctl/rctl.8
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd February 16, 2014
+.Dd September 11, 2014
.Dt RCTL 8
.Os
.Sh NAME
@@ -209,7 +209,7 @@ resource would be
.Bl -column -offset 3n "pseudoterminals"
.It Em action
.It Sy deny Ta deny the allocation; not supported for
-.Sy cpu
+.Sy cputime
and
.Sy wallclock
.It Sy log Ta "log a warning to the console"
diff --git a/usr.bin/sed/defs.h b/usr.bin/sed/defs.h
index d4f434e..fb33676 100644
--- a/usr.bin/sed/defs.h
+++ b/usr.bin/sed/defs.h
@@ -143,6 +143,7 @@ typedef struct {
char *space; /* Current space pointer. */
size_t len; /* Current length. */
int deleted; /* If deleted. */
+ int append_newline; /* If originally terminated by \n. */
char *back; /* Backing memory. */
size_t blen; /* Backing memory length. */
} SPACE;
diff --git a/usr.bin/sed/main.c b/usr.bin/sed/main.c
index 6cdfcda..76e186f 100644
--- a/usr.bin/sed/main.c
+++ b/usr.bin/sed/main.c
@@ -439,8 +439,14 @@ mf_fgets(SPACE *sp, enum e_spflag spflag)
len = getline(&p, &plen, infile);
if (len == -1)
err(1, "%s", fname);
- if (len != 0 && p[len - 1] == '\n')
+ if (len != 0 && p[len - 1] == '\n') {
+ sp->append_newline = 1;
len--;
+ } else if (!lastline()) {
+ sp->append_newline = 1;
+ } else {
+ sp->append_newline = 0;
+ }
cspace(sp, p, len, spflag);
linenum++;
@@ -481,15 +487,49 @@ add_file(char *s)
fl_nextp = &fp->next;
}
+static int
+next_files_have_lines()
+{
+ struct s_flist *file;
+ FILE *file_fd;
+ int ch;
+
+ file = files;
+ while ((file = file->next) != NULL) {
+ if ((file_fd = fopen(file->fname, "r")) == NULL)
+ continue;
+
+ if ((ch = getc(file_fd)) != EOF) {
+ /*
+ * This next file has content, therefore current
+ * file doesn't contains the last line.
+ */
+ ungetc(ch, file_fd);
+ fclose(file_fd);
+ return (1);
+ }
+
+ fclose(file_fd);
+ }
+
+ return (0);
+}
+
int
lastline(void)
{
int ch;
- if (files->next != NULL && (inplace == NULL || ispan))
- return (0);
- if ((ch = getc(infile)) == EOF)
- return (1);
+ if (feof(infile)) {
+ return !(
+ (inplace == NULL || ispan) &&
+ next_files_have_lines());
+ }
+ if ((ch = getc(infile)) == EOF) {
+ return !(
+ (inplace == NULL || ispan) &&
+ next_files_have_lines());
+ }
ungetc(ch, infile);
return (0);
}
diff --git a/usr.bin/sed/process.c b/usr.bin/sed/process.c
index 5e2618a..9cd2c2e 100644
--- a/usr.bin/sed/process.c
+++ b/usr.bin/sed/process.c
@@ -63,6 +63,7 @@ static SPACE HS, PS, SS, YS;
#define pd PS.deleted
#define ps PS.space
#define psl PS.len
+#define psanl PS.append_newline
#define hs HS.space
#define hsl HS.len
@@ -85,7 +86,10 @@ static regex_t *defpreg;
size_t maxnsub;
regmatch_t *match;
-#define OUT() do {fwrite(ps, 1, psl, outfile); fputc('\n', outfile);} while (0)
+#define OUT() do { \
+ fwrite(ps, 1, psl, outfile); \
+ if (psanl) fputc('\n', outfile); \
+} while (0)
void
process(void)
@@ -94,6 +98,7 @@ process(void)
SPACE tspace;
size_t oldpsl = 0;
char *p;
+ int oldpsanl;
p = NULL;
@@ -190,11 +195,15 @@ redirect:
break;
if ((p = memchr(ps, '\n', psl)) != NULL) {
oldpsl = psl;
+ oldpsanl = psanl;
psl = p - ps;
+ psanl = 1;
}
OUT();
- if (p != NULL)
+ if (p != NULL) {
psl = oldpsl;
+ psanl = oldpsanl;
+ }
break;
case 'q':
if (!nflag && !pd)
@@ -244,6 +253,7 @@ redirect:
cspace(&HS, "", 0, REPLACE);
tspace = PS;
PS = HS;
+ psanl = tspace.append_newline;
HS = tspace;
break;
case 'y':
@@ -288,24 +298,32 @@ applies(struct s_command *cp)
r = 1;
else if (cp->a2)
if (cp->startline > 0) {
- if (MATCH(cp->a2)) {
- cp->startline = 0;
- lastaddr = 1;
- r = 1;
- } else if (linenum - cp->startline <= cp->a2->u.l)
- r = 1;
- else if ((cp->a2->type == AT_LINE &&
- linenum > cp->a2->u.l) ||
- (cp->a2->type == AT_RELLINE &&
- linenum - cp->startline > cp->a2->u.l)) {
- /*
- * We missed the 2nd address due to a branch,
- * so just close the range and return false.
- */
- cp->startline = 0;
- r = 0;
- } else
- r = 1;
+ switch (cp->a2->type) {
+ case AT_RELLINE:
+ if (linenum - cp->startline <= cp->a2->u.l)
+ r = 1;
+ else {
+ cp->startline = 0;
+ r = 0;
+ }
+ break;
+ default:
+ if (MATCH(cp->a2)) {
+ cp->startline = 0;
+ lastaddr = 1;
+ r = 1;
+ } else if (cp->a2->type == AT_LINE &&
+ linenum > cp->a2->u.l) {
+ /*
+ * We missed the 2nd address due to a
+ * branch, so just close the range and
+ * return false.
+ */
+ cp->startline = 0;
+ r = 0;
+ } else
+ r = 1;
+ }
} else if (MATCH(cp->a1)) {
/*
* If the second address is a number less than or
@@ -444,6 +462,7 @@ substitute(struct s_command *cp)
*/
tspace = PS;
PS = SS;
+ psanl = tspace.append_newline;
SS = tspace;
SS.space = SS.back;
@@ -513,6 +532,7 @@ do_tr(struct s_tr *y)
/* Swap the translation space and the pattern space. */
tmp = PS;
PS = YS;
+ psanl = tmp.append_newline;
YS = tmp;
YS.space = YS.back;
}
diff --git a/usr.bin/sed/tests/regress.y.out b/usr.bin/sed/tests/regress.y.out
index 829a681..22f4f05 100644
--- a/usr.bin/sed/tests/regress.y.out
+++ b/usr.bin/sed/tests/regress.y.out
@@ -1 +1 @@
-fOO
+fOO \ No newline at end of file
diff --git a/usr.bin/showmount/showmount.8 b/usr.bin/showmount/showmount.8
index f49df84..106b1a1 100644
--- a/usr.bin/showmount/showmount.8
+++ b/usr.bin/showmount/showmount.8
@@ -31,7 +31,7 @@
.\" @(#)showmount.8 8.3 (Berkeley) 3/29/95
.\" $FreeBSD$
.\"
-.Dd March 29, 1995
+.Dd August 16, 2014
.Dt SHOWMOUNT 8
.Os
.Sh NAME
@@ -41,6 +41,7 @@
.Nm
.Op Fl a | d
.Op Fl e
+.Op Fl 1
.Op Fl 3
.Op Ar host
.Sh DESCRIPTION
@@ -76,10 +77,10 @@ List directory paths of mount points instead of hosts.
Show the
.Ar host Ns 's
exports list.
+.It Fl 1
+Use mount protocol Version 1, compatible with legacy servers.
.It Fl 3
-Use mount protocol Version 3, compatible with
-.Tn NFS
-Version 3.
+Ignored for backwards compatibility.
.El
.Sh SEE ALSO
.Xr mount 8 ,
diff --git a/usr.bin/showmount/showmount.c b/usr.bin/showmount/showmount.c
index 2635250..d0da570 100644
--- a/usr.bin/showmount/showmount.c
+++ b/usr.bin/showmount/showmount.c
@@ -110,11 +110,11 @@ main(int argc, char **argv)
{
register struct exportslist *exp;
register struct grouplist *grp;
- register int rpcs = 0, mntvers = 1;
+ register int rpcs = 0, mntvers = 3;
const char *host;
int ch, estat;
- while ((ch = getopt(argc, argv, "ade3")) != -1)
+ while ((ch = getopt(argc, argv, "ade13")) != -1)
switch (ch) {
case 'a':
if (type == 0) {
@@ -133,6 +133,9 @@ main(int argc, char **argv)
case 'e':
rpcs |= DOEXPORTS;
break;
+ case '1':
+ mntvers = 1;
+ break;
case '3':
mntvers = 3;
break;
diff --git a/usr.bin/sort/Makefile b/usr.bin/sort/Makefile
index c6eef85..532e930 100644
--- a/usr.bin/sort/Makefile
+++ b/usr.bin/sort/Makefile
@@ -13,10 +13,12 @@ CLEANFILES+= sort.1
.if ${MK_SORT_THREADS} != "no"
CFLAGS+= -DSORT_THREADS
-LDFLAGS+= -lpthread -lmd
+LDADD= -lpthread -lmd
+DPADD= ${LIBPTHREAD} ${LIBMD}
MAN_SUB+= -e 's|%%THREADS%%||g'
.else
-LDFLAGS+= -lmd
+LDADD= -lmd
+DPADD= ${LIBMD}
MAN_SUB+= -e 's|%%THREADS%%|\.\\"|g'
.endif
diff --git a/usr.bin/sort/sort.1.in b/usr.bin/sort/sort.1.in
index 11330fb..1a836a8 100644
--- a/usr.bin/sort/sort.1.in
+++ b/usr.bin/sort/sort.1.in
@@ -581,7 +581,7 @@ An error occurred.
.Sh SEE ALSO
.Xr comm 1 ,
.Xr join 1 ,
-.Xr uniq 1 .
+.Xr uniq 1
.Sh STANDARDS
The
.Nm
diff --git a/usr.bin/sort/sort.c b/usr.bin/sort/sort.c
index d811a86..372c661 100644
--- a/usr.bin/sort/sort.c
+++ b/usr.bin/sort/sort.c
@@ -897,7 +897,7 @@ fix_obsolete_keys(int *argc, char **argv)
}
}
}
- sprintf(sopt, "-k%d.%d", f1, c1);
+ sprintf(sopt, "-k%d.%d%s", f1, c1, sopts1);
argv[i] = sort_strdup(sopt);
}
}
diff --git a/usr.bin/svn/svn/Makefile b/usr.bin/svn/svn/Makefile
index d6944f1..76d923a 100644
--- a/usr.bin/svn/svn/Makefile
+++ b/usr.bin/svn/svn/Makefile
@@ -6,8 +6,6 @@
PROG= svn${SVNLITE}
-NO_PIE= yes
-
SRCS= add-cmd.c blame-cmd.c cat-cmd.c changelist-cmd.c checkout-cmd.c \
cl-conflicts.c cleanup-cmd.c commit-cmd.c conflict-callbacks.c \
copy-cmd.c delete-cmd.c deprecated.c diff-cmd.c export-cmd.c \
@@ -53,6 +51,7 @@ DPADD= ${LIBSVN_CLIENT} ${LIBSVN_WC} ${LIBSVN_RA} ${LIBSVN_RA_LOCAL} \
${LIBBSDXML} ${LIBAPR} ${LIBSQLITE} ${LIBZ} ${LIBCRYPT} ${LIBMAGIC} \
${LIBCRYPTO} ${LIBSSL} ${LIBPTHREAD}
+CLEANFILES+= svnlite.1
.if(defined(ORGANIZATION) && !empty(ORGANIZATION))
DPSRCS+= freebsd-organization.h
CLEANFILES+= freebsd-organization.h
diff --git a/usr.bin/svn/svn_private_config.h b/usr.bin/svn/svn_private_config.h
index 9e0ac15..3583d6e 100644
--- a/usr.bin/svn/svn_private_config.h
+++ b/usr.bin/svn/svn_private_config.h
@@ -105,7 +105,7 @@
#define PACKAGE_NAME "subversion"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "subversion 1.8.9"
+#define PACKAGE_STRING "subversion 1.8.10"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "subversion"
@@ -114,7 +114,7 @@
#define PACKAGE_URL ""
/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.8.9"
+#define PACKAGE_VERSION "1.8.10"
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
diff --git a/usr.bin/svn/svnadmin/Makefile b/usr.bin/svn/svnadmin/Makefile
index c173d3b..3220cde 100644
--- a/usr.bin/svn/svnadmin/Makefile
+++ b/usr.bin/svn/svnadmin/Makefile
@@ -34,6 +34,4 @@ DPADD= ${LIBSVN_REPOS} ${LIBSVN_FS} ${LIBSVN_FS_FS} ${LIBSVN_FS_UTIL} \
${LIBSVN_DELTA} ${LIBSVN_SUBR} ${LIBAPR_UTIL} \
${LIBBSDXML} ${LIBAPR} ${LIBSQLITE} ${LIBZ} ${LIBCRYPT}
-NO_PIE= yes
-
.include <bsd.prog.mk>
diff --git a/usr.bin/svn/svndumpfilter/Makefile b/usr.bin/svn/svndumpfilter/Makefile
index 6746735..864f376 100644
--- a/usr.bin/svn/svndumpfilter/Makefile
+++ b/usr.bin/svn/svndumpfilter/Makefile
@@ -34,6 +34,4 @@ DPADD= ${LIBSVN_REPOS} ${LIBSVN_FS} ${LIBSVN_FS_FS} ${LIBSVN_FS_UTIL} \
${LIBSVN_DELTA} ${LIBSVN_SUBR} ${LIBAPR_UTIL} \
${LIBBSDXML} ${LIBAPR} ${LIBSQLITE} ${LIBZ} ${LIBCRYPT}
-NO_PIE= yes
-
.include <bsd.prog.mk>
diff --git a/usr.bin/svn/svnlook/Makefile b/usr.bin/svn/svnlook/Makefile
index 209b2f1..3d8b1a0 100644
--- a/usr.bin/svn/svnlook/Makefile
+++ b/usr.bin/svn/svnlook/Makefile
@@ -35,6 +35,4 @@ DPADD= ${LIBSVN_REPOS} ${LIBSVN_FS} ${LIBSVN_FS_FS} ${LIBSVN_FS_UTIL} \
${LIBSVN_DELTA} ${LIBSVN_DIFF} ${LIBSVN_SUBR} ${LIBAPR_UTIL} \
${LIBBSDXML} ${LIBAPR} ${LIBSQLITE} ${LIBZ} ${LIBCRYPT}
-NO_PIE= yes
-
.include <bsd.prog.mk>
diff --git a/usr.bin/svn/svnmucc/Makefile b/usr.bin/svn/svnmucc/Makefile
index 34e706e..23a98e3 100644
--- a/usr.bin/svn/svnmucc/Makefile
+++ b/usr.bin/svn/svnmucc/Makefile
@@ -42,6 +42,4 @@ DPADD= ${LIBSVN_CLIENT} ${LIBSVN_RA} ${LIBSVN_RA_LOCAL} ${LIBSVN_RA_SVN} \
${LIBAPR_UTIL} ${LIBBSDXML} ${LIBAPR} ${LIBSQLITE} ${LIBZ} \
${LIBCRYPT} ${LIBMAGIC} ${LIBCRYPTO} ${LIBSSL} ${LIBPTHREAD}
-NO_PIE= yes
-
.include <bsd.prog.mk>
diff --git a/usr.bin/svn/svnrdump/Makefile b/usr.bin/svn/svnrdump/Makefile
index 8a6a8fd..afeae00 100644
--- a/usr.bin/svn/svnrdump/Makefile
+++ b/usr.bin/svn/svnrdump/Makefile
@@ -45,6 +45,4 @@ DPADD= ${LIBSVN_CLIENT} ${LIBSVN_WC} ${LIBSVN_RA} ${LIBSVN_RA_LOCAL} \
${LIBBSDXML} ${LIBAPR} ${LIBSQLITE} ${LIBZ} ${LIBCRYPT} ${LIBMAGIC} \
${LIBCRYPTO} ${LIBSSL} ${LIBPTHREAD}
-NO_PIE= yes
-
.include <bsd.prog.mk>
diff --git a/usr.bin/svn/svnserve/Makefile b/usr.bin/svn/svnserve/Makefile
index d21883c..f1fa314 100644
--- a/usr.bin/svn/svnserve/Makefile
+++ b/usr.bin/svn/svnserve/Makefile
@@ -41,6 +41,4 @@ DPADD= ${LIBSVN_RA} ${LIBSVN_RA_LOCAL} ${LIBSVN_RA_SVN} ${LIBSVN_RA_SERF} \
${LIBBSDXML} ${LIBAPR} ${LIBSQLITE} ${LIBZ} ${LIBCRYPT} ${LIBMAGIC} \
${LIBCRYPTO} ${LIBSSL} ${LIBPTHREAD}
-NO_PIE= yes
-
.include <bsd.prog.mk>
diff --git a/usr.bin/svn/svnsync/Makefile b/usr.bin/svn/svnsync/Makefile
index db479c4..a8cd380 100644
--- a/usr.bin/svn/svnsync/Makefile
+++ b/usr.bin/svn/svnsync/Makefile
@@ -41,6 +41,4 @@ DPADD= ${LIBSVN_RA} ${LIBSVN_RA_LOCAL} ${LIBSVN_RA_SVN} ${LIBSVN_RA_SERF} \
${LIBBSDXML} ${LIBAPR} ${LIBSQLITE} ${LIBZ} ${LIBCRYPT} ${LIBMAGIC} \
${LIBCRYPTO} ${LIBSSL} ${LIBPTHREAD}
-NO_PIE= yes
-
.include <bsd.prog.mk>
diff --git a/usr.bin/svn/svnversion/Makefile b/usr.bin/svn/svnversion/Makefile
index 54ce13c..ca28ec3 100644
--- a/usr.bin/svn/svnversion/Makefile
+++ b/usr.bin/svn/svnversion/Makefile
@@ -32,6 +32,4 @@ DPADD= ${LIBSVN_WC} ${LIBSVN_DELTA} ${LIBSVN_DIFF} ${LIBSVN_SUBR} \
${LIBSERF} ${LIBAPR_UTIL} ${LIBBSDXML} ${LIBAPR} ${LIBSQLITE} \
${LIBZ} ${LIBCRYPT}
-NO_PIE= yes
-
.include <bsd.prog.mk>
diff --git a/usr.bin/systat/ifstat.c b/usr.bin/systat/ifstat.c
index 4cfe01c..35e5756 100644
--- a/usr.bin/systat/ifstat.c
+++ b/usr.bin/systat/ifstat.c
@@ -68,14 +68,14 @@ struct if_stat {
struct ifmibdata if_mib;
struct timeval tv;
struct timeval tv_lastchanged;
- u_long if_in_curtraffic;
- u_long if_out_curtraffic;
- u_long if_in_traffic_peak;
- u_long if_out_traffic_peak;
- u_long if_in_curpps;
- u_long if_out_curpps;
- u_long if_in_pps_peak;
- u_long if_out_pps_peak;
+ uint64_t if_in_curtraffic;
+ uint64_t if_out_curtraffic;
+ uint64_t if_in_traffic_peak;
+ uint64_t if_out_traffic_peak;
+ uint64_t if_in_curpps;
+ uint64_t if_out_curpps;
+ uint64_t if_in_pps_peak;
+ uint64_t if_out_pps_peak;
u_int if_row; /* Index into ifmib sysctl */
int if_ypos; /* -1 if not being displayed */
u_int display;
@@ -269,8 +269,8 @@ fetchifstat(void)
struct if_stat *ifp = NULL;
struct timeval tv, new_tv, old_tv;
double elapsed = 0.0;
- u_int new_inb, new_outb, old_inb, old_outb = 0;
- u_int new_inp, new_outp, old_inp, old_outp = 0;
+ uint64_t new_inb, new_outb, old_inb, old_outb = 0;
+ uint64_t new_inp, new_outp, old_inp, old_outp = 0;
SLIST_FOREACH(ifp, &curlist, link) {
/*
diff --git a/usr.bin/systat/systat.1 b/usr.bin/systat/systat.1
index 5fc3257..6b7bcb9 100644
--- a/usr.bin/systat/systat.1
+++ b/usr.bin/systat/systat.1
@@ -119,7 +119,7 @@ of the list. For example:
.Pp
.Dl Nm Fl ifstat Fl match Ar bge0,em1 Fl pps
.Pp
-This will display statistics of packets per second for network interfaces
+This will display statistics of packets per second for network interfaces
named as bge0 and em1.
.Pp
.Dl Nm Fl iostat Fl numeric Fl - Ar 2.1
diff --git a/usr.bin/talk/Makefile b/usr.bin/talk/Makefile
index 438542c..eb14d22 100644
--- a/usr.bin/talk/Makefile
+++ b/usr.bin/talk/Makefile
@@ -4,7 +4,7 @@
PROG= talk
SRCS= ctl.c ctl_transact.c display.c get_addrs.c get_iface.c get_names.c \
init_disp.c invite.c io.c look_up.c msgs.c talk.c
-DPADD= ${LIBCURSESW}
-LDADD= -lcursesw
+DPADD= ${LIBNCURSESW}
+LDADD= -lncursesw
.include <bsd.prog.mk>
diff --git a/usr.bin/telnet/Makefile b/usr.bin/telnet/Makefile
index a683f0a..b88f8e1 100644
--- a/usr.bin/telnet/Makefile
+++ b/usr.bin/telnet/Makefile
@@ -13,8 +13,6 @@ SRCS= commands.c main.c network.c ring.c sys_bsd.c \
CFLAGS+= -DKLUDGELINEMODE -DUSE_TERMIO -DENV_HACK -DOPIE \
-I${TELNETDIR} -I${TELNETDIR}/libtelnet/
-NO_PIE= yes
-
.if ${MK_INET6_SUPPORT} != "no"
CFLAGS+= -DINET6
.endif
diff --git a/usr.bin/timeout/Makefile b/usr.bin/timeout/Makefile
index 46ca6e3..c1957ae 100644
--- a/usr.bin/timeout/Makefile
+++ b/usr.bin/timeout/Makefile
@@ -1,5 +1,11 @@
# $FreeBSD$
+.include <src.opts.mk>
+
PROG= timeout
+.if ${MK_TESTS} != "no"
+SUBDIR+= tests
+.endif
+
.include <bsd.prog.mk>
diff --git a/usr.bin/timeout/tests/Makefile b/usr.bin/timeout/tests/Makefile
new file mode 100644
index 0000000..6303718
--- /dev/null
+++ b/usr.bin/timeout/tests/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+TESTSDIR= ${TESTSBASE}/usr.bin/timeout
+
+ATF_TESTS_SH= timeout
+
+.include <bsd.test.mk>
diff --git a/usr.bin/timeout/tests/timeout.sh b/usr.bin/timeout/tests/timeout.sh
new file mode 100644
index 0000000..e04e6f9
--- /dev/null
+++ b/usr.bin/timeout/tests/timeout.sh
@@ -0,0 +1,215 @@
+# $FreeBSD$
+
+atf_test_case nominal
+nominal_head()
+{
+ atf_set "descr" "Basic tests on timeout(1) utility"
+}
+
+nominal_body()
+{
+ atf_check \
+ -o empty \
+ -e empty \
+ -s exit:0 \
+ -x timeout 5 true
+}
+
+atf_test_case time_unit
+time_unit_head()
+{
+ atf_set "descr" "Test parsing the default time unit"
+}
+
+time_unit_body()
+{
+ atf_check \
+ -o empty \
+ -e empty \
+ -s exit:0 \
+ -x timeout 1d true
+
+ atf_check \
+ -o empty \
+ -e empty \
+ -s exit:0 \
+ -x timeout 1h true
+
+ atf_check \
+ -o empty \
+ -e empty \
+ -s exit:0 \
+ -x timeout 1m true
+
+ atf_check \
+ -o empty \
+ -e empty \
+ -s exit:0 \
+ -x timeout 1s true
+}
+
+atf_test_case no_timeout
+no_timeout_head()
+{
+ atf_set "descr" "Test disabled timeout"
+}
+
+no_timeout_body()
+{
+ atf_check \
+ -o empty \
+ -e empty \
+ -s exit:0 \
+ -x timeout 0 true
+}
+
+atf_test_case exit_numbers
+exit_numbers_head()
+{
+ atf_set "descr" "Test exit numbers"
+}
+
+exit_numbers_body()
+{
+ atf_check \
+ -o empty \
+ -e empty \
+ -s exit:2 \
+ -x timeout 5 sh -c \'exit 2\'
+
+ atf_check \
+ -o empty \
+ -e empty \
+ -s exit:124 \
+ -x timeout .1 sleep 1
+
+ # With preserv status exit shoudl be 128 + TERM aka 143
+ atf_check \
+ -o empty \
+ -e empty \
+ -s exit:143 \
+ -x timeout --preserve-status .1 sleep 10
+
+ atf_check \
+ -o empty \
+ -e empty \
+ -s exit:124 \
+ -x timeout -s1 -k1 .1 sleep 10
+
+ atf_check \
+ -o empty \
+ -e empty \
+ -s exit:0 \
+ -x sh -c 'trap "" CHLD; exec timeout 10 true'
+}
+
+atf_test_case with_a_child
+with_a_child_head()
+{
+ atf_set "descr" "When starting with a child (coreutils bug#9098)"
+}
+
+with_a_child_body()
+{
+ out=$(sleep .1 & exec timeout .5 sh -c 'sleep 2; echo foo')
+ status=$?
+ test "$out" = "" && test $status = 124 || atf_fail
+
+}
+
+atf_test_case invalid_timeout
+invalid_timeout_head()
+{
+ atf_set "descr" "Invalid timeout"
+}
+
+invalid_timeout_body()
+{
+ atf_check \
+ -o empty \
+ -e inline:"timeout: invalid duration\n" \
+ -s exit:125 \
+ -x timeout invalid sleep 0
+
+ atf_check \
+ -o empty \
+ -e inline:"timeout: invalid duration\n" \
+ -s exit:125 \
+ -x timeout --kill-after=invalid 1 sleep 0
+
+ atf_check \
+ -o empty \
+ -e inline:"timeout: invalid duration\n" \
+ -s exit:125 \
+ -x timeout 42D sleep 0
+
+ atf_check \
+ -o empty \
+ -e inline:"timeout: invalid duration\n" \
+ -s exit:125 \
+ -x timeout 999999999999999999999999999999999999999999999999999999999999d sleep 0
+
+ atf_check \
+ -o empty \
+ -e inline:"timeout: invalid duration\n" \
+ -s exit:125 \
+ -x timeout 2.34e+5d sleep 0
+}
+
+atf_test_case invalid_signal
+invalid_signal_head()
+{
+ atf_set "descr" "Invalid signal"
+}
+
+invalid_signal_body()
+{
+ atf_check \
+ -o empty \
+ -e inline:"timeout: invalid signal\n" \
+ -s exit:125 \
+ -x timeout --signal=invalid 1 sleep 0
+}
+
+atf_test_case invalid_command
+invalid_command_head()
+{
+ atf_set "descr" "Invalid command"
+}
+
+invalid_command_body()
+{
+ atf_check \
+ -o empty \
+ -e inline:"timeout: exec(.): Permission denied\n" \
+ -s exit:126 \
+ -x timeout 10 .
+}
+
+atf_test_case no_such_command
+no_such_command_head()
+{
+ atf_set "descr" "No such command"
+}
+
+no_such_command_body()
+{
+ atf_check \
+ -o empty \
+ -e inline:"timeout: exec(enoexists): No such file or directory\n" \
+ -s exit:127 \
+ -x timeout 10 enoexists
+}
+
+atf_init_test_cases()
+{
+ atf_add_test_case nominal
+ atf_add_test_case time_unit
+ atf_add_test_case no_timeout
+ atf_add_test_case exit_numbers
+ atf_add_test_case with_a_child
+ atf_add_test_case invalid_timeout
+ atf_add_test_case invalid_signal
+ atf_add_test_case invalid_command
+ atf_add_test_case no_such_command
+}
diff --git a/usr.bin/timeout/timeout.1 b/usr.bin/timeout/timeout.1
index 028fc62..70a9106 100644
--- a/usr.bin/timeout/timeout.1
+++ b/usr.bin/timeout/timeout.1
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd July 19, 2014
+.Dd Oct 28, 2014
.Dt TIMEOUT 1
.Os
.Sh NAME
@@ -108,7 +108,22 @@ is not set, an exit status of 124 is returned.
.Pp
If
.Ar command
-exits after receiving a signal, the exit status returned is the signal number plus 128.
+exits after receiving a signal, the exit status returned is the signal number
+plus 128.
+.Pp
+If
+.Ar command
+is an invalid command, the exit status returned is 126.
+.Pp
+If
+.Ar command
+is a non existing command, the exit status returned is 127.
+.Pp
+If an invalid parameter is passed to
+.Fl s
+or
+.Fl k ,
+the exit status return is 125.
.Sh SEE ALSO
.Xr kill 1 ,
.Xr signal 3
diff --git a/usr.bin/timeout/timeout.c b/usr.bin/timeout/timeout.c
index 8171600..214ab13 100644
--- a/usr.bin/timeout/timeout.c
+++ b/usr.bin/timeout/timeout.c
@@ -68,7 +68,7 @@ parse_duration(const char *duration)
ret = strtod(duration, &end);
if (ret == 0 && end == duration)
- errx(EXIT_FAILURE, "invalid duration");
+ errx(125, "invalid duration");
if (end == NULL || *end == '\0')
return (ret);
@@ -89,11 +89,11 @@ parse_duration(const char *duration)
ret *= 60 * 60 * 24;
break;
default:
- errx(EX_USAGE, "invalid duration");
+ errx(125, "invalid duration");
}
if (ret < 0 || ret >= 100000000UL)
- errx(EX_USAGE, "invalid duration");
+ errx(125, "invalid duration");
return (ret);
}
@@ -116,7 +116,7 @@ parse_signal(const char *str)
return (i);
}
- errx(EX_USAGE, "invalid signal");
+ errx(125, "invalid signal");
}
static void
@@ -260,8 +260,12 @@ main(int argc, char **argv)
signal(SIGTTOU, SIG_DFL);
error = execvp(argv[0], argv);
- if (error == -1)
- err(EX_UNAVAILABLE, "exec()");
+ if (error == -1) {
+ if (errno == ENOENT)
+ err(127, "exec(%s)", argv[0]);
+ else
+ err(126, "exec(%s)", argv[0]);
+ }
}
if (sigprocmask(SIG_BLOCK, &signals.sa_mask, NULL) == -1)
diff --git a/usr.bin/top/machine.c b/usr.bin/top/machine.c
index de57b94..0a74521 100644
--- a/usr.bin/top/machine.c
+++ b/usr.bin/top/machine.c
@@ -941,7 +941,7 @@ format_next_process(caddr_t handle, char *(*get_userid)(int), int flags)
/* generate "STATE" field */
switch (state = pp->ki_stat) {
case SRUN:
- if (smpmode && pp->ki_oncpu != 0xff)
+ if (smpmode && pp->ki_oncpu != NOCPU)
sprintf(status, "CPU%d", pp->ki_oncpu);
else
strcpy(status, "RUN");
@@ -1100,7 +1100,7 @@ format_next_process(caddr_t handle, char *(*get_userid)(int), int flags)
/* format this entry */
if (smpmode) {
- if (state == SRUN && pp->ki_oncpu != 0xff)
+ if (state == SRUN && pp->ki_oncpu != NOCPU)
cpu = pp->ki_oncpu;
else
cpu = pp->ki_lastcpu;
diff --git a/usr.bin/truss/arm-fbsd.c b/usr.bin/truss/arm-fbsd.c
index b717619..3bac400 100644
--- a/usr.bin/truss/arm-fbsd.c
+++ b/usr.bin/truss/arm-fbsd.c
@@ -201,7 +201,7 @@ arm_syscall_entry(struct trussinfo *trussinfo, int nargs)
*/
// XXX BAD constant used here
iorequest.piod_op = PIOD_READ_D;
- iorequest.piod_offs = (void *)(regs.r[_REG_SP] +
+ iorequest.piod_offs = (void *)(regs.r_sp +
4 * sizeof(uint32_t));
iorequest.piod_addr = &fsc->args[4];
iorequest.piod_len = (nargs - 4) * sizeof(fsc->args[0]);
@@ -316,7 +316,7 @@ arm_syscall_exit(struct trussinfo *trussinfo, int syscall_num __unused)
}
retval = regs.r[0];
- errorp = !!(regs.r_cpsr & PSR_C_bit);
+ errorp = !!(regs.r_cpsr & PSR_C);
/*
* This code, while simpler than the initial versions I used, could
diff --git a/usr.bin/truss/syscall.h b/usr.bin/truss/syscall.h
index f13fa8b..a573611 100644
--- a/usr.bin/truss/syscall.h
+++ b/usr.bin/truss/syscall.h
@@ -5,6 +5,7 @@
* Hex -- values that should be printed in hex (addresses)
* Octal -- Same as above, but octal
* Int -- normal integer values (file descriptors, for example)
+ * LongHex -- long value that should be printed in hex
* Name -- pointer to a NULL-terminated string.
* BinString -- pointer to an array of chars, printed via strvisx().
* Ptr -- pointer to some unspecified structure. Just print as hex for now.
@@ -34,13 +35,13 @@
* $FreeBSD$
*/
-enum Argtype { None = 1, Hex, Octal, Int, Name, Ptr, Stat, Ioctl, Quad,
+enum Argtype { None = 1, Hex, Octal, Int, LongHex, Name, Ptr, Stat, Ioctl, Quad,
Signal, Sockaddr, StringArray, Timespec, Timeval, Itimerval, Pollfd,
Fd_set, Sigaction, Fcntl, Mprot, Mmapflags, Whence, Readlinkres,
Sigset, Sigprocmask, Kevent, Sockdomain, Socktype, Open,
Fcntlflag, Rusage, BinString, Shutdown, Resource, Rlimit, Timeval2,
Pathconf, Rforkflags, ExitStatus, Waitoptions, Idtype, Procctl,
- LinuxSockArgs };
+ LinuxSockArgs, Umtxop };
#define ARG_MASK 0xff
#define OUT 0x100
diff --git a/usr.bin/truss/syscalls.c b/usr.bin/truss/syscalls.c
index ebdc72e..efd27e9 100644
--- a/usr.bin/truss/syscalls.c
+++ b/usr.bin/truss/syscalls.c
@@ -279,6 +279,9 @@ static struct syscall syscalls[] = {
{ Waitoptions, 3 }, { Rusage | OUT, 4 }, { Ptr, 5 } } },
{ .name = "procctl", .ret_type = 1, .nargs = 4,
.args = { { Idtype, 0 }, { Int, 1 }, { Procctl, 2 }, { Ptr, 3 } } },
+ { .name = "_umtx_op", .ret_type = 1, .nargs = 5,
+ .args = { { Ptr, 0 }, { Umtxop, 1 }, { LongHex, 2 }, { Ptr, 3 },
+ { Ptr, 4 } } },
{ .name = 0 },
};
@@ -309,8 +312,8 @@ static struct xlat poll_flags[] = {
};
static struct xlat mmap_flags[] = {
- X(MAP_SHARED) X(MAP_PRIVATE) X(MAP_FIXED) X(MAP_RENAME)
- X(MAP_NORESERVE) X(MAP_RESERVED0080) X(MAP_RESERVED0100)
+ X(MAP_SHARED) X(MAP_PRIVATE) X(MAP_FIXED) X(MAP_RESERVED0020)
+ X(MAP_RESERVED0040) X(MAP_RESERVED0080) X(MAP_RESERVED0100)
X(MAP_HASSEMAPHORE) X(MAP_STACK) X(MAP_NOSYNC) X(MAP_ANON)
X(MAP_NOCORE) X(MAP_PREFAULT_READ)
#ifdef MAP_32BIT
@@ -412,6 +415,19 @@ static struct xlat procctl_arg[] = {
X(PROC_SPROTECT) XEND
};
+static struct xlat umtx_ops[] = {
+ X(UMTX_OP_RESERVED0) X(UMTX_OP_RESERVED1) X(UMTX_OP_WAIT)
+ X(UMTX_OP_WAKE) X(UMTX_OP_MUTEX_TRYLOCK) X(UMTX_OP_MUTEX_LOCK)
+ X(UMTX_OP_MUTEX_UNLOCK) X(UMTX_OP_SET_CEILING) X(UMTX_OP_CV_WAIT)
+ X(UMTX_OP_CV_SIGNAL) X(UMTX_OP_CV_BROADCAST) X(UMTX_OP_WAIT_UINT)
+ X(UMTX_OP_RW_RDLOCK) X(UMTX_OP_RW_WRLOCK) X(UMTX_OP_RW_UNLOCK)
+ X(UMTX_OP_WAIT_UINT_PRIVATE) X(UMTX_OP_WAKE_PRIVATE)
+ X(UMTX_OP_MUTEX_WAIT) X(UMTX_OP_MUTEX_WAKE) X(UMTX_OP_SEM_WAIT)
+ X(UMTX_OP_SEM_WAKE) X(UMTX_OP_NWAKE_PRIVATE) X(UMTX_OP_MUTEX_WAKE2)
+ X(UMTX_OP_SEM2_WAIT) X(UMTX_OP_SEM2_WAKE)
+ XEND
+};
+
#undef X
#undef XEND
@@ -608,6 +624,9 @@ print_arg(struct syscall_args *sc, unsigned long *args, long retval,
case Int:
asprintf(&tmp, "%d", (int)args[sc->offset]);
break;
+ case LongHex:
+ asprintf(&tmp, "0x%lx", args[sc->offset]);
+ break;
case Name: {
/* NULL-terminated string. */
char *tmp2;
@@ -1275,6 +1294,9 @@ print_arg(struct syscall_args *sc, unsigned long *args, long retval,
case Procctl:
tmp = strdup(xlookup(procctl_arg, args[sc->offset]));
break;
+ case Umtxop:
+ tmp = strdup(xlookup(umtx_ops, args[sc->offset]));
+ break;
default:
errx(1, "Invalid argument type %d\n", sc->type & ARG_MASK);
}
diff --git a/usr.bin/vacation/Makefile b/usr.bin/vacation/Makefile
index 4f8690c..056f576 100644
--- a/usr.bin/vacation/Makefile
+++ b/usr.bin/vacation/Makefile
@@ -32,8 +32,6 @@ DPADD+=${SENDMAIL_DPADD}
LDADD+=${SENDMAIL_LDADD}
LDFLAGS+=${SENDMAIL_LDFLAGS}
-NO_PIE= yes
-
sm_os.h:
ln -sf ${SENDMAIL_DIR}/include/sm/os/sm_os_freebsd.h sm_os.h
diff --git a/usr.bin/vmstat/vmstat.8 b/usr.bin/vmstat/vmstat.8
index f04cc42..4566ad2 100644
--- a/usr.bin/vmstat/vmstat.8
+++ b/usr.bin/vmstat/vmstat.8
@@ -28,7 +28,7 @@
.\" @(#)vmstat.8 8.1 (Berkeley) 6/6/93
.\" $FreeBSD$
.\"
-.Dd October 21, 2006
+.Dd August 8, 2014
.Dt VMSTAT 8
.Os
.Sh NAME
@@ -38,9 +38,8 @@
.Nm
.\" .Op Fl fimst
.Op Fl afHhimPsz
-.Op Fl c Ar count
.Op Fl M Ar core Op Fl N Ar system
-.Op Fl w Ar wait
+.Op Fl c Ar count
.Op Fl n Ar devs
.Oo
.Fl p
@@ -48,7 +47,9 @@
.Ar type , if , pass
.Sm on
.Oc
-.Op Ar disks
+.Op Fl w Ar wait
+.Op Ar disks ...
+.Op wait Op count
.Sh DESCRIPTION
The
.Nm
@@ -91,10 +92,12 @@ and
system calls since system startup, and the number of pages of virtual memory
involved in each.
.It Fl h
-Changes memory columns into more easily human readable form. Default if
+Changes memory columns into more easily human readable form.
+The default if
standard output is a terminal device.
.It Fl H
-Changes memory columns into straight numbers. Default if standard output
+Changes memory columns into straight numbers.
+The default if standard output
is not a terminal device (such as a script).
.It Fl i
Report on the number of interrupts taken by each device since system
@@ -214,6 +217,21 @@ Report on memory used by the kernel zone allocator,
by zone.
.El
.Pp
+The
+.Ar wait
+and
+.Ar count
+arguments may be given after their respective flags at any point
+on the command line before the
+.Ar disks
+argument(s), or without their flags, as the final argument(s).
+The latter form is accepted for backwards compatibility, but it is
+preferred to use the forms with
+.Fl w
+and
+.Fl c
+to avoid ambiguity.
+.Pp
By default,
.Nm
displays the following information:
diff --git a/usr.bin/vmstat/vmstat.c b/usr.bin/vmstat/vmstat.c
index 67f438e..760dce8 100644
--- a/usr.bin/vmstat/vmstat.c
+++ b/usr.bin/vmstat/vmstat.c
@@ -299,15 +299,12 @@ retry_nlist:
argv = getdrivedata(argv);
}
-#define BACKWARD_COMPATIBILITY
-#ifdef BACKWARD_COMPATIBILITY
if (*argv) {
f = atof(*argv);
interval = f * 1000;
if (*++argv)
reps = atoi(*argv);
}
-#endif
if (interval) {
if (!reps)
@@ -660,6 +657,8 @@ dovmstat(unsigned int interval, int reps)
uptime = getuptime();
halfuptime = uptime / 2;
rate_adj = 1;
+ ncpus = 1;
+ maxid = 0;
/*
* If the user stops the program (control-Z) and then resumes it,
@@ -705,7 +704,7 @@ dovmstat(unsigned int interval, int reps)
}
for (hdrcnt = 1;;) {
if (!--hdrcnt)
- printhdr(ncpus, cpumask);
+ printhdr(maxid, cpumask);
if (kd != NULL) {
if (kvm_getcptime(kd, cur.cp_time) < 0)
errx(1, "kvm_getcptime: %s", kvm_geterr(kd));
@@ -756,7 +755,7 @@ dovmstat(unsigned int interval, int reps)
errx(1, "%s", devstat_errbuf);
break;
case 1:
- printhdr(ncpus, cpumask);
+ printhdr(maxid, cpumask);
break;
default:
break;
@@ -768,22 +767,26 @@ dovmstat(unsigned int interval, int reps)
fill_vmmeter(&sum);
fill_vmtotal(&total);
- (void)printf("%2d %1d %1d",
+ (void)printf("%1d %1d %1d",
total.t_rq - 1, total.t_dw + total.t_pw, total.t_sw);
#define vmstat_pgtok(a) ((a) * (sum.v_page_size >> 10))
#define rate(x) (((x) * rate_adj + halfuptime) / uptime) /* round */
if (hflag) {
+ printf("");
+ prthuman(total.t_avm * (u_int64_t)sum.v_page_size, 5);
printf(" ");
- prthuman(total.t_avm * (u_int64_t)sum.v_page_size, 7);
- printf(" ");
- prthuman(total.t_free * (u_int64_t)sum.v_page_size, 6);
+ prthuman(total.t_free * (u_int64_t)sum.v_page_size, 5);
printf(" ");
+ (void)printf("%5lu ",
+ (unsigned long)rate(sum.v_vm_faults -
+ osum.v_vm_faults));
} else {
- printf(" %7d ", vmstat_pgtok(total.t_avm));
- printf(" %6d ", vmstat_pgtok(total.t_free));
+ printf(" %7d", vmstat_pgtok(total.t_avm));
+ printf(" %7d ", vmstat_pgtok(total.t_free));
+ (void)printf("%4lu ",
+ (unsigned long)rate(sum.v_vm_faults -
+ osum.v_vm_faults));
}
- (void)printf("%5lu ",
- (unsigned long)rate(sum.v_vm_faults - osum.v_vm_faults));
(void)printf("%3lu ",
(unsigned long)rate(sum.v_reactivated - osum.v_reactivated));
(void)printf("%3lu ",
@@ -794,10 +797,10 @@ dovmstat(unsigned int interval, int reps)
(osum.v_swapout + osum.v_vnodeout)));
(void)printf("%5lu ",
(unsigned long)rate(sum.v_tfree - osum.v_tfree));
- (void)printf("%3lu ",
+ (void)printf("%4lu ",
(unsigned long)rate(sum.v_pdpages - osum.v_pdpages));
devstats();
- (void)printf("%4lu %4lu %4lu",
+ (void)printf("%4lu %5lu %5lu",
(unsigned long)rate(sum.v_intr - osum.v_intr),
(unsigned long)rate(sum.v_syscall - osum.v_syscall),
(unsigned long)rate(sum.v_swtch - osum.v_swtch));
@@ -825,36 +828,46 @@ dovmstat(unsigned int interval, int reps)
}
static void
-printhdr(int ncpus, u_long cpumask)
+printhdr(int maxid, u_long cpumask)
{
int i, num_shown;
num_shown = (num_selected < maxshowdevs) ? num_selected : maxshowdevs;
- (void)printf(" procs memory page%*s", 19, "");
+ if (hflag) {
+ (void)printf("procs memory page%*s ", 19, "");
+ } else {
+ (void)printf("procs memory page%*s ", 19, "");
+ }
if (num_shown > 1)
- (void)printf(" disks %*s", num_shown * 4 - 7, "");
+ (void)printf(" disks %*s", num_shown * 4 - 7, "");
else if (num_shown == 1)
- (void)printf("disk");
- (void)printf(" faults ");
+ (void)printf(" disk");
+ (void)printf(" faults ");
if (Pflag) {
- for (i = 0; i < ncpus; i++) {
+ for (i = 0; i <= maxid; i++) {
if (cpumask & (1ul << i))
- printf("cpu%-2d ", i);
+ printf(" cpu%d ", i);
}
printf("\n");
} else
- printf("cpu\n");
- (void)printf(" r b w avm fre flt re pi po fr sr ");
+ printf(" cpu\n");
+ if (hflag) {
+ (void)printf("r b w avm fre flt re pi po fr sr ");
+ } else {
+ (void)printf("r b w avm fre flt re pi po fr sr ");
+ }
for (i = 0; i < num_devices; i++)
if ((dev_select[i].selected)
&& (dev_select[i].selected <= maxshowdevs))
(void)printf("%c%c%d ", dev_select[i].device_name[0],
dev_select[i].device_name[1],
dev_select[i].unit_number);
- (void)printf(" in sy cs");
+ (void)printf(" in sy cs");
if (Pflag) {
- for (i = 0; i < ncpus; i++)
- printf(" us sy id");
+ for (i = 0; i <= maxid; i++) {
+ if (cpumask & (1ul << i))
+ printf(" us sy id");
+ }
printf("\n");
} else
printf(" us sy id\n");
@@ -981,7 +994,8 @@ dosum(void)
(void)printf("%9u intransit blocking page faults\n", sum.v_intrans);
(void)printf("%9u total VM faults taken\n", sum.v_vm_faults);
(void)printf("%9u page faults requiring I/O\n", sum.v_io_faults);
- (void)printf("%9u pages affected by kernel thread creation\n", sum.v_kthreadpages);
+ (void)printf("%9u pages affected by kernel thread creation\n",
+ sum.v_kthreadpages);
(void)printf("%9u pages affected by fork()\n", sum.v_forkpages);
(void)printf("%9u pages affected by vfork()\n", sum.v_vforkpages);
(void)printf("%9u pages affected by rfork()\n", sum.v_rforkpages);
@@ -1123,7 +1137,8 @@ pcpustats(int ncpus, u_long cpumask, int maxid)
continue;
for (state = 0; state < CPUSTATES; ++state) {
tmp = cur_cp_times[i * CPUSTATES + state];
- cur_cp_times[i * CPUSTATES + state] -= last_cp_times[i * CPUSTATES + state];
+ cur_cp_times[i * CPUSTATES + state] -= last_cp_times[i *
+ CPUSTATES + state];
last_cp_times[i * CPUSTATES + state] = tmp;
}
}
@@ -1360,7 +1375,7 @@ static void
usage(void)
{
(void)fprintf(stderr, "%s%s",
- "usage: vmstat [-afHhimPsz] [-c count] [-M core [-N system]] [-w wait]\n",
- " [-n devs] [-p type,if,pass] [disks]\n");
+ "usage: vmstat [-afHhimPsz] [-M core [-N system]] [-c count] [-n devs]\n",
+ " [-p type,if,pass] [-w wait] [disks] [wait [count]]\n");
exit(1);
}
diff --git a/usr.bin/w/Makefile b/usr.bin/w/Makefile
index 1515a87..6a5bbe5 100644
--- a/usr.bin/w/Makefile
+++ b/usr.bin/w/Makefile
@@ -4,8 +4,8 @@
PROG= w
SRCS= fmt.c pr_time.c proc_compare.c w.c
MAN= w.1 uptime.1
-DPADD= ${LIBKVM} ${LIBUTIL}
-LDADD= -lkvm -lutil
+DPADD= ${LIBKVM} ${LIBUTIL} ${LIBXO}
+LDADD= -lkvm -lutil -lxo
#BINGRP= kmem
#BINMODE=2555
LINKS= ${BINDIR}/w ${BINDIR}/uptime
diff --git a/usr.bin/w/pr_time.c b/usr.bin/w/pr_time.c
index b227f86..123f6c4 100644
--- a/usr.bin/w/pr_time.c
+++ b/usr.bin/w/pr_time.c
@@ -41,6 +41,7 @@ static const char sccsid[] = "@(#)pr_time.c 8.2 (Berkeley) 4/4/94";
#include <stdio.h>
#include <string.h>
#include <wchar.h>
+#include <libxo/xo.h>
#include "extern.h"
@@ -82,12 +83,14 @@ pr_attime(time_t *started, time_t *now)
(void)wcsftime(buf, sizeof(buf), fmt, &tp);
len = wcslen(buf);
width = wcswidth(buf, len);
+ xo_attr("since", "%lu", (unsigned long) *started);
+ xo_attr("delta", "%lu", (unsigned long) diff);
if (len == width)
- (void)wprintf(L"%-7.7ls", buf);
+ xo_emit("{:login-time/%-7.7ls/%ls}", buf);
else if (width < 7)
- (void)wprintf(L"%ls%.*s", buf, 7 - width, " ");
+ xo_emit("{:login-time/%ls}%.*s", buf, 7 - width, " ");
else {
- (void)wprintf(L"%ls", buf);
+ xo_emit("{:login-time/%ls}", buf);
offset = width - 7;
}
return (offset);
@@ -104,7 +107,7 @@ pr_idle(time_t idle)
/* If idle more than 36 hours, print as a number of days. */
if (idle >= 36 * 3600) {
int days = idle / 86400;
- (void)printf(" %dday%s ", days, days > 1 ? "s" : " " );
+ xo_emit(" {:idle/%dday%s} ", days, days > 1 ? "s" : " " );
if (days >= 100)
return (2);
if (days >= 10)
@@ -113,15 +116,15 @@ pr_idle(time_t idle)
/* If idle more than an hour, print as HH:MM. */
else if (idle >= 3600)
- (void)printf(" %2d:%02d ",
+ xo_emit(" {:idle/%2d:%02d/} ",
(int)(idle / 3600), (int)((idle % 3600) / 60));
else if (idle / 60 == 0)
- (void)printf(" - ");
+ xo_emit(" - ");
/* Else print the minutes idle. */
else
- (void)printf(" %2d ", (int)(idle / 60));
+ xo_emit(" {:idle/%2d} ", (int)(idle / 60));
return (0); /* not idle longer than 9 days */
}
diff --git a/usr.bin/w/w.1 b/usr.bin/w/w.1
index 345db49..445462b 100644
--- a/usr.bin/w/w.1
+++ b/usr.bin/w/w.1
@@ -28,7 +28,7 @@
.\" @(#)w.1 8.1 (Berkeley) 6/6/93
.\" $FreeBSD$
.\"
-.Dd January 21, 2010
+.Dd November 5, 2014
.Dt W 1
.Os
.Sh NAME
@@ -36,6 +36,7 @@
.Nd "display who is logged in and what they are doing"
.Sh SYNOPSIS
.Nm
+.Op Fl -libxo
.Op Fl dhin
.Op Fl M Ar core
.Op Fl N Ar system
@@ -99,7 +100,9 @@ flags are no longer supported.
.Xr finger 1 ,
.Xr ps 1 ,
.Xr uptime 1 ,
-.Xr who 1
+.Xr who 1 ,
+.Xr libxo 3 ,
+.Xr xo_parse_args 3
.Sh HISTORY
The
.Nm
diff --git a/usr.bin/w/w.c b/usr.bin/w/w.c
index 1b9af5f..effd0e3 100644
--- a/usr.bin/w/w.c
+++ b/usr.bin/w/w.c
@@ -68,6 +68,7 @@ static const char sccsid[] = "@(#)w.c 8.4 (Berkeley) 4/16/94";
#include <fcntl.h>
#include <kvm.h>
#include <langinfo.h>
+#include <libgen.h>
#include <libutil.h>
#include <limits.h>
#include <locale.h>
@@ -82,6 +83,7 @@ static const char sccsid[] = "@(#)w.c 8.4 (Berkeley) 4/16/94";
#include <unistd.h>
#include <utmpx.h>
#include <vis.h>
+#include <libxo/xo.h>
#include "extern.h"
@@ -121,7 +123,6 @@ static struct entry {
static void pr_header(time_t *, int);
static struct stat *ttystat(char *);
static void usage(int);
-static int this_is_uptime(const char *s);
char *fmt_argv(char **, char *, char *, size_t); /* ../../bin/ps/fmt.c */
@@ -133,7 +134,7 @@ main(int argc, char *argv[])
struct stat *stp;
time_t touched;
int ch, i, nentries, nusers, wcmd, longidle, longattime, dropgid;
- const char *memf, *nlistf, *p;
+ const char *memf, *nlistf, *p, *save_p;
char *x_suffix;
char buf[MAXHOSTNAMELEN], errbuf[_POSIX2_LINE_MAX];
char fn[MAXHOSTNAMELEN];
@@ -143,8 +144,12 @@ main(int argc, char *argv[])
use_ampm = (*nl_langinfo(T_FMT_AMPM) != '\0');
use_comma = (*nl_langinfo(RADIXCHAR) != ',');
+ argc = xo_parse_args(argc, argv);
+ if (argc < 0)
+ exit(1);
+
/* Are we w(1) or uptime(1)? */
- if (this_is_uptime(argv[0]) == 0) {
+ if (strcmp(basename(argv[0]), "uptime") == 0) {
wcmd = 0;
p = "";
} else {
@@ -254,9 +259,12 @@ main(int argc, char *argv[])
}
endutxent();
+ xo_open_container("uptime-information");
+
if (header || wcmd == 0) {
pr_header(&now, nusers);
if (wcmd == 0) {
+ xo_close_container("uptime-information");
(void)kvm_close(kd);
exit(0);
}
@@ -268,7 +276,7 @@ main(int argc, char *argv[])
#define HEADER_WHAT "WHAT\n"
#define WUSED (W_DISPUSERSIZE + W_DISPLINESIZE + W_DISPHOSTSIZE + \
sizeof(HEADER_LOGIN_IDLE) + 3) /* header width incl. spaces */
- (void)printf("%-*.*s %-*.*s %-*.*s %s",
+ xo_emit("{T:/%-*.*s} {T:/%-*.*s} {T:/%-*.*s} {T:/%s}",
W_DISPUSERSIZE, W_DISPUSERSIZE, HEADER_USER,
W_DISPLINESIZE, W_DISPLINESIZE, HEADER_TTY,
W_DISPHOSTSIZE, W_DISPHOSTSIZE, HEADER_FROM,
@@ -342,6 +350,9 @@ main(int argc, char *argv[])
}
}
+ xo_open_container("user-table");
+ xo_open_list("user-entry");
+
for (ep = ehead; ep != NULL; ep = ep->next) {
struct addrinfo hints, *res;
struct sockaddr_storage ss;
@@ -351,7 +362,9 @@ main(int argc, char *argv[])
time_t t;
int isaddr;
- p = *ep->utmp.ut_host ? ep->utmp.ut_host : "-";
+ xo_open_instance("user-entry");
+
+ save_p = p = *ep->utmp.ut_host ? ep->utmp.ut_host : "-";
if ((x_suffix = strrchr(p, ':')) != NULL) {
if ((dot = strchr(x_suffix, '.')) != NULL &&
strchr(dot+1, '.') == NULL)
@@ -400,6 +413,9 @@ main(int argc, char *argv[])
p = buf;
}
if (dflag) {
+ xo_open_container("process-table");
+ xo_open_list("process-entry");
+
for (dkp = ep->dkp; dkp != NULL; dkp = debugproc(dkp)) {
const char *ptr;
@@ -407,24 +423,41 @@ main(int argc, char *argv[])
dkp->ki_comm, NULL, MAXCOMLEN);
if (ptr == NULL)
ptr = "-";
- (void)printf("\t\t%-9d %s\n",
+ xo_open_instance("process-entry");
+ xo_emit("\t\t{:process-id/%-9d/%d} {:command/%s}\n",
dkp->ki_pid, ptr);
+ xo_close_instance("process-entry");
}
+ xo_close_list("process-entry");
+ xo_close_container("process-table");
}
- (void)printf("%-*.*s %-*.*s %-*.*s ",
- W_DISPUSERSIZE, W_DISPUSERSIZE, ep->utmp.ut_user,
- W_DISPLINESIZE, W_DISPLINESIZE,
- *ep->utmp.ut_line ?
- (strncmp(ep->utmp.ut_line, "tty", 3) &&
- strncmp(ep->utmp.ut_line, "cua", 3) ?
- ep->utmp.ut_line : ep->utmp.ut_line + 3) : "-",
+ xo_emit("{:user/%-*.*s/%@**@s} {:tty/%-*.*s/%@**@s} ",
+ W_DISPUSERSIZE, W_DISPUSERSIZE, ep->utmp.ut_user,
+ W_DISPLINESIZE, W_DISPLINESIZE,
+ *ep->utmp.ut_line ?
+ (strncmp(ep->utmp.ut_line, "tty", 3) &&
+ strncmp(ep->utmp.ut_line, "cua", 3) ?
+ ep->utmp.ut_line : ep->utmp.ut_line + 3) : "-");
+
+ if (save_p && save_p != p)
+ xo_attr("address", "%s", save_p);
+ xo_emit("{:from/%-*.*s/%@**@s} ",
W_DISPHOSTSIZE, W_DISPHOSTSIZE, *p ? p : "-");
t = ep->utmp.ut_tv.tv_sec;
longattime = pr_attime(&t, &now);
longidle = pr_idle(ep->idle);
- (void)printf("%.*s\n", argwidth - longidle - longattime,
+ xo_emit("{:command/%.*s/%@*@s}\n",
+ argwidth - longidle - longattime,
ep->args);
+
+ xo_close_instance("user-entry");
}
+
+ xo_close_list("user-entry");
+ xo_close_container("user-table");
+ xo_close_container("uptime-information");
+ xo_finish();
+
(void)kvm_close(kd);
exit(0);
}
@@ -443,7 +476,7 @@ pr_header(time_t *nowp, int nusers)
*/
if (strftime(buf, sizeof(buf),
use_ampm ? "%l:%M%p" : "%k:%M", localtime(nowp)) != 0)
- (void)printf("%s ", buf);
+ xo_emit("{:time-of-day/%s} ", buf);
/*
* Print how long system has been up.
*/
@@ -457,35 +490,45 @@ pr_header(time_t *nowp, int nusers)
uptime %= 3600;
mins = uptime / 60;
secs = uptime % 60;
- (void)printf(" up");
+ xo_emit(" up");
+ xo_attr("seconds", "%lu", (unsigned long) tp.tv_sec);
if (days > 0)
- (void)printf(" %d day%s,", days, days > 1 ? "s" : "");
+ xo_emit(" {:uptime/%d day%s},",
+ days, days > 1 ? "s" : "");
if (hrs > 0 && mins > 0)
- (void)printf(" %2d:%02d,", hrs, mins);
+ xo_emit(" {:uptime/%2d:%02d},", hrs, mins);
else if (hrs > 0)
- (void)printf(" %d hr%s,", hrs, hrs > 1 ? "s" : "");
+ xo_emit(" {:uptime/%d hr%s},",
+ hrs, hrs > 1 ? "s" : "");
else if (mins > 0)
- (void)printf(" %d min%s,", mins, mins > 1 ? "s" : "");
+ xo_emit(" {:uptime/%d min%s},",
+ mins, mins > 1 ? "s" : "");
else
- (void)printf(" %d sec%s,", secs, secs > 1 ? "s" : "");
+ xo_emit(" {:uptime/%d sec%s},",
+ secs, secs > 1 ? "s" : "");
}
/* Print number of users logged in to system */
- (void)printf(" %d user%s", nusers, nusers == 1 ? "" : "s");
+ xo_emit(" {:users/%d} {N:user%s}", nusers, nusers == 1 ? "" : "s");
/*
* Print 1, 5, and 15 minute load averages.
*/
if (getloadavg(avenrun, sizeof(avenrun) / sizeof(avenrun[0])) == -1)
- (void)printf(", no load average information available\n");
+ xo_emit(", no load average information available\n");
else {
- (void)printf(", load averages:");
+ static const char *format[] = {
+ " {:load-average-1/%.2f}",
+ " {:load-average-5/%.2f}",
+ " {:load-average-15/%.2f}",
+ };
+ xo_emit(", load averages:");
for (i = 0; i < (int)(sizeof(avenrun) / sizeof(avenrun[0])); i++) {
if (use_comma && i > 0)
- (void)printf(",");
- (void)printf(" %.2f", avenrun[i]);
+ xo_emit(",");
+ xo_emit(format[i], avenrun[i]);
}
- (void)printf("\n");
+ xo_emit("\n");
}
}
@@ -506,23 +549,8 @@ static void
usage(int wcmd)
{
if (wcmd)
- (void)fprintf(stderr,
- "usage: w [-dhin] [-M core] [-N system] [user ...]\n");
+ xo_error("usage: w [-dhin] [-M core] [-N system] [user ...]\n");
else
- (void)fprintf(stderr, "usage: uptime\n");
+ xo_error("usage: uptime\n");
exit(1);
}
-
-static int
-this_is_uptime(const char *s)
-{
- const char *u;
-
- if ((u = strrchr(s, '/')) != NULL)
- ++u;
- else
- u = s;
- if (strcmp(u, "uptime") == 0)
- return (0);
- return (-1);
-}
diff --git a/usr.bin/wc/Makefile b/usr.bin/wc/Makefile
index 4fa9f30..6c67135 100644
--- a/usr.bin/wc/Makefile
+++ b/usr.bin/wc/Makefile
@@ -2,4 +2,7 @@
# $FreeBSD$
PROG= wc
+DPADD= ${LIBXO}
+LDADD= -lxo
+
.include <bsd.prog.mk>
diff --git a/usr.bin/wc/wc.1 b/usr.bin/wc/wc.1
index afcccb0..ee81e17 100644
--- a/usr.bin/wc/wc.1
+++ b/usr.bin/wc/wc.1
@@ -31,7 +31,7 @@
.\" @(#)wc.1 8.2 (Berkeley) 4/19/94
.\" $FreeBSD$
.\"
-.Dd December 6, 2008
+.Dd November 4, 2014
.Dt WC 1
.Os
.Sh NAME
@@ -39,6 +39,7 @@
.Nd word, line, character, and byte count
.Sh SYNOPSIS
.Nm
+.Op Fl -libxo
.Op Fl Lclmw
.Op Ar
.Sh DESCRIPTION
@@ -174,7 +175,9 @@ option of the GNU
.Nm
utility.
.Sh SEE ALSO
-.Xr iswspace 3
+.Xr iswspace 3 ,
+.Xr libxo 3 ,
+.Xr xo_parse_args 3
.Sh STANDARDS
The
.Nm
diff --git a/usr.bin/wc/wc.c b/usr.bin/wc/wc.c
index 08823a1..79ac4a0 100644
--- a/usr.bin/wc/wc.c
+++ b/usr.bin/wc/wc.c
@@ -57,10 +57,12 @@ __FBSDID("$FreeBSD$");
#include <unistd.h>
#include <wchar.h>
#include <wctype.h>
+#include <libxo/xo.h>
static uintmax_t tlinect, twordct, tcharct, tlongline;
static int doline, doword, dochar, domulti, dolongline;
static volatile sig_atomic_t siginfo;
+static xo_handle_t *stderr_handle;
static void show_cnt(const char *file, uintmax_t linect, uintmax_t wordct,
uintmax_t charct, uintmax_t llct);
@@ -81,6 +83,10 @@ main(int argc, char *argv[])
(void) setlocale(LC_CTYPE, "");
+ argc = xo_parse_args(argc, argv);
+ if (argc < 0)
+ return (argc);
+
while ((ch = getopt(argc, argv, "clmwL")) != -1)
switch((char)ch) {
case 'l':
@@ -113,21 +119,35 @@ main(int argc, char *argv[])
if (doline + doword + dochar + domulti + dolongline == 0)
doline = doword = dochar = 1;
+ stderr_handle = xo_create_to_file(stderr, XO_STYLE_TEXT, 0);
+ xo_open_container("wc");
+ xo_open_list("file");
+
errors = 0;
total = 0;
if (!*argv) {
+ xo_open_instance("file");
if (cnt((char *)NULL) != 0)
++errors;
+ xo_close_instance("file");
} else {
do {
+ xo_open_instance("file");
if (cnt(*argv) != 0)
++errors;
+ xo_close_instance("file");
++total;
} while(*++argv);
}
- if (total > 1)
+ if (total > 1) {
+ xo_open_container("total");
show_cnt("total", tlinect, twordct, tcharct, tlongline);
+ xo_close_container("total");
+ }
+ xo_close_list("file");
+ xo_close_container("wc");
+ xo_finish();
exit(errors == 0 ? 0 : 1);
}
@@ -135,27 +155,27 @@ static void
show_cnt(const char *file, uintmax_t linect, uintmax_t wordct,
uintmax_t charct, uintmax_t llct)
{
- FILE *out;
+ xo_handle_t *xop;
if (!siginfo)
- out = stdout;
+ xop = NULL;
else {
- out = stderr;
+ xop = stderr_handle;
siginfo = 0;
}
if (doline)
- (void)fprintf(out, " %7ju", linect);
+ xo_emit_h(xop, " {:lines/%7ju/%ju}", linect);
if (doword)
- (void)fprintf(out, " %7ju", wordct);
+ xo_emit_h(xop, " {:words/%7ju/%ju}", wordct);
if (dochar || domulti)
- (void)fprintf(out, " %7ju", charct);
+ xo_emit_h(xop, " {:characters/%7ju/%ju}", charct);
if (dolongline)
- (void)fprintf(out, " %7ju", llct);
+ xo_emit_h(xop, " {:long-lines/%7ju/%ju}", llct);
if (file != NULL)
- (void)fprintf(out, " %s\n", file);
+ xo_emit_h(xop, " {:filename/%s}\n", file);
else
- (void)fprintf(out, "\n");
+ xo_emit_h(xop, "\n");
}
static int
@@ -176,7 +196,7 @@ cnt(const char *file)
fd = STDIN_FILENO;
else {
if ((fd = open(file, O_RDONLY, 0)) < 0) {
- warn("%s: open", file);
+ xo_warn("%s: open", file);
return (1);
}
if (doword || (domulti && MB_CUR_MAX != 1))
@@ -189,7 +209,7 @@ cnt(const char *file)
if (doline) {
while ((len = read(fd, buf, MAXBSIZE))) {
if (len == -1) {
- warn("%s: read", file);
+ xo_warn("%s: read", file);
(void)close(fd);
return (1);
}
@@ -224,7 +244,7 @@ cnt(const char *file)
*/
if (dochar || domulti) {
if (fstat(fd, &sb)) {
- warn("%s: fstat", file);
+ xo_warn("%s: fstat", file);
(void)close(fd);
return (1);
}
@@ -244,7 +264,7 @@ word: gotsp = 1;
memset(&mbs, 0, sizeof(mbs));
while ((len = read(fd, buf, MAXBSIZE)) != 0) {
if (len == -1) {
- warn("%s: read", file != NULL ? file : "stdin");
+ xo_warn("%s: read", file != NULL ? file : "stdin");
(void)close(fd);
return (1);
}
@@ -259,7 +279,7 @@ word: gotsp = 1;
(size_t)-1) {
if (!warned) {
errno = EILSEQ;
- warn("%s",
+ xo_warn("%s",
file != NULL ? file : "stdin");
warned = 1;
}
@@ -291,7 +311,7 @@ word: gotsp = 1;
}
if (domulti && MB_CUR_MAX > 1)
if (mbrtowc(NULL, NULL, 0, &mbs) == (size_t)-1 && !warned)
- warn("%s", file != NULL ? file : "stdin");
+ xo_warn("%s", file != NULL ? file : "stdin");
if (doline)
tlinect += linect;
if (doword)
@@ -310,6 +330,6 @@ word: gotsp = 1;
static void
usage(void)
{
- (void)fprintf(stderr, "usage: wc [-Lclmw] [file ...]\n");
+ xo_error("usage: wc [-Lclmw] [file ...]\n");
exit(1);
}
diff --git a/usr.bin/xinstall/xinstall.c b/usr.bin/xinstall/xinstall.c
index f40cdc5..b59db70 100644
--- a/usr.bin/xinstall/xinstall.c
+++ b/usr.bin/xinstall/xinstall.c
@@ -1263,13 +1263,18 @@ install_dir(char *path)
if (!*p || (p != path && *p == '/')) {
ch = *p;
*p = '\0';
- if (stat(path, &sb)) {
- if (errno != ENOENT || mkdir(path, 0755) < 0) {
+again:
+ if (stat(path, &sb) < 0) {
+ if (errno != ENOENT)
+ err(EX_OSERR, "stat %s", path);
+ if (mkdir(path, 0755) < 0) {
+ if (errno == EEXIST)
+ goto again;
err(EX_OSERR, "mkdir %s", path);
- /* NOTREACHED */
- } else if (verbose)
+ }
+ if (verbose)
(void)printf("install: mkdir %s\n",
- path);
+ path);
} else if (!S_ISDIR(sb.st_mode))
errx(EX_OSERR, "%s exists but is not a directory", path);
if (!(*p = ch))
diff --git a/usr.bin/xo/Makefile b/usr.bin/xo/Makefile
new file mode 100644
index 0000000..c7b51d8
--- /dev/null
+++ b/usr.bin/xo/Makefile
@@ -0,0 +1,16 @@
+# $FreeBSD$
+
+LIBXO= ${.CURDIR:H:H}/contrib/libxo
+
+.PATH: ${LIBXO}/xo
+
+PROG= xo
+MAN= xo.1
+
+# XXX For xoversion.h
+CFLAGS+=-I${LIBXO}/libxo
+
+DPADD= ${LIBXO}
+LDADD= -lxo
+
+.include <bsd.prog.mk>
diff --git a/usr.bin/yacc/Makefile b/usr.bin/yacc/Makefile
index 45e7929..c110f3f 100644
--- a/usr.bin/yacc/Makefile
+++ b/usr.bin/yacc/Makefile
@@ -10,9 +10,10 @@ PROG= yacc
SRCS= closure.c error.c graph.c lalr.c lr0.c main.c mkpar.c mstring.c output.c \
reader.c yaccpar.c symtab.c verbose.c warshall.c
-CFLAGS+= -DMIXEDCASE_FILENAMES=1 \
- -DHAVE_FCNTL_H=1 \
- -DHAVE_MKSTEMP=1
+CFLAGS+= -DHAVE_FCNTL_H=1 \
+ -DHAVE_MKSTEMP=1 \
+ -DMAXTABLE=INT_MAX \
+ -DMIXEDCASE_FILENAMES=1
YYPATCH!= cat ${BYACC_SRC}/VERSION
CFLAGS+= -DYYPATCH=${YYPATCH}
diff --git a/usr.bin/yacc/tests/Makefile b/usr.bin/yacc/tests/Makefile
index 2dadf4e..c8125a6 100644
--- a/usr.bin/yacc/tests/Makefile
+++ b/usr.bin/yacc/tests/Makefile
@@ -9,11 +9,15 @@ TEST_DIR= ${.CURDIR}/../../../contrib/byacc/test
TESTSDIR= ${TESTSBASE}/usr.bin/yacc
PLAIN_TESTS_SH= yacc_tests
+# NOTE: due to caveats with how permissions are handled on FreeBSD
+# with root, this must be run as a non-privileged user; otherwise
+# the testcases will fail unexpectedly.
+TEST_METADATA.yacc_tests+= required_user="unprivileged"
SCRIPTS= run_test
SCRIPTSDIR= ${TESTSDIR}
-FILESGROUPS= FILEStest FILEStest_yacc
+FILESGROUPS= FILES FILEStest FILEStest_yacc
FILEStestDIR= ${TESTSDIR}
@@ -245,36 +249,30 @@ FILEStest_yacc+= help.error
FILEStest_yacc+= help.output
FILEStest_yacc+= no_b_opt.error
FILEStest_yacc+= no_b_opt.output
-# XXX: expected: `f - cannot open "nosuchfile.c"; gets
-# `e - line 0 of "nosuchfile.y", unexpected end-of-file`.
-#FILEStest_yacc+= no_b_opt1.error
-#FILEStest_yacc+= no_b_opt1.output
-#FILEStest_yacc+= no_code_c.error
-#FILEStest_yacc+= no_code_c.output
-#FILEStest_yacc+= no_defines.error
-#FILEStest_yacc+= no_defines.output
-#FILEStest_yacc+= no_graph.error
-#FILEStest_yacc+= no_graph.output
-#FILEStest_yacc+= no_include.error
-#FILEStest_yacc+= no_include.output
+FILEStest_yacc+= no_b_opt1.error
+FILEStest_yacc+= no_b_opt1.output
+FILEStest_yacc+= no_code_c.error
+FILEStest_yacc+= no_code_c.output
+FILEStest_yacc+= no_defines.error
+FILEStest_yacc+= no_defines.output
+FILEStest_yacc+= no_graph.error
+FILEStest_yacc+= no_graph.output
+FILEStest_yacc+= no_include.error
+FILEStest_yacc+= no_include.output
FILEStest_yacc+= no_opts.error
FILEStest_yacc+= no_opts.output
-# XXX: expected: `f - cannot open "nosuchfile.c"; gets
-# `e - line 0 of "nosuchfile.y", unexpected end-of-file`.
-#FILEStest_yacc+= no_output.error
-#FILEStest_yacc+= no_output.output
-#FILEStest_yacc+= no_output1.error
-#FILEStest_yacc+= no_output1.output
+FILEStest_yacc+= no_output.error
+FILEStest_yacc+= no_output.output
+FILEStest_yacc+= no_output1.error
+FILEStest_yacc+= no_output1.output
FILEStest_yacc+= no_output2.error
FILEStest_yacc+= no_output2.output
FILEStest_yacc+= no_p_opt.error
FILEStest_yacc+= no_p_opt.output
-# XXX: expected: `f - cannot open "nosuchfile.c"; gets
-# `e - line 0 of "nosuchfile.y", unexpected end-of-file`.
-#FILEStest_yacc+= no_p_opt1.error
-#FILEStest_yacc+= no_p_opt1.output
-#FILEStest_yacc+= no_verbose.error
-#FILEStest_yacc+= no_verbose.output
+FILEStest_yacc+= no_p_opt1.error
+FILEStest_yacc+= no_p_opt1.output
+FILEStest_yacc+= no_verbose.error
+FILEStest_yacc+= no_verbose.output
FILEStest_yacc+= nostdin.error
FILEStest_yacc+= nostdin.output
FILEStest_yacc+= ok_syntax1.error
diff --git a/usr.bin/yacc/tests/yacc_tests.sh b/usr.bin/yacc/tests/yacc_tests.sh
index 9a2973a..6ad6916 100755
--- a/usr.bin/yacc/tests/yacc_tests.sh
+++ b/usr.bin/yacc/tests/yacc_tests.sh
@@ -3,22 +3,15 @@
set -e
-cd $(dirname $0)
+# Setup the environment for run_test
+# - run_test looks for `#define YYBTYACC` in ../config.h
+# - run_test assumes a yacc binary exists in ../yacc instead of running "yacc"
+# - run_test spams the test dir with files (polluting subsequent test runs),
+# so it's better to copy all the files to a temporary directory created by
+# kyua
+echo > "./config.h"
+mkdir "test"
+cp -Rf "$(dirname "$0")"/* "test"
+cp -p /usr/bin/yacc ./yacc
-TMPDIR=$(mktemp -d /tmp/tmp.XXXXXXXX)
-TEST_DIR="$TMPDIR/test"
-trap "cd /; rm -Rf $TMPDIR" EXIT INT TERM
-
-# Setup the environment for run_test.sh
-mkdir -p "$TEST_DIR"
-cp -Rf * "$TEST_DIR/."
-echo > "$TMPDIR/config.h"
-ln /usr/bin/yacc $TMPDIR/yacc
-
-log=$TMPDIR/run_test.log
-(cd $TEST_DIR && ./run_test 2>&1 && : > run_test.ok) | tee $log
-if [ -f run_test.ok ] && ! egrep "^...(diff|not found)[^\*]+$" $log; then
- exit 0
-else
- exit 1
-fi
+cd "test" && ./run_test
OpenPOWER on IntegriCloud