Date: Mon, 1 Mar 1999 17:48:14 -0800 (PST) From: Dan Rich To: bug-cvs@gnu.org Subject: "cvs list" patch Content-Type: MULTIPART/MIXED; BOUNDARY="-559023410-851401618-920339294=:20844" This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---559023410-851401618-920339294=:20844 Content-Type: TEXT/PLAIN; charset=US-ASCII Enclosed is a patch to add list capabilities to the CVS pserver (it should also work with other servers and non-server implementations, but has not been tested). Attached is a patch against cvs 1.10.5, as well as the list.c file that is required for this functionality (since most versions of patch don't like trying to create new files). -- Dan Rich | http://www.employees.org/~drich/ Tech. Lead, Web Infr. Team | "Danger, you haven't seen the last of me!" Cisco Systems, Inc. | "No, but the first of you turns my stomach!" (408) 527-3195 | -- The Firesign Theatre's Nick Danger Friends of Randal Schwartz: http://www.lightlink.com/fors/ ---559023410-851401618-920339294=:20844 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="cvs-list.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="cvs-list.patch" SW5kZXg6IE1ha2VmaWxlLmluDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL29wdC9jdnNyb290L1JlcG9zaXRvcnkvQ0NPL1RoaXJkUGFy dHkvY3ZzL3NyYy9NYWtlZmlsZS5pbix2DQpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMS4xLjINCmRpZmYgLXUgLXIxLjEuMS4yIE1ha2VmaWxlLmluDQotLS0g c3JjL01ha2VmaWxlLmluCTE5OTkvMDIvMjYgMjA6NDU6NTMJMS4xLjEuMg0K KysrIHNyYy9NYWtlZmlsZS5pbgkxOTk5LzAzLzAyIDAxOjQxOjU3DQpAQCAt MzksNyArMzksNyBAQA0KIA0KIFNPVVJDRVMgPSBhZGQuYyBhZG1pbi5jIGJ1 ZmZlci5jIGNoZWNraW4uYyBjaGVja291dC5jIGNsYXNzaWZ5LmMgY2xpZW50 LmMgXA0KIGNvbW1pdC5jIGNyZWF0ZV9hZG0uYyBjdnNyYy5jIGRpZmYuYyBl ZGl0LmMgZW50cmllcy5jIGVycm9yLmMgZXhwYW5kX3BhdGguYyBcDQotZmls ZWF0dHIuYyBmaW5kX25hbWVzLmMgaGFyZGxpbmsuYyBoYXNoLmMgaGlzdG9y eS5jIGlnbm9yZS5jIGltcG9ydC5jIFwNCitmaWxlYXR0ci5jIGZpbmRfbmFt ZXMuYyBoYXJkbGluay5jIGhhc2guYyBoaXN0b3J5LmMgaWdub3JlLmMgaW1w b3J0LmMgbGlzdC5jIFwNCiBsb2NrLmMgbG9nLmMgbG9naW4uYyBsb2dtc2cu YyBtYWluLmMgbWttb2R1bGVzLmMgbW9kdWxlcy5jIG15bmRibS5jIG5vX2Rp ZmYuYyBcDQogcGFyc2VpbmZvLmMgcGF0Y2guYyByY3MuYyByY3NjbWRzLmMg cmVjdXJzZS5jIHJlbGVhc2UuYyByZW1vdmUuYyByZXBvcy5jIFwNCiByb290 LmMgcnRhZy5jIHNjcmFtYmxlLmMgc2VydmVyLmMgc3RhdHVzLmMgc3Vici5j IGZpbGVzdWJyLmMgcnVuLmMgXA0KQEAgLTQ3LDcgKzQ3LDcgQEANCiANCiBP QkpFQ1RTID0gYWRkLm8gYWRtaW4ubyBidWZmZXIubyBjaGVja2luLm8gY2hl Y2tvdXQubyBjbGFzc2lmeS5vIGNsaWVudC5vIFwNCiBjb21taXQubyBjcmVh dGVfYWRtLm8gY3ZzcmMubyBkaWZmLm8gZWRpdC5vIGVudHJpZXMubyBleHBh bmRfcGF0aC5vIFwNCi1maWxlYXR0ci5vIGZpbmRfbmFtZXMubyBoYXJkbGlu ay5vIGhhc2gubyBoaXN0b3J5Lm8gaWdub3JlLm8gaW1wb3J0Lm8gXA0KK2Zp bGVhdHRyLm8gZmluZF9uYW1lcy5vIGhhcmRsaW5rLm8gaGFzaC5vIGhpc3Rv cnkubyBpZ25vcmUubyBpbXBvcnQubyBsaXN0Lm8gXA0KIGxvY2subyBsb2cu byBsb2dpbi5vIGxvZ21zZy5vIG1haW4ubyBta21vZHVsZXMubyBtb2R1bGVz Lm8gbXluZGJtLm8gbm9fZGlmZi5vIFwNCiBwYXJzZWluZm8ubyBwYXRjaC5v IHJjcy5vIHJjc2NtZHMubyByZWN1cnNlLm8gcmVsZWFzZS5vIHJlbW92ZS5v IHJlcG9zLm8gXA0KIHJvb3QubyBydGFnLm8gc2NyYW1ibGUubyBzZXJ2ZXIu byBzdGF0dXMubyB0YWcubyB1cGRhdGUubyBcDQpJbmRleDogY2xpZW50LmMN Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvb3B0L2N2c3Jv b3QvUmVwb3NpdG9yeS9DQ08vVGhpcmRQYXJ0eS9jdnMvc3JjL2NsaWVudC5j LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMw0KZGlmZiAtdSAtcjEu MS4xLjMgY2xpZW50LmMNCi0tLSBzcmMvY2xpZW50LmMJMTk5OS8wMi8yNiAy MDo0NTo1NAkxLjEuMS4zDQorKysgc3JjL2NsaWVudC5jCTE5OTkvMDMvMDIg MDE6NDE6NTcNCkBAIC0xMTcsNiArMTE3LDcgQEANCiBpbnQgc3RhdHVzIFBS T1RPKChpbnQgYXJnYywgY2hhciAqKmFyZ3YpKTsNCiBpbnQgdGFnIFBST1RP KChpbnQgYXJnYywgY2hhciAqKmFyZ3YpKTsNCiBpbnQgdXBkYXRlIFBST1RP KChpbnQgYXJnYywgY2hhciAqKmFyZ3YpKTsNCitpbnQgbGlzdCBQUk9UTygo aW50IGFyZ2MsIGNoYXIgKiphcmd2KSk7DQogDQogLyogQWxsIHRoZSByZXNw b25zZSBoYW5kbGluZyBmdW5jdGlvbnMuICAqLw0KIHN0YXRpYyB2b2lkIGhh bmRsZV9vayBQUk9UTygoY2hhciAqLCBpbnQpKTsNCkluZGV4OiBjdnMuaA0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9vcHQvY3Zzcm9v dC9SZXBvc2l0b3J5L0NDTy9UaGlyZFBhcnR5L2N2cy9zcmMvY3ZzLmgsdg0K cmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4zDQpkaWZmIC11IC1yMS4xLjEu MyBjdnMuaA0KLS0tIHNyYy9jdnMuaAkxOTk5LzAyLzI2IDIwOjQ1OjU0CTEu MS4xLjMNCisrKyBzcmMvY3ZzLmgJMTk5OS8wMy8wMiAwMTo0MTo1Nw0KQEAg LTg1Myw2ICs4NTMsNyBAQA0KIGV4dGVybiBpbnQgcnRhZyBQUk9UTygoaW50 IGFyZ2MsIGNoYXIgKiphcmd2KSk7DQogZXh0ZXJuIGludCBjdnNzdGF0dXMg UFJPVE8oKGludCBhcmdjLCBjaGFyICoqYXJndikpOw0KIGV4dGVybiBpbnQg Y3ZzdGFnIFBST1RPKChpbnQgYXJnYywgY2hhciAqKmFyZ3YpKTsNCitleHRl cm4gaW50IGN2c2xpc3QgUFJPVE8oKGludCBhcmdjLCBjaGFyICoqYXJndikp Ow0KIAwNCiBleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgbG9va3VwX2NvbW1h bmRfYXR0cmlidXRlIFBST1RPKChjaGFyICopKTsNCiAMDQpJbmRleDogbWFp bi5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL29wdC9j dnNyb290L1JlcG9zaXRvcnkvQ0NPL1RoaXJkUGFydHkvY3ZzL3NyYy9tYWlu LmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEuMS4zDQpkaWZmIC11IC1y MS4xLjEuMyBtYWluLmMNCi0tLSBzcmMvbWFpbi5jCTE5OTkvMDIvMjYgMjA6 NDU6NTUJMS4xLjEuMw0KKysrIHNyYy9tYWluLmMJMTk5OS8wMy8wMiAwMTo0 MTo1Nw0KQEAgLTExNCw2ICsxMTQsNyBAQA0KICNpZmRlZiBTRVJWRVJfU1VQ UE9SVA0KICAgICB7ICJrc2VydmVyIiwgIE5VTEwsICAgICAgIE5VTEwsICAg ICAgICBzZXJ2ZXIgfSwgLyogcGxhY2Vob2xkZXIgKi8NCiAjZW5kaWYNCisg ICAgeyAibGlzdCIsICAgICAibHMiLCAgICAgICBOVUxMLCAgICAgICAgY3Zz bGlzdCB9LA0KICAgICB7ICJsb2ciLCAgICAgICJsbyIsICAgICAgICJybG9n IiwgICAgICBjdnNsb2cgfSwNCiAjaWZkZWYgQVVUSF9DTElFTlRfU1VQUE9S VA0KICAgICB7ICJsb2dpbiIsICAgICJsb2dvbiIsICAgICJsZ24iLCAgICAg ICBsb2dpbiB9LA0KSW5kZXg6IHNlcnZlci5jDQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpSQ1MgZmlsZTogL29wdC9jdnNyb290L1JlcG9zaXRvcnkvQ0NP L1RoaXJkUGFydHkvY3ZzL3NyYy9zZXJ2ZXIuYyx2DQpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMS4xLjMNCmRpZmYgLXUgLXIxLjEuMS4zIHNlcnZlci5jDQot LS0gc3JjL3NlcnZlci5jCTE5OTkvMDIvMjYgMjA6NDU6NTUJMS4xLjEuMw0K KysrIHNyYy9zZXJ2ZXIuYwkxOTk5LzAzLzAyIDAxOjQxOjU3DQpAQCAtMzY0 OSw2ICszNjQ5LDE5IEBADQogICAgIHNlcnZlX2NvIChhcmcpOw0KIH0NCiAM DQorDQorc3RhdGljIHZvaWQgc2VydmVfbGlzdCBQUk9UTyAoKGNoYXIgKikp Ow0KKw0KK3N0YXRpYyB2b2lkDQorc2VydmVfbGlzdCAoYXJnKQ0KKyAgICBj aGFyICphcmc7DQorew0KKyAgICBpZiAocHJpbnRfcGVuZGluZ19lcnJvciAo KSkNCisJcmV0dXJuOw0KKw0KKyAgICBkb19jdnNfY29tbWFuZCAoImxpc3Qi LCBjdnNsaXN0KTsNCit9DQorDA0KIHZvaWQNCiBzZXJ2ZXJfY29weV9maWxl IChmaWxlLCB1cGRhdGVfZGlyLCByZXBvc2l0b3J5LCBuZXdmaWxlKQ0KICAg ICBjaGFyICpmaWxlOw0KQEAgLTQ1MDQsNiArNDUxNyw3IEBADQogICBSRVFf TElORSgiZXhwYW5kLW1vZHVsZXMiLCBzZXJ2ZV9leHBhbmRfbW9kdWxlcywg MCksDQogICBSRVFfTElORSgiY2kiLCBzZXJ2ZV9jaSwgUlFfRVNTRU5USUFM KSwNCiAgIFJFUV9MSU5FKCJjbyIsIHNlcnZlX2NvLCBSUV9FU1NFTlRJQUwp LA0KKyAgUkVRX0xJTkUoImxpc3QiLCBzZXJ2ZV9saXN0LCAwKSwNCiAgIFJF UV9MSU5FKCJ1cGRhdGUiLCBzZXJ2ZV91cGRhdGUsIFJRX0VTU0VOVElBTCks DQogICBSRVFfTElORSgiZGlmZiIsIHNlcnZlX2RpZmYsIDApLA0KICAgUkVR X0xJTkUoImxvZyIsIHNlcnZlX2xvZywgMCksDQo= ---559023410-851401618-920339294=:20844 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="list.c" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="list.c" LyoNCiAqIENvcHlyaWdodCAoYykgMTk5OCwgRGFuIFJpY2ggPGRyaWNoQGNp c2NvLmNvbT4NCiAqDQogKiBZb3UgbWF5IGRpc3RyaWJ1dGUgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcw0K ICogc3BlY2lmaWVkIGluIHRoZSBSRUFETUUgZmlsZSB0aGF0IGNvbWVzIHdp dGggdGhlIENWUyBzb3VyY2UgZGlzdHJpYnV0aW9uLg0KICogDQogKiBMaXN0 IERpcmVjdG9yeQ0KICovDQoNCiNpbmNsdWRlIDx0aW1lLmg+DQojaW5jbHVk ZSA8cHdkLmg+DQojaW5jbHVkZSA8Z3JwLmg+DQojaW5jbHVkZSAiY3ZzLmgi DQoNCnN0YXRpYyBpbnQgY3ZzbGlzdF9maWxlcHJvYyBQUk9UTygodm9pZCAq Y2FsbGVyZGF0LA0KCQkJCSAgIHN0cnVjdCBmaWxlX2luZm8gKmZpbmZvKSk7 DQpzdGF0aWMgRHR5cGUgY3ZzbGlzdF9kaXJwcm9jIFBST1RPKCh2b2lkICpj YWxsZXJkYXQsDQogICAgCQkJCSAgICBjaGFyICpkaXIsDQogICAgCQkJCSAg ICBjaGFyICpyZXBvcywNCiAgICAJCQkJICAgIGNoYXIgKnVwZGF0ZV9kaXIs DQogICAgCQkJCSAgICBMaXN0ICplbnRyaWVzKSk7DQpzdGF0aWMgaW50IGN2 c2xpc3Rfb3V0cHV0X2RpciBQUk9UTygoTm9kZSAqbm9kZSwNCgkJCQkgICAg IHZvaWQgKmNsb3N1cmUpKTsNCnN0YXRpYyBpbnQgY3ZzbGlzdF9vdXRwdXRf ZmlsZSBQUk9UTygoY2hhciAqbmFtZSkpOw0Kc3RhdGljIGludCBjdnNsaXN0 X3RhZ19wcm9jIFBST1RPKChOb2RlICogcCwgdm9pZCAqY2xvc3VyZSkpOw0K DQpzdGF0aWMgY2hhciAqbnVtdGFnOw0Kc3RhdGljIGNoYXIgKmRhdGUgPSBO VUxMOw0Kc3RhdGljIGludCBmb3JjZV90YWdfbWF0Y2ggPSAxOyAgICAgICAg IC8qIGZvcmNlIHRhZyB0byBtYXRjaCBieSBkZWZhdWx0ICovDQpzdGF0aWMg aW50IGxvY2FsID0gMDsNCnN0YXRpYyBpbnQgdmVyYm9zZSA9IDA7DQpzdGF0 aWMgaW50IGxpc3RfYXR0aWMgPSAwOw0Kc3RhdGljIFJDU05vZGUgKnhyY3Nu b2RlOw0KDQpzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhdHVzX3VzYWdl W10gPQ0Kew0KICAgICJVc2FnZTogJXMgJXMgWy1hbFJ2XSBbLXIgdGFnfC1E IGRhdGVdIG1vZHVsZXNcbiIsDQogICAgIlx0LWFcdEluY2x1ZGUgYXR0aWMg ZmlsZXNcbiIsDQogICAgIlx0LXZcdFZlcmJvc2UgZm9ybWF0OyBpbmNsdWRl cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB0aGUgZmlsZVxuIiwNCiAg ICAiXHQtbFx0UHJvY2VzcyB0aGlzIGRpcmVjdG9yeSBvbmx5IChub3QgcmVj dXJzaXZlKS5cbiIsDQogICAgIlx0LVJcdFByb2Nlc3MgZGlyZWN0b3JpZXMg cmVjdXJzaXZlbHkuXG4iLA0KICAgICJcdC1yIHJldlx0RXhpc3RpbmcgcmV2 aXNpb24vdGFnLlxuIiwNCiAgICAiXHQtRFx0RXhpc3RpbmcgZGF0ZS5cbiIs DQogICAgIihTcGVjaWZ5IHRoZSAtLWhlbHAgZ2xvYmFsIG9wdGlvbiBmb3Ig YSBsaXN0IG9mIG90aGVyIGhlbHAgb3B0aW9ucylcbiIsDQogICAgTlVMTA0K fTsNCg0KaW50DQpjdnNsaXN0IChhcmdjLCBhcmd2KQ0KICAgIGludCBhcmdj Ow0KICAgIGNoYXIgKiphcmd2Ow0Kew0KICAgIGludCBjOw0KICAgIGludCBp Ow0KICAgIGludCB3aGljaDsNCiAgICBpbnQgcmV0dmFsOw0KICAgIA0KICAg IG9wdGluZCA9IDA7DQogICAgd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBh cmd2LCAiK2FsUnI6diIpKSAhPSAtMSkNCiAgICB7DQogICAgICAgIHN3aXRj aCAoYykNCiAgICAgICAgew0KICAgICAgICAgICAgY2FzZSAnYSc6DQogICAg ICAgICAgICAgICAgbGlzdF9hdHRpYyA9IDE7DQoJCWJyZWFrOw0KICAgICAg ICAgICAgY2FzZSAnRCc6DQogICAgICAgICAgICAgICAgaWYgKGRhdGUpDQog ICAgICAgICAgICAgICAgICAgIGZyZWUgKGRhdGUpOw0KICAgICAgICAgICAg ICAgIGRhdGUgPSBNYWtlX0RhdGUgKG9wdGFyZyk7DQogICAgICAgICAgICAg ICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdsJzoNCiAgICAgICAgICAg ICAgICBsb2NhbCA9IDE7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAg ICAgICAgICBjYXNlICdSJzoNCiAgICAgICAgICAgICAgICBsb2NhbCA9IDA7 DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdy JzoNCiAgICAgICAgICAgICAgICBudW10YWcgPSBvcHRhcmc7DQogICAgICAg ICAgICAgICAgYnJlYWs7DQoJICAgIGNhc2UgJ3YnOg0KCQl2ZXJib3NlID0g MTsNCgkJYnJlYWs7DQogICAgICAgICAgICBjYXNlICc/JzoNCiAgICAgICAg ICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgdXNhZ2UgKHN0YXR1c191 c2FnZSk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIH0NCiAg ICB9DQogICAgYXJnYyAtPSBvcHRpbmQ7DQogICAgYXJndiArPSBvcHRpbmQ7 DQoNCiAgICBpZiAoZGF0ZSAmJiBudW10YWcpDQoJZXJyb3IgKDEsIDAsICIt ciBhbmQgLUQgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIik7DQoN CiAgICB3cmFwX3NldHVwICgpOw0KI2lmZGVmIENMSUVOVF9TVVBQT1JUDQog ICAgaWYgKGNsaWVudF9hY3RpdmUpIHsNCg0KICAgICAgICBzdGFydF9zZXJ2 ZXIgKCk7DQoNCiAgICAgICAgaWduX3NldHVwICgpOw0KDQogICAgICAgIGlm IChsaXN0X2F0dGljKQ0KICAgICAgICAgICAgc2VuZF9hcmcoIi1hIik7DQoJ aWYgKGxvY2FsKQ0KCSAgc2VuZF9hcmcoIi1sIik7DQogICAgICAgIGlmICh2 ZXJib3NlKQ0KCSAgICBzZW5kX2FyZygiLXYiKTsNCglpZiAobnVtdGFnKQ0K CSAgICBvcHRpb25fd2l0aF9hcmcgKCItciIsIG51bXRhZyk7DQoJaWYgKGRh dGUpDQoJICAgIGNsaWVudF9zZW5kZGF0ZSAoZGF0ZSk7DQoNCiNpZiAwDQog ICAgICAgIGlmIChzdXBwb3J0ZWRfcmVxdWVzdCgiZXhwYW5kLW1vZHVsZXMi KSkNCiAgICAgICAgew0KICAgICAgICAgICAgLyogVGhpcyBpcyBkb25lIGhl cmUgYmVjYXVzZSB3ZSBuZWVkIHRvIHJlYWQgcmVzcG9uc2VzDQogICAgICAg ICAgICAgICBmcm9tIHRoZSBzZXJ2ZXIgYmVmb3JlIHdlIHNlbmQgdGhlIGNv bW1hbmQgY2hlY2tvdXQgb3INCiAgICAgICAgICAgICAgIGV4cG9ydCBmaWxl cy4gKi8NCg0KICAgICAgICAgICAgY2xpZW50X2V4cGFuZF9tb2R1bGVzIChh cmdjLCBhcmd2LCBsb2NhbCk7DQogICAgICAgIH0NCiNlbmRpZg0KDQogICAg ICAgIHsNCgkgICAgLyogU2VuZCBhbnkgcmVtYWluaW5nIGFyZ3VtZW50cyAt LSBwcm9iYWJseSBkaXIvZmlsZSBuYW1lcyAqLw0KICAgICAgICAgICAgaW50 IGk7DQogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgKytpKQ0K ICAgICAgICAgICAgICAgIHNlbmRfYXJnIChhcmd2W2ldKTsNCiAgICAgICAg fQ0KDQogICAgICAgIHNlbmRfdG9fc2VydmVyICgibGlzdFwwMTIiLCAwKTsJ LyogU2VuZCB0aGUgY29tbWFuZCAqLw0KDQogICAgICAgIHJldHVybiBnZXRf cmVzcG9uc2VzX2FuZF9jbG9zZSAoKTsNCiAgICB9DQojZW5kaWYNCg0KDQoj aWZkZWYgU0VSVkVSX1NVUFBPUlQNCiAgICAvKiBJZiB3ZSdyZSB0aGUgc2Vy dmVyLCBtYWtlIHN1cmUgd2UncmUgc3RhcnRpbmcgYXQgdGhlIHJvb3QgKi8N CiAgICBpZiAoc2VydmVyX2FjdGl2ZSkgew0KCWNoYXIgYnVmWzgwXTsNCglD VlNfQ0hESVIoQ1ZTcm9vdF9kaXJlY3RvcnkpOw0KICAgIH0NCiNlbmRpZg0K DQojaWYgMA0KICAgIGlmIChudW10YWcgIT0gTlVMTCkNCgl0YWdfY2hlY2tf dmFsaWQgKG51bXRhZywgYXJnYywgYXJndiwgbG9jYWwsIDAsICIiKTsNCiNl bmRpZg0KDQogICAgd2hpY2ggPSBXX1JFUE9TOw0KICAgIGlmIChsaXN0X2F0 dGljKSB7DQogICAgICB3aGljaCB8PSBXX0FUVElDOw0KICAgIH0NCiAgICAv KiBzdGFydCB0aGUgcmVjdXJzaW9uIHByb2Nlc3NvciAqLw0KICAgIGN2c19v dXRwdXRfdGFnZ2VkICgiK2xpc3QiLCBOVUxMKTsNCiAgICByZXR2YWwgPSBz dGFydF9yZWN1cnNpb24gKGN2c2xpc3RfZmlsZXByb2MsIChGSUxFU0RPTkVQ Uk9DKSBOVUxMLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN2c2xp c3RfZGlycHJvYywgKERJUkxFQVZFUFJPQykgTlVMTCwgTlVMTCwNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhcmdjLCBhcmd2LCBsb2NhbCwNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCwgMCwgMSwgKGNoYXIg KikgTlVMTCwgMSk7DQogICAgY3ZzX291dHB1dF90YWdnZWQgKCItbGlzdCIs IE5VTEwpOw0KICAgIHJldHVybihyZXR2YWwpOw0KfQ0KDQovKg0KICogRGlz cGxheSBmaWxlIGluZm8NCiAqLw0KLyogQVJHU1VTRUQgKi8NCnN0YXRpYyBp bnQNCmN2c2xpc3RfZmlsZXByb2MgKGNhbGxlcmRhdCwgZmluZm8pDQogICAg dm9pZCAqY2FsbGVyZGF0Ow0KICAgIHN0cnVjdCBmaWxlX2luZm8gKmZpbmZv Ow0Kew0KICBpbnQgc2F3ZGlyID0gMDsNCiAgY2hhciAqYnVmOw0KICBjaGFy ICpubHB0cjsJCS8qIFRvIHN0cmlwIFxuIGZyb20gb3V0cHV0ICovDQogIGNo YXIgKmZpbGU7DQogIFZlcnNfVFMgKnZlcnM7DQogIA0KICAvKiBJZiBhIHBh cnRpY3VsYXIgcmV2aXNpb24gd2FzIHNwZWNpZmllZCwgb25seSBzaG93IHRo YXQgb25lICovDQogIGlmIChudW10YWcgIT0gTlVMTCB8fCBkYXRlICE9IE5V TEwpIHsNCiAgICB2ZXJzID0gVmVyc2lvbl9UUyAoZmluZm8sIE5VTEwsIE5V TEwsIE5VTEwsIDAsIDApOw0KICAgIGlmIChSQ1NfZ2V0dmVyc2lvbiAodmVy cy0+c3JjZmlsZSwgbnVtdGFnLCBkYXRlLCBmb3JjZV90YWdfbWF0Y2gsIE5V TEwpDQoJPT0gTlVMTCkgew0KICAgICAgcmV0dXJuKDApOw0KICAgIH0NCiAg fQ0KICANCiAgY3ZzbGlzdF9vdXRwdXRfZmlsZShmaW5mby0+ZnVsbG5hbWUp Ow0KDQogIGlmICh2ZXJib3NlKSB7DQogICAgdmVycyA9IFZlcnNpb25fVFMg KGZpbmZvLCBOVUxMLCBOVUxMLCBOVUxMLCAwLCAwKTsNCiAgICBpZiAodmVy cy0+c3JjZmlsZSkgew0KICAgICAgTGlzdCAqc3ltYm9scyA9IFJDU19zeW1i b2xzKHZlcnMtPnNyY2ZpbGUpOw0KICAgICAgDQogICAgICBjdnNfb3V0cHV0 X3RhZ2dlZCAoIitpbmZvIiwgTlVMTCk7DQogICAgICBpZiAodmVycy0+dm5f cmNzID09IE5VTEwpDQoJY3ZzX291dHB1dF90YWdnZWQgKCJmaW5mbyIsIiAg IFJlcG9zaXRvcnkgcmV2aXNpb246XHRObyByZXZpc2lvbiBjb250cm9sIGZp bGUiKTsNCiAgICAgIGVsc2UNCgl7DQoJICBidWYgPSAoY2hhciAqKW1hbGxv YygyNCArIHN0cmxlbih2ZXJzLT52bl9yY3MpICsgMSArIA0KCQkJICAgICAg IHN0cmxlbih2ZXJzLT5zcmNmaWxlLT5wYXRoKSArIDEpOw0KCSAgc3ByaW50 ZihidWYsIiAgIFJlcG9zaXRvcnkgcmV2aXNpb246XHQlc1x0JXMiLA0KCQkg IHZlcnMtPnZuX3JjcywgdmVycy0+c3JjZmlsZS0+cGF0aCk7DQoJICBjdnNf b3V0cHV0X3RhZ2dlZCgiZmluZm8iLGJ1Zik7DQoJfQ0KICAgICAgY3ZzX291 dHB1dF90YWdnZWQoIm5ld2xpbmUiLCBOVUxMKTsNCiAgICAgIGN2c19vdXRw dXRfdGFnZ2VkKCJmaW5mbyIsIiAgIEV4aXN0aW5nIFRhZ3M6Iik7DQogICAg ICBjdnNfb3V0cHV0X3RhZ2dlZCgibmV3bGluZSIsIE5VTEwpOw0KICAgICAg aWYgKHN5bWJvbHMpIHsNCgl4cmNzbm9kZSA9IGZpbmZvLT5yY3M7DQoJKHZv aWQpIHdhbGtsaXN0IChzeW1ib2xzLCBjdnNsaXN0X3RhZ19wcm9jLCBOVUxM KTsNCiAgICAgIH0gZWxzZQ0KCWN2c19vdXRwdXRfdGFnZ2VkKCJmaW5mbyIs Ilx0Tm8gVGFncyBFeGlzdCIpOw0KICAgICAgDQogICAgICBjdnNfb3V0cHV0 X3RhZ2dlZCAoIi1pbmZvIiwgTlVMTCk7DQogICAgICBjdnNfb3V0cHV0X3Rh Z2dlZCAoIm5ld2xpbmUiLCBOVUxMKTsNCiAgICB9DQogIH0NCn0NCg0KLyoN CiAqIERpc3BsYXkgZGlyZWN0b3J5IGluZm8NCiAqLw0KLyogQVJHU1VTRUQg Ki8NCnN0YXRpYyBEdHlwZQ0KY3ZzbGlzdF9kaXJwcm9jIChjYWxsZXJkYXQs IGRpciwgcmVwb3MsIHVwZGF0ZV9kaXIsIGVudHJpZXMpDQogICAgdm9pZCAq Y2FsbGVyZGF0Ow0KICAgIGNoYXIgKmRpcjsNCiAgICBjaGFyICpyZXBvczsN CiAgICBjaGFyICp1cGRhdGVfZGlyOw0KICAgIExpc3QgKmVudHJpZXM7DQp7 DQogICAgY2hhciAqYnVmOw0KICAgIExpc3QgKmRpcnM7DQoNCiAgICBidWYg PSAoY2hhciAqKW1hbGxvYyhzdHJsZW4odXBkYXRlX2RpcikrMik7DQogICAg c3ByaW50ZihidWYsICIlcyIsIHVwZGF0ZV9kaXIpOw0KICAgIGN2c19vdXRw dXRfdGFnZ2VkICgiZm5hbWUiLCBidWYpOyANCiAgICBjdnNfb3V0cHV0X3Rh Z2dlZCAoIm5ld2xpbmUiLCBOVUxMKTsNCiAgICBmcmVlKGJ1Zik7DQogICAg DQogICAgaWYgKGxvY2FsKSB7CS8qIFdlIG5lZWQgdG8gb3V0cHV0IHRoZSBj dXJyZW50IGRpcnMgKi8NCiAgICAgIGRpcnMgPSBGaW5kX0RpcmVjdG9yaWVz ICh1cGRhdGVfZGlyLCBXX1JFUE9TLCBOVUxMKTsNCiAgICAgIHdhbGtsaXN0 KGRpcnMsIGN2c2xpc3Rfb3V0cHV0X2RpciwgdXBkYXRlX2Rpcik7DQogICAg fQ0KICAgIHJldHVybiAoUl9QUk9DRVNTKTsNCn0NCg0Kc3RhdGljIGludA0K Y3ZzbGlzdF9vdXRwdXRfZGlyIChub2RlLCBjbG9zdXJlKQ0KICAgICBOb2Rl ICpub2RlOw0KICAgICB2b2lkICpjbG9zdXJlOw0Kew0KICBjaGFyICpidWY7 DQoNCiAgYnVmID0gKGNoYXIgKiltYWxsb2Moc3RybGVuKChjaGFyICopY2xv c3VyZSkgKyBzdHJsZW4obm9kZS0+a2V5KSArIDMpOw0KICBzcHJpbnRmKGJ1 ZiwiJXMvJXMvIiwoY2hhciAqKWNsb3N1cmUsIG5vZGUtPmtleSk7DQogIGN2 c19vdXRwdXRfdGFnZ2VkICgiZm5hbWUiLCBidWYpOyANCiAgY3ZzX291dHB1 dF90YWdnZWQgKCJuZXdsaW5lIiwgTlVMTCk7DQogIGZyZWUoYnVmKTsNCn0N Cg0KDQpzdGF0aWMgaW50DQpjdnNsaXN0X291dHB1dF9maWxlIChuYW1lKQ0K ICAgICBjaGFyICpuYW1lOw0Kew0KICBjaGFyICpidWY7DQogIGNoYXIgKm5s cHRyOw0KDQogIGJ1ZiA9IChjaGFyICopbWFsbG9jKHN0cmxlbihuYW1lKSsx KTsNCiAgc3RybmNweShidWYsbmFtZSxzdHJsZW4obmFtZSkpOw0KICAqKGJ1 ZitzdHJsZW4obmFtZSkpID0gJ1wwJzsNCg0KICAvKiBjdnNfb3V0cHV0X3Rh Z2dlZCBkb2Vzbid0IGxpa2UgXG4gKi8NCiAgaWYgKChubHB0ciA9IHN0cmNo cihidWYsJ1xuJykpICE9IE5VTEwpIHsNCiAgICBubHB0ciA9ICdcMCc7DQog IH0NCg0KICBjdnNfb3V0cHV0X3RhZ2dlZCAoImZuYW1lIiwgYnVmKTsgDQog IGN2c19vdXRwdXRfdGFnZ2VkICgibmV3bGluZSIsIE5VTEwpOw0KICBmcmVl KGJ1Zik7DQp9DQoNCnN0YXRpYyBpbnQNCmN2c2xpc3RfdGFnX3Byb2MgKHAs IGNsb3N1cmUpDQogICAgIE5vZGUgKiBwOw0KICAgICB2b2lkICpjbG9zdXJl Ow0Kew0KICAgIGNoYXIgKmJyYW5jaCA9IE5VTEw7DQogICAgY2hhciAqYnVm Ow0KDQogICAgaWYgKFJDU19ub2RlaXNicmFuY2ggKHhyY3Nub2RlLCBwLT5r ZXkpKQ0KCWJyYW5jaCA9IFJDU193aGF0YnJhbmNoKHhyY3Nub2RlLCBwLT5r ZXkpIDsNCg0KICAgIGJ1ZiA9IHhtYWxsb2MgKDgwICsgc3RybGVuIChwLT5r ZXkpDQoJCSAgICsgKGJyYW5jaCA/IHN0cmxlbiAoYnJhbmNoKSA6IHN0cmxl biAocC0+ZGF0YSkpKTsNCiAgICBzcHJpbnRmIChidWYsICJcdCUtMjVzXHQo JXM6ICVzKSIsIHAtPmtleSwNCgkgICAgIGJyYW5jaCA/ICJicmFuY2giIDog InJldmlzaW9uIiwNCgkgICAgIGJyYW5jaCA/IGJyYW5jaCA6IHAtPmRhdGEp Ow0KICAgIGN2c19vdXRwdXRfdGFnZ2VkICgiZmluZm8iLGJ1Zik7DQogICAg Y3ZzX291dHB1dF90YWdnZWQgKCJuZXdsaW5lIixOVUxMKTsNCiAgICBmcmVl IChidWYpOw0KDQogICAgaWYgKGJyYW5jaCkNCglmcmVlIChicmFuY2gpOw0K DQogICAgcmV0dXJuICgwKTsNCn0NCg== ---559023410-851401618-920339294=:20844--