bin/143017: watch(8): fatal: cannot attach to tty
Mark Johnston
markjdb at gmail.com
Mon Mar 12 22:00:36 UTC 2012
The following reply was made to PR bin/143017; it has been noted by GNATS.
From: Mark Johnston <markjdb at gmail.com>
To: Ed Schouten <ed at 80386.nl>
Cc: bug-followup at freebsd.org, dummy at smtp.ru
Subject: Re: bin/143017: watch(8): fatal: cannot attach to tty
Date: Mon, 12 Mar 2012 17:54:01 -0400
--20cf307d0576be5e4204bb12c767
Content-Type: text/plain; charset=ISO-8859-1
On Mon, Mar 12, 2012 at 5:52 PM, Mark Johnston <markjdb at gmail.com> wrote:
> On Mon, Mar 12, 2012 at 5:27 PM, Ed Schouten <ed at 80386.nl> wrote:
>> Sure, but in that case you can simply use isatty() to distinguish the
>> special treatment. What I mean is that you can only call watch(8) by
>> passing the TTY used on the command line.
>
> Ok, fair enough. I replaced opt_interactive with isatty(std_out)
> checks. One check was unnecessary - the line with a FD_ISSET check. I
> also added a check in unset_tty() so that the terminal doesn't break
> if we bail with ^C.
>
> So the difference now is that in non-interactive mode, we're not
> interested in stdin, and the tty has to be passed on the command line.
>
>> Also I see you've simplified the code that dynamically scales the input
>> buffer size. Though I think that's a good idea, I do think we should
>> increase BUF_SIZE to something higher. Setting it to 4 KB or something
>> shouldn't harm, right?
>
> Yeah, good point. I've attached the regenerated patch.
...
--20cf307d0576be5e4204bb12c767
Content-Type: text/plain; charset=US-ASCII; name="watch_cleanup.patch.txt"
Content-Disposition: attachment; filename="watch_cleanup.patch.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gzq1uetj0
ZGlmZiAtLWdpdCBhL3Vzci5zYmluL3dhdGNoL3dhdGNoLjggYi91c3Iuc2Jpbi93YXRjaC93YXRj
aC44CmluZGV4IDk5YzZiNmYuLjc0NzQzZTkgMTAwNjQ0Ci0tLSBhL3Vzci5zYmluL3dhdGNoL3dh
dGNoLjgKKysrIGIvdXNyLnNiaW4vd2F0Y2gvd2F0Y2guOApAQCAtNTMsMTMgKzUzLDYgQEAgV2l0
aG91dCB0aGlzIG9wdGlvbiwKIHdpbGwgYXR0ZW1wdCB0byBmaW5kIHRoZSBuZXh0IGF2YWlsYWJs
ZQogLlhyIHNucCA0CiBkZXZpY2UuCi0uSXQgRmwgaQotRm9yY2UgaW50ZXJhY3RpdmUgbW9kZS4K
LUludGVyYWN0aXZlIG1vZGUgaXMgYSBkZWZhdWx0IGlmCi0uTm0KLWlzIHN0YXJ0ZWQgZnJvbSBh
IHR0eS4KLUlmIG91dHB1dCBpcyByZWRpcmVjdGVkIHRvIGEgZmlsZSwgaW50ZXJhY3RpdmUgbW9k
ZSBjYW4gc3RpbGwgYmUgcmVxdWVzdGVkCi1ieSBzcGVjaWZ5aW5nIHRoaXMgb3B0aW9uLgogLkl0
IEZsIG4KIERpc2FibGUgdGhlIGFiaWxpdHkgdG8gc3dpdGNoIHRoZSB3YXRjaGVkIHR0eSBpbnRl
cmFjdGl2ZWx5LgogVGhpcyBkaXNhYmxlcwpkaWZmIC0tZ2l0IGEvdXNyLnNiaW4vd2F0Y2gvd2F0
Y2guYyBiL3Vzci5zYmluL3dhdGNoL3dhdGNoLmMKaW5kZXggZTY5NTM0ZC4uMDQ4ZTM3MiAxMDA2
NDQKLS0tIGEvdXNyLnNiaW4vd2F0Y2gvd2F0Y2guYworKysgYi91c3Iuc2Jpbi93YXRjaC93YXRj
aC5jCkBAIC00NSw3ICs0NSw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNkZWZpbmUgTVNH
X05PV1JJVEUJIlNub29wIGRldmljZSBjaGFuZ2UgZHVlIHRvIHdyaXRlIGZhaWx1cmUuIgogCiAj
ZGVmaW5lIERFVl9OQU1FX0xFTgkxMDI0CS8qIGZvciAvZGV2L3R0eVhYKysgKi8KLSNkZWZpbmUg
TUlOX1NJWkUJMjU2CisjZGVmaW5lIEJVRl9TSVpFCTQwOTYKIAogI2RlZmluZSBDSFJfU1dJVENI
CTI0CS8qIEN0cmwrWAkgKi8KICNkZWZpbmUgQ0hSX0NMRUFSCTIzCS8qIEN0cmwrVgkgKi8KQEAg
LTU1LDcgKzU1LDYgQEAgc3RhdGljIHZvaWQJdGltZXN0YW1wKGNvbnN0IGNoYXIgKik7CiBzdGF0
aWMgdm9pZAlzZXRfdHR5KHZvaWQpOwogc3RhdGljIHZvaWQJdW5zZXRfdHR5KHZvaWQpOwogc3Rh
dGljIHZvaWQJZmF0YWwoaW50LCBjb25zdCBjaGFyICopOwotc3RhdGljIGludAlvcGVuX3NucCh2
b2lkKTsKIHN0YXRpYyB2b2lkCWNsZWFudXAoaW50KTsKIHN0YXRpYyB2b2lkCXVzYWdlKHZvaWQp
IF9fZGVhZDI7CiBzdGF0aWMgdm9pZAlzZXR1cF9zY3Iodm9pZCk7CkBAIC02Niw3ICs2NSw2IEBA
IHN0YXRpYyB2b2lkCWFza19kZXYoY2hhciAqLCBjb25zdCBjaGFyICopOwogCiBpbnQJCW9wdF9y
ZWNvbm5fY2xvc2UgPSAwOwogaW50CQlvcHRfcmVjb25uX29mbG93ID0gMDsKLWludAkJb3B0X2lu
dGVyYWN0aXZlID0gMTsKIGludAkJb3B0X3RpbWVzdGFtcCA9IDA7CiBpbnQJCW9wdF93cml0ZSA9
IDA7CiBpbnQJCW9wdF9ub19zd2l0Y2ggPSAwOwpAQCAtMTM0LDggKzEzMiw4IEBAIHNldF90dHko
dm9pZCkKIHN0YXRpYyB2b2lkCiB1bnNldF90dHkodm9pZCkKIHsKLQotCXRjc2V0YXR0cihzdGRf
aW4sIFRDU0FOT1csICZvdHR5KTsKKwlpZiAoaXNhdHR5KHN0ZF9vdXQpKQorCQl0Y3NldGF0dHIo
c3RkX2luLCBUQ1NBTk9XLCAmb3R0eSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDksMjYgKzE0
Nyw2IEBAIGZhdGFsKGludCBlcnJvciwgY29uc3QgY2hhciAqYnVmKQogCQlleGl0KGVycm9yKTsK
IH0KIAotc3RhdGljIGludAotb3Blbl9zbnAodm9pZCkKLXsKLQlpbnQJCWYsIG1vZGU7Ci0KLQlp
ZiAob3B0X3dyaXRlKQotCQltb2RlID0gT19SRFdSOwotCWVsc2UKLQkJbW9kZSA9IE9fUkRPTkxZ
OwotCi0JaWYgKG9wdF9zbnBkZXYgPT0gTlVMTCkKLQkJZiA9IG9wZW4oX1BBVEhfREVWICJzbnAi
LCBtb2RlKTsKLQllbHNlCi0JCWYgPSBvcGVuKG9wdF9zbnBkZXYsIG1vZGUpOwotCWlmIChmID09
IC0xKQotCQlmYXRhbChFWF9PU0ZJTEUsICJjYW5ub3Qgb3BlbiBzbm9vcCBkZXZpY2UiKTsKLQot
CXJldHVybiAoZik7Ci19Ci0KIHN0YXRpYyB2b2lkCiBjbGVhbnVwKGludCBzaWdubyBfX3VudXNl
ZCkKIHsKQEAgLTE5Myw3ICsxNzEsNyBAQCBzZXR1cF9zY3Iodm9pZCkKIHsKIAljaGFyCQkqY2J1
ZiA9IGdidWYsICp0ZXJtOwogCi0JaWYgKCFvcHRfaW50ZXJhY3RpdmUpCisJaWYgKCFpc2F0dHko
c3RkX291dCkpCiAJCXJldHVybjsKIAlpZiAoKHRlcm0gPSBnZXRlbnYoIlRFUk0iKSkpCiAJCWlm
ICh0Z2V0ZW50KHRidWYsIHRlcm0pID09IDEpCkBAIC0yMDYsMjUgKzE4NCwzMyBAQCBzZXR1cF9z
Y3Iodm9pZCkKIHN0YXRpYyB2b2lkCiBkZXRhY2hfc25wKHZvaWQpCiB7Ci0JaW50CQlmZDsKIAot
CWZkID0gLTE7Ci0JaW9jdGwoc25wX2lvLCBTTlBTVFRZLCAmZmQpOworCWNsb3NlKHNucF9pbyk7
CiB9CiAKIHN0YXRpYyB2b2lkCiBhdHRhY2hfc25wKHZvaWQpCiB7Ci0JaW50CQlzbnBfdHR5Owor
CWludCBzbnBfdHR5LCBtb2RlOworCisJaWYgKG9wdF93cml0ZSkKKwkJbW9kZSA9IE9fUkRXUjsK
KwllbHNlCisJCW1vZGUgPSBPX1JET05MWTsKKworCWlmIChvcHRfc25wZGV2ID09IE5VTEwpCisJ
CXNucF9pbyA9IG9wZW4oX1BBVEhfREVWICJzbnAiLCBtb2RlKTsKKwllbHNlCisJCXNucF9pbyA9
IG9wZW4ob3B0X3NucGRldiwgbW9kZSk7CisJaWYgKHNucF9pbyA9PSAtMSkKKwkJZmF0YWwoRVhf
T1NGSUxFLCAiY2Fubm90IG9wZW4gc25vb3AgZGV2aWNlIik7CiAKIAlzbnBfdHR5ID0gb3Blbihk
ZXZfbmFtZSwgT19SRE9OTFkgfCBPX05PTkJMT0NLKTsKLQlpZiAoc25wX3R0eSA8IDApCisJaWYg
KHNucF90dHkgPT0gLTEpCiAJCWZhdGFsKEVYX0RBVEFFUlIsICJjYW4ndCBvcGVuIGRldmljZSIp
OwogCWlmIChpb2N0bChzbnBfaW8sIFNOUFNUVFksICZzbnBfdHR5KSAhPSAwKQogCQlmYXRhbChF
WF9VTkFWQUlMQUJMRSwgImNhbm5vdCBhdHRhY2ggdG8gdHR5Iik7CiAJY2xvc2Uoc25wX3R0eSk7
Ci0JaWYgKG9wdF90aW1lc3RhbXApCi0JCXRpbWVzdGFtcCgiTG9nZ2luZyBTdGFydGVkLiIpOwog
fQogCiBzdGF0aWMgdm9pZApAQCAtMjY5LDcgKzI1NSw3IEBAIGFza19kZXYoY2hhciAqZGJ1Ziwg
Y29uc3QgY2hhciAqbXNnKQogCWVsc2UKIAkJcHJpbnRmKCJFbnRlciBkZXZpY2UgbmFtZToiKTsK
IAotCWlmIChmZ2V0cyhidWYsIERFVl9OQU1FX0xFTiAtIDEsIHN0ZGluKSkgeworCWlmIChmZ2V0
cyhidWYsIERFVl9OQU1FX0xFTiwgc3RkaW4pKSB7CiAJCWxlbiA9IHN0cmxlbihidWYpOwogCQlp
ZiAoYnVmW2xlbiAtIDFdID09ICdcbicpCiAJCQlidWZbbGVuIC0gMV0gPSAnXDAnOwpAQCAtMjg1
LDE4ICsyNzEsMTIgQEAgaW50CiBtYWluKGludCBhYywgY2hhciAqYXZbXSkKIHsKIAlpbnQJCWNo
LCByZXMsIHJ2LCBucmVhZDsKLQlzaXplX3QJCWJfc2l6ZSA9IE1JTl9TSVpFOwotCWNoYXIJCSpi
dWYsIGNoYltSRUFEQl9MRU5dOworCWNoYXIJCWJ1ZltCVUZfU0laRV0sIGNoYltSRUFEQl9MRU5d
OwogCWZkX3NldAkJZmRfczsKIAogCSh2b2lkKSBzZXRsb2NhbGUoTENfVElNRSwgIiIpOwogCi0J
aWYgKGlzYXR0eShzdGRfb3V0KSkKLQkJb3B0X2ludGVyYWN0aXZlID0gMTsKLQllbHNlCi0JCW9w
dF9pbnRlcmFjdGl2ZSA9IDA7Ci0KLQl3aGlsZSAoKGNoID0gZ2V0b3B0KGFjLCBhdiwgIldjaW90
bmY6IikpICE9IC0xKQorCXdoaWxlICgoY2ggPSBnZXRvcHQoYWMsIGF2LCAiV2NvdG5mOiIpKSAh
PSAtMSkKIAkJc3dpdGNoIChjaCkgewogCQljYXNlICdXJzoKIAkJCW9wdF93cml0ZSA9IDE7CkBA
IC0zMDQsOSArMjg0LDYgQEAgbWFpbihpbnQgYWMsIGNoYXIgKmF2W10pCiAJCWNhc2UgJ2MnOgog
CQkJb3B0X3JlY29ubl9jbG9zZSA9IDE7CiAJCQlicmVhazsKLQkJY2FzZSAnaSc6Ci0JCQlvcHRf
aW50ZXJhY3RpdmUgPSAxOwotCQkJYnJlYWs7CiAJCWNhc2UgJ28nOgogCQkJb3B0X3JlY29ubl9v
ZmxvdyA9IDE7CiAJCQlicmVhazsKQEAgLTMyNCw0MyArMzAxLDM5IEBAIG1haW4oaW50IGFjLCBj
aGFyICphdltdKQogCQkJdXNhZ2UoKTsKIAkJfQogCisJaWYgKGFjIC0gb3B0aW5kID4gMSkKKwkJ
dXNhZ2UoKTsKKwogCWlmIChtb2RmaW5kKCJzbnAiKSA9PSAtMSkKIAkJaWYgKGtsZGxvYWQoInNu
cCIpID09IC0xIHx8IG1vZGZpbmQoInNucCIpID09IC0xKQogCQkJd2Fybigic25wIG1vZHVsZSBu
b3QgYXZhaWxhYmxlIik7CiAKIAlzaWduYWwoU0lHSU5ULCBjbGVhbnVwKTsKIAotCXNucF9pbyA9
IG9wZW5fc25wKCk7CiAJc2V0dXBfc2NyKCk7CiAKIAlpZiAoKihhdiArPSBvcHRpbmQpID09IE5V
TEwpIHsKLQkJaWYgKG9wdF9pbnRlcmFjdGl2ZSAmJiAhb3B0X25vX3N3aXRjaCkKKwkJaWYgKGlz
YXR0eShzdGRfb3V0KSAmJiAhb3B0X25vX3N3aXRjaCkKIAkJCWFza19kZXYoZGV2X25hbWUsIE1T
R19JTklUKTsKIAkJZWxzZQotCQkJZmF0YWwoRVhfREFUQUVSUiwgIm5vIGRldmljZSBuYW1lIGdp
dmVuIik7CisJCQllcnJ4KEVYX0RBVEFFUlIsICJubyBkZXZpY2UgbmFtZSBnaXZlbiIpOwogCX0g
ZWxzZQogCQlzdHJuY3B5KGRldl9uYW1lLCAqYXYsIERFVl9OQU1FX0xFTik7Ci0KIAlzZXRfZGV2
KGRldl9uYW1lKTsKIAotCWlmICghKGJ1ZiA9IChjaGFyICopIG1hbGxvYyhiX3NpemUpKSkKLQkJ
ZmF0YWwoRVhfVU5BVkFJTEFCTEUsICJtYWxsb2MgZmFpbGVkIik7CisJaWYgKG9wdF90aW1lc3Rh
bXApCisJCXRpbWVzdGFtcCgiTG9nZ2luZyBTdGFydGVkLiIpOwogCiAJRkRfWkVSTygmZmRfcyk7
CiAKIAlmb3IgKDs7KSB7Ci0JCWlmIChvcHRfaW50ZXJhY3RpdmUpCisJCWlmIChpc2F0dHkoc3Rk
X291dCkpCiAJCQlGRF9TRVQoc3RkX2luLCAmZmRfcyk7CiAJCUZEX1NFVChzbnBfaW8sICZmZF9z
KTsKIAkJcmVzID0gc2VsZWN0KHNucF9pbyArIDEsICZmZF9zLCBOVUxMLCBOVUxMLCBOVUxMKTsK
LQkJaWYgKG9wdF9pbnRlcmFjdGl2ZSAmJiBGRF9JU1NFVChzdGRfaW4sICZmZF9zKSkgewotCi0J
CQlpZiAoKHJlcyA9IGlvY3RsKHN0ZF9pbiwgRklPTlJFQUQsICZucmVhZCkpICE9IDApCi0JCQkJ
ZmF0YWwoRVhfT1NFUlIsICJpb2N0bChGSU9OUkVBRCkiKTsKLQkJCWlmIChucmVhZCA+IFJFQURC
X0xFTikKLQkJCQlucmVhZCA9IFJFQURCX0xFTjsKLQkJCXJ2ID0gcmVhZChzdGRfaW4sIGNoYiwg
bnJlYWQpOwotCQkJaWYgKHJ2ID09IC0xIHx8IHJ2ICE9IG5yZWFkKQorCQlpZiAoRkRfSVNTRVQo
c3RkX2luLCAmZmRfcykpIHsKKwkJCXJ2ID0gcmVhZChzdGRfaW4sIGNoYiwgUkVBREJfTEVOKTsK
KwkJCWlmIChydiA9PSAtMSkKIAkJCQlmYXRhbChFWF9JT0VSUiwgInJlYWQgKHN0ZGluKSBmYWls
ZWQiKTsKIAogCQkJc3dpdGNoIChjaGJbMF0pIHsKQEAgLTM3Niw4ICszNDksOCBAQCBtYWluKGlu
dCBhYywgY2hhciAqYXZbXSkKIAkJCQl9CiAJCQlkZWZhdWx0OgogCQkJCWlmIChvcHRfd3JpdGUp
IHsKLQkJCQkJcnYgPSB3cml0ZShzbnBfaW8sIGNoYiwgbnJlYWQpOwotCQkJCQlpZiAocnYgPT0g
LTEgfHwgcnYgIT0gbnJlYWQpIHsKKwkJCQkJcnYgPSB3cml0ZShzbnBfaW8sIGNoYiwgcnYpOwor
CQkJCQlpZiAocnYgPT0gLTEpIHsKIAkJCQkJCWRldGFjaF9zbnAoKTsKIAkJCQkJCWlmIChvcHRf
bm9fc3dpdGNoKQogCQkJCQkJCWZhdGFsKEVYX0lPRVJSLApAQCAtMzkyLDE0ICszNjUsMTQgQEAg
bWFpbihpbnQgYWMsIGNoYXIgKmF2W10pCiAJCWlmICghRkRfSVNTRVQoc25wX2lvLCAmZmRfcykp
CiAJCQljb250aW51ZTsKIAotCQlpZiAoKHJlcyA9IGlvY3RsKHNucF9pbywgRklPTlJFQUQsICZu
cmVhZCkpICE9IDApCisJCWlmIChpb2N0bChzbnBfaW8sIEZJT05SRUFELCAmbnJlYWQpICE9IDAp
CiAJCQlmYXRhbChFWF9PU0VSUiwgImlvY3RsKEZJT05SRUFEKSIpOwogCiAJCXN3aXRjaCAobnJl
YWQpIHsKIAkJY2FzZSBTTlBfT0ZMT1c6CiAJCQlpZiAob3B0X3JlY29ubl9vZmxvdykKIAkJCQlh
dHRhY2hfc25wKCk7Ci0JCQllbHNlIGlmIChvcHRfaW50ZXJhY3RpdmUgJiYgIW9wdF9ub19zd2l0
Y2gpIHsKKwkJCWVsc2UgaWYgKGlzYXR0eShzdGRfb3V0KSAmJiAhb3B0X25vX3N3aXRjaCkgewog
CQkJCWFza19kZXYoZGV2X25hbWUsIE1TR19PRkxPVyk7CiAJCQkJc2V0X2RldihkZXZfbmFtZSk7
CiAJCQl9IGVsc2UKQEAgLTQwOSwzMCArMzgyLDE4IEBAIG1haW4oaW50IGFjLCBjaGFyICphdltd
KQogCQljYXNlIFNOUF9UVFlDTE9TRToKIAkJCWlmIChvcHRfcmVjb25uX2Nsb3NlKQogCQkJCWF0
dGFjaF9zbnAoKTsKLQkJCWVsc2UgaWYgKG9wdF9pbnRlcmFjdGl2ZSAmJiAhb3B0X25vX3N3aXRj
aCkgeworCQkJZWxzZSBpZiAoaXNhdHR5KHN0ZF9vdXQpICYmICFvcHRfbm9fc3dpdGNoKSB7CiAJ
CQkJYXNrX2RldihkZXZfbmFtZSwgTVNHX0NMT1NFRCk7CiAJCQkJc2V0X2RldihkZXZfbmFtZSk7
CiAJCQl9IGVsc2UKIAkJCQljbGVhbnVwKC0xKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgotCQkJ
aWYgKG5yZWFkIDwgKGJfc2l6ZSAvIDIpICYmIChiX3NpemUgLyAyKSA+IE1JTl9TSVpFKSB7Ci0J
CQkJZnJlZShidWYpOwotCQkJCWlmICghKGJ1ZiA9IChjaGFyICopIG1hbGxvYyhiX3NpemUgLyAy
KSkpCi0JCQkJCWZhdGFsKEVYX1VOQVZBSUxBQkxFLCAibWFsbG9jIGZhaWxlZCIpOwotCQkJCWJf
c2l6ZSA9IGJfc2l6ZSAvIDI7Ci0JCQl9Ci0JCQlpZiAobnJlYWQgPiBiX3NpemUpIHsKLQkJCQli
X3NpemUgPSAobnJlYWQgJSAyKSA/IChucmVhZCArIDEpIDogKG5yZWFkKTsKLQkJCQlmcmVlKGJ1
Zik7Ci0JCQkJaWYgKCEoYnVmID0gKGNoYXIgKikgbWFsbG9jKGJfc2l6ZSkpKQotCQkJCQlmYXRh
bChFWF9VTkFWQUlMQUJMRSwgIm1hbGxvYyBmYWlsZWQiKTsKLQkJCX0KLQkJCXJ2ID0gcmVhZChz
bnBfaW8sIGJ1ZiwgbnJlYWQpOwotCQkJaWYgKHJ2ID09IC0xIHx8IHJ2ICE9IG5yZWFkKQorCQkJ
cnYgPSByZWFkKHNucF9pbywgYnVmLCBCVUZfU0laRSk7CisJCQlpZiAocnYgPT0gLTEpCiAJCQkJ
ZmF0YWwoRVhfSU9FUlIsICJyZWFkIGZhaWxlZCIpOwotCQkJcnYgPSB3cml0ZShzdGRfb3V0LCBi
dWYsIG5yZWFkKTsKLQkJCWlmIChydiA9PSAtMSB8fCBydiAhPSBucmVhZCkKKwkJCXJ2ID0gd3Jp
dGUoc3RkX291dCwgYnVmLCBydik7CisJCQlpZiAocnYgPT0gLTEpCiAJCQkJZmF0YWwoRVhfSU9F
UlIsICJ3cml0ZSBmYWlsZWQiKTsKIAkJfQogCX0JCQkvKiBXaGlsZSAqLwo=
--20cf307d0576be5e4204bb12c767--
More information about the freebsd-bugs
mailing list