From nobody@FreeBSD.org  Wed Jan 20 13:42:33 2010
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 52620106566C
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 20 Jan 2010 13:42:33 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id 42E568FC14
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 20 Jan 2010 13:42:33 +0000 (UTC)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id o0KDgWZP092379
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 20 Jan 2010 13:42:32 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id o0KDgWd0092378;
	Wed, 20 Jan 2010 13:42:32 GMT
	(envelope-from nobody)
Message-Id: <201001201342.o0KDgWd0092378@www.freebsd.org>
Date: Wed, 20 Jan 2010 13:42:32 GMT
From: val <dummy@smtp.ru>
To: freebsd-gnats-submit@FreeBSD.org
Subject: watch: fatal: cannot attach to tty
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         143017
>Category:       bin
>Synopsis:       watch(8): fatal: cannot attach to tty
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jan 20 13:50:08 UTC 2010
>Closed-Date:    
>Last-Modified:  Mon Mar 12 22:00:34 UTC 2012
>Originator:     val
>Release:        8.0
>Organization:
>Environment:
FreeBSD sigma 8.0-STABLE FreeBSD 8.0-STABLE #76: Tue Jan 19 20:37:45 MSK 2010     root@sigma:/usr/obj/usr/src/sys/GENESIS  i386

>Description:
Cannot change snoop device by user request.
>How-To-Repeat:
1. Connect to any existing session by executing watch. For example:
#watch pts/2

2. Initiate change snoop device pressing Ctrl+X:

Snoop device change by user request.
Enter device name [/dev/pts/2]:
watch: fatal: cannot attach to tty

no matter what to write in field <device name>, result same.
>Fix:
Don't know.

>Release-Note:
>Audit-Trail:

From: Ed Schouten <ed@80386.nl>
To: bug-followup@FreeBSD.org, dummy@smtp.ru
Cc:  
Subject: Re: misc/143017: watch: fatal: cannot attach to tty
Date: Wed, 20 Jan 2010 22:28:28 +0100

 --FkmkrVfFsRoUs1wW
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 Content-Transfer-Encoding: quoted-printable
 
 Hello Val,
 
 Silly question, but have you made sure the snp module is properly
 loaded (kldload snp)?
 
 Greetings,
 --=20
  Ed Schouten <ed@80386.nl>
  WWW: http://80386.nl/
 
 --FkmkrVfFsRoUs1wW
 Content-Type: application/pgp-signature
 Content-Disposition: inline
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.10 (FreeBSD)
 
 iEYEARECAAYFAktXdXwACgkQ52SDGA2eCwUiKQCdGbZfdBs3Asut0E6IX2voCjBa
 qfsAnRuyPPup+6MPIfc8brYPIBsr0HPC
 =ROnF
 -----END PGP SIGNATURE-----
 
 --FkmkrVfFsRoUs1wW--

From: Ed Schouten <ed@80386.nl>
To: bug-followup@FreeBSD.org, dummy@smtp.ru
Cc:  
Subject: Re: misc/143017: watch: fatal: cannot attach to tty
Date: Wed, 20 Jan 2010 22:51:06 +0100

 --Pql/uPZNXIm1JCle
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 Content-Transfer-Encoding: quoted-printable
 
 * Ed Schouten <ed@80386.nl> wrote:
 > Silly question, but have you made sure the snp module is properly
 > loaded (kldload snp)?
 
 Oh wait, I misread. So you say switching to another device is broken?
 Yes. This is indeed true. It is no longer possible to use the same snoop
 instance to switch to another device. It is documented in the snp(4)
 manpage, but watch(8) hasn't been updated accordingly.
 
 I'll write a patch for watch(8) one of these days to just reopen
 /dev/snp.
 
 --=20
  Ed Schouten <ed@80386.nl>
  WWW: http://80386.nl/
 
 --Pql/uPZNXIm1JCle
 Content-Type: application/pgp-signature
 Content-Disposition: inline
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.10 (FreeBSD)
 
 iEYEARECAAYFAktXesoACgkQ52SDGA2eCwV+IwCbBYPwq0WDUESRcYRg1CIYMwFj
 1xQAnjLMEZrUCHLYSkgFMUqQKPVg7wrn
 =c69/
 -----END PGP SIGNATURE-----
 
 --Pql/uPZNXIm1JCle--

From: Mark <markjdb@gmail.com>
To: bug-followup@FreeBSD.org, dummy@smtp.ru, ed@80386.nl
Cc:  
Subject: Re: bin/143017: watch(8): fatal: cannot attach to tty
Date: Sat, 10 Mar 2012 03:50:21 -0500

 --20cf307ca40068543704badf9918
 Content-Type: text/plain; charset=ISO-8859-1
 
 How about something like the attached change to snp(4)? It has snp
 detach from the tty when the input to SNPSTTY is -1, which is what the
 man page says is supposed to happen.
 
 --20cf307ca40068543704badf9918
 Content-Type: text/plain; charset=US-ASCII; name="snp_changedev.patch.txt"
 Content-Disposition: attachment; filename="snp_changedev.patch.txt"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_gzmeziig0
 
 ZGlmZiAtLWdpdCBhL3N5cy9kZXYvc25wL3NucC5jIGIvc3lzL2Rldi9zbnAvc25wLmMKaW5kZXgg
 MWMwMjY2MC4uYWM3ZDA3YiAxMDA2NDQKLS0tIGEvc3lzL2Rldi9zbnAvc25wLmMKKysrIGIvc3lz
 L2Rldi9zbnAvc25wLmMKQEAgLTI0NiwxMiArMjQ2LDIzIEBAIHNucF9pb2N0bChzdHJ1Y3QgY2Rl
 diAqZGV2LCB1X2xvbmcgY21kLCBjYWRkcl90IGRhdGEsIGludCBmbGFncywKIAogCXN3aXRjaCAo
 Y21kKSB7CiAJY2FzZSBTTlBTVFRZOgotCQkvKiBCaW5kIFRUWSB0byBzbm9vcCBpbnN0YW5jZS4g
 Ki8KIAkJU05QX0xPQ0soKTsKLQkJaWYgKHNzLT5zbnBfdHR5ICE9IE5VTEwpIHsKKwkJaWYgKCoo
 aW50ICopZGF0YSA9PSAtMSkgeworCQkJaWYgKHNzLT5zbnBfdHR5ICE9IE5VTEwpIHsKKwkJCQl0
 cCA9IHNzLT5zbnBfdHR5OworCQkJCXR0eV9sb2NrKHRwKTsKKwkJCQl0dHlvdXRxX2ZyZWUoJnNz
 LT5zbnBfb3V0cSk7CisJCQkJdHR5aG9va191bnJlZ2lzdGVyKHNzLT5zbnBfdHR5KTsKKwkJCQlz
 cy0+c25wX3R0eSA9IE5VTEw7CisJCQl9CisJCQlTTlBfVU5MT0NLKCk7CisJCQlyZXR1cm4gKDAp
 OworCQl9IGVsc2UgaWYgKHNzLT5zbnBfdHR5ICE9IE5VTEwpIHsKIAkJCVNOUF9VTkxPQ0soKTsK
 IAkJCXJldHVybiAoRUJVU1kpOwogCQl9CisKKwkJLyogQmluZCBUVFkgdG8gc25vb3AgaW5zdGFu
 Y2UuICovCiAJCS8qCiAJCSAqIFhYWFJXIC8gWFhYSkE6IG5vIGNhcGFiaWxpdHkgY2hlY2sgaGVy
 ZS4KIAkJICovCg==
 --20cf307ca40068543704badf9918--

From: Ed Schouten <ed@80386.nl>
To: Mark <markjdb@gmail.com>
Cc: bug-followup@FreeBSD.org, dummy@smtp.ru
Subject: Re: bin/143017: watch(8): fatal: cannot attach to tty
Date: Sat, 10 Mar 2012 15:59:56 +0100

 --z0eOaCaDLjvTGF2l
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 Content-Transfer-Encoding: quoted-printable
 
 Hello Mark,
 
 * Mark <markjdb@gmail.com>, 20120310 09:50:
 > How about something like the attached change to snp(4)? It has snp
 > detach from the tty when the input to SNPSTTY is -1, which is what the
 > man page says is supposed to happen.
 
 This isn't the right approach. It would break when a snoop descriptor is
 used by two or more threads. Imagine what would happen if one thread
 would call read(), while the other would call SNPSTTY. The only way you
 could implement this safely, is by locking down all the system calls
 using for example an sx lock.
 
 I think the easiest way to fix this would be by simply patching watch(8)
 to not reuse snoop descriptors to switch between TTYs. The following
 (ugly) patch should make watch(8) work properly:
 
 Index: usr.sbin/watch/watch.c
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
 --- usr.sbin/watch/watch.c	(Revision 232781)
 +++ usr.sbin/watch/watch.c	(Arbeitskopie)
 @@ -206,10 +206,9 @@
  static void
  detach_snp(void)
  {
 -	int		fd;
 =20
 -	fd =3D -1;
 -	ioctl(snp_io, SNPSTTY, &fd);
 +	close(snp_io);
 +	snp_io =3D open_snp();
  }
 =20
  static void
 @@ -217,6 +216,7 @@
  {
  	int		snp_tty;
 =20
 +	detach_snp();
  	snp_tty =3D open(dev_name, O_RDONLY | O_NONBLOCK);
  	if (snp_tty < 0)
  		fatal(EX_DATAERR, "can't open device");
 
 If someone would write a nice set of patches to clean up the watch(8)
 source code (and fix this bug), I'd be more than happy to commit them to
 SVN. In fact, I think we should simplify the watch(8) utility. In my
 opinion the `interactive mode' is pretty useless.
 
 --=20
  Ed Schouten <ed@80386.nl>
  WWW: http://80386.nl/
 
 --z0eOaCaDLjvTGF2l
 Content-Type: application/pgp-signature
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (FreeBSD)
 
 iQIcBAEBAgAGBQJPW2xrAAoJEG5e2P40kaK7FB4P/ievaLjSLqfiHFisDP4tzcJc
 VG6yf/4h6PVckcOkSP9H84XCWl8s5UygY31LF07n8DKmZUqSlH8CwnNYEyhdo7U5
 uFjTxkO5JtWaQFJJLZtm+teOryGTKeCZInFkr3zDbuxmmhkeZC5Eetmn9K5a3KNX
 L1/yrxvY2ibWe3xCQ6PyGKbT7CLC11VMQYoLdk0cwWpiX/DTIagnoS/ZbsNc369A
 qKtWRqFmaeFnx+Tcp3w0kLHq49sDfMkGaVAtGdh+Dr87ymDokKNlfIc3frgiWjL7
 o0M3W3CxrcZcxjERGdru8SFTNiSh6vjsAKmb1yTYg6jABHmfhqKH29fEU/YpXTAe
 2X2HKNvGCPJ2R65/aqQ3ALc/8Wz7R17z1nKLXPSOG7gv3HXDTSro7rxvBWbA4Qyj
 8amwVBdKFoLK+VWQLn/7V8Uo2lwP3U5zDXlMYZnnswmozz/Dk5JjcLa4T5dI2BAx
 VsFwBcijp+fVzP9dmVFjVnRdI/pGP1LXGntCDkU/NaiyIPpgodnxRjq9gnz+hY/3
 72vrEZVL6nV5Jurbceu2kHP+SQXADl9+j9P5Zo33bdqkF89tEYMHSvCLYgnYrAJm
 WkDl5kBZ8kYlj7w8m3T88Xi3DhB7qAzml0MVhobZ8UG8MWd3b/xwHuD7Yhc5XrJa
 mVGMYdyLAQwZfWWNWnbL
 =K2kY
 -----END PGP SIGNATURE-----
 
 --z0eOaCaDLjvTGF2l--

From: Mark Johnston <markjdb@gmail.com>
To: Ed Schouten <ed@80386.nl>
Cc: bug-followup@freebsd.org, dummy@smtp.ru
Subject: Re: bin/143017: watch(8): fatal: cannot attach to tty
Date: Sun, 11 Mar 2012 22:27:07 -0400

 --20cf307cfd988d304604bb027a31
 Content-Type: text/plain; charset=ISO-8859-1
 
 On Sat, Mar 10, 2012 at 9:59 AM, Ed Schouten <ed@80386.nl> wrote:
 > Hello Mark,
 >
 > * Mark <markjdb@gmail.com>, 20120310 09:50:
 >> How about something like the attached change to snp(4)? It has snp
 >> detach from the tty when the input to SNPSTTY is -1, which is what the
 >> man page says is supposed to happen.
 >
 > This isn't the right approach. It would break when a snoop descriptor is
 > used by two or more threads. Imagine what would happen if one thread
 > would call read(), while the other would call SNPSTTY. The only way you
 > could implement this safely, is by locking down all the system calls
 > using for example an sx lock.
 
 Ah, I see. That didn't occur to me. As you say, it's probably better
 to fix this in watch(8), though I might try to clean up snp(4) at some
 point - there are a few FIXME comments, and the man page doesn't match
 the implementation... if you have any specific ideas on what should be
 done, let me know. =)
 
 > [...]
 > If someone would write a nice set of patches to clean up the watch(8)
 > source code (and fix this bug), I'd be more than happy to commit them to
 > SVN. In fact, I think we should simplify the watch(8) utility. In my
 > opinion the `interactive mode' is pretty useless.
 
 Could you take a look at the attached patch? It fixes the bug and does
 some other miscellaneous cleanup:
 - Merge open_snp() and attach_snp(), and change detch_snp() to close
 snp. Now the tty-switching code calls detach_snp() and set_dev(),
 which in turn calls attach_snp(). This also fixes bin/153052 and
 bin/153156 since we now don't try to open snp until after set_tty() is
 called.
 - Remove interactive mode... I don't see why it's needed either.
 - Remove an unnecessary "- 1" in a fgets() call.
 - Make sure at most one tty is listed on the command line.
 - Clean up the code that actually copies data from snp to stdout...
 what was there before seems kind of silly to me, but perhaps it should
 be left alone. Ditto for reading from stdin.
 
 There is probably more that can be done, but I thought this would be a
 good start. The only difference in behaviour is that watch(8) will
 clear the screen before trying to open snp(4) (which obviously might
 fail if snp isn't available or the user isn't root). I don't think
 this really a problem though.
 
 Thanks,
 -Mark
 
 --20cf307cfd988d304604bb027a31
 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_gzow570x1
 
 ZGlmZiAtLWdpdCBhL3Vzci5zYmluL3dhdGNoL3dhdGNoLjggYi91c3Iuc2Jpbi93YXRjaC93YXRj
 aC44CmluZGV4IDk5YzZiNmYuLjc0NzQzZTkgMTAwNjQ0Ci0tLSBhL3Vzci5zYmluL3dhdGNoL3dh
 dGNoLjgKKysrIGIvdXNyLnNiaW4vd2F0Y2gvd2F0Y2guOApAQCAtNTMsMTMgKzUzLDYgQEAgV2l0
 aG91dCB0aGlzIG9wdGlvbiwKIHdpbGwgYXR0ZW1wdCB0byBmaW5kIHRoZSBuZXh0IGF2YWlsYWJs
 ZQogLlhyIHNucCA0CiBkZXZpY2UuCi0uSXQgRmwgaQotRm9yY2UgaW50ZXJhY3RpdmUgbW9kZS4K
 LUludGVyYWN0aXZlIG1vZGUgaXMgYSBkZWZhdWx0IGlmCi0uTm0KLWlzIHN0YXJ0ZWQgZnJvbSBh
 IHR0eS4KLUlmIG91dHB1dCBpcyByZWRpcmVjdGVkIHRvIGEgZmlsZSwgaW50ZXJhY3RpdmUgbW9k
 ZSBjYW4gc3RpbGwgYmUgcmVxdWVzdGVkCi1ieSBzcGVjaWZ5aW5nIHRoaXMgb3B0aW9uLgogLkl0
 IEZsIG4KIERpc2FibGUgdGhlIGFiaWxpdHkgdG8gc3dpdGNoIHRoZSB3YXRjaGVkIHR0eSBpbnRl
 cmFjdGl2ZWx5LgogVGhpcyBkaXNhYmxlcwpkaWZmIC0tZ2l0IGEvdXNyLnNiaW4vd2F0Y2gvd2F0
 Y2guYyBiL3Vzci5zYmluL3dhdGNoL3dhdGNoLmMKaW5kZXggZTY5NTM0ZC4uZDEzODJiOCAxMDA2
 NDQKLS0tIGEvdXNyLnNiaW4vd2F0Y2gvd2F0Y2guYworKysgYi91c3Iuc2Jpbi93YXRjaC93YXRj
 aC5jCkBAIC00NSw3ICs0NSw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKICNkZWZpbmUgTVNH
 X05PV1JJVEUJIlNub29wIGRldmljZSBjaGFuZ2UgZHVlIHRvIHdyaXRlIGZhaWx1cmUuIgogCiAj
 ZGVmaW5lIERFVl9OQU1FX0xFTgkxMDI0CS8qIGZvciAvZGV2L3R0eVhYKysgKi8KLSNkZWZpbmUg
 TUlOX1NJWkUJMjU2CisjZGVmaW5lIEJVRl9TSVpFCTI1NgogCiAjZGVmaW5lIENIUl9TV0lUQ0gJ
 MjQJLyogQ3RybCtYCSAqLwogI2RlZmluZSBDSFJfQ0xFQVIJMjMJLyogQ3RybCtWCSAqLwpAQCAt
 NTUsNyArNTUsNiBAQCBzdGF0aWMgdm9pZAl0aW1lc3RhbXAoY29uc3QgY2hhciAqKTsKIHN0YXRp
 YyB2b2lkCXNldF90dHkodm9pZCk7CiBzdGF0aWMgdm9pZAl1bnNldF90dHkodm9pZCk7CiBzdGF0
 aWMgdm9pZAlmYXRhbChpbnQsIGNvbnN0IGNoYXIgKik7Ci1zdGF0aWMgaW50CW9wZW5fc25wKHZv
 aWQpOwogc3RhdGljIHZvaWQJY2xlYW51cChpbnQpOwogc3RhdGljIHZvaWQJdXNhZ2Uodm9pZCkg
 X19kZWFkMjsKIHN0YXRpYyB2b2lkCXNldHVwX3Njcih2b2lkKTsKQEAgLTE0OSwyNiArMTQ4LDYg
 QEAgZmF0YWwoaW50IGVycm9yLCBjb25zdCBjaGFyICpidWYpCiAJCWV4aXQoZXJyb3IpOwogfQog
 Ci1zdGF0aWMgaW50Ci1vcGVuX3NucCh2b2lkKQotewotCWludAkJZiwgbW9kZTsKLQotCWlmIChv
 cHRfd3JpdGUpCi0JCW1vZGUgPSBPX1JEV1I7Ci0JZWxzZQotCQltb2RlID0gT19SRE9OTFk7Ci0K
 LQlpZiAob3B0X3NucGRldiA9PSBOVUxMKQotCQlmID0gb3BlbihfUEFUSF9ERVYgInNucCIsIG1v
 ZGUpOwotCWVsc2UKLQkJZiA9IG9wZW4ob3B0X3NucGRldiwgbW9kZSk7Ci0JaWYgKGYgPT0gLTEp
 Ci0JCWZhdGFsKEVYX09TRklMRSwgImNhbm5vdCBvcGVuIHNub29wIGRldmljZSIpOwotCi0JcmV0
 dXJuIChmKTsKLX0KLQogc3RhdGljIHZvaWQKIGNsZWFudXAoaW50IHNpZ25vIF9fdW51c2VkKQog
 ewpAQCAtMjA2LDI1ICsxODUsMzMgQEAgc2V0dXBfc2NyKHZvaWQpCiBzdGF0aWMgdm9pZAogZGV0
 YWNoX3NucCh2b2lkKQogewotCWludAkJZmQ7CiAKLQlmZCA9IC0xOwotCWlvY3RsKHNucF9pbywg
 U05QU1RUWSwgJmZkKTsKKwljbG9zZShzbnBfaW8pOwogfQogCiBzdGF0aWMgdm9pZAogYXR0YWNo
 X3NucCh2b2lkKQogewotCWludAkJc25wX3R0eTsKKwlpbnQgc25wX3R0eSwgbW9kZTsKKworCWlm
 IChvcHRfd3JpdGUpCisJCW1vZGUgPSBPX1JEV1I7CisJZWxzZQorCQltb2RlID0gT19SRE9OTFk7
 CisKKwlpZiAob3B0X3NucGRldiA9PSBOVUxMKQorCQlzbnBfaW8gPSBvcGVuKF9QQVRIX0RFViAi
 c25wIiwgbW9kZSk7CisJZWxzZQorCQlzbnBfaW8gPSBvcGVuKG9wdF9zbnBkZXYsIG1vZGUpOwor
 CWlmIChzbnBfaW8gPT0gLTEpCisJCWZhdGFsKEVYX09TRklMRSwgImNhbm5vdCBvcGVuIHNub29w
 IGRldmljZSIpOwogCiAJc25wX3R0eSA9IG9wZW4oZGV2X25hbWUsIE9fUkRPTkxZIHwgT19OT05C
 TE9DSyk7Ci0JaWYgKHNucF90dHkgPCAwKQorCWlmIChzbnBfdHR5ID09IC0xKQogCQlmYXRhbChF
 WF9EQVRBRVJSLCAiY2FuJ3Qgb3BlbiBkZXZpY2UiKTsKIAlpZiAoaW9jdGwoc25wX2lvLCBTTlBT
 VFRZLCAmc25wX3R0eSkgIT0gMCkKIAkJZmF0YWwoRVhfVU5BVkFJTEFCTEUsICJjYW5ub3QgYXR0
 YWNoIHRvIHR0eSIpOwogCWNsb3NlKHNucF90dHkpOwotCWlmIChvcHRfdGltZXN0YW1wKQotCQl0
 aW1lc3RhbXAoIkxvZ2dpbmcgU3RhcnRlZC4iKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI2OSw3
 ICsyNTYsNyBAQCBhc2tfZGV2KGNoYXIgKmRidWYsIGNvbnN0IGNoYXIgKm1zZykKIAllbHNlCiAJ
 CXByaW50ZigiRW50ZXIgZGV2aWNlIG5hbWU6Iik7CiAKLQlpZiAoZmdldHMoYnVmLCBERVZfTkFN
 RV9MRU4gLSAxLCBzdGRpbikpIHsKKwlpZiAoZmdldHMoYnVmLCBERVZfTkFNRV9MRU4sIHN0ZGlu
 KSkgewogCQlsZW4gPSBzdHJsZW4oYnVmKTsKIAkJaWYgKGJ1ZltsZW4gLSAxXSA9PSAnXG4nKQog
 CQkJYnVmW2xlbiAtIDFdID0gJ1wwJzsKQEAgLTI4NSw4ICsyNzIsNyBAQCBpbnQKIG1haW4oaW50
 IGFjLCBjaGFyICphdltdKQogewogCWludAkJY2gsIHJlcywgcnYsIG5yZWFkOwotCXNpemVfdAkJ
 Yl9zaXplID0gTUlOX1NJWkU7Ci0JY2hhcgkJKmJ1ZiwgY2hiW1JFQURCX0xFTl07CisJY2hhcgkJ
 YnVmW0JVRl9TSVpFXSwgY2hiW1JFQURCX0xFTl07CiAJZmRfc2V0CQlmZF9zOwogCiAJKHZvaWQp
 IHNldGxvY2FsZShMQ19USU1FLCAiIik7CkBAIC0yOTYsNyArMjgyLDcgQEAgbWFpbihpbnQgYWMs
 IGNoYXIgKmF2W10pCiAJZWxzZQogCQlvcHRfaW50ZXJhY3RpdmUgPSAwOwogCi0Jd2hpbGUgKChj
 aCA9IGdldG9wdChhYywgYXYsICJXY2lvdG5mOiIpKSAhPSAtMSkKKwl3aGlsZSAoKGNoID0gZ2V0
 b3B0KGFjLCBhdiwgIldjb3RuZjoiKSkgIT0gLTEpCiAJCXN3aXRjaCAoY2gpIHsKIAkJY2FzZSAn
 Vyc6CiAJCQlvcHRfd3JpdGUgPSAxOwpAQCAtMzA0LDkgKzI5MCw2IEBAIG1haW4oaW50IGFjLCBj
 aGFyICphdltdKQogCQljYXNlICdjJzoKIAkJCW9wdF9yZWNvbm5fY2xvc2UgPSAxOwogCQkJYnJl
 YWs7Ci0JCWNhc2UgJ2knOgotCQkJb3B0X2ludGVyYWN0aXZlID0gMTsKLQkJCWJyZWFrOwogCQlj
 YXNlICdvJzoKIAkJCW9wdF9yZWNvbm5fb2Zsb3cgPSAxOwogCQkJYnJlYWs7CkBAIC0zMjQsMjcg
 KzMwNywyOSBAQCBtYWluKGludCBhYywgY2hhciAqYXZbXSkKIAkJCXVzYWdlKCk7CiAJCX0KIAor
 CWlmIChhYyAtIG9wdGluZCA+IDEpCisJCXVzYWdlKCk7CisKIAlpZiAobW9kZmluZCgic25wIikg
 PT0gLTEpCiAJCWlmIChrbGRsb2FkKCJzbnAiKSA9PSAtMSB8fCBtb2RmaW5kKCJzbnAiKSA9PSAt
 MSkKIAkJCXdhcm4oInNucCBtb2R1bGUgbm90IGF2YWlsYWJsZSIpOwogCiAJc2lnbmFsKFNJR0lO
 VCwgY2xlYW51cCk7CiAKLQlzbnBfaW8gPSBvcGVuX3NucCgpOwogCXNldHVwX3NjcigpOwogCiAJ
 aWYgKCooYXYgKz0gb3B0aW5kKSA9PSBOVUxMKSB7CiAJCWlmIChvcHRfaW50ZXJhY3RpdmUgJiYg
 IW9wdF9ub19zd2l0Y2gpCiAJCQlhc2tfZGV2KGRldl9uYW1lLCBNU0dfSU5JVCk7CiAJCWVsc2UK
 LQkJCWZhdGFsKEVYX0RBVEFFUlIsICJubyBkZXZpY2UgbmFtZSBnaXZlbiIpOworCQkJZXJyeChF
 WF9EQVRBRVJSLCAibm8gZGV2aWNlIG5hbWUgZ2l2ZW4iKTsKIAl9IGVsc2UKIAkJc3RybmNweShk
 ZXZfbmFtZSwgKmF2LCBERVZfTkFNRV9MRU4pOwogCiAJc2V0X2RldihkZXZfbmFtZSk7CiAKLQlp
 ZiAoIShidWYgPSAoY2hhciAqKSBtYWxsb2MoYl9zaXplKSkpCi0JCWZhdGFsKEVYX1VOQVZBSUxB
 QkxFLCAibWFsbG9jIGZhaWxlZCIpOworCWlmIChvcHRfdGltZXN0YW1wKQorCQl0aW1lc3RhbXAo
 IkxvZ2dpbmcgU3RhcnRlZC4iKTsKIAogCUZEX1pFUk8oJmZkX3MpOwogCkBAIC0zNTQsMTMgKzMz
 OSw4IEBAIG1haW4oaW50IGFjLCBjaGFyICphdltdKQogCQlGRF9TRVQoc25wX2lvLCAmZmRfcyk7
 CiAJCXJlcyA9IHNlbGVjdChzbnBfaW8gKyAxLCAmZmRfcywgTlVMTCwgTlVMTCwgTlVMTCk7CiAJ
 CWlmIChvcHRfaW50ZXJhY3RpdmUgJiYgRkRfSVNTRVQoc3RkX2luLCAmZmRfcykpIHsKLQotCQkJ
 aWYgKChyZXMgPSBpb2N0bChzdGRfaW4sIEZJT05SRUFELCAmbnJlYWQpKSAhPSAwKQotCQkJCWZh
 dGFsKEVYX09TRVJSLCAiaW9jdGwoRklPTlJFQUQpIik7Ci0JCQlpZiAobnJlYWQgPiBSRUFEQl9M
 RU4pCi0JCQkJbnJlYWQgPSBSRUFEQl9MRU47Ci0JCQlydiA9IHJlYWQoc3RkX2luLCBjaGIsIG5y
 ZWFkKTsKLQkJCWlmIChydiA9PSAtMSB8fCBydiAhPSBucmVhZCkKKwkJCXJ2ID0gcmVhZChzdGRf
 aW4sIGNoYiwgUkVBREJfTEVOKTsKKwkJCWlmIChydiA9PSAtMSkKIAkJCQlmYXRhbChFWF9JT0VS
 UiwgInJlYWQgKHN0ZGluKSBmYWlsZWQiKTsKIAogCQkJc3dpdGNoIChjaGJbMF0pIHsKQEAgLTM3
 Niw4ICszNTYsOCBAQCBtYWluKGludCBhYywgY2hhciAqYXZbXSkKIAkJCQl9CiAJCQlkZWZhdWx0
 OgogCQkJCWlmIChvcHRfd3JpdGUpIHsKLQkJCQkJcnYgPSB3cml0ZShzbnBfaW8sIGNoYiwgbnJl
 YWQpOwotCQkJCQlpZiAocnYgPT0gLTEgfHwgcnYgIT0gbnJlYWQpIHsKKwkJCQkJcnYgPSB3cml0
 ZShzbnBfaW8sIGNoYiwgcnYpOworCQkJCQlpZiAocnYgPT0gLTEpIHsKIAkJCQkJCWRldGFjaF9z
 bnAoKTsKIAkJCQkJCWlmIChvcHRfbm9fc3dpdGNoKQogCQkJCQkJCWZhdGFsKEVYX0lPRVJSLApA
 QCAtMzkyLDcgKzM3Miw3IEBAIG1haW4oaW50IGFjLCBjaGFyICphdltdKQogCQlpZiAoIUZEX0lT
 U0VUKHNucF9pbywgJmZkX3MpKQogCQkJY29udGludWU7CiAKLQkJaWYgKChyZXMgPSBpb2N0bChz
 bnBfaW8sIEZJT05SRUFELCAmbnJlYWQpKSAhPSAwKQorCQlpZiAoaW9jdGwoc25wX2lvLCBGSU9O
 UkVBRCwgJm5yZWFkKSAhPSAwKQogCQkJZmF0YWwoRVhfT1NFUlIsICJpb2N0bChGSU9OUkVBRCki
 KTsKIAogCQlzd2l0Y2ggKG5yZWFkKSB7CkBAIC00MTYsMjMgKzM5NiwxMSBAQCBtYWluKGludCBh
 YywgY2hhciAqYXZbXSkKIAkJCQljbGVhbnVwKC0xKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0Ogot
 CQkJaWYgKG5yZWFkIDwgKGJfc2l6ZSAvIDIpICYmIChiX3NpemUgLyAyKSA+IE1JTl9TSVpFKSB7
 Ci0JCQkJZnJlZShidWYpOwotCQkJCWlmICghKGJ1ZiA9IChjaGFyICopIG1hbGxvYyhiX3NpemUg
 LyAyKSkpCi0JCQkJCWZhdGFsKEVYX1VOQVZBSUxBQkxFLCAibWFsbG9jIGZhaWxlZCIpOwotCQkJ
 CWJfc2l6ZSA9IGJfc2l6ZSAvIDI7Ci0JCQl9Ci0JCQlpZiAobnJlYWQgPiBiX3NpemUpIHsKLQkJ
 CQliX3NpemUgPSAobnJlYWQgJSAyKSA/IChucmVhZCArIDEpIDogKG5yZWFkKTsKLQkJCQlmcmVl
 KGJ1Zik7Ci0JCQkJaWYgKCEoYnVmID0gKGNoYXIgKikgbWFsbG9jKGJfc2l6ZSkpKQotCQkJCQlm
 YXRhbChFWF9VTkFWQUlMQUJMRSwgIm1hbGxvYyBmYWlsZWQiKTsKLQkJCX0KLQkJCXJ2ID0gcmVh
 ZChzbnBfaW8sIGJ1ZiwgbnJlYWQpOwotCQkJaWYgKHJ2ID09IC0xIHx8IHJ2ICE9IG5yZWFkKQor
 CQkJcnYgPSByZWFkKHNucF9pbywgYnVmLCBCVUZfU0laRSk7CisJCQlpZiAocnYgPT0gLTEpCiAJ
 CQkJZmF0YWwoRVhfSU9FUlIsICJyZWFkIGZhaWxlZCIpOwotCQkJcnYgPSB3cml0ZShzdGRfb3V0
 LCBidWYsIG5yZWFkKTsKLQkJCWlmIChydiA9PSAtMSB8fCBydiAhPSBucmVhZCkKKwkJCXJ2ID0g
 d3JpdGUoc3RkX291dCwgYnVmLCBydik7CisJCQlpZiAocnYgPT0gLTEpCiAJCQkJZmF0YWwoRVhf
 SU9FUlIsICJ3cml0ZSBmYWlsZWQiKTsKIAkJfQogCX0JCQkvKiBXaGlsZSAqLwo=
 --20cf307cfd988d304604bb027a31--

From: Ed Schouten <ed@80386.nl>
To: Mark Johnston <markjdb@gmail.com>
Cc: bug-followup@freebsd.org, dummy@smtp.ru
Subject: Re: bin/143017: watch(8): fatal: cannot attach to tty
Date: Mon, 12 Mar 2012 22:07:06 +0100

 --17/8oYur5Y32USnW
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 Content-Transfer-Encoding: quoted-printable
 
 Hi Mark,
 
 * Mark Johnston <markjdb@gmail.com>, 20120312 03:27:
 > - Remove interactive mode... I don't see why it's needed either.
 
 It's still there, even after applying your patch. Search for
 `opt_interactive.
 
 --=20
  Ed Schouten <ed@80386.nl>
  WWW: http://80386.nl/
 
 --17/8oYur5Y32USnW
 Content-Type: application/pgp-signature
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (FreeBSD)
 
 iQIcBAEBAgAGBQJPXmV6AAoJEG5e2P40kaK70xQQAKYDsmD7f7otT5gUGp3D+44n
 CqDIm4xtqI3pF7fL+AWA4cQwtjWtYoKAWZEguTcJ9Aaj78Qn+5cWvDcdDisBvhIT
 7KvWrVprEWaBrvSP32y98PhQDmw1wFhFUbBvtM0SwVTZbj6zcDNYbf1kfrv8Ecf9
 kPWO30lcl7ya5+3LXXrKUSdJZQemhTUR2PPZD0jT0arumAY/BaZXBY2n19wDtx7F
 BdydY4FqaezFV+NrVOnp+DLaEG17NiBeCmARZzNeTPiLh1X4vNVmKy6e5Hb5LbrO
 WHLUztTjcl1vDoQ6/SoqT8fKCfQdHWdZ2ROxWE9n2NzWTjF/J19Iol61dIU30sCT
 OZJpd/7J669rDdEkfVmA0MECTDhmeoM6bwU5dl6tPgh0ZMfd0S9UuMnhR50rs0nH
 Q/JfFgQOYlq4wLe92b/MQcsnHMlw5tw+XO/vjnqcM3YQmjLaB7lrTPoc0+IAxM+L
 sCboLUhWyzGFI2aoS2JeqZW1qiKFDwLXmS5d4cNXjKQ1RLw8y3i+TnMCSeB/DD55
 p8e1vo4rJQyxa9I+2oAi0VUQ/MjuGEoUbWJkklpBIMBJF0darckXO0NjRk2IxkRP
 VrCNbc8rNnZ/aupF18JlvK8Yf7JUrIqCXKELoFbtyr66BUfuvbJat2rbjRp8/cWq
 i7pI+D+tjWZOO3wUEJvc
 =aF6o
 -----END PGP SIGNATURE-----
 
 --17/8oYur5Y32USnW--

From: Mark Johnston <markjdb@gmail.com>
To: Ed Schouten <ed@80386.nl>
Cc: bug-followup@freebsd.org, dummy@smtp.ru
Subject: Re: bin/143017: watch(8): fatal: cannot attach to tty
Date: Mon, 12 Mar 2012 17:17:50 -0400

 On Mon, Mar 12, 2012 at 10:07:06PM +0100, Ed Schouten wrote:
 > Hi Mark,
 > 
 > * Mark Johnston <markjdb@gmail.com>, 20120312 03:27:
 > > - Remove interactive mode... I don't see why it's needed either.
 > 
 > It's still there, even after applying your patch. Search for
 > `opt_interactive.
 > 
 
 Oh, I was referring to the -i flag; my comment was misleading, sorry.
 opt_interactive (or something similar) is still needed in order for
 watch(8) to work properly when writing output to a file, no?
 
 -Mark

From: Ed Schouten <ed@80386.nl>
To: Mark Johnston <markjdb@gmail.com>
Cc: bug-followup@freebsd.org, dummy@smtp.ru
Subject: Re: bin/143017: watch(8): fatal: cannot attach to tty
Date: Mon, 12 Mar 2012 22:27:25 +0100

 --gTY1JhLGodeuSBqf
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 Content-Transfer-Encoding: quoted-printable
 
 * Mark Johnston <markjdb@gmail.com>, 20120312 22:17:
 > Oh, I was referring to the -i flag; my comment was misleading, sorry.
 > opt_interactive (or something similar) is still needed in order for
 > watch(8) to work properly when writing output to a file, no?
 
 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.
 
 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?
 
 --=20
  Ed Schouten <ed@80386.nl>
  WWW: http://80386.nl/
 
 --gTY1JhLGodeuSBqf
 Content-Type: application/pgp-signature
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (FreeBSD)
 
 iQIcBAEBAgAGBQJPXmo9AAoJEG5e2P40kaK7OzYP/19abRoyvfYM7KbPpV88P/B5
 oOOzD4xnfPzdHy5HTkoDz8UyS0nwZEhxLwVOHRxyOhmr+6EJ5Wc+aU2B/kMWUWTX
 KQMVzvND0jq867MNv/p/tQp0PvQBfebG/jp/uNcHV8KtNPRMneEKR6o02wDaj2kQ
 Y+e2QVe0H+SolAJHKxOpy5L5p/A282bL7Tjc6yGq1RTh3OF22jPyRcdmB3Dchgwh
 OjmDzu2F2g8+K0vGNiDBI1q8ZzSQ1OHy42GkDkRStakPh4yCyT430B8sRr2DOhYw
 U3FCRx15qpfFXPsh+rYH3JaqKLw5K+ewWDpXw61eNFz2FQuavwiqi1gM8+KqWeDJ
 u+PchWtAScQ+Y4oJUpmJgia/GHCncvWaQ0K0aG35PuBagnDS0CzXz5qHhEI5rqiA
 ENQPeelwz/BWnvFfnkZdIDYA5rwndlrDGw7lXjGLsyH4PYVegtmqXcHUVgYAEpnG
 D1mElDHCuc2RY5z3s3rt/T5Z6W3j+awhwLxsc0V7wrDKp627Ly23v6pqnmk1dw4m
 SDZUPj39R1eRHE82+dtX4fKWLtAl2k8P2rPz1+lzre82fqDzk7hHw93iuDW0PpvL
 sU5Uy4UxHGQsIaaGadiiJEfVeMMFJoQUVrCpymz3VJt6h4Ro7+MC1wbjcyjnddLu
 3+ieINfse6iLxIE760I/
 =qWD5
 -----END PGP SIGNATURE-----
 
 --gTY1JhLGodeuSBqf--

From: Mark Johnston <markjdb@gmail.com>
To: Ed Schouten <ed@80386.nl>
Cc: bug-followup@freebsd.org, dummy@smtp.ru
Subject: Re: bin/143017: watch(8): fatal: cannot attach to tty
Date: Mon, 12 Mar 2012 17:52:36 -0400

 On Mon, Mar 12, 2012 at 5:27 PM, Ed Schouten <ed@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.
 
 -Mark

From: Mark Johnston <markjdb@gmail.com>
To: Ed Schouten <ed@80386.nl>
Cc: bug-followup@freebsd.org, dummy@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@gmail.com> wrote:
 > On Mon, Mar 12, 2012 at 5:27 PM, Ed Schouten <ed@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--
>Unformatted:
