==== run-ftpd-get ====
doas -n pkill tcpserver || true
doas -n pkill ftpd || true
nc 127.0.0.1 21 >/dev/null 2>&1 || true
# start ftpd
doas -n /usr/local/bin/tcpserver 127.0.0.1 21  /usr/libexec/ftpd -A &  timeout=$(($(date +%s) + 5));  while fstat -p $! | ! grep -q 'tcp .* 127.0.0.1:21$';  do test $(date +%s) -lt $timeout || exit 1; done
# prepare test files
doas -n dd if=/dev/random of="/home/ftp/ftpd.regress" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.018 secs (56231982 bytes/sec)
doas -n chown ftp:ftp "/home/ftp/ftpd.regress"
dd if=/dev/random of="ftpd.regress.local" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.019 secs (54755426 bytes/sec)
ftp_proxy= ftp -a ftp://127.0.0.1/ftpd.regress
cmp /home/ftp/ftpd.regress ftpd.regress
rm ftpd.regress

==== run-ftpd-get-active ====
doas -n pkill tcpserver || true
doas -n pkill ftpd || true
nc 127.0.0.1 21 >/dev/null 2>&1 || true
# start ftpd
doas -n /usr/local/bin/tcpserver 127.0.0.1 21  /usr/libexec/ftpd -A &  timeout=$(($(date +%s) + 5));  while fstat -p $! | ! grep -q 'tcp .* 127.0.0.1:21$';  do test $(date +%s) -lt $timeout || exit 1; done
# prepare test files
doas -n dd if=/dev/random of="/home/ftp/ftpd.regress" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.017 secs (59994482 bytes/sec)
doas -n chown ftp:ftp "/home/ftp/ftpd.regress"
dd if=/dev/random of="ftpd.regress.local" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.017 secs (59762031 bytes/sec)
ftp_proxy= ftp -a -A ftp://127.0.0.1/ftpd.regress
cmp /home/ftp/ftpd.regress ftpd.regress
rm ftpd.regress

==== run-ftpd-put ====
doas -n pkill tcpserver || true
doas -n pkill ftpd || true
nc 127.0.0.1 21 >/dev/null 2>&1 || true
# start ftpd
doas -n /usr/local/bin/tcpserver 127.0.0.1 21  /usr/libexec/ftpd -A &  timeout=$(($(date +%s) + 5));  while fstat -p $! | ! grep -q 'tcp .* 127.0.0.1:21$';  do test $(date +%s) -lt $timeout || exit 1; done
# prepare test files
doas -n dd if=/dev/random of="/home/ftp/ftpd.regress" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.017 secs (60717855 bytes/sec)
doas -n chown ftp:ftp "/home/ftp/ftpd.regress"
dd if=/dev/random of="ftpd.regress.local" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.017 secs (59380979 bytes/sec)
echo put ftpd.regress.local | ftp -a 127.0.0.1
cmp /home/ftp/ftpd.regress.local ftpd.regress.local
doas -n rm /home/ftp/ftpd.regress.local

==== run-ftpd-put-active ====
doas -n pkill tcpserver || true
doas -n pkill ftpd || true
nc 127.0.0.1 21 >/dev/null 2>&1 || true
# start ftpd
doas -n /usr/local/bin/tcpserver 127.0.0.1 21  /usr/libexec/ftpd -A &  timeout=$(($(date +%s) + 5));  while fstat -p $! | ! grep -q 'tcp .* 127.0.0.1:21$';  do test $(date +%s) -lt $timeout || exit 1; done
# prepare test files
doas -n dd if=/dev/random of="/home/ftp/ftpd.regress" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.017 secs (60179042 bytes/sec)
doas -n chown ftp:ftp "/home/ftp/ftpd.regress"
dd if=/dev/random of="ftpd.regress.local" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.017 secs (60791017 bytes/sec)
echo put ftpd.regress.local | ftp -a -A 127.0.0.1
cmp /home/ftp/ftpd.regress.local ftpd.regress.local
doas -n rm /home/ftp/ftpd.regress.local

==== run-ftpd-ls ====
doas -n pkill tcpserver || true
doas -n pkill ftpd || true
nc 127.0.0.1 21 >/dev/null 2>&1 || true
# start ftpd
doas -n /usr/local/bin/tcpserver 127.0.0.1 21  /usr/libexec/ftpd -A &  timeout=$(($(date +%s) + 5));  while fstat -p $! | ! grep -q 'tcp .* 127.0.0.1:21$';  do test $(date +%s) -lt $timeout || exit 1; done
# prepare test files
doas -n dd if=/dev/random of="/home/ftp/ftpd.regress" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.018 secs (55817161 bytes/sec)
doas -n chown ftp:ftp "/home/ftp/ftpd.regress"
dd if=/dev/random of="ftpd.regress.local" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.018 secs (55340639 bytes/sec)
echo ls | ftp -a 127.0.0.1 | grep -q 'ftpd.regress'

==== run-ftpd-nlist ====
doas -n pkill tcpserver || true
doas -n pkill ftpd || true
nc 127.0.0.1 21 >/dev/null 2>&1 || true
# start ftpd
doas -n /usr/local/bin/tcpserver 127.0.0.1 21  /usr/libexec/ftpd -A &  timeout=$(($(date +%s) + 5));  while fstat -p $! | ! grep -q 'tcp .* 127.0.0.1:21$';  do test $(date +%s) -lt $timeout || exit 1; done
# prepare test files
doas -n dd if=/dev/random of="/home/ftp/ftpd.regress" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.017 secs (59537915 bytes/sec)
doas -n chown ftp:ftp "/home/ftp/ftpd.regress"
dd if=/dev/random of="ftpd.regress.local" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.017 secs (59152966 bytes/sec)
echo nlist | ftp -a 127.0.0.1 | grep -q 'ftpd.regress'

==== run-ftpd-delete ====
doas -n pkill tcpserver || true
doas -n pkill ftpd || true
nc 127.0.0.1 21 >/dev/null 2>&1 || true
# start ftpd
doas -n /usr/local/bin/tcpserver 127.0.0.1 21  /usr/libexec/ftpd -A &  timeout=$(($(date +%s) + 5));  while fstat -p $! | ! grep -q 'tcp .* 127.0.0.1:21$';  do test $(date +%s) -lt $timeout || exit 1; done
# prepare test files
doas -n dd if=/dev/random of="/home/ftp/ftpd.regress" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.019 secs (54018018 bytes/sec)
doas -n chown ftp:ftp "/home/ftp/ftpd.regress"
dd if=/dev/random of="ftpd.regress.local" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.018 secs (55499933 bytes/sec)
echo delete ftpd.regress | ftp -a 127.0.0.1
test ! -f /home/ftp/ftpd.regress

==== run-ftpd-mkdir ====
doas -n pkill tcpserver || true
doas -n pkill ftpd || true
nc 127.0.0.1 21 >/dev/null 2>&1 || true
# start ftpd
doas -n /usr/local/bin/tcpserver 127.0.0.1 21  /usr/libexec/ftpd -A &  timeout=$(($(date +%s) + 5));  while fstat -p $! | ! grep -q 'tcp .* 127.0.0.1:21$';  do test $(date +%s) -lt $timeout || exit 1; done
# prepare test files
doas -n dd if=/dev/random of="/home/ftp/ftpd.regress" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.018 secs (56466784 bytes/sec)
doas -n chown ftp:ftp "/home/ftp/ftpd.regress"
dd if=/dev/random of="ftpd.regress.local" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.018 secs (56233282 bytes/sec)
echo mkdir ftpd.regress.dir.create | ftp -a 127.0.0.1
test -d /home/ftp/ftpd.regress.dir.create
doas -n rm -r /home/ftp/ftpd.regress.dir.create

==== run-ftpd-rename ====
doas -n pkill tcpserver || true
doas -n pkill ftpd || true
nc 127.0.0.1 21 >/dev/null 2>&1 || true
# start ftpd
doas -n /usr/local/bin/tcpserver 127.0.0.1 21  /usr/libexec/ftpd -A &  timeout=$(($(date +%s) + 5));  while fstat -p $! | ! grep -q 'tcp .* 127.0.0.1:21$';  do test $(date +%s) -lt $timeout || exit 1; done
# prepare test files
doas -n dd if=/dev/random of="/home/ftp/ftpd.regress" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.018 secs (56324252 bytes/sec)
doas -n chown ftp:ftp "/home/ftp/ftpd.regress"
dd if=/dev/random of="ftpd.regress.local" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.018 secs (55739334 bytes/sec)
echo rename ftpd.regress ftpd.regress.new | ftp -a 127.0.0.1
test ! -f /home/ftp/ftpd.regress
test   -f /home/ftp/ftpd.regress.new

==== run-ftpd-size ====
doas -n pkill tcpserver || true
doas -n pkill ftpd || true
nc 127.0.0.1 21 >/dev/null 2>&1 || true
# start ftpd
doas -n /usr/local/bin/tcpserver 127.0.0.1 21  /usr/libexec/ftpd -A &  timeout=$(($(date +%s) + 5));  while fstat -p $! | ! grep -q 'tcp .* 127.0.0.1:21$';  do test $(date +%s) -lt $timeout || exit 1; done
# prepare test files
doas -n dd if=/dev/random of="/home/ftp/ftpd.regress" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.017 secs (58782517 bytes/sec)
doas -n chown ftp:ftp "/home/ftp/ftpd.regress"
dd if=/dev/random of="ftpd.regress.local" count=1 bs=1m
1+0 records in
1+0 records out
1048576 bytes transferred in 0.017 secs (59529435 bytes/sec)
test $(echo "binary\nsize ftpd.regress" | ftp -a 127.0.0.1 | cut -f 2) -eq $(stat -f %z /home/ftp/ftpd.regress)

==== cleanup-ftpd ====
doas -n pkill tcpserver || true
doas -n pkill ftpd || true
doas -n rm -f /home/ftp/ftpd.regress