Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Apr 2014 01:59:42 +0000
From:      "Peel, Casey" <casey.peel@isilon.com>
To:        Julio Merino <jmmv@freebsd.org>
Cc:        "freebsd-testing@freebsd.org" <freebsd-testing@freebsd.org>, "bdrewery@FreeBSD.org" <bdrewery@FreeBSD.org>
Subject:   RE: Please provide process for small, targeted fixes in tools/regression
Message-ID:  <16437CC5729B5345AF77F816513376E820BAFE8E@MX103CL02.corp.emc.com>
In-Reply-To: <5F1D5D49-5F39-4EAC-89D5-E4D10FB3B01E@freebsd.org>
References:  <16437CC5729B5345AF77F816513376E820BAF854@MX103CL02.corp.emc.com> <5F1D5D49-5F39-4EAC-89D5-E4D10FB3B01E@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--_004_16437CC5729B5345AF77F816513376E820BAFE8EMX103CL02corpem_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Exellent, thanks Julio.

Attached are 3 self-contained diffs, one per directory. Descriptions of the=
 changes:
* flock - .c changes to fix compiler errors; .t to wrap flock binary for in=
tegrating with prove
* geom_mirror - gmirror won't let you remove the last partition in a mirror=
 which all of these testcases do and thus fail (note that I've got these te=
stcases plus other gmirror testcases already moved over to ATF and going th=
rough internal code reviews now, so maybe we just want to discard this)
* kqueue - kqtest outputs files in TAP-consumable format, this is a .t file=
 to run it through prove

These were an intial salvo at getting existing tests working for our intern=
al regression. I'm sure we'll be looking at others as well. If someone can =
just review the changes, I can get someone internally to commit them if nec=
ssary (although these will take more time to review than commit given how s=
mall they are).

-- Casey

--
Performance Test Ninja
casey.peel@isilon.com / 206.777.7945

-----Original Message-----
From: Julio Merino [mailto:jmmv@meroh.net] On Behalf Of Julio Merino
Sent: Friday, April 11, 2014 12:02 PM
To: Peel, Casey
Cc: freebsd-testing@freebsd.org; bdrewery@FreeBSD.org
Subject: Re: Please provide process for small, targeted fixes in tools/regr=
ession

Hello Casey,

On Apr 11, 2014, at 13:56, Peel, Casey <casey.peel@isilon.com> wrote:

> I have several small, targted fixes to files in src/tools/regression/ to:
>=20
> 1)      enable existing *.t tests to run that were failing

This is not "too hard" but is certainly tricky.

I did a bunch of them about a month ago but didn't write a lot of documenta=
tion on the topic.  You can find some useful notes in http://goo.gl/rWpdDR =
though, which includes slides and accompanying notes for the tutorial I gav=
e at AsiaBSDCon.  Most of that ought to be converted to actual documentatio=
n of course.

The very first step, which is arguably the hardest, is to get the tests to =
work while running them with the prove(1) tool.  This has several implicati=
ons (an important one being that any testing logic must be removed from the=
 Makefile).

> 2)      add new *.t files for directories that enable running TAP-enabled=
 binaries through prove

That's good as a second step.  I suspect these new *.t files will just invo=
ke another script (the actual test), which means the .t files will be remov=
ed when the tests are hooked into the test suite.  But that's fine: it's be=
tter to get them running with prove(1) first because then the move is simpl=
e enough.

> 3)      *.c updates to remove clang compiler warnings

Yes please.

Once the tests run with prove(1) and pass, we can bundle them into the test=
 suite.  This roughly involves moving the code to corresponding 'tests/' su=
bdirectories, writing Makefiles and updating the mtree.  Mostly mechanical =
(but very annoying when the tests provide tons of data files; see usr.bin/m=
ake/tests/).

> Can someone please provide a process for getting these approved and commi=
tted in a timely manner? I would prefer to get these upstream and then pull=
 them down if at all possible, but I simply don't have time for these to la=
nguish for weeks in a committee.
>=20
> Isilon has BSD committers (eg: bdrewery) I can leverage if that would be =
more expedient but given these are all testing-centric it seems like gettin=
g approval from one or more people on freebsd-testing would be best.

If you can get self-contained diffs, I can try to get them in for you (but =
can't make any promises as my time for FreeBSD varies significantly week to=
 week...)

For simplicity of review, I'd appreciate at least one patch for every subdi=
rectory within tools/regression/foo/bar/ with at least one patch to get the=
 first tests up and running first with prove(1).  More patches are better!

The move of the fixed tests to the new infrastructure (aka the boilerplate =
work) is something I may be able to help with.

--_004_16437CC5729B5345AF77F816513376E820BAFE8EMX103CL02corpem_
Content-Type: application/octet-stream; name="flock.diff"
Content-Description: flock.diff
Content-Disposition: attachment; filename="flock.diff"; size=1239;
	creation-date="Sat, 12 Apr 2014 01:56:33 GMT";
	modification-date="Fri, 11 Apr 2014 19:10:05 GMT"
Content-Transfer-Encoding: base64

SW5kZXg6IGZyZWVic2QtaGVhZC90b29scy9yZWdyZXNzaW9uL2ZpbGUvZmxvY2svZmxvY2suYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBmcmVlYnNkLWhlYWQub3JpZy90b29scy9yZWdyZXNzaW9uL2ZpbGUvZmxv
Y2svZmxvY2suYworKysgZnJlZWJzZC1oZWFkL3Rvb2xzL3JlZ3Jlc3Npb24vZmlsZS9mbG9jay9m
bG9jay5jCkBAIC01NSw3ICs1NSw3IEBACiAjZW5kaWYKICNlbmRpZgogCi1pbnQgdmVyYm9zZSA9
IDA7CitzdGF0aWMgaW50IHZlcmJvc2UgPSAwOwogCiBzdGF0aWMgaW50CiBtYWtlX2ZpbGUoY29u
c3QgY2hhciAqcGF0aG5hbWUsIG9mZl90IHN6KQpAQCAtMTUxNCw3ICsxNTE0LDcgQEAgc3RydWN0
IHRlc3QgewogCWludCBpbnRyOwkJLyogbm9uLXplcm8gaWYgdGhlIHRlc3QgaW50ZXJydXB0cyBh
IGxvY2sgKi8KIH07CiAKLXN0cnVjdCB0ZXN0IHRlc3RzW10gPSB7CitzdGF0aWMgc3RydWN0IHRl
c3QgdGVzdHNbXSA9IHsKIAl7CXRlc3QxLAkJMSwJMAl9LAogCXsJdGVzdDIsCQkyLAkwCX0sCiAJ
ewl0ZXN0MywJCTMsCTEJfSwKQEAgLTE1MzIsNyArMTUzMiw3IEBAIHN0cnVjdCB0ZXN0IHRlc3Rz
W10gPSB7CiAJewl0ZXN0MTUsCQkxNSwJMQl9LAogCXsJdGVzdDE2LAkJMTYsCTEJfSwKIH07Ci1p
bnQgdGVzdF9jb3VudCA9IHNpemVvZih0ZXN0cykgLyBzaXplb2YodGVzdHNbMF0pOworc3RhdGlj
IGludCB0ZXN0X2NvdW50ID0gc2l6ZW9mKHRlc3RzKSAvIHNpemVvZih0ZXN0c1swXSk7CiAKIGlu
dAogbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQpJbmRleDogZnJlZWJzZC1oZWFk
L3Rvb2xzL3JlZ3Jlc3Npb24vZmlsZS9mbG9jay9mbG9jay50Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYv
bnVsbAorKysgZnJlZWJzZC1oZWFkL3Rvb2xzL3JlZ3Jlc3Npb24vZmlsZS9mbG9jay9mbG9jay50
CkBAIC0wLDAgKzEsMTQgQEAKKyMhL2Jpbi9zaAorCitlY2hvICIxLi4xNiIKKworbWFrZSA+IC9k
ZXYvbnVsbCB8fCBleGl0IDEKKworZm9yIG4gaW4gYHNlcSAxIDE2YDsgZG8KKwkuL2Zsb2NrIC4g
JG4gfCBncmVwIC1xIFNVQ0NFRUQKKwlpZiBbICQ/IC1lcSAwIF07IHRoZW4KKwkJZWNobyAib2sg
JG4iCisJZWxzZQorCQllY2hvICJub3Qgb2sgJG4iCisJZmkKK2RvbmUK

--_004_16437CC5729B5345AF77F816513376E820BAFE8EMX103CL02corpem_
Content-Type: application/octet-stream; name="geom_mirror.diff"
Content-Description: geom_mirror.diff
Content-Disposition: attachment; filename="geom_mirror.diff"; size=4399;
	creation-date="Sat, 12 Apr 2014 01:56:33 GMT";
	modification-date="Fri, 11 Apr 2014 19:10:05 GMT"
Content-Transfer-Encoding: base64

SW5kZXg6IGZyZWVic2QtaGVhZC90b29scy9yZWdyZXNzaW9uL2dlb21fbWlycm9yL3Rlc3QtMS50
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGZyZWVic2QtaGVhZC5vcmlnL3Rvb2xzL3JlZ3Jlc3Npb24vZ2VvbV9t
aXJyb3IvdGVzdC0xLnQKKysrIGZyZWVic2QtaGVhZC90b29scy9yZWdyZXNzaW9uL2dlb21fbWly
cm9yL3Rlc3QtMS50CkBAIC0yNiw5ICsyNiw3IEBAIGVsc2UKIAllY2hvICJub3Qgb2sgMSIKIGZp
CiAKLWdtaXJyb3IgcmVtb3ZlICRuYW1lIG1kJHt1czB9Ci1nbWlycm9yIHJlbW92ZSAkbmFtZSBt
ZCR7dXMxfQotZ21pcnJvciByZW1vdmUgJG5hbWUgbWQke3VzMn0KK2dtaXJyb3IgZGVzdHJveSAk
bmFtZQogbWRjb25maWcgLWQgLXUgJHVzMAogbWRjb25maWcgLWQgLXUgJHVzMQogbWRjb25maWcg
LWQgLXUgJHVzMgpJbmRleDogZnJlZWJzZC1oZWFkL3Rvb2xzL3JlZ3Jlc3Npb24vZ2VvbV9taXJy
b3IvdGVzdC0yLnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gZnJlZWJzZC1oZWFkLm9yaWcvdG9vbHMvcmVncmVz
c2lvbi9nZW9tX21pcnJvci90ZXN0LTIudAorKysgZnJlZWJzZC1oZWFkL3Rvb2xzL3JlZ3Jlc3Np
b24vZ2VvbV9taXJyb3IvdGVzdC0yLnQKQEAgLTUyLDcgKzUyLDcgQEAgZWxzZQogCWVjaG8gIm9r
IDQiCiBmaQogCi1nbWlycm9yIHJlbW92ZSAkbmFtZSBtZCR7dXMwfSBtZCR7dXMxfSBtZCR7dXMy
fQorZ21pcnJvciBkZXN0cm95ICRuYW1lCiBtZGNvbmZpZyAtZCAtdSAkdXMwCiBtZGNvbmZpZyAt
ZCAtdSAkdXMxCiBtZGNvbmZpZyAtZCAtdSAkdXMyCkluZGV4OiBmcmVlYnNkLWhlYWQvdG9vbHMv
cmVncmVzc2lvbi9nZW9tX21pcnJvci90ZXN0LTMudAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBmcmVlYnNkLWhl
YWQub3JpZy90b29scy9yZWdyZXNzaW9uL2dlb21fbWlycm9yL3Rlc3QtMy50CisrKyBmcmVlYnNk
LWhlYWQvdG9vbHMvcmVncmVzc2lvbi9nZW9tX21pcnJvci90ZXN0LTMudApAQCAtMyw3ICszLDcg
QEAKIAogLiBgZGlybmFtZSAkMGAvY29uZi5zaAogCi1lY2hvICIxLi41IgorZWNobyAiMS4uNCIK
IAogYmFsYW5jZT0icm91bmQtcm9iaW4iCiB1czA9NDUKQEAgLTQ5LDE5ICs0OSwxMyBAQCBlbHNl
CiAJZWNobyAib2sgMyIKIGZpCiAKLWdtaXJyb3IgcmVtb3ZlICRuYW1lIG1kJHt1czJ9Ci1kZCBp
Zj0vZGV2L21pcnJvci8ke25hbWV9IG9mPSR7ZHN0fSBicz0kZGRicyBjb3VudD0kbmJsb2NrczIg
Pi9kZXYvbnVsbCAyPiYxCi1pZiBbIGBtZDUgLXEgJHtzcmN9YCAhPSBgbWQ1IC1xICR7ZHN0fWAg
XTsgdGhlbgotCWVjaG8gIm5vdCBvayA0IgotZWxzZQotCWVjaG8gIm9rIDQiCi1maQorZ21pcnJv
ciBkZXN0cm95ICRuYW1lCiAKICMgbWlycm9yLyR7bmFtZX0gc2hvdWxkIGJlIHJlbW92ZWQuCiBp
ZiBbIC1jIC9kZXYvJHtuYW1lfSBdOyB0aGVuCi0JZWNobyAibm90IG9rIDUiCisJZWNobyAibm90
IG9rIDQiCiBlbHNlCi0JZWNobyAib2sgNSIKKwllY2hvICJvayA0IgogZmkKIAogbWRjb25maWcg
LWQgLXUgJHVzMApJbmRleDogZnJlZWJzZC1oZWFkL3Rvb2xzL3JlZ3Jlc3Npb24vZ2VvbV9taXJy
b3IvdGVzdC00LnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gZnJlZWJzZC1oZWFkLm9yaWcvdG9vbHMvcmVncmVz
c2lvbi9nZW9tX21pcnJvci90ZXN0LTQudAorKysgZnJlZWJzZC1oZWFkL3Rvb2xzL3JlZ3Jlc3Np
b24vZ2VvbV9taXJyb3IvdGVzdC00LnQKQEAgLTMsNyArMyw3IEBACiAKIC4gYGRpcm5hbWUgJDBg
L2NvbmYuc2gKIAotZWNobyAiMS4uNSIKK2VjaG8gIjEuLjQiCiAKIGJhbGFuY2U9ImxvYWQiCiB1
czA9NDUKQEAgLTQ5LDE5ICs0OSwxMyBAQCBlbHNlCiAJZWNobyAib2sgMyIKIGZpCiAKLWdtaXJy
b3IgcmVtb3ZlICRuYW1lIG1kJHt1czJ9Ci1kZCBpZj0vZGV2L21pcnJvci8ke25hbWV9IG9mPSR7
ZHN0fSBicz0kZGRicyBjb3VudD0kbmJsb2NrczIgPi9kZXYvbnVsbCAyPiYxCi1pZiBbIGBtZDUg
LXEgJHtzcmN9YCAhPSBgbWQ1IC1xICR7ZHN0fWAgXTsgdGhlbgotCWVjaG8gIm5vdCBvayA0Igot
ZWxzZQotCWVjaG8gIm9rIDQiCi1maQorZ21pcnJvciBkZXN0cm95ICRuYW1lCiAKICMgbWlycm9y
LyR7bmFtZX0gc2hvdWxkIGJlIHJlbW92ZWQuCiBpZiBbIC1jIC9kZXYvJHtuYW1lfSBdOyB0aGVu
Ci0JZWNobyAibm90IG9rIDUiCisJZWNobyAibm90IG9rIDQiCiBlbHNlCi0JZWNobyAib2sgNSIK
KwllY2hvICJvayA0IgogZmkKIAogbWRjb25maWcgLWQgLXUgJHVzMApJbmRleDogZnJlZWJzZC1o
ZWFkL3Rvb2xzL3JlZ3Jlc3Npb24vZ2VvbV9taXJyb3IvdGVzdC01LnQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
ZnJlZWJzZC1oZWFkLm9yaWcvdG9vbHMvcmVncmVzc2lvbi9nZW9tX21pcnJvci90ZXN0LTUudAor
KysgZnJlZWJzZC1oZWFkL3Rvb2xzL3JlZ3Jlc3Npb24vZ2VvbV9taXJyb3IvdGVzdC01LnQKQEAg
LTMsNyArMyw3IEBACiAKIC4gYGRpcm5hbWUgJDBgL2NvbmYuc2gKIAotZWNobyAiMS4uNSIKK2Vj
aG8gIjEuLjQiCiAKIGJhbGFuY2U9InNwbGl0IgogdXMwPTQ1CkBAIC00OSwxOSArNDksMTMgQEAg
ZWxzZQogCWVjaG8gIm9rIDMiCiBmaQogCi1nbWlycm9yIHJlbW92ZSAkbmFtZSBtZCR7dXMyfQot
ZGQgaWY9L2Rldi9taXJyb3IvJHtuYW1lfSBvZj0ke2RzdH0gYnM9JGRkYnMgY291bnQ9JG5ibG9j
a3MyID4vZGV2L251bGwgMj4mMQotaWYgWyBgbWQ1IC1xICR7c3JjfWAgIT0gYG1kNSAtcSAke2Rz
dH1gIF07IHRoZW4KLQllY2hvICJub3Qgb2sgNCIKLWVsc2UKLQllY2hvICJvayA0IgotZmkKK2dt
aXJyb3IgZGVzdHJveSAkbmFtZQogCiAjIG1pcnJvci8ke25hbWV9IHNob3VsZCBiZSByZW1vdmVk
LgogaWYgWyAtYyAvZGV2LyR7bmFtZX0gXTsgdGhlbgotCWVjaG8gIm5vdCBvayA1IgorCWVjaG8g
Im5vdCBvayA0IgogZWxzZQotCWVjaG8gIm9rIDUiCisJZWNobyAib2sgNCIKIGZpCiAKIG1kY29u
ZmlnIC1kIC11ICR1czAKSW5kZXg6IGZyZWVic2QtaGVhZC90b29scy9yZWdyZXNzaW9uL2dlb21f
bWlycm9yL3Rlc3QtNi50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGZyZWVic2QtaGVhZC5vcmlnL3Rvb2xzL3Jl
Z3Jlc3Npb24vZ2VvbV9taXJyb3IvdGVzdC02LnQKKysrIGZyZWVic2QtaGVhZC90b29scy9yZWdy
ZXNzaW9uL2dlb21fbWlycm9yL3Rlc3QtNi50CkBAIC00NSw3ICs0NSw3IEBAIGVsc2UKIAllY2hv
ICJvayAyIgogZmkKIAotZ21pcnJvciByZW1vdmUgJG5hbWUgbWQke3VzMH0gbWQke3VzMX0gbWQk
e3VzMn0KK2dtaXJyb3IgZGVzdHJveSAkbmFtZQogbWRjb25maWcgLWQgLXUgJHVzMAogbWRjb25m
aWcgLWQgLXUgJHVzMQogbWRjb25maWcgLWQgLXUgJHVzMgpJbmRleDogZnJlZWJzZC1oZWFkL3Rv
b2xzL3JlZ3Jlc3Npb24vZ2VvbV9taXJyb3IvdGVzdC03LnQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZnJlZWJz
ZC1oZWFkLm9yaWcvdG9vbHMvcmVncmVzc2lvbi9nZW9tX21pcnJvci90ZXN0LTcudAorKysgZnJl
ZWJzZC1oZWFkL3Rvb2xzL3JlZ3Jlc3Npb24vZ2VvbV9taXJyb3IvdGVzdC03LnQKQEAgLTMsNyAr
Myw3IEBACiAKIC4gYGRpcm5hbWUgJDBgL2NvbmYuc2gKIAotZWNobyAiMS4uNSIKK2VjaG8gIjEu
LjQiCiAKIGJhbGFuY2U9InByZWZlciIKIHVzMD00NQpAQCAtNDksMTkgKzQ5LDEzIEBAIGVsc2UK
IAllY2hvICJvayAzIgogZmkKIAotZ21pcnJvciByZW1vdmUgJG5hbWUgbWQke3VzMn0KLWRkIGlm
PS9kZXYvbWlycm9yLyR7bmFtZX0gb2Y9JHtkc3R9IGJzPSRkZGJzIGNvdW50PSRuYmxvY2tzMiA+
L2Rldi9udWxsIDI+JjEKLWlmIFsgYG1kNSAtcSAke3NyY31gICE9IGBtZDUgLXEgJHtkc3R9YCBd
OyB0aGVuCi0JZWNobyAibm90IG9rIDQiCi1lbHNlCi0JZWNobyAib2sgNCIKLWZpCitnbWlycm9y
IGRlc3Ryb3kgJG5hbWUKIAogIyBtaXJyb3IvJHtuYW1lfSBzaG91bGQgYmUgcmVtb3ZlZC4KIGlm
IFsgLWMgL2Rldi8ke25hbWV9IF07IHRoZW4KLQllY2hvICJub3Qgb2sgNSIKKwllY2hvICJub3Qg
b2sgNCIKIGVsc2UKLQllY2hvICJvayA1IgorCWVjaG8gIm9rIDQiCiBmaQogCiBtZGNvbmZpZyAt
ZCAtdSAkdXMwCg==

--_004_16437CC5729B5345AF77F816513376E820BAFE8EMX103CL02corpem_
Content-Type: application/octet-stream; name="kqueue.diff"
Content-Description: kqueue.diff
Content-Disposition: attachment; filename="kqueue.diff"; size=474;
	creation-date="Sat, 12 Apr 2014 01:56:33 GMT";
	modification-date="Fri, 11 Apr 2014 19:10:05 GMT"
Content-Transfer-Encoding: base64

SW5kZXg6IGZyZWVic2QtaGVhZC90b29scy9yZWdyZXNzaW9uL2txdWV1ZS9rcXRlc3QudAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSAvZGV2L251bGwKKysrIGZyZWVic2QtaGVhZC90b29scy9yZWdyZXNzaW9uL2tx
dWV1ZS9rcXRlc3QudApAQCAtMCwwICsxLDE2IEBACisjIS9iaW4vc2gKKworbWFrZSA+IC9kZXYv
bnVsbCB8fCBleGl0IDEKKworLi9rcXRlc3QgfCB3aGlsZSByZWFkIGxpbmU7IGRvCisJZWNobyAk
bGluZSB8IGdyZXAgLXEgcGFzc2VkCisJaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisJCWVjaG8gIm9r
IgorCWZpCisKKwllY2hvICRsaW5lIHwgZ3JlcCAtcSAndGVzdHMgY29tcGxldGVkJworCWlmIFsg
JD8gLWVxIDAgXTsgdGhlbgorCQllY2hvIC1uICIxLi4iCisJCWVjaG8gJGxpbmUgfCBjdXQgLWQn
ICcgLWYzCisJZmkKK2RvbmUK

--_004_16437CC5729B5345AF77F816513376E820BAFE8EMX103CL02corpem_--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?16437CC5729B5345AF77F816513376E820BAFE8E>