From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 Date: Wed, 2 Nov 2011 20:29:30 +0100 Message-ID: From: yy To: plan9port-dev , Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: multipart/mixed; boundary=00151747bdb8e90cd904b0c57d83 Subject: [9fans] 9p devdraw Topicbox-Message-UUID: 3d8e81d2-ead7-11e9-9d60-3106f5b1d025 --00151747bdb8e90cd904b0c57d83 Content-Type: text/plain; charset=ISO-8859-1 Two attached files: - 9p-srv.c is a devdraw(1) version which uses 9pclient(3) to talk with Plan 9-like devices and use them for its windows. - p9p.patch is a patch that has to be applied to the p9p tree to use this devdraw version. The drawing device expects to find draw(3), cons(3) and mouse(3) files in the $WSYS directory, as can be found in /dev in a Plan 9 terminal (including 9vx or drawterm) or /mnt/wsys when using rio. Then, those devices are used to run p9p programs. I wrote 9p-srv as an experiment to use wsys(4) [1] with p9p applications, but have found it quite useful to open p9p programs - like 9term or sam - in rio windows (for example, from 9vx). Although it could be argued that this is not the most efficient thing to do writing it was quite funny, and much easier than expected. Installation (once the patch has been applied and p9p built): cp 9p-srv.c $PLAN9/src/cmd/devdraw cd $PLAN9/src/cmd/devdraw 9c 9p-srv.c && 9l -o devdraw.9p 9p-srv.o cp devdraw.9p $PLAN9/bin Now, to run 9term in a rio window: # From 9vx's rio: ; mount $wsys /n/w new ; bind -a '#i' /n/w ; aux/listen1 -t 'tcp!*!12345' /bin/exportfs -r /n/w # From unix: $ WSYS='tcp!127.0.0.1!12345' $ DEVDRAW=devdraw.9p $ 9term These files are also included with wsys(4), in the util directory (instructions are in the README). To use the drawing device with wsys(4) just set WSYS to "unix!/tmp/ns.$USERNAME.$DISPLAY/wsys". However, it is not working so well as with rio. The reason is probably some bug in wsys, and not in 9p-srv. I hope to fix it at some point, but is not an easy bug to track. If (after some more testing) the 9p drawing device could be included with p9p that would be great. If it has to stay in the wsys repository that is fine too but, could the p9p patch be applied at least? The two small changes shouldn't be a problem for the other versions of devdraw. Comments are welcomed. [1] http://bitbucket.org/yiyus/devwsys-prev/ (there is also a blog about the development of wsys(4) at http://summerofdevdraw.blogspot.com/ and a WIP short paper is included in the proceedings of the last iwp9). -- - yiyus || JGL . --00151747bdb8e90cd904b0c57d83 Content-Type: text/x-csrc; charset=US-ASCII; name="9p-srv.c" Content-Disposition: attachment; filename="9p-srv.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_guill2lt0 LyoKICogV2luZG93IHN5c3RlbSBwcm90b2NvbCBzZXJ2ZXIuCiAqIFVzZSB0aHJlYWQoMykgYW5k IDlwY2xpZW50KDMpIHRvIGNvbm5lY3QKICogdG8gYSB3c3lzIHNlcnZpY2UgYXMgZGVzY3JpYmVk IGluIHJpbyg0KS4KICovCgojaW5jbHVkZSA8dS5oPgojaW5jbHVkZSA8bGliYy5oPgojaW5jbHVk ZSA8dGhyZWFkLmg+CiNpbmNsdWRlIDw5cGNsaWVudC5oPgojaW5jbHVkZSA8ZHJhdy5oPgojaW5j bHVkZSA8bWVtZHJhdy5oPgojaW5jbHVkZSA8bWVtbGF5ZXIuaD4KI2luY2x1ZGUgPGtleWJvYXJk Lmg+CiNpbmNsdWRlIDxtb3VzZS5oPgojaW5jbHVkZSA8Y3Vyc29yLmg+CiNpbmNsdWRlIDxkcmF3 ZmNhbGwuaD4KCiNkZWZpbmUgU1RBQ0sgKDMyKjEwMjQpCgp2b2lkIHJ1bm1zZyhXc3lzbXNnKik7 CnZvaWQgcmVwbHltc2coV3N5c21zZyopOwp2b2lkIGtiZHRocmVhZCh2b2lkKik7CnZvaWQgbW91 c2V0aHJlYWQodm9pZCopOwoKaW50IGNoYXR0eSA9IDA7CmludCBkcmF3c2xlZXA7CmludCBmZDsK CkNoYW5uZWwgKmtiZGNoYW47CkNoYW5uZWwgKm1vdXNlY2hhbjsKCnZvaWQKdXNhZ2Uodm9pZCkK ewoJZnByaW50KDIsICJ1c2FnZTogZGV2ZHJhdyAoZG9uJ3QgcnVuIGRpcmVjdGx5KVxuIik7Cgl0 aHJlYWRleGl0c2FsbCgwKTsKfQoKdm9pZApiZWxsKHZvaWQgKnYsIGNoYXIgKm1zZykKewoJaWYo c3RyY21wKG1zZywgImFsYXJtIikgPT0gMCkKCQlkcmF3c2xlZXAgPSBkcmF3c2xlZXAgPyAwIDog MTAwMDsKCW5vdGVkKE5DT05UKTsKfQoKdm9pZAp0aHJlYWRtYWluKGludCBhcmdjLCBjaGFyICoq YXJndikKewoJY2hhciAqYWRkciwgKmRlZmFkZHIsICpuczsKCXVjaGFyIGJ1Zls0XSwgKm1idWY7 CglpbnQgbm1idWYsIG4sIG5uOwoJSW9wcm9jICppbzsKCVdzeXNtc2cgbTsKCgkvKgoJICogTW92 ZSB0aGUgcHJvdG9jb2wgb2ZmIHN0ZGluL3N0ZG91dCBzbyB0aGF0CgkgKiBhbnkgaW5hZHZlcnRl bnQgcHJpbnRzIGRvbid0IHNjcmV3IHRoaW5ncyB1cC4KCSAqLwoJZHVwKDAsIDMpOwoJZHVwKDEs IDQpOwoJY2xvc2UoMCk7CgljbG9zZSgxKTsKCW9wZW4oIi9kZXYvbnVsbCIsIE9SRUFEKTsKCW9w ZW4oIi9kZXYvbnVsbCIsIE9XUklURSk7CgoJZm10aW5zdGFsbCgnSCcsIGVuY29kZWZtdCk7Cglm bXRpbnN0YWxsKCdXJywgZHJhd2ZjYWxsZm10KTsKCglBUkdCRUdJTnsKCWNhc2UgJ2QnOgoJCWNo YXR0eTlwY2xpZW50Kys7CgkJYnJlYWs7CgljYXNlICdEJzoKCQljaGF0dHkrKzsKCQlicmVhazsK CWRlZmF1bHQ6CgkJdXNhZ2UoKTsKCX1BUkdFTkQKCgkvKgoJICogSWdub3JlIGFyZ3VtZW50cy4g IFRoZXkncmUgb25seSBmb3IgZ29vZCBwcyAtYSBsaXN0aW5ncy4KCSAqLwoJCglub3RpZnkoYmVs bCk7CgoJLyoKCSAqIENvbm5lY3QgdG8gOVAgc2VydmVyIGRlZmluZWQgYnkgJFdTWVMKCSAqIG9y IHVuaXghJE5BTUVTUEFDRS93c3lzLgoJICovCglhZGRyID0gZ2V0ZW52KCJXU1lTIik7CglkZWZh ZGRyID0gbmlsOwoJaWYoYWRkciA9PSAwKXsKCQlucyA9IGdldG5zKCk7CgkJaWYobnMgPT0gbmls KQoJCQlzeXNmYXRhbCgibm8gbmFtZSBzcGFjZSIpOwoJCWRlZmFkZHIgPSBzbXByaW50KCJ1bml4 ISVzL3dzeXMiLCBucyk7CgkJYWRkciA9IGRlZmFkZHI7Cgl9CglmZCA9IGRpYWwoYWRkciwgMCwg MCwgMCk7CglpZihmZCA8IDApCgkJc3lzZmF0YWwoImRpYWwgJXM6ICVyIiwgYWRkcik7CglpZihh ZGRyID09IGRlZmFkZHIpCgkJZnJlZShhZGRyKTsKCgltYnVmID0gbmlsOwoJbm1idWYgPSAwOwoJ aW8gPSBpb3Byb2MoKTsKCXdoaWxlKChuID0gaW9yZWFkKGlvLCAzLCBidWYsIDQpKSA9PSA0KXsK CQlHRVQoYnVmLCBuKTsKCQlpZihuID4gbm1idWYpewoJCQlmcmVlKG1idWYpOwoJCQltYnVmID0g bWFsbG9jKDQrbik7CgkJCWlmKG1idWYgPT0gbmlsKQoJCQkJc3lzZmF0YWwoIm1hbGxvYzogJXIi KTsKCQkJbm1idWYgPSBuOwoJCX0KCQltZW1tb3ZlKG1idWYsIGJ1ZiwgNCk7CgkJbm4gPSByZWFk bigzLCBtYnVmKzQsIG4tNCk7CgkJaWYobm4gIT0gbi00KQoJCQlzeXNmYXRhbCgiZW9mIGR1cmlu ZyBtZXNzYWdlIik7CgoJCS8qIHBpY2sgb2ZmIG1lc3NhZ2VzIG9uZSBieSBvbmUgKi8KCQlpZihj b252TTJXKG1idWYsIG5uKzQsICZtKSA8PSAwKQoJCQlzeXNmYXRhbCgiY2Fubm90IGNvbnZlcnQg bWVzc2FnZSIpOwoJCWlmKGNoYXR0eSkgZnByaW50KDIsICI8LSAlV1xuIiwgJm0pOwoJCXJ1bm1z ZygmbSk7Cgl9Cgl0aHJlYWRleGl0c2FsbCgwKTsKfQoKdm9pZApyZXBseWVycm9yKFdzeXNtc2cg Km0pCnsKCWNoYXIgZXJyWzI1Nl07CgkKCXJlcnJzdHIoZXJyLCBzaXplb2YgZXJyKTsKCW0tPnR5 cGUgPSBSZXJyb3I7CgltLT5lcnJvciA9IGVycjsKCXJlcGx5bXNnKG0pOwp9CgoKLyogCiAqIEhh bmRsZSBhIHNpbmdsZSB3c3lzbXNnLiAKICogTWlnaHQgcXVldWUgZm9yIGxhdGVyIChrYmQsIG1v dXNlIHJlYWQpCiAqLwp2b2lkCnJ1bm1zZyhXc3lzbXNnICptKQp7Cgl1Y2hhciBidWZbNjU1MzZd OwoJaW50IG47CglDRmlkICpmOwoJUmVjdGFuZ2xlIHI7CglzdGF0aWMgaW50IGJvcmRlcjsKCXN0 YXRpYyBpbnQgaWQgPSAtMTsKCXN0YXRpYyBDRmlkICpmY29ucywgKmZtb3VzZSwgKmZjdGwsICpm ZGF0YSwgKmZyZGRyYXc7CglzdGF0aWMgQ0ZzeXMgKmZzeXM7CgoJc3dpdGNoKG0tPnR5cGUpewoJ Y2FzZSBUaW5pdDoKCQlzcHJpbnQoKGNoYXIqKWJ1ZiwgIm5ldyAlcyIsIG0tPndpbnNpemUpOwoJ CWlmKChmc3lzID0gZnNtb3VudChmZCwgKGNoYXIqKWJ1ZikpID09IG5pbCkKCQkJc3lzZmF0YWwo ImZzbW91bnQ6ICVyIik7CgoJCWZjb25zID0gZnNvcGVuKGZzeXMsICJjb25zIiwgT1JFQUQpOwoJ CWZtb3VzZSA9IGZzb3Blbihmc3lzLCAibW91c2UiLCBPUkRXUik7CgoJCWYgPSBmc29wZW4oZnN5 cywgImxhYmVsIiwgT1dSSVRFKTsKCQlmc3ByaW50KGYsIG0tPmxhYmVsKTsKCQlmc2Nsb3NlKGYp OwoKCQkvKgoJCSAqIFJlYWQga2V5Ym9hcmQgYW5kIG1vdXNlIGV2ZW50cwoJCSAqIGZyb20gZGlm ZmVyZW50IHRocmVhZHMuCgkJICogVXNlIGEgYnVmZmVyZWQgY2hhbiBhcyB0YWcgcXVldWUuCgkJ ICovCgkJa2JkY2hhbiA9IGNoYW5jcmVhdGUoc2l6ZW9mKHVjaGFyKSwgMTIpOwoJCW1vdXNlY2hh biA9IGNoYW5jcmVhdGUoc2l6ZW9mKHVjaGFyKSwgMTIpOwoJCWY9IGZzb3Blbihmc3lzLCAiY29u c2N0bCIsIE9XUklURSk7CgkJZnNwcmludChmLCAicmF3b24iKTsKCQl0aHJlYWRjcmVhdGUoa2Jk dGhyZWFkLCBmY29ucywgU1RBQ0spOwoJCXRocmVhZGNyZWF0ZShtb3VzZXRocmVhZCwgZm1vdXNl LCBTVEFDSyk7CgoJCS8qCgkJICogT3BlbiBkcmF3KDMpIGZpbGVzIGFuZCByZWdpc3RlcgoJCSAq IGltYWdlIG5hbWVkIHdpbm5hbWUKCQkgKi8KCQlmY3RsID0gZnNvcGVuKGZzeXMsICJkcmF3L25l dyIsIE9SRFdSKTsKCQlmc3JlYWQoZmN0bCwgYnVmLCAxMioxMik7CgkJbiA9IGF0b2koKGNoYXIq KWJ1Zik7CgkJc3ByaW50KChjaGFyKilidWYsICJkcmF3LyVkL2RhdGEiLCBuKTsKCQlmZGF0YSA9 IGZzb3Blbihmc3lzLCAoY2hhciopYnVmLCBPUkRXUik7CgkJCgkJcmVwbHltc2cobSk7CgkJYnJl YWs7CgoJY2FzZSBUcmRtb3VzZToKCQlpZihuYnNlbmQobW91c2VjaGFuLCAmbS0+dGFnKSA9PSAw KQoJCQlzeXNmYXRhbCgidG9vIG1hbnkgcXVldWVkIG1vdXNlIHJlYWRzIik7CgkJYnJlYWs7CgoJ Y2FzZSBUcmRrYmQ6CgkJaWYobmJzZW5kKGtiZGNoYW4sICZtLT50YWcpID09IDApCgkJCXN5c2Zh dGFsKCJ0b28gbWFueSBxdWV1ZWQgbW91c2UgcmVhZHMiKTsKCQlicmVhazsKCgljYXNlIFRtb3Zl dG86CgkJZnNwcmludChmbW91c2UsICJtICUxMWQgJTExZCAlMTFkICUxMWQiLCBtLT5tb3VzZS54 eS54LCBtLT5tb3VzZS54eS55LCBtLT5tb3VzZS5idXR0b25zLCBtLT5tb3VzZS5tc2VjKTsKCQly ZXBseW1zZyhtKTsKCQlicmVhazsKCgljYXNlIFRjdXJzb3I6CgkJZiA9IGZzb3Blbihmc3lzLCAi Y3Vyc29yIiwgT1dSSVRFKTsKCQlpZihtLT5hcnJvd2N1cnNvcikKCQkJZnN3cml0ZShmLCBidWYs IDApOwoJCWVsc2V7CgkJCVBVVCgmYnVmWzBdLCBtLT5jdXJzb3Iub2Zmc2V0LngpOwoJCQlQVVQo JmJ1Zls0XSwgbS0+Y3Vyc29yLm9mZnNldC55KTsKCQkJZm9yKG4gPSAwOyBuIDwgMzI7IG4rKyl7 CgkJCQlidWZbMio0K25dID0gbS0+Y3Vyc29yLmNscltuXTsKCQkJCWJ1ZlsyKjQrMzIrbl0gPSBt LT5jdXJzb3Iuc2V0W25dOwoJCQl9CgkJCWZzd3JpdGUoZiwgYnVmLCA3Mik7CgkJfQoJCWZzY2xv c2UoZik7CgkJcmVwbHltc2cobSk7CgkJYnJlYWs7CgoJY2FzZSBUYm91bmNlbW91c2U6CgkJLyog SWdub3JlICovCgkJcmVwbHltc2cobSk7CgkJYnJlYWs7CgoJY2FzZSBUbGFiZWw6CgkJZiA9IGZz b3Blbihmc3lzLCAibGFiZWwiLCBPV1JJVEUpOwoJCWZzcHJpbnQoZiwgbS0+bGFiZWwpOwoJCWZz Y2xvc2UoZik7CgkJcmVwbHltc2cobSk7CgkJYnJlYWs7CgoJY2FzZSBUcmRzbmFyZjoKCQlmID0g ZnNvcGVuKGZzeXMsICJzbmFyZiIsIE9SRUFEKTsKCQlmc3JlYWQoZiwgYnVmLCBzaXplb2YgYnVm KTsKCQlmc2Nsb3NlKGYpOwoJCW0tPnNuYXJmID0gc3RyZHVwKChjaGFyKilidWYpOwoJCXJlcGx5 bXNnKG0pOwoJCWJyZWFrOwoKCWNhc2UgVHdyc25hcmY6CgkJZiA9IGZzb3Blbihmc3lzLCAic25h cmYiLCBPV1JJVEUpOwoJCWZzcHJpbnQoZiwgbS0+c25hcmYpOwoJCWZzY2xvc2UoZik7CgkJcmVw bHltc2cobSk7CgkJYnJlYWs7CgoJY2FzZSBUcmRkcmF3OgoJCWlmKChuID0gZnNyZWFkKGZyZGRy YXcsIGJ1Ziwgc2l6ZW9mIGJ1ZikpIDwgMCl7CgkJCXJlcGx5ZXJyb3IobSk7CgkJCWJyZWFrOwoJ CX0KCQkvKgoJCSAqIElmIGl0IGlzIG5vdCBhICJub2JvcmRlciIgaW1hZ2UgbGllIHRvIHA5cCdz IGxpYmRyYXcgc2F5aW5nCgkJICogdGhhdCB0aGUgaW1hZ2UgaXMgc21hbGxlciwgdG8gcmVzcGVj dCB0aGUgd2luZG93IGJvcmRlci4KCQkgKi8KCQlpZihmcmRkcmF3ID09IGZjdGwpewoJCQlpZihi b3JkZXIpewoJCQkJciA9IFJlY3QoCgkJCQkJYXRvaSgoY2hhciopJmJ1Zls0KjEyXSksCgkJCQkJ YXRvaSgoY2hhciopJmJ1Zls1KjEyXSksCgkJCQkJYXRvaSgoY2hhciopJmJ1Zls2KjEyXSksCgkJ CQkJYXRvaSgoY2hhciopJmJ1Zls3KjEyXSkKCQkJCSk7CgkJCQlyID0gaW5zZXRyZWN0KHIsIEJv cmRlcndpZHRoKTsKCQkJCXNwcmludCgoY2hhciopJmJ1Zls0KjEyXSwgIiUxMWQgJTExZCAlMTFk ICUxMWQiLAoJCQkJCXIubWluLngsIHIubWluLnksIHIubWF4LngsIHIubWF4LnkpOwoJCQl9CgkJ fQoJCW0tPmNvdW50ID0gbjsKCQltLT5kYXRhID0gYnVmOwoJCWZyZGRyYXcgPSBmZGF0YTsKCQly ZXBseW1zZyhtKTsKCQlicmVhazsKCgljYXNlIFR3cmRyYXc6CgkJLyoKCQkgKiBJbiB0aGUgZHJh d2ZjYWxsIHByb3RvY29sOgoJCSAqIAlKOiBJbnN0YWxsIHNjcmVlbiBpbWFnZSBhcyBpbWFnZSAw CgkJICogCUk6IGdldCAic2NyZWVuIiAoaW1hZ2UgMCkgaW5mb3JtYXRpb24KCQkgKgoJCSAqIElu c3RlYWQsIHdlIHJlYWQgdGhlIHNjcmVlbiBpbWFnZSBuYW1lCgkJICogZnJvbSB3aW5uYW1lIGFu ZCBhc3NvY2lhdGUgaXQgdG8gYSBkZXZkcmF3CgkJICogaW1hZ2Ugd2l0aCB0aGUgY29tbWFuZCAn bicsIHdoaWNoIHdlCgkJICogd2lsbCBmcmVlIGFmdGVyIGN0bCBpcyByZWFkLgoJCSAqLwoJCVNF VChuKTsKCQlpZihtLT5jb3VudCA9PSAyICYmIG0tPmRhdGFbMF0gPT0gJ0onICYmIG0tPmRhdGFb MV0gPT0gJ0knKXsKCQkJaWQgPSAxOwoJCQlidWZbMF0gPSAnZic7CgkJCUJQTE9ORygmYnVmWzFd LCBpZCk7CgkJCWZzd3JpdGUoZmRhdGEsIGJ1ZiwgMSs0KTsKCQkJZiA9IGZzb3Blbihmc3lzLCAi d2lubmFtZSIsIE9SRUFEKTsKCQkJYnVmWzBdID0gJ24nOwoJCQluID0gZnNyZWFkKGYsICZidWZb MSs0KzFdLCA2NCk7CgkJCWJvcmRlciA9IChzdHJuY21wKChjaGFyKikmYnVmWzErNCsxXSwgIm5v Ym9yZGVyIiwgOCkgIT0gMCk7CgkJCWJ1ZlsxKzRdID0gbjsKCQkJZnNjbG9zZShmKTsKCQkJQlBM T05HKCZidWZbMV0sIGlkKTsKCQkJbiA9IGZzd3JpdGUoZmRhdGEsIGJ1ZiwgMSs0KzErbik7CgkJ CWZyZGRyYXcgPSBmY3RsOwoJCX0gZWxzZQoJCQluID0gZnN3cml0ZShmZGF0YSwgbS0+ZGF0YSwg bS0+Y291bnQpOwoJCWlmKG4gPCAwKQoJCQlyZXBseWVycm9yKG0pOwoJCWVsc2UKCQkJcmVwbHlt c2cobSk7CgkJYnJlYWs7CgkKCWNhc2UgVHRvcDoKCQlmID0gZnNvcGVuKGZzeXMsICJ3Y3RsIiwg T1dSSVRFKTsKCQlmc3ByaW50KGYsICJ0b3AiKTsKCQlmc2Nsb3NlKGYpOwoJCXJlcGx5bXNnKG0p OwoJCWJyZWFrOwoJCgljYXNlIFRyZXNpemU6CgkJZiA9IGZzb3Blbihmc3lzLCAid2N0bCIsIE9X UklURSk7CgkJZnNwcmludChmLCAicmVzaXplICVkICVkIiwgRHgobS0+cmVjdCksIER5KG0tPnJl Y3QpKTsKCQlmc2Nsb3NlKGYpOwoJCXJlcGx5bXNnKG0pOwoJCWJyZWFrOwoJfQp9CgovKgogKiBS ZXBseSB0byBtLgogKi8KUUxvY2sgcmVwbHlsb2NrOwp2b2lkCnJlcGx5bXNnKFdzeXNtc2cgKm0p CnsKCWludCBuOwoJc3RhdGljIHVjaGFyICptYnVmOwoJc3RhdGljIGludCBubWJ1ZjsKCgkvKiBU IC0+IFIgbXNnICovCglpZihtLT50eXBlJTIgPT0gMCkKCQltLT50eXBlKys7CgoJaWYoY2hhdHR5 KSBmcHJpbnQoMiwgIi0+ICVXXG4iLCBtKTsKCS8qIGNvcHkgdG8gb3V0cHV0IGJ1ZmZlciAqLwoJ biA9IHNpemVXMk0obSk7CgoJcWxvY2soJnJlcGx5bG9jayk7CglpZihuID4gbm1idWYpewoJCWZy ZWUobWJ1Zik7CgkJbWJ1ZiA9IG1hbGxvYyhuKTsKCQlpZihtYnVmID09IG5pbCkKCQkJc3lzZmF0 YWwoIm91dCBvZiBtZW1vcnkiKTsKCQlubWJ1ZiA9IG47Cgl9Cgljb252VzJNKG0sIG1idWYsIG4p OwoJaWYod3JpdGUoNCwgbWJ1ZiwgbikgIT0gbikKCQlzeXNmYXRhbCgid3JpdGU6ICVyIik7Cglx dW5sb2NrKCZyZXBseWxvY2spOwp9Cgp2b2lkCmtiZHRocmVhZCh2b2lkICphcmcpCnsKCUNGaWQg KmY7CglSdW5lIHI7CglXc3lzbXNnIG07CgoJZiA9IGFyZzsKCW0udHlwZSA9IFJyZGtiZDsKCXdo aWxlKDEpewoJCXJlY3Yoa2JkY2hhbiwgJm0udGFnKTsKCQlyID0gMDsKCQlpZihmc3JlYWQoZiwg JnIsIDIpIDwgMSkKCQkJc3lzZmF0YWwoInNob3J0IGtleWJvYXJkIHJlYWQiKTsKCQltLnJ1bmUg PSByOwoJCXJlcGx5bXNnKCZtKTsKCX0KfQoKdm9pZAptb3VzZXRocmVhZCh2b2lkICphcmcpCnsK CWNoYXIgYnVmWzQ5XTsKCUNGaWQgKmY7CglXc3lzbXNnIG07CgoJZiA9IGFyZzsKCW0udHlwZSA9 IFJyZG1vdXNlOwoJd2hpbGUoMSl7CgkJcmVjdihtb3VzZWNoYW4sICZtLnRhZyk7CgkJaWYoZnNy ZWFkKGYsIGJ1ZiwgNDkpIDwgNDkpCgkJCXN5c2ZhdGFsKCJzaG9ydCBtb3VzZSByZWFkIik7CgkJ bS5yZXNpemVkID0gMDsKCQlpZihidWZbMF0gPT0gJ3InKQoJCQltLnJlc2l6ZWQgPSAxOwoJCW0u bW91c2UueHkueCA9IGF0b2koYnVmKzErMCoxMik7CgkJbS5tb3VzZS54eS55ID0gYXRvaShidWYr MSsxKjEyKTsKCQltLm1vdXNlLmJ1dHRvbnMgPSBhdG9pKGJ1ZisxKzIqMTIpOwoJCW0ubW91c2Uu bXNlYyA9IGF0b2koYnVmKzErMyoxMik7CgkJcmVwbHltc2coJm0pOwoJfQp9Cgo= --00151747bdb8e90cd904b0c57d83 Content-Type: text/x-patch; charset=US-ASCII; name="p9p.patch" Content-Disposition: attachment; filename="p9p.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_guillrx61 ZGlmZiAtciAxNmQ0MDgxMjM2YWYgc3JjL2xpYmRyYXcvaW5pdC5jCi0tLSBhL3NyYy9saWJkcmF3 L2luaXQuYwlXZWQgQXByIDI3IDEzOjE4OjA3IDIwMTEgLTA0MDAKKysrIGIvc3JjL2xpYmRyYXcv aW5pdC5jCVdlZCBOb3YgMDIgMTg6MDc6MTMgMjAxMSArMDEwMApAQCAtMTQ1LDcgKzE0NSw3IEBA CiAJfQogCiAJaW1hZ2UtPmRpc3BsYXkgPSBkOwotCWltYWdlLT5pZCA9IDA7CisJaW1hZ2UtPmlk ID0gYXRvaShpbmZvKzEqMTIpOwogCWltYWdlLT5jaGFuID0gc3RydG9jaGFuKGluZm8rMioxMik7 CiAJaW1hZ2UtPmRlcHRoID0gY2hhbnRvZGVwdGgoaW1hZ2UtPmNoYW4pOwogCWltYWdlLT5yZXBs ID0gYXRvaShpbmZvKzMqMTIpOwpAQCAtMjA2LDYgKzIwNiwxMiBAQAogCQlyZXR1cm4gbmlsOwog CX0KIAlkaXNwLT5zcnZmZCA9IC0xOworCS8qCisJICogVGhlIGltYWdlIGlkIDEgaXMgdXNlZCBi eSBkZXZkcmF3LjlwIHRvIGlkZW50aWZ5CisJICogdGhlIGltYWdlIGFzc29jaWF0ZWQgdG8gd2lu bmFtZS4gU2luY2UgdGhlIGNvdW50ZXIKKwkgKiBpcyBwcmVpbmNyZW1lbnRlZCBiZWZvcmUgdXNl LCAxIGlzIGEgc2FmZSB2YWx1ZS4KKwkgKi8KKwlkaXNwLT5pbWFnZWlkID0gMTsKIAlpbWFnZSA9 IG5pbDsKIAlpZigwKXsKICAgICBFcnJvcjI6Cg== --00151747bdb8e90cd904b0c57d83--