From dbus-bounces@lists.freedesktop.org Wed Mar  2 20:53:56 2005
Received: from [131.252.208.82] (helo=gabe.freedesktop.org) by mx26.web.de
	with esmtp (WEB.DE 4.104 #243) id 1D6Zuu-00088e-00 for
	danny.kukawka@web.de; Wed, 02 Mar 2005 20:53:56 +0100
Received: from gabe.freedesktop.org (localhost.localdomain [127.0.0.1]) by
	gabe.freedesktop.org (Postfix) with ESMTP id AE4FA9E7E6; Wed,  2 Mar 2005
	11:53:49 -0800 (PST)
X-Original-To: dbus@lists.freedesktop.org
Delivered-To: dbus@lists.freedesktop.org
Received: from monk.area614.net (monk.area614.net [64.46.156.22]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 56EBB9E718 for
	<dbus@lists.freedesktop.org>; Wed,  2 Mar 2005 11:53:46 -0800 (PST)
Received: from nexus.verbum.private (localhost.localdomain [127.0.0.1]) by
	monk.area614.net (Postfix) with ESMTP id BD77841082B; Wed,  2 Mar 2005
	14:53:05 -0500 (EST)
From: Colin Walters <walters@verbum.org>
To: Havoc Pennington <hp@redhat.com>
In-Reply-To: <1109385192.17079.13.camel@localhost.localdomain>
References: <1109275770.3934.28.camel@nexus.verbum.private>
	 <1109276829.9108.49.camel@localhost.localdomain>
	 <1109364549.3810.38.camel@nexus.verbum.private>
	 <1109385192.17079.13.camel@localhost.localdomain>
Date: Wed, 02 Mar 2005 14:53:42 -0500
Message-Id: <1109793222.3985.18.camel@nexus.verbum.private>
Mime-Version: 1.0
X-Mailer: Evolution 2.1.5 (2.1.5-1) 
Cc: dbus@lists.freedesktop.org
Subject: Re: [patch] initial conversion of glib bindings to use signatures
X-BeenThere: dbus@lists.freedesktop.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Desktop message bus technical discussion
	<dbus.lists.freedesktop.org>
List-Unsubscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=unsubscribe>
List-Archive: <http://lists.freedesktop.org/archives/dbus>
List-Post: <mailto:dbus@lists.freedesktop.org>
List-Help: <mailto:dbus-request@lists.freedesktop.org?subject=help>
List-Subscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0670844476=="
Mime-version: 1.0
Errors-To: dbus-bounces@lists.freedesktop.org
Sender: dbus-bounces@lists.freedesktop.org
X-Evolution-Source: pop://danny.kukawka@pop.web.de/
X-Evolution: 00000002-0020


--===============0670844476==
Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-1ejAq/39f2Bn9YlTD6c8"


--=-1ejAq/39f2Bn9YlTD6c8
Content-Type: multipart/mixed; boundary="=-2Fdgir69QvFIVeeyQuFS"


--=-2Fdgir69QvFIVeeyQuFS
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

On Fri, 2005-02-25 at 21:33 -0500, Havoc Pennington wrote:

> - I wonder if the convert-to-struct code should be in dbus-message.h=20
>   rather than in the glib bindings. Basically just add a=20
>   dbus_message_iter_get_as_c_struct () which could be called for any
>iterator
>   and would return the entire complex type starting at the current=20
>   iter position. We could even allow using it for the entire=20
>   message. So a message with "int, string, int" could be converted
>   to struct { dbus_int32_t; char*; dbus_int32_t; }
>  =20
>   If this is in libdbus a minor hack is needed to allow passing
>   in an alternate malloc function (such as g_malloc) probably.

I was looking at this briefly today, and came up with the attached patch
as potential API.  One problem with this is that if we do want to map
a{..} to GHashTable, then we need a way for bindings to handle that as a
special case.  I started thinking about passing in a
"DBusArrayDictReaderFunction" parameter, but that function would need to
be able to recursively call back into the reader function, know how to
handle OOM, etc., so it doesn't seem trivial.=20

So maybe it is better to just have it in the glib bindings for now.  On
the other hand though - the structure mappings seem useful for
retrieving array, structure, and variant values using e.g.
dbus_message_get_args.  Is there even a way to do that using the
DBusMessage API now? =20

In both of these cases though, if we go the a{..} -> GHashTable route we
still need API in glib for initializing a hash table on an extant memory
region; one call to determine how much space we need for N hash entries,
and one to initialize it.  We'd also need to modify g_hash_table_insert
to know to not resize "fixed" hash tables.  Looking at ghash.c, I think
I can see how to steal code from glib to make it work, but that seems
fairly evil.


--=-2Fdgir69QvFIVeeyQuFS
Content-Disposition: attachment; filename=dbus-potential-structure-api.patch
Content-Type: text/x-patch; name=dbus-potential-structure-api.patch;
	charset=utf-8
Content-Transfer-Encoding: base64

PyBkYnVzLTAuMzANCj8gZGJ1cy0wLjMwLnRhci5neg0KY3ZzIGRpZmY6IERpZmZpbmcgLg0KY3Zz
IGRpZmY6IERpZmZpbmcgYnVzDQpjdnMgZGlmZjogRGlmZmluZyBkYnVzDQpJbmRleDogZGJ1cy9k
YnVzLW1lbW9yeS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9kYnVzL2RidXMvZGJ1cy9k
YnVzLW1lbW9yeS5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMA0KZGlmZiAtdSAtcCAtcjEu
MTAgZGJ1cy1tZW1vcnkuaA0KLS0tIGRidXMvZGJ1cy1tZW1vcnkuaAk5IFNlcCAyMDA0IDEwOjIw
OjE3IC0wMDAwCTEuMTANCisrKyBkYnVzL2RidXMtbWVtb3J5LmgJMiBNYXIgMjAwNSAxOTozODox
MCAtMDAwMA0KQEAgLTQzLDcgKzQzLDggQEAgdm9pZCAgZGJ1c19mcmVlICAgICAgICAgICh2b2lk
ICAqbWVtb3J5KQ0KIA0KIHZvaWQgZGJ1c19mcmVlX3N0cmluZ19hcnJheSAoY2hhciAqKnN0cl9h
cnJheSk7DQogDQotdHlwZWRlZiB2b2lkICgqIERCdXNGcmVlRnVuY3Rpb24pICh2b2lkICptZW1v
cnkpOw0KK3R5cGVkZWYgdm9pZCAqKCogREJ1c1JlYWxsb2NGdW5jdGlvbikgKHZvaWQgKm1lbW9y
eSwgc2l6ZV90IGJ5dGVzKTsNCit0eXBlZGVmIHZvaWQgICgqIERCdXNGcmVlRnVuY3Rpb24pICh2
b2lkICptZW1vcnkpOw0KIA0KIHZvaWQgZGJ1c19zaHV0ZG93biAodm9pZCk7DQogDQpJbmRleDog
ZGJ1cy9kYnVzLW1lc3NhZ2UuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvZGJ1cy9kYnVz
L2RidXMvZGJ1cy1tZXNzYWdlLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjE2Ng0KZGlmZiAt
dSAtcCAtcjEuMTY2IGRidXMtbWVzc2FnZS5jDQotLS0gZGJ1cy9kYnVzLW1lc3NhZ2UuYwkyNSBG
ZWIgMjAwNSAyMjowMzozMCAtMDAwMAkxLjE2Ng0KKysrIGRidXMvZGJ1cy1tZXNzYWdlLmMJMiBN
YXIgMjAwNSAxOTozODoxOCAtMDAwMA0KQEAgLTE2NzEsNiArMTY3MSw0OCBAQCBkYnVzX21lc3Nh
Z2VfaXRlcl9nZXRfYmFzaWMgKERCdXNNZXNzYWdlDQogfQ0KIA0KIC8qKg0KKyAqDQorICogUmVj
dXJzaXZlbHkgY29waWVzIGl0ZXJhdG9yIGNvbnRlbnRzIGludG8gYSBDIHN0cnVjdHVyZS4NCisg
Kg0KKyAqIEZvciBiYXNpYyB2YWx1ZXMsIHRoZSBzdHJ1Y3R1cmUgY3JlYXRlZCBjb25mb3JtcyB0
byBDIHR5cGVzIGRlZmluZWQNCisgKiBieSBkYnVzLXR5cGVzLmg7IGUuZy4gYSBEQlVTX1RZUEVf
Qk9PTEVBTiBpcyByZWFkIGludG8gYQ0KKyAqIGRidXNfYm9vbF90IHZhbHVlLg0KKyAqDQorICog
U3RydWN0dXJlIHZhbHVlcyBhcmUgbWFwcGVkIHRvIGEgQyBzdHJ1Y3R1cmU7IGJ5IGRlZmF1bHQs
IHRoZSBuYW1lcw0KKyAqIG9mIGdlbmVyYXRlZCBzdHJ1Y3R1cmUgbWVtYmVycyBhcmUgbmFtZWQg
InZhbHVlMSIsICJ2YWx1ZTIiLCBldGMuDQorDQorICogQXJyYXlzIGFyZSBtYXBwZWQgdG8gYSBD
IHN0cnVjdHVyZSB3aXRoIHR3byBtZW1iZXJzOiBhDQorICogZGJ1c191aW50MzJfdCBtZW1iZXIg
bmFtZWQgImxlbmd0aCIsIGFuZCBhIHNlY29uZCBtZW1iZXIgbmFtZWQNCisgKiAidmFsdWVzIi4N
CisgKg0KKyAqIERpY3QgZW50cmllcyBhcmUgbWFwcGVkIHRvIGEgdHdvLW1lbWJlciBzdHJ1Y3R1
cmUsIHdpdGggdGhlIGZpcnN0DQorICogbWVtYmVyIGJlaW5nIG5hbWVkICJrZXkiLCBhbmQgdGhl
IHNlY29uZCBiZWluZyBuYW1lZCAidmFsdWUiLg0KKyAqDQorICogRmluYWxseSwgdmFyaWFudHMg
YXJlIG1hcHBlZCB0byBhIHR3by1tZW1iZXIgc3RydWN0dXJlIGNvbnRhaW5pbmcgYQ0KKyAqIGRi
dXNfdWludDMyX3QgdmFsdWUgd2l0aCB0aGUgdHlwZSBjb2RlIG9mIHRoZSB2YWx1ZSwgYW5kIHRo
ZSBzZWNvbmQNCisgKiBtZW1iZXIgaXMgYSB2b2lkICogcG9pbnRlciB0byB0aGUgdmFyaWFudCB2
YWx1ZS4NCisgKg0KKyAqIFNvbWUgZXhhbXBsZXM6DQorICoNCisgKiAiaSIgLT4gc3RydWN0IHsg
ZGJ1c19pbnQzMl90IHZhbHVlMTsgfTsNCisgKiAiYWkiIC0+IHN0cnVjdCB7IHN0cnVjdCB7IGRi
dXNfdWludDMyX3QgbGVuZ3RoOyBkYnVzX2ludDMyX3QgKnZhbHVlcyB9IHZhbHVlMTsgfTsNCisg
KiAiKHV1KXMiIC0+IHN0cnVjdCB7IHN0cnVjdCB7IGRidXNfdWludDMyX3QgdmFsdWUxOyBkYnVz
X3VpbnQzMl90IHZhbHVlMjsgfSB2YWx1ZTE7IGNvbnN0IGNoYXIgKnZhbHVlMjsgfTsNCisgKiAi
YXtzdn0iIC0+IHN0cnVjdCB7IHN0cnVjdCB7IGRidXNfdWludDMyX3QgbGVuZ3RoOyBzdHJ1Y3Qg
eyBjb25zdCBjaGFyICprZXk7IHN0cnVjdCB7IGRidXNfdWludDMyX3QgdHlwZTsgdm9pZCAqdmFs
dWU7IH0gdmFsdWU7IH0gKnZhbHVlczsgfSB2YWx1ZTE7IH07DQorICoNCisgKiBAcGFyYW0gaXRl
ciB0aGUgaXRlcmF0b3INCisgKiBAcGFyYW0gYWxsb2NmdW5jIGZ1bmN0aW9uIHRvIGFsbG9jYXRl
IG1lbW9yeSANCisgKiBAcGFyYW0gZnJlZWZ1bmMgZnVuY3Rpb24gdG8gZnJlZSBtZW1vcnk7IG9u
bHkgdXNlZCBpZiBhbGxvY2F0aW9uIGZhaWxzDQorICogQHJldHVybnMgdGhlIGFsbG9jYXRlZCBz
dHJ1Y3R1cmUsIG9yIE5VTEwgaWYgb3V0IG9mIG1lbW9yeQ0KKyAqLw0KK3ZvaWQgKg0KK2RidXNf
bWVzc2FnZV9pdGVyX2dldF9zdHJ1Y3R1cmUgKERCdXNNZXNzYWdlSXRlciAgICAqaXRlciwNCisJ
CQkJIERCdXNSZWFsbG9jRnVuY3Rpb24gYWxsb2NmdW5jLA0KKwkJCQkgREJ1c0ZyZWVGdW5jdGlv
biAgICBmcmVlZnVuYykNCit7DQorICANCit9DQorDQorLyoqDQogICogUmVhZHMgYSBibG9jayBv
ZiBmaXhlZC1sZW5ndGggdmFsdWVzIGZyb20gdGhlIG1lc3NhZ2UgaXRlcmF0b3IuDQogICogRml4
ZWQtbGVuZ3RoIHZhbHVlcyBhcmUgdGhvc2UgYmFzaWMgdHlwZXMgdGhhdCBhcmUgbm90IHN0cmlu
Zy1saWtlLA0KICAqIHN1Y2ggYXMgaW50ZWdlcnMsIGJvb2wsIGRvdWJsZS4gVGhlIGJsb2NrIHJl
YWQgd2lsbCBiZSBmcm9tIHRoZQ0KSW5kZXg6IGRidXMvZGJ1cy1tZXNzYWdlLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NClJDUyBmaWxlOiAvY3ZzL2RidXMvZGJ1cy9kYnVzL2RidXMtbWVzc2FnZS5oLHYNCnJldHJp
ZXZpbmcgcmV2aXNpb24gMS41OQ0KZGlmZiAtdSAtcCAtcjEuNTkgZGJ1cy1tZXNzYWdlLmgNCi0t
LSBkYnVzL2RidXMtbWVzc2FnZS5oCTE4IEphbiAyMDA1IDIwOjQyOjE1IC0wMDAwCTEuNTkNCisr
KyBkYnVzL2RidXMtbWVzc2FnZS5oCTIgTWFyIDIwMDUgMTk6Mzg6MTkgLTAwMDANCkBAIC02MCw2
ICs2MCw4IEBAIHN0cnVjdCBEQnVzTWVzc2FnZUl0ZXINCiAgIHZvaWQgKnBhZDM7ICAgICAgICAg
ICAvKio8IERvbid0IHVzZSB0aGlzICovDQogfTsNCiANCit0eXBlZGVmIHZvaWQgKCogREJ1c0Fy
cmF5RGljdFJlYWRlckZ1bmN0aW9uKSAoKTsNCisNCiBEQnVzTWVzc2FnZSogZGJ1c19tZXNzYWdl
X25ldyAgICAgICAgICAgICAgIChpbnQgICAgICAgICAgbWVzc2FnZV90eXBlKTsNCiBEQnVzTWVz
c2FnZSogZGJ1c19tZXNzYWdlX25ld19tZXRob2RfY2FsbCAgIChjb25zdCBjaGFyICAqYnVzX25h
bWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAgKnBhdGgsDQpAQCAtMTU2LDYgKzE1OCwxMCBAQCB2b2lkICAgICAgICBkYnVzX21lc3Nh
Z2VfaXRlcl9yZWN1cnNlICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgREJ1c01lc3NhZ2VJdGVyICpzdWIpOw0KIHZvaWQgICAgICAgIGRidXNfbWVz
c2FnZV9pdGVyX2dldF9iYXNpYyAgICAgICAgKERCdXNNZXNzYWdlSXRlciAqaXRlciwNCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICAg
ICAgKnZhbHVlKTsNCit2b2lkICAgICAgICBkYnVzX21lc3NhZ2VfaXRlcl9nZXRfc3RydWN0dXJl
ICAgIChEQnVzTWVzc2FnZUl0ZXIgICAgICAgICAgICAqaXRlciwNCisJCQkJCQlEQnVzQXJyYXlE
aWN0UmVhZGVyRnVuY3Rpb24gZGljdHJlYWRlciwNCisJCQkJCQlEQnVzUmVhbGxvY0Z1bmN0aW9u
ICAgICAgICAgYWxsb2NmdW5jLA0KKwkJCQkJCURCdXNGcmVlRnVuY3Rpb24gICAgICAgICAgICBm
cmVlZnVuYyk7DQogdm9pZCAgICAgICAgZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2ZpeGVkX2FycmF5
ICAoREJ1c01lc3NhZ2VJdGVyICppdGVyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgICAgICAqdmFsdWUsDQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICpuX2Vs
ZW1lbnRzKTsNCmN2cyBkaWZmOiBEaWZmaW5nIGRvYw0KY3ZzIGRpZmY6IERpZmZpbmcgZ2NqDQpj
dnMgZGlmZjogRGlmZmluZyBnY2ovb3JnDQpjdnMgZGlmZjogRGlmZmluZyBnY2ovb3JnL2ZyZWVk
ZXNrdG9wDQpjdnMgZGlmZjogRGlmZmluZyBnY2ovb3JnL2ZyZWVkZXNrdG9wL2RidXMNCmN2cyBk
aWZmOiBEaWZmaW5nIGdsaWINCmN2cyBkaWZmOiBEaWZmaW5nIG1vbm8NCmN2cyBkaWZmOiBEaWZm
aW5nIG1vbm8vREJ1c1R5cGUNCmN2cyBkaWZmOiBEaWZmaW5nIG1vbm8vZG9jDQpjdnMgZGlmZjog
RGlmZmluZyBtb25vL2RvYy9lbg0KY3ZzIGRpZmY6IERpZmZpbmcgbW9uby9kb2MvZW4vREJ1cw0K
Y3ZzIGRpZmY6IERpZmZpbmcgbW9uby9kb2MvZW4vREJ1cy5EQnVzVHlwZQ0KY3ZzIGRpZmY6IERp
ZmZpbmcgbW9uby9leGFtcGxlDQpjdnMgZGlmZjogRGlmZmluZyBweXRob24NCmN2cyBkaWZmOiBE
aWZmaW5nIHB5dGhvbi9leGFtcGxlcw0KY3ZzIGRpZmY6IERpZmZpbmcgcHl0aG9uL3Rlc3RzDQpj
dnMgZGlmZjogRGlmZmluZyBxdA0KY3ZzIGRpZmY6IERpZmZpbmcgc2VydmVyDQpjdnMgZGlmZjog
RGlmZmluZyB0ZXN0DQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2RhdGENCmN2cyBkaWZmOiBEaWZm
aW5nIHRlc3QvZGF0YS9hdXRoDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2RhdGEvZXF1aXYtY29u
ZmlnLWZpbGVzDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2RhdGEvZXF1aXYtY29uZmlnLWZpbGVz
L2Jhc2ljDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2RhdGEvZXF1aXYtY29uZmlnLWZpbGVzL2Jh
c2ljL2Jhc2ljLmQNCmN2cyBkaWZmOiBEaWZmaW5nIHRlc3QvZGF0YS9lcXVpdi1jb25maWctZmls
ZXMvZW50aXRpZXMNCmN2cyBkaWZmOiBEaWZmaW5nIHRlc3QvZGF0YS9lcXVpdi1jb25maWctZmls
ZXMvZW50aXRpZXMvYmFzaWMuZA0KY3ZzIGRpZmY6IERpZmZpbmcgdGVzdC9kYXRhL2luY29tcGxl
dGUtbWVzc2FnZXMNCmN2cyBkaWZmOiBEaWZmaW5nIHRlc3QvZGF0YS9pbnZhbGlkLWNvbmZpZy1m
aWxlcw0KY3ZzIGRpZmY6IERpZmZpbmcgdGVzdC9kYXRhL2ludmFsaWQtbWVzc2FnZXMNCmN2cyBk
aWZmOiBEaWZmaW5nIHRlc3QvZGF0YS9zaGEtMQ0KY3ZzIGRpZmY6IERpZmZpbmcgdGVzdC9kYXRh
L3ZhbGlkLWNvbmZpZy1maWxlcw0KY3ZzIGRpZmY6IERpZmZpbmcgdGVzdC9kYXRhL3ZhbGlkLWNv
bmZpZy1maWxlcy9iYXNpYy5kDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2RhdGEvdmFsaWQtY29u
ZmlnLWZpbGVzL3N5c3RlbS5kDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2RhdGEvdmFsaWQtaW50
cm9zcGVjdGlvbi1maWxlcw0KY3ZzIGRpZmY6IERpZmZpbmcgdGVzdC9kYXRhL3ZhbGlkLW1lc3Nh
Z2VzDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2RhdGEvdmFsaWQtc2VydmljZS1maWxlcw0KY3Zz
IGRpZmY6IERpZmZpbmcgdGVzdC9nbGliDQpjdnMgZGlmZjogRGlmZmluZyB0b29scw0K


--=-2Fdgir69QvFIVeeyQuFS--

--=-1ejAq/39f2Bn9YlTD6c8
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQBCJhnGOIkJWWp2WGURAmn4AJ43L2QzF/5Y6ONTZALh0U99IalTNwCggl9E
iRLk6Muo2khArf4qPoLMVbE=
=G+sY
-----END PGP SIGNATURE-----

--=-1ejAq/39f2Bn9YlTD6c8--


--===============0670844476==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-- 
dbus mailing list
dbus@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dbus

--===============0670844476==--


From dbus-bounces@lists.freedesktop.org Fri Feb 25 21:49:15 2005
Received: from [131.252.208.82] (helo=gabe.freedesktop.org) by mx27.web.de
	with esmtp (WEB.DE 4.103 #192) id 1D4mOh-00065B-00 for
	danny.kukawka@web.de; Fri, 25 Feb 2005 21:49:15 +0100
Received: from gabe.freedesktop.org (localhost.localdomain [127.0.0.1]) by
	gabe.freedesktop.org (Postfix) with ESMTP id D64039EA51; Fri, 25 Feb 2005
	12:49:10 -0800 (PST)
X-Original-To: dbus@lists.freedesktop.org
Delivered-To: dbus@lists.freedesktop.org
Received: from monk.area614.net (monk.area614.net [64.46.156.22]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 392FF9EA40 for
	<dbus@lists.freedesktop.org>; Fri, 25 Feb 2005 12:49:08 -0800 (PST)
Received: from nexus.verbum.private (localhost.localdomain [127.0.0.1]) by
	monk.area614.net (Postfix) with ESMTP id 50195410834; Fri, 25 Feb 2005
	15:48:24 -0500 (EST)
From: Colin Walters <walters@verbum.org>
To: Havoc Pennington <hp@redhat.com>
In-Reply-To: <1109276829.9108.49.camel@localhost.localdomain>
References: <1109275770.3934.28.camel@nexus.verbum.private>
	 <1109276829.9108.49.camel@localhost.localdomain>
Date: Fri, 25 Feb 2005 15:49:08 -0500
Message-Id: <1109364549.3810.38.camel@nexus.verbum.private>
Mime-Version: 1.0
X-Mailer: Evolution 2.1.5 (2.1.5-1) 
Cc: dbus@lists.freedesktop.org
Subject: Re: [patch] initial conversion of glib bindings to use signatures
X-BeenThere: dbus@lists.freedesktop.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Desktop message bus technical discussion
	<dbus.lists.freedesktop.org>
List-Unsubscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=unsubscribe>
List-Archive: <http://lists.freedesktop.org/archives/dbus>
List-Post: <mailto:dbus@lists.freedesktop.org>
List-Help: <mailto:dbus-request@lists.freedesktop.org?subject=help>
List-Subscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1766012806=="
Mime-version: 1.0
Errors-To: dbus-bounces@lists.freedesktop.org
Sender: dbus-bounces@lists.freedesktop.org
X-Evolution-Source: pop://danny.kukawka@pop.web.de/
X-Evolution: 00000004-0020


--===============1766012806==
Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-hwLNGN172InOeQqK47RC"


--=-hwLNGN172InOeQqK47RC
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

On Thu, 2005-02-24 at 15:27 -0500, Havoc Pennington wrote:
>On Thu, 2005-02-24 at 15:09 -0500, Colin Walters wrote:
>> One thing I'd like to discuss is what exactly various container types
>> should map to in GLib.  I would think that:
>>=20
>> a{..} -> GHashTable
>
>Yes, dict to hash table seems right. Though it's completely untypesafe
>and awful on some level.

Yeah, although GLib programmers are used to the type-unsafety of
GHashTable anyways.

>The glib bindings have to copy the data because the DBusMessage is never
>passed out, so nobody is holding a reference to it.

Ah, right.

>> The thing I'm most unsure about is how structures will work, both on the
>> client wrapper end and the server side.
>
>The options I know of are:
> - they are hashes from string to GValue
> - they are a special object with iterator, like DBusMessage
>   (in fact it could just be DBusGMessage with the iter stuff also
>wrapped)
> - the CORBA thing (convert to a C struct)
>
>My suggestion is #2, on the theory that usually a struct will really be
>some special type like a pixbuf or point or rectangle, and people will
>want to add awareness of that specific special type. i.e. I imagine
>things like gdk_rectangle_from_dbus/to_dbus

Hmmm.  Yeah, I can see the value in #2. =20

>One suckage here is the need to wrap all the message iter stuff.

So on the client end, if the frobnicate method's input signature was
"s(ii)" and output signature was "(ii)", the code might look like this:

DBusGStructureIter iter;
DBusGStructureIter ret_iter;
GError *error =3D NULL;

dbus_g_structure_init_append (&iter);
dbus_g_structure_append_values (&iter, G_TYPE_INT32, 10, G_TYPE_INT32, 42, =
G_TYPE_INVALID);
if (!org_freedesktop_NetworkManager_frobnicate (proxy, "Blah", &iter, &ret_=
iter, &error))
  ...

printf ("returned %d", dbus_g_structure_iter_get_int32 (&ret_iter));
dbus_g_structure_iter_next (&ret_iter);
printf (":%d\n", dbus_g_structure_iter_get_int32 (&ret_iter));


Or something like that?


Have you had a chance to look at the patch, by the way?


--=-hwLNGN172InOeQqK47RC
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQBCH49EOIkJWWp2WGURAq7/AJ9H/+rmqI/8LexZJGQlhnQQoIsdggCeO6k1
CPc57AV76KUnuM6kM5qCPfQ=
=x3dF
-----END PGP SIGNATURE-----

--=-hwLNGN172InOeQqK47RC--


--===============1766012806==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-- 
dbus mailing list
dbus@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dbus

--===============1766012806==--


From dbus-bounces@lists.freedesktop.org Thu Feb 24 21:26:43 2005
Received: from [131.252.208.82] (helo=gabe.freedesktop.org) by mx26.web.de
	with esmtp (WEB.DE 4.103 #192) id 1D4PZL-0003rQ-00 for
	danny.kukawka@web.de; Thu, 24 Feb 2005 21:26:43 +0100
Received: from gabe.freedesktop.org (localhost.localdomain [127.0.0.1]) by
	gabe.freedesktop.org (Postfix) with ESMTP id B7F3F9EAFA; Thu, 24 Feb 2005
	12:26:38 -0800 (PST)
X-Original-To: dbus@lists.freedesktop.org
Delivered-To: dbus@lists.freedesktop.org
Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by
	gabe.freedesktop.org (Postfix) with ESMTP id C13029E855 for
	<dbus@lists.freedesktop.org>; Thu, 24 Feb 2005 12:26:35 -0800 (PST)
Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com
	[172.16.52.254]) by mx1.redhat.com (8.12.11/8.12.11) with ESMTP id
	j1OKQS2S021966; Thu, 24 Feb 2005 15:26:28 -0500
Received: from pobox.corp.redhat.com (pobox.corp.redhat.com
	[172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id
	j1OKQSK22938;  Thu, 24 Feb 2005 15:26:28 -0500
Received: from localhost.localdomain (sebastian-int.corp.redhat.com
	[172.16.52.221]) by pobox.corp.redhat.com (8.12.8/8.12.8) with ESMTP id
	j1OKQSuV014054;  Thu, 24 Feb 2005 15:26:28 -0500
From: Havoc Pennington <hp@redhat.com>
To: Colin Walters <walters@verbum.org>
In-Reply-To: <1109275770.3934.28.camel@nexus.verbum.private>
References: <1109275770.3934.28.camel@nexus.verbum.private>
Content-Type: text/plain
Date: Thu, 24 Feb 2005 15:27:09 -0500
Message-Id: <1109276829.9108.49.camel@localhost.localdomain>
Mime-Version: 1.0
X-Mailer: Evolution 2.0.2 (2.0.2-3) 
Content-Transfer-Encoding: 7bit
Cc: dbus@lists.freedesktop.org
Subject: Re: [patch] initial conversion of glib bindings to use signatures
X-BeenThere: dbus@lists.freedesktop.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Desktop message bus technical discussion
	<dbus.lists.freedesktop.org>
List-Unsubscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=unsubscribe>
List-Archive: <http://lists.freedesktop.org/archives/dbus>
List-Post: <mailto:dbus@lists.freedesktop.org>
List-Help: <mailto:dbus-request@lists.freedesktop.org?subject=help>
List-Subscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=subscribe>
Errors-To: dbus-bounces@lists.freedesktop.org
Sender: dbus-bounces@lists.freedesktop.org
X-Evolution-Source: pop://danny.kukawka@pop.web.de/
X-Evolution: 00000006-0000

On Thu, 2005-02-24 at 15:09 -0500, Colin Walters wrote:
> One thing I'd like to discuss is what exactly various container types
> should map to in GLib.  I would think that:
> 
> a{..} -> GHashTable

Yes, dict to hash table seems right. Though it's completely untypesafe
and awful on some level.

> A bit tricky in the general case like a{ia{sv}}, but shouldn't require
> copying the actual data.  Seems like there's a sensible mapping from the
> various types to hash functions and equality tests.
> 
> a -> GArray
> 
> Unfortunately it doesn't look possible to create a GArray which just
> points to extant data.

The glib bindings have to copy the data because the DBusMessage is never
passed out, so nobody is holding a reference to it.

> The thing I'm most unsure about is how structures will work, both on the
> client wrapper end and the server side.

The options I know of are:
 - they are hashes from string to GValue
 - they are a special object with iterator, like DBusMessage
   (in fact it could just be DBusGMessage with the iter stuff also
wrapped)
 - the CORBA thing (convert to a C struct)

My suggestion is #2, on the theory that usually a struct will really be
some special type like a pixbuf or point or rectangle, and people will
want to add awareness of that specific special type. i.e. I imagine
things like gdk_rectangle_from_dbus/to_dbus

We could even support supplying a "struct marshaller" like that.

i.e. approach structs in basically the same way we're approaching
everything else: assume they have to be converted to some native
representation.

One suckage here is the need to wrap all the message iter stuff.

Havoc


-- 
dbus mailing list
dbus@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dbus

From dbus-bounces@lists.freedesktop.org Mon Feb 28 21:22:00 2005
Received: from [131.252.208.82] (helo=gabe.freedesktop.org) by mx31.web.de
	with esmtp (WEB.DE 4.103 #192) id 1D5rOy-0004BO-00 for
	danny.kukawka@web.de; Mon, 28 Feb 2005 21:22:00 +0100
Received: from gabe.freedesktop.org (localhost.localdomain [127.0.0.1]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 162349E8D9; Mon, 28 Feb 2005
	12:21:54 -0800 (PST)
X-Original-To: dbus@lists.freedesktop.org
Delivered-To: dbus@lists.freedesktop.org
Received: from monk.area614.net (monk.area614.net [64.46.156.22]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 0F6DD9E72E for
	<dbus@lists.freedesktop.org>; Mon, 28 Feb 2005 12:21:50 -0800 (PST)
Received: from nexus.verbum.private (localhost.localdomain [127.0.0.1]) by
	monk.area614.net (Postfix) with ESMTP id C8E834100AA; Mon, 28 Feb 2005
	15:21:01 -0500 (EST)
From: Colin Walters <walters@verbum.org>
To: Havoc Pennington <hp@redhat.com>
In-Reply-To: <1109385192.17079.13.camel@localhost.localdomain>
References: <1109275770.3934.28.camel@nexus.verbum.private>
	 <1109276829.9108.49.camel@localhost.localdomain>
	 <1109364549.3810.38.camel@nexus.verbum.private>
	 <1109385192.17079.13.camel@localhost.localdomain>
Date: Mon, 28 Feb 2005 15:21:31 -0500
Message-Id: <1109622091.3809.22.camel@nexus.verbum.private>
Mime-Version: 1.0
X-Mailer: Evolution 2.1.5 (2.1.5-1) 
Cc: dbus@lists.freedesktop.org
Subject: Re: [patch] initial conversion of glib bindings to use signatures
X-BeenThere: dbus@lists.freedesktop.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Desktop message bus technical discussion
	<dbus.lists.freedesktop.org>
List-Unsubscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=unsubscribe>
List-Archive: <http://lists.freedesktop.org/archives/dbus>
List-Post: <mailto:dbus@lists.freedesktop.org>
List-Help: <mailto:dbus-request@lists.freedesktop.org?subject=help>
List-Subscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0404000130=="
Mime-version: 1.0
Errors-To: dbus-bounces@lists.freedesktop.org
Sender: dbus-bounces@lists.freedesktop.org
X-Evolution-Source: pop://danny.kukawka@pop.web.de/
X-Evolution: 00000008-0020


--===============0404000130==
Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-mpCIxcKgbl5m1Cwtdag3"


--=-mpCIxcKgbl5m1Cwtdag3
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

On Fri, 2005-02-25 at 21:33 -0500, Havoc Pennington wrote:
>On Fri, 2005-02-25 at 15:49 -0500, Colin Walters wrote:
>>=20
>> Yeah, although GLib programmers are used to the type-unsafety of
>> GHashTable anyways.
>>=20
>
>The suckage here is that they are used to creating the type unsafety
>themselves... there aren't APIs that return hash tables really.

True.

>Had a long discussion with Owen where he made some convincing arguments
>for the last one (convert to C struct).
>
>Some ideas in this area:
>
> - we don't necessarily have to generate a struct at all, though we can.
>We can just=20
>   declare that "(ii)" can be stored in anything that is:
>   struct { dbus_int32_t field1; dbus_int32_t field2; }
>   so while dbus-binding-tool will probably know how to generate such a
>struct=20
>   decl, you can also just declare your own struct if not using dbus-
>binding-tool.

So we could generate glue like this client-side:

#ifndef DBUS_DEFINED_STRUCT_ii
#define DBUS_DEFINED_STRUCT_ii
typedef struct { dbus_int32_t field1; dbus_int32_t field2; } DBusStructure_=
ii;
#endif

gboolean
org_freedesktop_NetworkManager_frobnicate (int x, DBusStructure_ii *foo, GE=
rror **error)
{
  /* invoke dbus method */
}

And we'd have similar typedef bits in the server-side glue.

Is that about right?

> - an arbitrarily complex recursive type can be stored in a single
>malloc=20
>   block, so we can ignore the "destructor" problem. Arrays and strings
>   just follow the struct that points to them in the block.

I see, so you can just always use g_free.  That would be nice.
> =20
>   Exception: if dicts are GHashTable this breaks, I guess.

It would be a lot less pleasant if they weren't, I think.  Hmm.  I
wonder if we could do some trick using GHashTable internals to lay
everything out in the big malloc block.  Would certainly break if
GHashTable internals broke, but maybe we can get guarantees from glib
people that they won't change, or add API to support this use case, like

GHashTable * g_hash_table_init_fixed (gpointer mem, size_t max_entries);=20

> - all interesting architectures use the same alignment for struct
>fields,=20
>   but may not use the same alignment for structs (dbus aligns all
>structs
>   on 8-boundary regardless of field types)

Ah.  So we can write generic code to access the structures without being
architecture-dependent.  Cool.

> - I wonder if the convert-to-struct code should be in dbus-message.h=20
>   rather than in the glib bindings. Basically just add a=20
>   dbus_message_iter_get_as_c_struct () which could be called for any
>iterator
>   and would return the entire complex type starting at the current=20
>   iter position. We could even allow using it for the entire=20
>   message. So a message with "int, string, int" could be converted
>   to struct { dbus_int32_t; char*; dbus_int32_t; }

That makes sense to me.

>> Have you had a chance to look at the patch, by the way?
>
>Ah, I guess I didn't notice there was a patch. Your mail is confusing in
>evo because the attachment icon always appears for the gpg key...

Yeah, it's annoying evo does that.  Anyways, the patch is committed now,
thanks.


--=-mpCIxcKgbl5m1Cwtdag3
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQBCI31KOIkJWWp2WGURAlGYAJ98E06z/5BKtqY39nOTYmHB2SucIQCfaQyt
8HJaSXOoELhneSA2yWX7p+A=
=T4QU
-----END PGP SIGNATURE-----

--=-mpCIxcKgbl5m1Cwtdag3--


--===============0404000130==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-- 
dbus mailing list
dbus@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dbus

--===============0404000130==--


From dbus-bounces@lists.freedesktop.org Sat Feb 26 03:32:39 2005
Received: from [131.252.208.82] (helo=gabe.freedesktop.org) by mx26.web.de
	with esmtp (WEB.DE 4.103 #192) id 1D4rl1-0008QM-00 for
	danny.kukawka@web.de; Sat, 26 Feb 2005 03:32:39 +0100
Received: from gabe.freedesktop.org (localhost.localdomain [127.0.0.1]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 96E4A9EA21; Fri, 25 Feb 2005
	18:32:35 -0800 (PST)
X-Original-To: dbus@lists.freedesktop.org
Delivered-To: dbus@lists.freedesktop.org
Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 80E7D9E880 for
	<dbus@lists.freedesktop.org>; Fri, 25 Feb 2005 18:32:32 -0800 (PST)
Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com
	[172.16.52.254]) by mx1.redhat.com (8.12.11/8.12.11) with ESMTP id
	j1Q2WVRL011971; Fri, 25 Feb 2005 21:32:31 -0500
Received: from pobox.corp.redhat.com (pobox.corp.redhat.com
	[172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id
	j1Q2WVK08040;  Fri, 25 Feb 2005 21:32:31 -0500
Received: from localhost.localdomain (sebastian-int.corp.redhat.com
	[172.16.52.221]) by pobox.corp.redhat.com (8.12.8/8.12.8) with ESMTP id
	j1Q2WV0J020955;  Fri, 25 Feb 2005 21:32:31 -0500
From: Havoc Pennington <hp@redhat.com>
To: Colin Walters <walters@verbum.org>
In-Reply-To: <1109364549.3810.38.camel@nexus.verbum.private>
References: <1109275770.3934.28.camel@nexus.verbum.private>
	 <1109276829.9108.49.camel@localhost.localdomain>
	 <1109364549.3810.38.camel@nexus.verbum.private>
Content-Type: text/plain
Date: Fri, 25 Feb 2005 21:33:11 -0500
Message-Id: <1109385192.17079.13.camel@localhost.localdomain>
Mime-Version: 1.0
X-Mailer: Evolution 2.0.2 (2.0.2-3) 
Content-Transfer-Encoding: 7bit
Cc: dbus@lists.freedesktop.org
Subject: Re: [patch] initial conversion of glib bindings to use signatures
X-BeenThere: dbus@lists.freedesktop.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Desktop message bus technical discussion
	<dbus.lists.freedesktop.org>
List-Unsubscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=unsubscribe>
List-Archive: <http://lists.freedesktop.org/archives/dbus>
List-Post: <mailto:dbus@lists.freedesktop.org>
List-Help: <mailto:dbus-request@lists.freedesktop.org?subject=help>
List-Subscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=subscribe>
Errors-To: dbus-bounces@lists.freedesktop.org
Sender: dbus-bounces@lists.freedesktop.org
X-Evolution-Source: pop://danny.kukawka@pop.web.de/
X-Evolution: 0000000a-0000

On Fri, 2005-02-25 at 15:49 -0500, Colin Walters wrote:
> 
> Yeah, although GLib programmers are used to the type-unsafety of
> GHashTable anyways.
> 

The suckage here is that they are used to creating the type unsafety
themselves... there aren't APIs that return hash tables really.

> >> The thing I'm most unsure about is how structures will work, both on the
> >> client wrapper end and the server side.
> >
> >The options I know of are:
> > - they are hashes from string to GValue
> > - they are a special object with iterator, like DBusMessage
> >   (in fact it could just be DBusGMessage with the iter stuff also
> >wrapped)
> > - the CORBA thing (convert to a C struct)
> >
> >My suggestion is #2, on the theory that usually a struct will really be
> >some special type like a pixbuf or point or rectangle, and people will
> >want to add awareness of that specific special type. i.e. I imagine
> >things like gdk_rectangle_from_dbus/to_dbus
> 
> Hmmm.  Yeah, I can see the value in #2.  

Had a long discussion with Owen where he made some convincing arguments
for the last one (convert to C struct).

Some ideas in this area:

 - we don't necessarily have to generate a struct at all, though we can.
We can just 
   declare that "(ii)" can be stored in anything that is:
   struct { dbus_int32_t field1; dbus_int32_t field2; }
   so while dbus-binding-tool will probably know how to generate such a
struct 
   decl, you can also just declare your own struct if not using dbus-
binding-tool.

 - an arbitrarily complex recursive type can be stored in a single
malloc 
   block, so we can ignore the "destructor" problem. Arrays and strings
   just follow the struct that points to them in the block.
  
   Exception: if dicts are GHashTable this breaks, I guess.

 - all interesting architectures use the same alignment for struct
fields, 
   but may not use the same alignment for structs (dbus aligns all
structs
   on 8-boundary regardless of field types)

 - I wonder if the convert-to-struct code should be in dbus-message.h 
   rather than in the glib bindings. Basically just add a 
   dbus_message_iter_get_as_c_struct () which could be called for any
iterator
   and would return the entire complex type starting at the current 
   iter position. We could even allow using it for the entire 
   message. So a message with "int, string, int" could be converted
   to struct { dbus_int32_t; char*; dbus_int32_t; }
   
   If this is in libdbus a minor hack is needed to allow passing
   in an alternate malloc function (such as g_malloc) probably.

> >One suckage here is the need to wrap all the message iter stuff.
> 
> So on the client end, if the frobnicate method's input signature was
> "s(ii)" and output signature was "(ii)", the code might look like this:
> 
> DBusGStructureIter iter;
> DBusGStructureIter ret_iter;
> GError *error = NULL;
> 
> dbus_g_structure_init_append (&iter);
> dbus_g_structure_append_values (&iter, G_TYPE_INT32, 10, G_TYPE_INT32, 42, G_TYPE_INVALID);
> if (!org_freedesktop_NetworkManager_frobnicate (proxy, "Blah", &iter, &ret_iter, &error))
>   ...
> 
> printf ("returned %d", dbus_g_structure_iter_get_int32 (&ret_iter));
> dbus_g_structure_iter_next (&ret_iter);
> printf (":%d\n", dbus_g_structure_iter_get_int32 (&ret_iter));
> 
> 
> Or something like that?

Yeah, basically. 

> Have you had a chance to look at the patch, by the way?

Ah, I guess I didn't notice there was a patch. Your mail is confusing in
evo because the attachment icon always appears for the gpg key...

Havoc


-- 
dbus mailing list
dbus@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dbus

From dbus-bounces@lists.freedesktop.org Sat Feb 26 03:36:46 2005
Received: from [131.252.208.82] (helo=gabe.freedesktop.org) by mx33.web.de
	with esmtp (WEB.DE 4.103 #192) id 1D4rp0-00050Q-00 for
	danny.kukawka@web.de; Sat, 26 Feb 2005 03:36:46 +0100
Received: from gabe.freedesktop.org (localhost.localdomain [127.0.0.1]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 789C29EA21; Fri, 25 Feb 2005
	18:36:43 -0800 (PST)
X-Original-To: dbus@lists.freedesktop.org
Delivered-To: dbus@lists.freedesktop.org
Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 947E89E880 for
	<dbus@lists.freedesktop.org>; Fri, 25 Feb 2005 18:36:40 -0800 (PST)
Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com
	[172.16.52.254]) by mx1.redhat.com (8.12.11/8.12.11) with ESMTP id
	j1Q2aeLF012503; Fri, 25 Feb 2005 21:36:40 -0500
Received: from pobox.corp.redhat.com (pobox.corp.redhat.com
	[172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id
	j1Q2adK08633;  Fri, 25 Feb 2005 21:36:39 -0500
Received: from localhost.localdomain (sebastian-int.corp.redhat.com
	[172.16.52.221]) by pobox.corp.redhat.com (8.12.8/8.12.8) with ESMTP id
	j1Q2ad0J021300;  Fri, 25 Feb 2005 21:36:39 -0500
From: Havoc Pennington <hp@redhat.com>
To: Colin Walters <walters@verbum.org>
In-Reply-To: <1109275770.3934.28.camel@nexus.verbum.private>
References: <1109275770.3934.28.camel@nexus.verbum.private>
Content-Type: text/plain
Date: Fri, 25 Feb 2005 21:37:20 -0500
Message-Id: <1109385440.17079.16.camel@localhost.localdomain>
Mime-Version: 1.0
X-Mailer: Evolution 2.0.2 (2.0.2-3) 
Content-Transfer-Encoding: 7bit
Cc: dbus@lists.freedesktop.org
Subject: Re: [patch] initial conversion of glib bindings to use signatures
X-BeenThere: dbus@lists.freedesktop.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Desktop message bus technical discussion
	<dbus.lists.freedesktop.org>
List-Unsubscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=unsubscribe>
List-Archive: <http://lists.freedesktop.org/archives/dbus>
List-Post: <mailto:dbus@lists.freedesktop.org>
List-Help: <mailto:dbus-request@lists.freedesktop.org?subject=help>
List-Subscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=subscribe>
Errors-To: dbus-bounces@lists.freedesktop.org
Sender: dbus-bounces@lists.freedesktop.org
X-Evolution-Source: pop://danny.kukawka@pop.web.de/
X-Evolution: 0000000c-0000

Hi,

This patch looks like a good commit to me, it does the mechanical bits
and then any harder bits can be tweaked.

Havoc



-- 
dbus mailing list
dbus@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dbus

From dbus-bounces@lists.freedesktop.org Thu Feb 24 21:10:15 2005
Received: from [131.252.208.82] (helo=gabe.freedesktop.org) by mx23.web.de
	with esmtp (WEB.DE 4.103 #192) id 1D4PJP-0008P6-00 for
	danny.kukawka@web.de; Thu, 24 Feb 2005 21:10:15 +0100
Received: from gabe.freedesktop.org (localhost.localdomain [127.0.0.1]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 104C69EAF9; Thu, 24 Feb 2005
	12:10:09 -0800 (PST)
X-Original-To: dbus@lists.freedesktop.org
Delivered-To: dbus@lists.freedesktop.org
Received: from monk.area614.net (monk.area614.net [64.46.156.22]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 5A7EF9EAED for
	<dbus@lists.freedesktop.org>; Thu, 24 Feb 2005 12:09:56 -0800 (PST)
Received: from nexus.verbum.private (localhost.localdomain [127.0.0.1]) by
	monk.area614.net (Postfix) with ESMTP id EC30C410837 for
	<dbus@lists.freedesktop.org>; Thu, 24 Feb 2005 15:09:05 -0500 (EST)
From: Colin Walters <walters@verbum.org>
To: dbus@lists.freedesktop.org
Date: Thu, 24 Feb 2005 15:09:30 -0500
Message-Id: <1109275770.3934.28.camel@nexus.verbum.private>
Mime-Version: 1.0
X-Mailer: Evolution 2.1.5 (2.1.5-1) 
Subject: [patch] initial conversion of glib bindings to use signatures
X-BeenThere: dbus@lists.freedesktop.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Desktop message bus technical discussion
	<dbus.lists.freedesktop.org>
List-Unsubscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=unsubscribe>
List-Archive: <http://lists.freedesktop.org/archives/dbus>
List-Post: <mailto:dbus@lists.freedesktop.org>
List-Help: <mailto:dbus-request@lists.freedesktop.org?subject=help>
List-Subscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0704365976=="
Mime-version: 1.0
Errors-To: dbus-bounces@lists.freedesktop.org
Sender: dbus-bounces@lists.freedesktop.org
X-Evolution-Source: pop://danny.kukawka@pop.web.de/
X-Evolution: 0000000e-0030


--===============0704365976==
Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-o275vnh436cMSsVki1jj"


--=-o275vnh436cMSsVki1jj
Content-Type: multipart/mixed; boundary="=-gyum7qmDTLvNR8uHSAXH"


--=-gyum7qmDTLvNR8uHSAXH
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

This patch updates the glib bindings to handle the signatures in the
introspection data, which gets us closer to handling containers.

I also updated dbus-viewer.  That's one other case where perhaps we want
a "pretty" form of signatures.

One thing I'd like to discuss is what exactly various container types
should map to in GLib.  I would think that:

a{..} -> GHashTable

A bit tricky in the general case like a{ia{sv}}, but shouldn't require
copying the actual data.  Seems like there's a sensible mapping from the
various types to hash functions and equality tests.

a -> GArray

Unfortunately it doesn't look possible to create a GArray which just
points to extant data.

The thing I'm most unsure about is how structures will work, both on the
client wrapper end and the server side.


--=-gyum7qmDTLvNR8uHSAXH
Content-Disposition: attachment; filename=dbus-signature-glib-1.patch
Content-Type: text/x-patch; name=dbus-signature-glib-1.patch; charset=UTF-8
Content-Transfer-Encoding: base64

PyBkYnVzLTAuMzANCj8gZGJ1cy0wLjMwLnRhci5neg0KY3ZzIGRpZmY6IERpZmZpbmcgLg0KY3Zz
IGRpZmY6IERpZmZpbmcgYnVzDQpjdnMgZGlmZjogRGlmZmluZyBkYnVzDQpjdnMgZGlmZjogRGlm
ZmluZyBkb2MNCmN2cyBkaWZmOiBEaWZmaW5nIGdjag0KY3ZzIGRpZmY6IERpZmZpbmcgZ2NqL29y
Zw0KY3ZzIGRpZmY6IERpZmZpbmcgZ2NqL29yZy9mcmVlZGVza3RvcA0KY3ZzIGRpZmY6IERpZmZp
bmcgZ2NqL29yZy9mcmVlZGVza3RvcC9kYnVzDQpjdnMgZGlmZjogRGlmZmluZyBnbGliDQpJbmRl
eDogZ2xpYi9kYnVzLWJpbmRpbmctdG9vbC1nbGliLmMNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAv
Y3ZzL2RidXMvZGJ1cy9nbGliL2RidXMtYmluZGluZy10b29sLWdsaWIuYyx2DQpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMw0KZGlmZiAtdSAtcCAtcjEuMyBkYnVzLWJpbmRpbmctdG9vbC1nbGliLmMN
Ci0tLSBnbGliL2RidXMtYmluZGluZy10b29sLWdsaWIuYwkxOSBGZWIgMjAwNSAyMzoyNTo0MSAt
MDAwMAkxLjMNCisrKyBnbGliL2RidXMtYmluZGluZy10b29sLWdsaWIuYwkyNCBGZWIgMjAwNSAx
OTo1Mjo0NyAtMDAwMA0KQEAgLTY4LDEzICs2OCwxNSBAQCBjb21wdXRlX21hcnNoYWxsZXIgKE1l
dGhvZEluZm8gKm1ldGhvZCwgDQogDQogICAgICAgaWYgKGFyZ19pbmZvX2dldF9kaXJlY3Rpb24g
KGFyZykgPT0gQVJHX0lOKQ0KIAl7DQotCSAgY29uc3QgY2hhciAqbWFyc2hhbF9uYW1lID0gZGJ1
c19ndmFsdWVfZ2VubWFyc2hhbF9uYW1lX2Zyb21fdHlwZSAoYXJnX2luZm9fZ2V0X3R5cGUgKGFy
ZykpOw0KKwkgIGNvbnN0IGNoYXIgKm1hcnNoYWxfbmFtZTsNCisNCisJICBtYXJzaGFsX25hbWUg
PSBkYnVzX2d2YWx1ZV9nZW5tYXJzaGFsX25hbWVfZnJvbV90eXBlIChhcmdfaW5mb19nZXRfdHlw
ZSAoYXJnKSk7DQogCSAgaWYgKCFtYXJzaGFsX25hbWUpDQogCSAgICB7DQogCSAgICAgIGdfc2V0
X2Vycm9yIChlcnJvciwNCiAJCQkgICBEQlVTX0JJTkRJTkdfVE9PTF9FUlJPUiwNCiAJCQkgICBE
QlVTX0JJTkRJTkdfVE9PTF9FUlJPUl9VTlNVUFBPUlRFRF9DT05WRVJTSU9OLA0KLQkJCSAgIF8o
IlVuc3VwcG9ydGVkIGNvbnZlcnNpb24gZnJvbSBELUJVUyB0eXBlICVkIHRvIGdsaWItZ2VubWFy
c2hhbCB0eXBlIiksDQorCQkJICAgXygiVW5zdXBwb3J0ZWQgY29udmVyc2lvbiBmcm9tIEQtQlVT
IHR5cGUgJXMgdG8gZ2xpYi1nZW5tYXJzaGFsIHR5cGUiKSwNCiAJCQkgICBhcmdfaW5mb19nZXRf
dHlwZSAoYXJnKSk7DQogCSAgICAgIGdfc3RyaW5nX2ZyZWUgKHJldCwgVFJVRSk7DQogCSAgICAg
IHJldHVybiBOVUxMOw0KQEAgLTEyOSw3ICsxMzEsNyBAQCBjb21wdXRlX21hcnNoYWxsZXJfbmFt
ZSAoTWV0aG9kSW5mbyAqbWV0DQogICAgICAgaWYgKGFyZ19pbmZvX2dldF9kaXJlY3Rpb24gKGFy
ZykgPT0gQVJHX0lOKQ0KIAl7DQogCSAgY29uc3QgY2hhciAqbWFyc2hhbF9uYW1lOw0KLQkgIGlu
dCB0eXBlOyANCisJICBjb25zdCBjaGFyICp0eXBlOw0KIA0KIAkgIHR5cGUgPSBhcmdfaW5mb19n
ZXRfdHlwZSAoYXJnKTsNCiAJICBtYXJzaGFsX25hbWUgPSBkYnVzX2d2YWx1ZV9nZW5tYXJzaGFs
X25hbWVfZnJvbV90eXBlICh0eXBlKTsNCkBAIC0xNDUsNyArMTQ3LDcgQEAgY29tcHV0ZV9tYXJz
aGFsbGVyX25hbWUgKE1ldGhvZEluZm8gKm1ldA0KIAkgICAgfQ0KIA0KIAkgIGdfc3RyaW5nX2Fw
cGVuZCAocmV0LCAiXyIpOw0KLQkgIGdfc3RyaW5nX2FwcGVuZCAocmV0LCBkYnVzX2d2YWx1ZV9n
ZW5tYXJzaGFsX25hbWVfZnJvbV90eXBlIChhcmdfaW5mb19nZXRfdHlwZSAoYXJnKSkpOw0KKwkg
IGdfc3RyaW5nX2FwcGVuZCAocmV0LCBkYnVzX2d2YWx1ZV9nZW5tYXJzaGFsX25hbWVfZnJvbV90
eXBlICh0eXBlKSk7DQogCX0NCiAgICAgfQ0KIA0KQEAgLTM4NSw3ICszODcsNyBAQCBnZW5lcmF0
ZV9nbHVlIChCYXNlSW5mbyAqYmFzZSwgREJ1c0JpbmRpDQogCSAgICAgIGdfc3RyaW5nX2FwcGVu
ZF9jIChvYmplY3RfaW50cm9zcGVjdGlvbl9kYXRhX2Jsb2IsIGRpcmVjdGlvbik7DQogCSAgICAg
IGdfc3RyaW5nX2FwcGVuZF9jIChvYmplY3RfaW50cm9zcGVjdGlvbl9kYXRhX2Jsb2IsICdcMCcp
Ow0KIA0KLQkgICAgICBnX3N0cmluZ19hcHBlbmRfYyAob2JqZWN0X2ludHJvc3BlY3Rpb25fZGF0
YV9ibG9iLCBhcmdfaW5mb19nZXRfdHlwZSAoYXJnKSk7DQorCSAgICAgIGdfc3RyaW5nX2FwcGVu
ZCAob2JqZWN0X2ludHJvc3BlY3Rpb25fZGF0YV9ibG9iLCBhcmdfaW5mb19nZXRfdHlwZSAoYXJn
KSk7DQogCSAgICAgIGdfc3RyaW5nX2FwcGVuZF9jIChvYmplY3RfaW50cm9zcGVjdGlvbl9kYXRh
X2Jsb2IsICdcMCcpOw0KIAkgICAgfQ0KIA0KQEAgLTYwOCw3ICs2MTAsNiBAQCB3cml0ZV9mb3Jt
YWxfcGFyYW1ldGVycyAoSW50ZXJmYWNlSW5mbyAqDQogDQogICAgICAgZGlyZWN0aW9uID0gYXJn
X2luZm9fZ2V0X2RpcmVjdGlvbiAoYXJnKTsNCiANCi0gICAgICAvKiBGSVhNRSAtIGJyb2tlbiBm
b3IgY29udGFpbmVycyAqLw0KICAgICAgIHR5cGVfc3RyID0gZGJ1c19ndmFsdWVfY3R5cGVfZnJv
bV90eXBlIChhcmdfaW5mb19nZXRfdHlwZSAoYXJnKSwgZGlyZWN0aW9uID09IEFSR19JTik7DQog
DQogICAgICAgaWYgKCF0eXBlX3N0cikNCkBAIC02MTYsNyArNjE3LDcgQEAgd3JpdGVfZm9ybWFs
X3BhcmFtZXRlcnMgKEludGVyZmFjZUluZm8gKg0KIAkgIGdfc2V0X2Vycm9yIChlcnJvciwNCiAJ
CSAgICAgICBEQlVTX0JJTkRJTkdfVE9PTF9FUlJPUiwNCiAJCSAgICAgICBEQlVTX0JJTkRJTkdf
VE9PTF9FUlJPUl9VTlNVUFBPUlRFRF9DT05WRVJTSU9OLA0KLQkJICAgICAgIF8oIlVuc3VwcG9y
dGVkIGNvbnZlcnNpb24gZnJvbSBELUJVUyB0eXBlICVkIHRvIGdsaWIgQyB0eXBlIiksDQorCQkg
ICAgICAgXygiVW5zdXBwb3J0ZWQgY29udmVyc2lvbiBmcm9tIEQtQlVTIHR5cGUgJXMgdG8gZ2xp
YiBDIHR5cGUiKSwNCiAJCSAgICAgICBhcmdfaW5mb19nZXRfdHlwZSAoYXJnKSk7DQogCSAgcmV0
dXJuIEZBTFNFOw0KIAl9DQpAQCAtNjYwLDE1ICs2NjEsMTQgQEAgd3JpdGVfYXJnc19mb3JfZGly
ZWN0aW9uIChJbnRlcmZhY2VJbmZvIA0KICAgICAgIGlmIChkaXJlY3Rpb24gIT0gYXJnX2luZm9f
Z2V0X2RpcmVjdGlvbiAoYXJnKSkNCiAJY29udGludWU7DQogDQotICAgICAgLyogRklYTUUgLSBi
cm9rZW4gZm9yIGNvbnRhaW5lcnMgKi8NCiAgICAgICB0eXBlX3N0ciA9IGRidXNfZ3ZhbHVlX2Jp
bmRpbmdfdHlwZV9mcm9tX3R5cGUgKGFyZ19pbmZvX2dldF90eXBlIChhcmcpKTsNCiAgICAgICBp
ZiAoIXR5cGVfc3RyKQ0KIAl7DQogCSAgZ19zZXRfZXJyb3IgKGVycm9yLA0KIAkJICAgICAgIERC
VVNfQklORElOR19UT09MX0VSUk9SLA0KIAkJICAgICAgIERCVVNfQklORElOR19UT09MX0VSUk9S
X1VOU1VQUE9SVEVEX0NPTlZFUlNJT04sDQotCQkgICAgICAgXygiVW5zdXBwb3J0ZWQgY29udmVy
c2lvbiBmcm9tIEQtQlVTIHR5cGUgJWMiKSwNCi0JCSAgICAgICAoY2hhcikgYXJnX2luZm9fZ2V0
X3R5cGUgKGFyZykpOw0KKwkJICAgICAgIF8oIlVuc3VwcG9ydGVkIGNvbnZlcnNpb24gZnJvbSBE
LUJVUyB0eXBlICVzIiksDQorCQkgICAgICAgYXJnX2luZm9fZ2V0X3R5cGUgKGFyZykpOw0KIAkg
IHJldHVybiBGQUxTRTsNCiAJfQ0KIA0KSW5kZXg6IGdsaWIvZGJ1cy1naWRsLmMNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NClJDUyBmaWxlOiAvY3ZzL2RidXMvZGJ1cy9nbGliL2RidXMtZ2lkbC5jLHYNCnJldHJpZXZp
bmcgcmV2aXNpb24gMS4xMw0KZGlmZiAtdSAtcCAtcjEuMTMgZGJ1cy1naWRsLmMNCi0tLSBnbGli
L2RidXMtZ2lkbC5jCTE3IEZlYiAyMDA1IDIxOjExOjE4IC0wMDAwCTEuMTMNCisrKyBnbGliL2Ri
dXMtZ2lkbC5jCTI0IEZlYiAyMDA1IDE5OjUyOjQ3IC0wMDAwDQpAQCAtNjYsMTQgKzY2LDE0IEBA
IHN0cnVjdCBTaWduYWxJbmZvDQogc3RydWN0IFByb3BlcnR5SW5mbw0KIHsNCiAgIEJhc2VJbmZv
IGJhc2U7DQotICBpbnQgdHlwZTsNCisgIGNoYXIgKnR5cGU7DQogICBQcm9wZXJ0eUFjY2Vzc0Zs
YWdzIGFjY2VzczsNCiB9Ow0KIA0KIHN0cnVjdCBBcmdJbmZvDQogew0KICAgQmFzZUluZm8gYmFz
ZTsNCi0gIGludCB0eXBlOw0KKyAgY2hhciAqdHlwZTsNCiAgIEFyZ0RpcmVjdGlvbiBkaXJlY3Rp
b247DQogfTsNCiANCkBAIC02MzEsNyArNjMxLDcgQEAgc2lnbmFsX2luZm9fYWRkX2FyZyAoU2ln
bmFsSW5mbyAgICAqaW5mbw0KIA0KIFByb3BlcnR5SW5mbyoNCiBwcm9wZXJ0eV9pbmZvX25ldyAo
Y29uc3QgY2hhciAgICAgICAgICAqbmFtZSwNCi0gICAgICAgICAgICAgICAgICAgaW50ICAgICAg
ICAgICAgICAgICAgdHlwZSwNCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAg
ICAqdHlwZSwNCiAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlBY2Nlc3NGbGFncyAgYWNjZXNz
KQ0KIHsNCiAgIFByb3BlcnR5SW5mbyAqaW5mbzsNCkBAIC02NDEsNyArNjQxLDcgQEAgcHJvcGVy
dHlfaW5mb19uZXcgKGNvbnN0IGNoYXIgICAgICAgICAgKg0KICAgaW5mby0+YmFzZS5uYW1lID0g
Z19zdHJkdXAgKG5hbWUpOw0KICAgaW5mby0+YmFzZS50eXBlID0gSU5GT19UWVBFX1BST1BFUlRZ
Ow0KIA0KLSAgaW5mby0+dHlwZSA9IHR5cGU7DQorICBpbmZvLT50eXBlID0gZ19zdHJkdXAgKHR5
cGUpOw0KICAgaW5mby0+YWNjZXNzID0gYWNjZXNzOw0KICAgDQogICByZXR1cm4gaW5mbzsNCkBA
IC02NjIsNiArNjYyLDcgQEAgcHJvcGVydHlfaW5mb191bnJlZiAoUHJvcGVydHlJbmZvICppbmZv
KQ0KICAgaWYgKGluZm8tPmJhc2UucmVmY291bnQgPT0gMCkNCiAgICAgew0KICAgICAgIGJhc2Vf
aW5mb19mcmVlIChpbmZvKTsNCisgICAgICBnX2ZyZWUgKGluZm8tPnR5cGUpOw0KICAgICB9DQog
fQ0KIA0KQEAgLTY3MSw3ICs2NzIsNyBAQCBwcm9wZXJ0eV9pbmZvX2dldF9uYW1lIChQcm9wZXJ0
eUluZm8gKmluDQogICByZXR1cm4gaW5mby0+YmFzZS5uYW1lOw0KIH0NCiANCi1pbnQNCitjb25z
dCBjaGFyICoNCiBwcm9wZXJ0eV9pbmZvX2dldF90eXBlIChQcm9wZXJ0eUluZm8gKmluZm8pDQog
ew0KICAgcmV0dXJuIGluZm8tPnR5cGU7DQpAQCAtNjg2LDcgKzY4Nyw3IEBAIHByb3BlcnR5X2lu
Zm9fZ2V0X2FjY2VzcyAoUHJvcGVydHlJbmZvICoNCiBBcmdJbmZvKg0KIGFyZ19pbmZvX25ldyAo
Y29uc3QgY2hhciAgKm5hbWUsDQogICAgICAgICAgICAgICBBcmdEaXJlY3Rpb24gZGlyZWN0aW9u
LA0KLSAgICAgICAgICAgICAgaW50ICAgICAgICAgIHR5cGUpDQorICAgICAgICAgICAgICBjb25z
dCBjaGFyICAqdHlwZSkNCiB7DQogICBBcmdJbmZvICppbmZvOw0KIA0KQEAgLTY5Nyw3ICs2OTgs
NyBAQCBhcmdfaW5mb19uZXcgKGNvbnN0IGNoYXIgICpuYW1lLA0KICAgLyogbmFtZSBjYW4gYmUg
TlVMTCAqLw0KICAgaW5mby0+YmFzZS5uYW1lID0gZ19zdHJkdXAgKG5hbWUpOw0KICAgaW5mby0+
ZGlyZWN0aW9uID0gZGlyZWN0aW9uOw0KLSAgaW5mby0+dHlwZSA9IHR5cGU7DQorICBpbmZvLT50
eXBlID0gZ19zdHJkdXAgKHR5cGUpOw0KIA0KICAgcmV0dXJuIGluZm87DQogfQ0KQEAgLTcxNyw2
ICs3MTgsNyBAQCBhcmdfaW5mb191bnJlZiAoQXJnSW5mbyAqaW5mbykNCiAgIGlmIChpbmZvLT5i
YXNlLnJlZmNvdW50ID09IDApDQogICAgIHsNCiAgICAgICBiYXNlX2luZm9fZnJlZSAoaW5mbyk7
DQorICAgICAgZ19mcmVlIChpbmZvLT50eXBlKTsNCiAgICAgfQ0KIH0NCiBjb25zdCBjaGFyKg0K
QEAgLTcyNSw3ICs3MjcsNyBAQCBhcmdfaW5mb19nZXRfbmFtZSAoQXJnSW5mbyAqaW5mbykNCiAg
IHJldHVybiBpbmZvLT5iYXNlLm5hbWU7DQogfQ0KIA0KLWludA0KK2NvbnN0IGNoYXIgKg0KIGFy
Z19pbmZvX2dldF90eXBlIChBcmdJbmZvICppbmZvKQ0KIHsNCiAgIHJldHVybiBpbmZvLT50eXBl
Ow0KSW5kZXg6IGdsaWIvZGJ1cy1naWRsLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL2Ri
dXMvZGJ1cy9nbGliL2RidXMtZ2lkbC5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMA0KZGlm
ZiAtdSAtcCAtcjEuMTAgZGJ1cy1naWRsLmgNCi0tLSBnbGliL2RidXMtZ2lkbC5oCTE3IEZlYiAy
MDA1IDIxOjExOjE4IC0wMDAwCTEuMTANCisrKyBnbGliL2RidXMtZ2lkbC5oCTI0IEZlYiAyMDA1
IDE5OjUyOjQ3IC0wMDAwDQpAQCAtMTI4LDIwICsxMjgsMjAgQEAgdm9pZCAgICAgICAgICAgICAg
ICBzaWduYWxfaW5mb19hZGRfYXJnIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFyZ0luZm8gICAgICAgICAgICAgKmFyZyk7DQogaW50ICAgICAg
ICAgICAgICAgICBzaWduYWxfaW5mb19nZXRfbl9hcmdzICAgICAgICAoU2lnbmFsSW5mbyAgICAg
ICAgICAqaW5mbyk7DQogUHJvcGVydHlJbmZvKiAgICAgICBwcm9wZXJ0eV9pbmZvX25ldyAgICAg
ICAgICAgICAoY29uc3QgY2hhciAgICAgICAgICAqbmFtZSwNCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICB0eXBl
LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgICAgICAgICAgKnR5cGUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlBY2Nlc3NGbGFncyAgYWNjZXNzKTsNCiBQcm9w
ZXJ0eUluZm8qICAgICAgIHByb3BlcnR5X2luZm9fcmVmICAgICAgICAgICAgIChQcm9wZXJ0eUlu
Zm8gICAgICAgICppbmZvKTsNCiB2b2lkICAgICAgICAgICAgICAgIHByb3BlcnR5X2luZm9fdW5y
ZWYgICAgICAgICAgIChQcm9wZXJ0eUluZm8gICAgICAgICppbmZvKTsNCiBjb25zdCBjaGFyKiAg
ICAgICAgIHByb3BlcnR5X2luZm9fZ2V0X25hbWUgICAgICAgIChQcm9wZXJ0eUluZm8gICAgICAg
ICppbmZvKTsNCi1pbnQgICAgICAgICAgICAgICAgIHByb3BlcnR5X2luZm9fZ2V0X3R5cGUgICAg
ICAgIChQcm9wZXJ0eUluZm8gICAgICAgICppbmZvKTsNCitjb25zdCBjaGFyKiAgICAgICAgIHBy
b3BlcnR5X2luZm9fZ2V0X3R5cGUgICAgICAgIChQcm9wZXJ0eUluZm8gICAgICAgICppbmZvKTsN
CiBQcm9wZXJ0eUFjY2Vzc0ZsYWdzIHByb3BlcnR5X2luZm9fZ2V0X2FjY2VzcyAgICAgIChQcm9w
ZXJ0eUluZm8gICAgICAgICppbmZvKTsNCiBBcmdJbmZvKiAgICAgICAgICAgIGFyZ19pbmZvX25l
dyAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICAgICAgICAgICpuYW1lLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ0RpcmVjdGlvbiAg
ICAgICAgIGRpcmVjdGlvbiwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICB0eXBlKTsNCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICAgICAg
ICp0eXBlKTsNCiBBcmdJbmZvKiAgICAgICAgICAgIGFyZ19pbmZvX3JlZiAgICAgICAgICAgICAg
ICAgIChBcmdJbmZvICAgICAgICAgICAgICppbmZvKTsNCiB2b2lkICAgICAgICAgICAgICAgIGFy
Z19pbmZvX3VucmVmICAgICAgICAgICAgICAgIChBcmdJbmZvICAgICAgICAgICAgICppbmZvKTsN
CiBjb25zdCBjaGFyKiAgICAgICAgIGFyZ19pbmZvX2dldF9uYW1lICAgICAgICAgICAgIChBcmdJ
bmZvICAgICAgICAgICAgICppbmZvKTsNCi1pbnQgICAgICAgICAgICAgICAgIGFyZ19pbmZvX2dl
dF90eXBlICAgICAgICAgICAgIChBcmdJbmZvICAgICAgICAgICAgICppbmZvKTsNCitjb25zdCBj
aGFyKiAgICAgICAgIGFyZ19pbmZvX2dldF90eXBlICAgICAgICAgICAgIChBcmdJbmZvICAgICAg
ICAgICAgICppbmZvKTsNCiBBcmdEaXJlY3Rpb24gICAgICAgIGFyZ19pbmZvX2dldF9kaXJlY3Rp
b24gICAgICAgIChBcmdJbmZvICAgICAgICAgICAgICppbmZvKTsNCiANCiBHX0VORF9ERUNMUw0K
SW5kZXg6IGdsaWIvZGJ1cy1nbGliLXRvb2wuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMv
ZGJ1cy9kYnVzL2dsaWIvZGJ1cy1nbGliLXRvb2wuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
MTANCmRpZmYgLXUgLXAgLXIxLjEwIGRidXMtZ2xpYi10b29sLmMNCi0tLSBnbGliL2RidXMtZ2xp
Yi10b29sLmMJMTkgRmViIDIwMDUgMjM6MjU6NDEgLTAwMDAJMS4xMA0KKysrIGdsaWIvZGJ1cy1n
bGliLXRvb2wuYwkyNCBGZWIgMjAwNSAxOTo1Mjo0NyAtMDAwMA0KQEAgLTE3NywxMyArMTc3LDEz
IEBAIHByZXR0eV9wcmludCAoQmFzZUluZm8gKmJhc2UsDQogICAgIGNhc2UgSU5GT19UWVBFX1BS
T1BFUlRZOg0KICAgICAgIHsNCiAgICAgICAgIFByb3BlcnR5SW5mbyAqYSA9IChQcm9wZXJ0eUlu
Zm8qKSBiYXNlOw0KLSAgICAgICAgaW50IHB0ID0gcHJvcGVydHlfaW5mb19nZXRfdHlwZSAoYSk7
DQorICAgICAgICBjb25zdCBjaGFyICpwdCA9IHByb3BlcnR5X2luZm9fZ2V0X3R5cGUgKGEpOw0K
ICAgICAgICAgUHJvcGVydHlBY2Nlc3NGbGFncyBhY2MgPSBwcm9wZXJ0eV9pbmZvX2dldF9hY2Nl
c3MgKGEpOw0KIA0KICAgICAgICAgcHJpbnRmICgiJXMlcyAlcyIsDQogICAgICAgICAgICAgICAg
IGFjYyAmIFBST1BFUlRZX1JFQUQgPyAicmVhZCIgOiAiIiwNCiAgICAgICAgICAgICAgICAgYWNj
ICYgUFJPUEVSVFlfV1JJVEUgPyAid3JpdGUiIDogIiIsDQotICAgICAgICAgICAgICAgIF9kYnVz
X2d1dGlsc190eXBlX3RvX3N0cmluZyAocHQpKTsNCisgICAgICAgICAgICAgICAgcHQpOw0KICAg
ICAgICAgaWYgKG5hbWUpDQogICAgICAgICAgIHByaW50ZiAoIiAlc1xuIiwgbmFtZSk7DQogICAg
ICAgICBlbHNlDQpAQCAtMTkzLDEyICsxOTMsMTIgQEAgcHJldHR5X3ByaW50IChCYXNlSW5mbyAq
YmFzZSwNCiAgICAgY2FzZSBJTkZPX1RZUEVfQVJHOg0KICAgICAgIHsNCiAgICAgICAgIEFyZ0lu
Zm8gKmEgPSAoQXJnSW5mbyopIGJhc2U7DQotICAgICAgICBpbnQgYXQgPSBhcmdfaW5mb19nZXRf
dHlwZSAoYSk7DQorICAgICAgICBjb25zdCBjaGFyICphdCA9IGFyZ19pbmZvX2dldF90eXBlIChh
KTsNCiAgICAgICAgIEFyZ0RpcmVjdGlvbiBkID0gYXJnX2luZm9fZ2V0X2RpcmVjdGlvbiAoYSk7
DQogDQogICAgICAgICBwcmludGYgKCIlcyAlcyIsDQogICAgICAgICAgICAgICAgIGQgPT0gQVJH
X0lOID8gImluIiA6ICJvdXQiLA0KLSAgICAgICAgICAgICAgICBfZGJ1c19ndXRpbHNfdHlwZV90
b19zdHJpbmcgKGF0KSk7DQorICAgICAgICAgICAgICAgIGF0KTsNCiAgICAgICAgIGlmIChuYW1l
KQ0KICAgICAgICAgICBwcmludGYgKCIgJXNcbiIsIG5hbWUpOw0KICAgICAgICAgZWxzZQ0KSW5k
ZXg6IGdsaWIvZGJ1cy1nb2JqZWN0LmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL2RidXMv
ZGJ1cy9nbGliL2RidXMtZ29iamVjdC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMA0KZGlm
ZiAtdSAtcCAtcjEuMjAgZGJ1cy1nb2JqZWN0LmMNCi0tLSBnbGliL2RidXMtZ29iamVjdC5jCTE5
IEZlYiAyMDA1IDE2OjE3OjI5IC0wMDAwCTEuMjANCisrKyBnbGliL2RidXMtZ29iamVjdC5jCTI0
IEZlYiAyMDA1IDE5OjUyOjQ4IC0wMDAwDQpAQCAtMjQ3LDQ3ICsyNDcsNiBAQCBnb2JqZWN0X3Vu
cmVnaXN0ZXJfZnVuY3Rpb24gKERCdXNDb25uZWN0DQogDQogfQ0KIA0KLXN0YXRpYyBpbnQNCi1n
dHlwZV90b19kYnVzX3R5cGUgKEdUeXBlIHR5cGUpDQotew0KLSAgc3dpdGNoICh0eXBlKQ0KLSAg
ICB7DQotICAgIGNhc2UgR19UWVBFX0NIQVI6DQotICAgIGNhc2UgR19UWVBFX1VDSEFSOg0KLSAg
ICAgIHJldHVybiBEQlVTX1RZUEVfQllURTsNCi0gICAgICANCi0gICAgY2FzZSBHX1RZUEVfQk9P
TEVBTjoNCi0gICAgICByZXR1cm4gREJVU19UWVBFX0JPT0xFQU47DQotDQotICAgICAgLyogbG9u
ZyBnZXRzIGN1dCB0byAzMiBiaXRzIHNvIHRoZSByZW1vdGUgQVBJIGlzIGNvbnNpc3RlbnQNCi0g
ICAgICAgKiBvbiBhbGwgYXJjaGl0ZWN0dXJlcw0KLSAgICAgICAqLw0KLSAgICAgIA0KLSAgICBj
YXNlIEdfVFlQRV9MT05HOg0KLSAgICBjYXNlIEdfVFlQRV9JTlQ6DQotICAgICAgcmV0dXJuIERC
VVNfVFlQRV9JTlQzMjsNCi0gICAgY2FzZSBHX1RZUEVfVUxPTkc6DQotICAgIGNhc2UgR19UWVBF
X1VJTlQ6DQotICAgICAgcmV0dXJuIERCVVNfVFlQRV9VSU5UMzI7DQotDQotICAgIGNhc2UgR19U
WVBFX0lOVDY0Og0KLSAgICAgIHJldHVybiBEQlVTX1RZUEVfSU5UNjQ7DQotDQotICAgIGNhc2Ug
R19UWVBFX1VJTlQ2NDoNCi0gICAgICByZXR1cm4gREJVU19UWVBFX1VJTlQ2NDsNCi0gICAgICAN
Ci0gICAgY2FzZSBHX1RZUEVfRkxPQVQ6DQotICAgIGNhc2UgR19UWVBFX0RPVUJMRToNCi0gICAg
ICByZXR1cm4gREJVU19UWVBFX0RPVUJMRTsNCi0NCi0gICAgY2FzZSBHX1RZUEVfU1RSSU5HOg0K
LSAgICAgIHJldHVybiBEQlVTX1RZUEVfU1RSSU5HOw0KLQ0KLSAgICBkZWZhdWx0Og0KLSAgICAg
IHJldHVybiBEQlVTX1RZUEVfSU5WQUxJRDsNCi0gICAgfQ0KLX0NCi0NCiBzdGF0aWMgdm9pZA0K
IGludHJvc3BlY3RfcHJvcGVydGllcyAoR09iamVjdCAqb2JqZWN0LCBHU3RyaW5nICp4bWwpDQog
ew0KQEAgLTMwMywxMyArMjYyLDEzIEBAIGludHJvc3BlY3RfcHJvcGVydGllcyAoR09iamVjdCAq
b2JqZWN0LCANCiAgIGZvciAoaSA9IDA7IGkgPCBuX3NwZWNzOyBpKysgKQ0KICAgICB7DQogICAg
ICAgY2hhciAqczsNCi0gICAgICBpbnQgZGJ1c190eXBlOw0KKyAgICAgIGNvbnN0IGNoYXIgKmRi
dXNfdHlwZTsNCiAgICAgICBnYm9vbGVhbiBjYW5fc2V0Ow0KICAgICAgIGdib29sZWFuIGNhbl9n
ZXQ7DQogICAgICAgR1BhcmFtU3BlYyAqc3BlYyA9IHNwZWNzW2ldOw0KICAgICAgIA0KLSAgICAg
IGRidXNfdHlwZSA9IGd0eXBlX3RvX2RidXNfdHlwZSAoR19QQVJBTV9TUEVDX1ZBTFVFX1RZUEUg
KHNwZWMpKTsNCi0gICAgICBpZiAoZGJ1c190eXBlID09IERCVVNfVFlQRV9JTlZBTElEKQ0KKyAg
ICAgIGRidXNfdHlwZSA9IGRidXNfZ3R5cGVfdG9fZGJ1c190eXBlIChHX1BBUkFNX1NQRUNfVkFM
VUVfVFlQRSAoc3BlYykpOw0KKyAgICAgIGlmIChkYnVzX3R5cGUgPT0gTlVMTCkNCiAJY29udGlu
dWU7DQogICAgICAgDQogICAgICAgaWYgKHNwZWMtPm93bmVyX3R5cGUgIT0gbGFzdF90eXBlKQ0K
QEAgLTM0MSw3ICszMDAsNyBAQCBpbnRyb3NwZWN0X3Byb3BlcnRpZXMgKEdPYmplY3QgKm9iamVj
dCwgDQogICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAoeG1sLCAiICAgIDxwcm9wZXJ0eSBuYW1l
PVwiIik7DQogICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAoeG1sLCBzKTsNCiAgICAgICAgICAg
Z19zdHJpbmdfYXBwZW5kICh4bWwsICJcIiB0eXBlPVwiIik7DQotICAgICAgICAgIGdfc3RyaW5n
X2FwcGVuZCAoeG1sLCBfZGJ1c19ndXRpbHNfdHlwZV90b19zdHJpbmcgKGRidXNfdHlwZSkpOw0K
KyAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHhtbCwgZGJ1c190eXBlKTsNCiAgICAgICAgICAg
Z19zdHJpbmdfYXBwZW5kICh4bWwsICJcIiBhY2Nlc3M9XCIiKTsNCiANCiAgICAgICAgICAgaWYg
KGNhbl9zZXQgJiYgY2FuX2dldCkNCkBAIC0zOTcsMTAgKzM1NiwxMCBAQCBpbnRyb3NwZWN0X3Np
Z25hbHMgKEdUeXBlIHR5cGUsIEdTdHJpbmcgDQogDQogICAgICAgZm9yIChhcmcgPSAwOyBhcmcg
PCBxdWVyeS5uX3BhcmFtczsgYXJnKyspDQogCXsNCi0JICBpbnQgZGJ1c190eXBlID0gZ3R5cGVf
dG9fZGJ1c190eXBlIChxdWVyeS5wYXJhbV90eXBlc1thcmddKTsNCisJICBjb25zdCBjaGFyICpk
YnVzX3R5cGUgPSBkYnVzX2d0eXBlX3RvX2RidXNfdHlwZSAocXVlcnkucGFyYW1fdHlwZXNbYXJn
XSk7DQogDQogICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAoeG1sLCAiICAgICAgPGFyZyB0eXBl
PVwiIik7DQotICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAoeG1sLCBfZGJ1c19ndXRpbHNfdHlw
ZV90b19zdHJpbmcgKGRidXNfdHlwZSkpOw0KKyAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHht
bCwgZGJ1c190eXBlKTsNCiAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kICh4bWwsICJcIi8+XG4i
KTsNCiAJfQ0KIA0KQEAgLTQ1NSw3ICs0MTQsNyBAQCB3cml0ZV9pbnRlcmZhY2UgKGdwb2ludGVy
IGtleSwgZ3BvaW50ZXIgDQogDQogCSAgLyogRklYTUUgLSBoYW5kbGUgY29udGFpbmVyIHR5cGVz
ICovDQogCSAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAoeG1sLCAiICAgICAgPGFyZyBuYW1lPVwi
JXNcIiB0eXBlPVwiJXNcIiBkaXJlY3Rpb249XCIlc1wiLz5cbiIsDQotCQkJCSAgbmFtZSwgX2Ri
dXNfZ3V0aWxzX3R5cGVfdG9fc3RyaW5nICh0eXBlWzBdKSwgYXJnX2luID8gImluIiA6ICJvdXQi
KTsNCisJCQkJICBuYW1lLCB0eXBlLCBhcmdfaW4gPyAiaW4iIDogIm91dCIpOw0KIA0KIAl9DQog
ICAgICAgZ19zdHJpbmdfYXBwZW5kICh4bWwsICIgICAgPC9tZXRob2Q+XG4iKTsNCkBAIC01NDMs
MjEgKzUwMiwyMSBAQCBoYW5kbGVfaW50cm9zcGVjdCAoREJ1c0Nvbm5lY3Rpb24gKmNvbm5lDQog
ICAvKiBXZSBhcmUgaW50cm9zcGVjdGFibGUsIHRob3VnaCBJIGd1ZXNzIHRoYXQgd2FzIHByZXR0
eSBvYnZpb3VzICovDQogICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmICh4bWwsICIgIDxpbnRlcmZh
Y2UgbmFtZT1cIiVzXCI+XG4iLCBEQlVTX0lOVEVSRkFDRV9JTlRST1NQRUNUQUJMRSk7DQogICBn
X3N0cmluZ19hcHBlbmQgKHhtbCwgIiAgICA8bWV0aG9kIG5hbWU9XCJJbnRyb3NwZWN0XCI+XG4i
KTsNCi0gIGdfc3RyaW5nX2FwcGVuZCAoeG1sLCAiICAgICAgPGFyZyBuYW1lPVwiZGF0YVwiIGRp
cmVjdGlvbj1cIm91dFwiIHR5cGU9XCJzdHJpbmdcIi8+XG4iKTsNCisgIGdfc3RyaW5nX2FwcGVu
ZF9wcmludGYgKHhtbCwgIiAgICAgIDxhcmcgbmFtZT1cImRhdGFcIiBkaXJlY3Rpb249XCJvdXRc
IiB0eXBlPVwiJXNcIi8+XG4iLCBEQlVTX1RZUEVfU1RSSU5HX0FTX1NUUklORyk7DQogICBnX3N0
cmluZ19hcHBlbmQgKHhtbCwgIiAgICA8L21ldGhvZD5cbiIpOw0KICAgZ19zdHJpbmdfYXBwZW5k
ICh4bWwsICIgIDwvaW50ZXJmYWNlPlxuIik7DQogDQogICAvKiBXZSBzdXBwb3J0IGdldC9zZXQg
cHJvcGVydGllcyAqLw0KICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAoeG1sLCAiICA8aW50ZXJm
YWNlIG5hbWU9XCIlc1wiPlxuIiwgREJVU19JTlRFUkZBQ0VfUFJPUEVSVElFUyk7DQogICBnX3N0
cmluZ19hcHBlbmQgKHhtbCwgIiAgICA8bWV0aG9kIG5hbWU9XCJHZXRcIj5cbiIpOw0KLSAgZ19z
dHJpbmdfYXBwZW5kICh4bWwsICIgICAgICA8YXJnIG5hbWU9XCJpbnRlcmZhY2VcIiBkaXJlY3Rp
b249XCJpblwiIHR5cGU9XCJzdHJpbmdcIi8+XG4iKTsNCi0gIGdfc3RyaW5nX2FwcGVuZCAoeG1s
LCAiICAgICAgPGFyZyBuYW1lPVwicHJvcG5hbWVcIiBkaXJlY3Rpb249XCJpblwiIHR5cGU9XCJz
dHJpbmdcIi8+XG4iKTsNCi0gIGdfc3RyaW5nX2FwcGVuZCAoeG1sLCAiICAgICAgPGFyZyBuYW1l
PVwidmFsdWVcIiBkaXJlY3Rpb249XCJvdXRcIiB0eXBlPVwidmFyaWFudFwiLz5cbiIpOw0KKyAg
Z19zdHJpbmdfYXBwZW5kX3ByaW50ZiAoeG1sLCAiICAgICAgPGFyZyBuYW1lPVwiaW50ZXJmYWNl
XCIgZGlyZWN0aW9uPVwiaW5cIiB0eXBlPVwiJXNcIi8+XG4iLCBEQlVTX1RZUEVfU1RSSU5HX0FT
X1NUUklORyk7DQorICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmICh4bWwsICIgICAgICA8YXJnIG5h
bWU9XCJwcm9wbmFtZVwiIGRpcmVjdGlvbj1cImluXCIgdHlwZT1cIiVzXCIvPlxuIiwgREJVU19U
WVBFX1NUUklOR19BU19TVFJJTkcpOw0KKyAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAoeG1sLCAi
ICAgICAgPGFyZyBuYW1lPVwidmFsdWVcIiBkaXJlY3Rpb249XCJvdXRcIiB0eXBlPVwiJXNcIi8+
XG4iLCBEQlVTX1RZUEVfVkFSSUFOVF9BU19TVFJJTkcpOw0KICAgZ19zdHJpbmdfYXBwZW5kICh4
bWwsICIgICAgPC9tZXRob2Q+XG4iKTsNCiAgIGdfc3RyaW5nX2FwcGVuZCAoeG1sLCAiICAgIDxt
ZXRob2QgbmFtZT1cIlNldFwiPlxuIik7DQotICBnX3N0cmluZ19hcHBlbmQgKHhtbCwgIiAgICAg
IDxhcmcgbmFtZT1cImludGVyZmFjZVwiIGRpcmVjdGlvbj1cImluXCIgdHlwZT1cInN0cmluZ1wi
Lz5cbiIpOw0KLSAgZ19zdHJpbmdfYXBwZW5kICh4bWwsICIgICAgICA8YXJnIG5hbWU9XCJwcm9w
bmFtZVwiIGRpcmVjdGlvbj1cImluXCIgdHlwZT1cInN0cmluZ1wiLz5cbiIpOw0KLSAgZ19zdHJp
bmdfYXBwZW5kICh4bWwsICIgICAgICA8YXJnIG5hbWU9XCJ2YWx1ZVwiIGRpcmVjdGlvbj1cImlu
XCIgdHlwZT1cInZhcmlhbnRcIi8+XG4iKTsNCisgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHht
bCwgIiAgICAgIDxhcmcgbmFtZT1cImludGVyZmFjZVwiIGRpcmVjdGlvbj1cImluXCIgdHlwZT1c
IiVzXCIvPlxuIiwgREJVU19UWVBFX1NUUklOR19BU19TVFJJTkcpOw0KKyAgZ19zdHJpbmdfYXBw
ZW5kX3ByaW50ZiAoeG1sLCAiICAgICAgPGFyZyBuYW1lPVwicHJvcG5hbWVcIiBkaXJlY3Rpb249
XCJpblwiIHR5cGU9XCIlc1wiLz5cbiIsIERCVVNfVFlQRV9TVFJJTkdfQVNfU1RSSU5HKTsNCisg
IGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHhtbCwgIiAgICAgIDxhcmcgbmFtZT1cInZhbHVlXCIg
ZGlyZWN0aW9uPVwiaW5cIiB0eXBlPVwiJXNcIi8+XG4iLCBEQlVTX1RZUEVfVkFSSUFOVF9BU19T
VFJJTkcpOw0KICAgZ19zdHJpbmdfYXBwZW5kICh4bWwsICIgICAgPC9tZXRob2Q+XG4iKTsNCiAg
IGdfc3RyaW5nX2FwcGVuZCAoeG1sLCAiICA8L2ludGVyZmFjZT5cbiIpOw0KICAgDQpJbmRleDog
Z2xpYi9kYnVzLWdwYXJzZXIuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvZGJ1cy9kYnVz
L2dsaWIvZGJ1cy1ncGFyc2VyLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEzDQpkaWZmIC11
IC1wIC1yMS4xMyBkYnVzLWdwYXJzZXIuYw0KLS0tIGdsaWIvZGJ1cy1ncGFyc2VyLmMJMTkgRmVi
IDIwMDUgMTY6MTc6MjkgLTAwMDAJMS4xMw0KKysrIGdsaWIvZGJ1cy1ncGFyc2VyLmMJMjQgRmVi
IDIwMDUgMTk6NTI6NDggLTAwMDANCkBAIC0yMSw3ICsyMSw5IEBADQogICoNCiAgKi8NCiAjaW5j
bHVkZSAiZGJ1cy1ncGFyc2VyLmgiDQorI2luY2x1ZGUgImRidXMvZGJ1cy1nbGliLWxvd2xldmVs
LmgiDQogI2luY2x1ZGUgImRidXMtZ2lkbC5oIg0KKyNpbmNsdWRlICJkYnVzL2RidXMtc2lnbmF0
dXJlLmgiDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KIA0KICNpbmNsdWRlIDxsaWJpbnRsLmg+DQpA
QCAtNDYxLDU5ICs0NjMsMjEgQEAgcGFyc2Vfc2lnbmFsIChQYXJzZXIgICAgICAqcGFyc2VyLA0K
ICAgcmV0dXJuIFRSVUU7DQogfQ0KIA0KLXN0YXRpYyBpbnQNCi1iYXNpY190eXBlX2Zyb21fc3Ry
aW5nIChjb25zdCBjaGFyICpzdHIpDQorc3RhdGljIGdib29sZWFuDQordmFsaWRhdGVfc2lnbmF0
dXJlIChjb25zdCBjaGFyICpzdHIsDQorCQkgICAgY29uc3QgY2hhciAqZWxlbWVudF9uYW1lLA0K
KwkJICAgIEdFcnJvciAgICAqKmVycm9yKQ0KIHsNCi0gIGlmIChzdHJjbXAgKHN0ciwgInN0cmlu
ZyIpID09IDApDQotICAgIHJldHVybiBEQlVTX1RZUEVfU1RSSU5HOw0KLSAgZWxzZSBpZiAoc3Ry
Y21wIChzdHIsICJpbnQxNiIpID09IDApDQotICAgIHJldHVybiBEQlVTX1RZUEVfSU5UMTY7DQot
ICBlbHNlIGlmIChzdHJjbXAgKHN0ciwgInVpbnQxNiIpID09IDApDQotICAgIHJldHVybiBEQlVT
X1RZUEVfVUlOVDE2Ow0KLSAgZWxzZSBpZiAoc3RyY21wIChzdHIsICJpbnQzMiIpID09IDApDQot
ICAgIHJldHVybiBEQlVTX1RZUEVfSU5UMzI7DQotICBlbHNlIGlmIChzdHJjbXAgKHN0ciwgInVp
bnQzMiIpID09IDApDQotICAgIHJldHVybiBEQlVTX1RZUEVfVUlOVDMyOw0KLSAgZWxzZSBpZiAo
c3RyY21wIChzdHIsICJpbnQ2NCIpID09IDApDQotICAgIHJldHVybiBEQlVTX1RZUEVfSU5UNjQ7
DQotICBlbHNlIGlmIChzdHJjbXAgKHN0ciwgInVpbnQ2NCIpID09IDApDQotICAgIHJldHVybiBE
QlVTX1RZUEVfVUlOVDY0Ow0KLSAgZWxzZSBpZiAoc3RyY21wIChzdHIsICJkb3VibGUiKSA9PSAw
KQ0KLSAgICByZXR1cm4gREJVU19UWVBFX0RPVUJMRTsNCi0gIGVsc2UgaWYgKHN0cmNtcCAoc3Ry
LCAiYnl0ZSIpID09IDApDQotICAgIHJldHVybiBEQlVTX1RZUEVfQllURTsNCi0gIGVsc2UgaWYg
KHN0cmNtcCAoc3RyLCAiYm9vbGVhbiIpID09IDApDQotICAgIHJldHVybiBEQlVTX1RZUEVfQk9P
TEVBTjsNCi0gIGVsc2UgaWYgKHN0cmNtcCAoc3RyLCAiYnl0ZSIpID09IDApDQotICAgIHJldHVy
biBEQlVTX1RZUEVfQllURTsNCi0gIGVsc2UgaWYgKHN0cmNtcCAoc3RyLCAib2JqZWN0IikgPT0g
MCkNCi0gICAgcmV0dXJuIERCVVNfVFlQRV9PQkpFQ1RfUEFUSDsNCi0gIGVsc2UgaWYgKHN0cmNt
cCAoc3RyLCAidmFyaWFudCIpID09IDApDQotICAgIHJldHVybiBEQlVTX1RZUEVfVkFSSUFOVDsN
Ci0gIGVsc2UNCi0gICAgcmV0dXJuIERCVVNfVFlQRV9JTlZBTElEOw0KLX0NCisgIERCdXNFcnJv
ciBkZXJyb3I7DQogDQotLyogRklYTUUgd2UgaGF2ZSB0byBhbGxvdyB0eXBlIHNpZ25hdHVyZXMs
IG5vdCBqdXN0IGJhc2ljIHR5cGVzDQotICovDQotc3RhdGljIGludA0KLXR5cGVfZnJvbV9zdHJp
bmcgKGNvbnN0IGNoYXIgKnN0ciwNCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbGVt
ZW50X25hbWUsDQotICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICoqZXJyb3IpDQotew0KLSAg
aW50IHQ7DQorICBkYnVzX2Vycm9yX2luaXQgKCZkZXJyb3IpOw0KICAgDQotICB0ID0gYmFzaWNf
dHlwZV9mcm9tX3N0cmluZyAoc3RyKTsNCi0NCi0gIGlmICh0ID09IERCVVNfVFlQRV9JTlZBTElE
KQ0KKyAgaWYgKCFkYnVzX3NpZ25hdHVyZV92YWxpZGF0ZSAoc3RyLCAmZGVycm9yKSkNCiAgICAg
ew0KLSAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR19NQVJLVVBfRVJST1IsDQotICAgICAgICAg
ICAgICAgICAgIEdfTUFSS1VQX0VSUk9SX1BBUlNFLA0KLSAgICAgICAgICAgICAgICAgICBfKCJU
eXBlIFwiJXNcIiBub3QgdW5kZXJzdG9vZCBvbiA8JXM+IGVsZW1lbnQgIiksDQotICAgICAgICAg
ICAgICAgICAgIHN0ciwgZWxlbWVudF9uYW1lKTsNCisgICAgICBkYnVzX3NldF9nX2Vycm9yIChl
cnJvciwgJmRlcnJvcik7DQorICAgICAgcmV0dXJuIEZBTFNFOw0KICAgICB9DQotDQotICByZXR1
cm4gdDsNCisgIHJldHVybiBUUlVFOw0KIH0NCiANCiBzdGF0aWMgZ2Jvb2xlYW4NCkBAIC01Mjks
NyArNDkzLDYgQEAgcGFyc2VfcHJvcGVydHkgKFBhcnNlciAgICAgICpwYXJzZXIsDQogICBQcm9w
ZXJ0eUluZm8gKnByb3BlcnR5Ow0KICAgTm9kZUluZm8gKnRvcDsNCiAgIFByb3BlcnR5QWNjZXNz
RmxhZ3MgYWNjZXNzX2ZsYWdzOw0KLSAgaW50IHQ7DQogICANCiAgIGlmIChwYXJzZXItPmludGVy
ZmFjZSA9PSBOVUxMIHx8DQogICAgICAgcGFyc2VyLT5ub2RlX3N0YWNrID09IE5VTEwgfHwNCkBA
IC01ODIsOCArNTQ1LDcgQEAgcGFyc2VfcHJvcGVydHkgKFBhcnNlciAgICAgICpwYXJzZXIsDQog
ICAgICAgcmV0dXJuIEZBTFNFOw0KICAgICB9DQogDQotICB0ID0gdHlwZV9mcm9tX3N0cmluZyAo
dHlwZSwgZWxlbWVudF9uYW1lLCBlcnJvcik7DQotICBpZiAodCA9PSBEQlVTX1RZUEVfSU5WQUxJ
RCkNCisgIGlmICghdmFsaWRhdGVfc2lnbmF0dXJlICh0eXBlLCBlbGVtZW50X25hbWUsIGVycm9y
KSkNCiAgICAgcmV0dXJuIEZBTFNFOw0KIA0KICAgYWNjZXNzX2ZsYWdzID0gMDsNCkBAIC02MDQs
NyArNTY2LDcgQEAgcGFyc2VfcHJvcGVydHkgKFBhcnNlciAgICAgICpwYXJzZXIsDQogICANCiAg
IHRvcCA9IHBhcnNlci0+bm9kZV9zdGFjay0+ZGF0YTsNCiAgIA0KLSAgcHJvcGVydHkgPSBwcm9w
ZXJ0eV9pbmZvX25ldyAobmFtZSwgdCwgYWNjZXNzX2ZsYWdzKTsNCisgIHByb3BlcnR5ID0gcHJv
cGVydHlfaW5mb19uZXcgKG5hbWUsIHR5cGUsIGFjY2Vzc19mbGFncyk7DQogICBpbnRlcmZhY2Vf
aW5mb19hZGRfcHJvcGVydHkgKHBhcnNlci0+aW50ZXJmYWNlLCBwcm9wZXJ0eSk7DQogICBwcm9w
ZXJ0eV9pbmZvX3VucmVmIChwcm9wZXJ0eSk7DQogDQpAQCAtNjI0LDcgKzU4Niw2IEBAIHBhcnNl
X2FyZyAoUGFyc2VyICAgICAgKnBhcnNlciwNCiAgIGNvbnN0IGNoYXIgKnR5cGU7DQogICBjb25z
dCBjaGFyICpkaXJlY3Rpb247DQogICBBcmdEaXJlY3Rpb24gZGlyOw0KLSAgaW50IHQ7DQogICBB
cmdJbmZvICphcmc7DQogICBjaGFyICpnZW5lcmF0ZWRfbmFtZTsNCiAgIA0KQEAgLTY5NCw4ICs2
NTUsNyBAQCBwYXJzZV9hcmcgKFBhcnNlciAgICAgICpwYXJzZXIsDQogICAgICAgcmV0dXJuIEZB
TFNFOw0KICAgICB9DQogDQotICB0ID0gdHlwZV9mcm9tX3N0cmluZyAodHlwZSwgZWxlbWVudF9u
YW1lLCBlcnJvcik7DQotICBpZiAodCA9PSBEQlVTX1RZUEVfSU5WQUxJRCkNCisgIGlmICghdmFs
aWRhdGVfc2lnbmF0dXJlICh0eXBlLCBlbGVtZW50X25hbWUsIGVycm9yKSkNCiAgICAgcmV0dXJu
IEZBTFNFOw0KIA0KICAgZ2VuZXJhdGVkX25hbWUgPSBOVUxMOw0KQEAgLTcwNiw3ICs2NjYsNyBA
QCBwYXJzZV9hcmcgKFBhcnNlciAgICAgICpwYXJzZXIsDQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaWduYWxfaW5mb19nZXRfbl9hcmdzIChwYXJzZXItPnNpZ25hbCkp
Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICANCi0gIGFyZyA9
IGFyZ19pbmZvX25ldyAobmFtZSA/IG5hbWUgOiBnZW5lcmF0ZWRfbmFtZSwgZGlyLCB0KTsNCisg
IGFyZyA9IGFyZ19pbmZvX25ldyAobmFtZSA/IG5hbWUgOiBnZW5lcmF0ZWRfbmFtZSwgZGlyLCB0
eXBlKTsNCiAgIGlmIChwYXJzZXItPm1ldGhvZCkNCiAgICAgbWV0aG9kX2luZm9fYWRkX2FyZyAo
cGFyc2VyLT5tZXRob2QsIGFyZyk7DQogICBlbHNlIGlmIChwYXJzZXItPnNpZ25hbCkNCkluZGV4
OiBnbGliL2RidXMtZ3V0aWxzLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL2RidXMvZGJ1
cy9nbGliL2RidXMtZ3V0aWxzLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjEwDQpkaWZmIC11
IC1wIC1yMS4xMCBkYnVzLWd1dGlscy5jDQotLS0gZ2xpYi9kYnVzLWd1dGlscy5jCTE3IEZlYiAy
MDA1IDE3OjQxOjI2IC0wMDAwCTEuMTANCisrKyBnbGliL2RidXMtZ3V0aWxzLmMJMjQgRmViIDIw
MDUgMTk6NTI6NDggLTAwMDANCkBAIC04Myw0OCArODMsNiBAQCBfZGJ1c19ndXRpbHNfc3BsaXRf
cGF0aCAoY29uc3QgY2hhciAqcGF0DQogICByZXR1cm4gc3BsaXQ7DQogfQ0KIA0KLWNvbnN0IGNo
YXIgKg0KLV9kYnVzX2d1dGlsc190eXBlX3RvX3N0cmluZyAoaW50IHR5cGUpDQotew0KLSAgc3dp
dGNoICh0eXBlKQ0KLSAgICB7DQotICAgIGNhc2UgREJVU19UWVBFX0lOVkFMSUQ6DQotICAgICAg
cmV0dXJuICJpbnZhbGlkIjsNCi0gICAgY2FzZSBEQlVTX1RZUEVfQk9PTEVBTjoNCi0gICAgICBy
ZXR1cm4gImJvb2xlYW4iOw0KLSAgICBjYXNlIERCVVNfVFlQRV9CWVRFOg0KLSAgICAgIHJldHVy
biAiYnl0ZSI7DQotICAgIGNhc2UgREJVU19UWVBFX0lOVDE2Og0KLSAgICAgIHJldHVybiAiaW50
MTYiOw0KLSAgICBjYXNlIERCVVNfVFlQRV9VSU5UMTY6DQotICAgICAgcmV0dXJuICJ1aW50MTYi
Ow0KLSAgICBjYXNlIERCVVNfVFlQRV9JTlQzMjoNCi0gICAgICByZXR1cm4gImludDMyIjsNCi0g
ICAgY2FzZSBEQlVTX1RZUEVfVUlOVDMyOg0KLSAgICAgIHJldHVybiAidWludDMyIjsNCi0gICAg
Y2FzZSBEQlVTX1RZUEVfRE9VQkxFOg0KLSAgICAgIHJldHVybiAiZG91YmxlIjsNCi0gICAgY2Fz
ZSBEQlVTX1RZUEVfU1RSSU5HOg0KLSAgICAgIHJldHVybiAic3RyaW5nIjsNCi0gICAgY2FzZSBE
QlVTX1RZUEVfT0JKRUNUX1BBVEg6DQotICAgICAgcmV0dXJuICJvYmplY3RfcGF0aCI7DQotICAg
IGNhc2UgREJVU19UWVBFX1NJR05BVFVSRToNCi0gICAgICByZXR1cm4gInNpZ25hdHVyZSI7DQot
ICAgIGNhc2UgREJVU19UWVBFX1NUUlVDVDoNCi0gICAgICByZXR1cm4gInN0cnVjdCI7DQotICAg
IGNhc2UgREJVU19UWVBFX0FSUkFZOg0KLSAgICAgIHJldHVybiAiYXJyYXkiOw0KLSAgICBjYXNl
IERCVVNfVFlQRV9WQVJJQU5UOg0KLSAgICAgIHJldHVybiAidmFyaWFudCI7DQotICAgIGNhc2Ug
REJVU19TVFJVQ1RfQkVHSU5fQ0hBUjoNCi0gICAgICByZXR1cm4gImJlZ2luX3N0cnVjdCI7DQot
ICAgIGNhc2UgREJVU19TVFJVQ1RfRU5EX0NIQVI6DQotICAgICAgcmV0dXJuICJlbmRfc3RydWN0
IjsNCi0gICAgZGVmYXVsdDoNCi0gICAgICByZXR1cm4gInVua25vd24iOw0KLSAgICB9DQotfQ0K
LQ0KIGNoYXIqDQogX2RidXNfZ3V0aWxzX3dpbmNhcHNfdG9fdXNjb3JlIChjb25zdCBjaGFyICpj
YXBzKQ0KIHsNCkluZGV4OiBnbGliL2RidXMtZ3V0aWxzLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl
OiAvY3ZzL2RidXMvZGJ1cy9nbGliL2RidXMtZ3V0aWxzLmgsdg0KcmV0cmlldmluZyByZXZpc2lv
biAxLjcNCmRpZmYgLXUgLXAgLXIxLjcgZGJ1cy1ndXRpbHMuaA0KLS0tIGdsaWIvZGJ1cy1ndXRp
bHMuaAkxNyBGZWIgMjAwNSAxNzo0MToyNiAtMDAwMAkxLjcNCisrKyBnbGliL2RidXMtZ3V0aWxz
LmgJMjQgRmViIDIwMDUgMTk6NTI6NDggLTAwMDANCkBAIC0zMiw3ICszMiw2IEBADQogR19CRUdJ
Tl9ERUNMUw0KIA0KIGNoYXIgICAgICAqKl9kYnVzX2d1dGlsc19zcGxpdF9wYXRoICAgICAoY29u
c3QgY2hhciAqcGF0aCk7DQotY29uc3QgY2hhciAqX2RidXNfZ3V0aWxzX3R5cGVfdG9fc3RyaW5n
IChpbnQgICAgICAgICB0eXBlKTsNCiANCiBjaGFyICAgICAgICpfZGJ1c19ndXRpbHNfd2luY2Fw
c190b191c2NvcmUgKGNvbnN0IGNoYXIgKnVzY29yZSk7DQogDQpJbmRleDogZ2xpYi9kYnVzLWd2
YWx1ZS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9kYnVzL2RidXMvZ2xpYi9kYnVzLWd2
YWx1ZS5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS42DQpkaWZmIC11IC1wIC1yMS42IGRidXMt
Z3ZhbHVlLmMNCi0tLSBnbGliL2RidXMtZ3ZhbHVlLmMJMTcgRmViIDIwMDUgMTc6NDE6MjYgLTAw
MDAJMS42DQorKysgZ2xpYi9kYnVzLWd2YWx1ZS5jCTI0IEZlYiAyMDA1IDE5OjUyOjQ4IC0wMDAw
DQpAQCAtMjMsNiArMjMsNyBAQA0KICAqLw0KIA0KICNpbmNsdWRlIDxkYnVzLWd2YWx1ZS5oPg0K
KyNpbmNsdWRlICJkYnVzL2RidXMtc2lnbmF0dXJlLmgiDQogDQogLyogVGhpcyBpcyBzbGlnaHRs
eSBldmlsLCB3ZSBkb24ndCB1c2UgZ192YWx1ZV9zZXRfZm9vKCkgZnVuY3Rpb25zICovDQogI2Rl
ZmluZSBNQVBfQkFTSUNfSU5JVChkX3QsIGdfdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXA0KQEAgLTcxLDkgKzcyLDI0IEBAIGRidXNfZ3ZhbHVlX2luaXQgICAgICAoaW50
ICAgICB0eXBlLA0KICAgcmV0dXJuIGNhbl9jb252ZXJ0Ow0KIH0NCiANCisvKiBGSVhNRSAtIGJy
b2tlbiBmb3IgY29udGFpbmVycw0KKyAqLw0KK3N0YXRpYyBpbnQNCitiYXNlX3R5cGVfZnJvbV9z
aWduYXR1cmUgIChjb25zdCBjaGFyICpzaWduYXR1cmUpDQorew0KKyAgREJ1c1NpZ25hdHVyZUl0
ZXIgaXRlcjsNCisNCisgIGRidXNfc2lnbmF0dXJlX2l0ZXJfaW5pdCAoJml0ZXIsIHNpZ25hdHVy
ZSk7DQorDQorICByZXR1cm4gZGJ1c19zaWduYXR1cmVfaXRlcl9nZXRfY3VycmVudF90eXBlICgm
aXRlcik7DQorfQ0KKw0KIGNvbnN0IGNoYXIgKg0KLWRidXNfZ3ZhbHVlX2dlbm1hcnNoYWxfbmFt
ZV9mcm9tX3R5cGUgKGludCB0eXBlKQ0KK2RidXNfZ3ZhbHVlX2dlbm1hcnNoYWxfbmFtZV9mcm9t
X3R5cGUgKGNvbnN0IGNoYXIgKnNpZ25hdHVyZSkNCiB7DQorICBpbnQgdHlwZTsNCisNCisgIHR5
cGUgPSBiYXNlX3R5cGVfZnJvbV9zaWduYXR1cmUgKHNpZ25hdHVyZSk7DQogICBzd2l0Y2ggKHR5
cGUpDQogICAgIHsNCiAgICAgY2FzZSBEQlVTX1RZUEVfQk9PTEVBTjoNCkBAIC0xMDksOCArMTI1
LDEyIEBAIGRidXNfZ3ZhbHVlX2dlbm1hcnNoYWxfbmFtZV9mcm9tX3R5cGUgKGkNCiB9DQogDQog
Y29uc3QgY2hhciAqDQotZGJ1c19ndmFsdWVfYmluZGluZ190eXBlX2Zyb21fdHlwZSAoaW50IHR5
cGUpDQorZGJ1c19ndmFsdWVfYmluZGluZ190eXBlX2Zyb21fdHlwZSAoY29uc3QgY2hhciAqc2ln
bmF0dXJlKQ0KIHsNCisgIGludCB0eXBlOw0KKw0KKyAgdHlwZSA9IGJhc2VfdHlwZV9mcm9tX3Np
Z25hdHVyZSAoc2lnbmF0dXJlKTsNCisNCiAjZGVmaW5lIFNUUklOR0lGWSh4KSBcDQogICBjYXNl
IHg6IFwNCiAgICAgcmV0dXJuICgjeCkNCkBAIC0xNDIsOCArMTYyLDEyIEBAIGRidXNfZ3ZhbHVl
X2JpbmRpbmdfdHlwZV9mcm9tX3R5cGUgKGludCANCiB9DQogDQogY29uc3QgY2hhciAqDQotZGJ1
c19ndmFsdWVfY3R5cGVfZnJvbV90eXBlIChpbnQgdHlwZSwgZ2Jvb2xlYW4gaW4pDQorZGJ1c19n
dmFsdWVfY3R5cGVfZnJvbV90eXBlIChjb25zdCBjaGFyICpzaWduYXR1cmUsIGdib29sZWFuIGlu
KQ0KIHsNCisgIGludCB0eXBlOw0KKw0KKyAgdHlwZSA9IGJhc2VfdHlwZV9mcm9tX3NpZ25hdHVy
ZSAoc2lnbmF0dXJlKTsNCisNCiAgIHN3aXRjaCAodHlwZSkNCiAgICAgew0KICAgICBjYXNlIERC
VVNfVFlQRV9CT09MRUFOOg0KQEAgLTE4MSw2ICsyMDUsNDcgQEAgZGJ1c19ndmFsdWVfY3R5cGVf
ZnJvbV90eXBlIChpbnQgdHlwZSwgZw0KICAgcmV0dXJuIE5VTEw7DQogfQ0KIA0KK2NvbnN0IGNo
YXIgKg0KK2RidXNfZ3R5cGVfdG9fZGJ1c190eXBlIChHVHlwZSB0eXBlKQ0KK3sNCisgIHN3aXRj
aCAodHlwZSkNCisgICAgew0KKyAgICBjYXNlIEdfVFlQRV9DSEFSOg0KKyAgICBjYXNlIEdfVFlQ
RV9VQ0hBUjoNCisgICAgICByZXR1cm4gREJVU19UWVBFX0JZVEVfQVNfU1RSSU5HOw0KKyAgICAg
IA0KKyAgICBjYXNlIEdfVFlQRV9CT09MRUFOOg0KKyAgICAgIHJldHVybiBEQlVTX1RZUEVfQk9P
TEVBTl9BU19TVFJJTkc7DQorDQorICAgICAgLyogbG9uZyBnZXRzIGN1dCB0byAzMiBiaXRzIHNv
IHRoZSByZW1vdGUgQVBJIGlzIGNvbnNpc3RlbnQNCisgICAgICAgKiBvbiBhbGwgYXJjaGl0ZWN0
dXJlcw0KKyAgICAgICAqLw0KKyAgICAgIA0KKyAgICBjYXNlIEdfVFlQRV9MT05HOg0KKyAgICBj
YXNlIEdfVFlQRV9JTlQ6DQorICAgICAgcmV0dXJuIERCVVNfVFlQRV9JTlQzMl9BU19TVFJJTkc7
DQorICAgIGNhc2UgR19UWVBFX1VMT05HOg0KKyAgICBjYXNlIEdfVFlQRV9VSU5UOg0KKyAgICAg
IHJldHVybiBEQlVTX1RZUEVfVUlOVDMyX0FTX1NUUklORzsNCisNCisgICAgY2FzZSBHX1RZUEVf
SU5UNjQ6DQorICAgICAgcmV0dXJuIERCVVNfVFlQRV9JTlQ2NF9BU19TVFJJTkc7DQorDQorICAg
IGNhc2UgR19UWVBFX1VJTlQ2NDoNCisgICAgICByZXR1cm4gREJVU19UWVBFX1VJTlQ2NF9BU19T
VFJJTkc7DQorICAgICAgDQorICAgIGNhc2UgR19UWVBFX0ZMT0FUOg0KKyAgICBjYXNlIEdfVFlQ
RV9ET1VCTEU6DQorICAgICAgcmV0dXJuIERCVVNfVFlQRV9ET1VCTEVfQVNfU1RSSU5HOw0KKw0K
KyAgICBjYXNlIEdfVFlQRV9TVFJJTkc6DQorICAgICAgcmV0dXJuIERCVVNfVFlQRV9TVFJJTkdf
QVNfU1RSSU5HOw0KKw0KKyAgICBkZWZhdWx0Og0KKyAgICAgIHJldHVybiBOVUxMOw0KKyAgICB9
DQorfQ0KKw0KIGdib29sZWFuDQogZGJ1c19ndmFsdWVfZGVtYXJzaGFsIChEQnVzTWVzc2FnZUl0
ZXIgKml0ZXIsIEdWYWx1ZSAqdmFsdWUpDQogew0KSW5kZXg6IGdsaWIvZGJ1cy1ndmFsdWUuaA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvZGJ1cy9kYnVzL2dsaWIvZGJ1cy1ndmFsdWUuaCx2
DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMg0KZGlmZiAtdSAtcCAtcjEuMiBkYnVzLWd2YWx1ZS5o
DQotLS0gZ2xpYi9kYnVzLWd2YWx1ZS5oCTE3IEZlYiAyMDA1IDE3OjQxOjI2IC0wMDAwCTEuMg0K
KysrIGdsaWIvZGJ1cy1ndmFsdWUuaAkyNCBGZWIgMjAwNSAxOTo1Mjo0OCAtMDAwMA0KQEAgLTIw
LDExICsyMCwxMyBAQCB0eXBlZGVmIHVuaW9uDQogICBjaGFyICogY2hhcmFycmF5X3ZhbDsNCiB9
IERCdXNCYXNpY0dWYWx1ZTsNCiANCi1jb25zdCBjaGFyICogICBkYnVzX2d2YWx1ZV9nZW5tYXJz
aGFsX25hbWVfZnJvbV90eXBlIChpbnQgdHlwZSk7DQorY29uc3QgY2hhciAqICAgZGJ1c19ndmFs
dWVfZ2VubWFyc2hhbF9uYW1lX2Zyb21fdHlwZSAoY29uc3QgY2hhciAqdHlwZSk7DQogDQotY29u
c3QgY2hhciAqICAgZGJ1c19ndmFsdWVfY3R5cGVfZnJvbV90eXBlICAgICAgICAgICAoaW50IHR5
cGUsIGdib29sZWFuIGluKTsNCitjb25zdCBjaGFyICogICBkYnVzX2d2YWx1ZV9jdHlwZV9mcm9t
X3R5cGUgICAgICAgICAgIChjb25zdCBjaGFyICp0eXBlLCBnYm9vbGVhbiBpbik7DQogDQotY29u
c3QgY2hhciAqICAgZGJ1c19ndmFsdWVfYmluZGluZ190eXBlX2Zyb21fdHlwZSAgICAoaW50IHR5
cGUpOw0KK2NvbnN0IGNoYXIgKiAgIGRidXNfZ3ZhbHVlX2JpbmRpbmdfdHlwZV9mcm9tX3R5cGUg
ICAgKGNvbnN0IGNoYXIgKnR5cGUpOw0KKw0KK2NvbnN0IGNoYXIgKiAgIGRidXNfZ3R5cGVfdG9f
ZGJ1c190eXBlICAgIChHVHlwZSAgICAgICAgICAgIHR5cGUpOw0KIA0KIGdib29sZWFuICAgICAg
IGRidXNfZ3ZhbHVlX2luaXQgICAgICAgICAgIChpbnQgICAgICAgICAgICAgIHR5cGUsDQogCQkJ
CQkgICBHVmFsdWUgICAgICAgICAgKnZhbHVlKTsNCmN2cyBkaWZmOiBEaWZmaW5nIG1vbm8NCmN2
cyBkaWZmOiBEaWZmaW5nIG1vbm8vREJ1c1R5cGUNCmN2cyBkaWZmOiBEaWZmaW5nIG1vbm8vZG9j
DQpjdnMgZGlmZjogRGlmZmluZyBtb25vL2RvYy9lbg0KY3ZzIGRpZmY6IERpZmZpbmcgbW9uby9k
b2MvZW4vREJ1cw0KY3ZzIGRpZmY6IERpZmZpbmcgbW9uby9kb2MvZW4vREJ1cy5EQnVzVHlwZQ0K
Y3ZzIGRpZmY6IERpZmZpbmcgbW9uby9leGFtcGxlDQpjdnMgZGlmZjogRGlmZmluZyBweXRob24N
CmN2cyBkaWZmOiBEaWZmaW5nIHB5dGhvbi9leGFtcGxlcw0KY3ZzIGRpZmY6IERpZmZpbmcgcHl0
aG9uL3Rlc3RzDQpjdnMgZGlmZjogRGlmZmluZyBxdA0KY3ZzIGRpZmY6IERpZmZpbmcgc2VydmVy
DQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0DQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2RhdGENCmN2
cyBkaWZmOiBEaWZmaW5nIHRlc3QvZGF0YS9hdXRoDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2Rh
dGEvZXF1aXYtY29uZmlnLWZpbGVzDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2RhdGEvZXF1aXYt
Y29uZmlnLWZpbGVzL2Jhc2ljDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2RhdGEvZXF1aXYtY29u
ZmlnLWZpbGVzL2Jhc2ljL2Jhc2ljLmQNCmN2cyBkaWZmOiBEaWZmaW5nIHRlc3QvZGF0YS9lcXVp
di1jb25maWctZmlsZXMvZW50aXRpZXMNCmN2cyBkaWZmOiBEaWZmaW5nIHRlc3QvZGF0YS9lcXVp
di1jb25maWctZmlsZXMvZW50aXRpZXMvYmFzaWMuZA0KY3ZzIGRpZmY6IERpZmZpbmcgdGVzdC9k
YXRhL2luY29tcGxldGUtbWVzc2FnZXMNCmN2cyBkaWZmOiBEaWZmaW5nIHRlc3QvZGF0YS9pbnZh
bGlkLWNvbmZpZy1maWxlcw0KY3ZzIGRpZmY6IERpZmZpbmcgdGVzdC9kYXRhL2ludmFsaWQtbWVz
c2FnZXMNCmN2cyBkaWZmOiBEaWZmaW5nIHRlc3QvZGF0YS9zaGEtMQ0KY3ZzIGRpZmY6IERpZmZp
bmcgdGVzdC9kYXRhL3ZhbGlkLWNvbmZpZy1maWxlcw0KY3ZzIGRpZmY6IERpZmZpbmcgdGVzdC9k
YXRhL3ZhbGlkLWNvbmZpZy1maWxlcy9iYXNpYy5kDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2Rh
dGEvdmFsaWQtY29uZmlnLWZpbGVzL3N5c3RlbS5kDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2Rh
dGEvdmFsaWQtaW50cm9zcGVjdGlvbi1maWxlcw0KY3ZzIGRpZmY6IERpZmZpbmcgdGVzdC9kYXRh
L3ZhbGlkLW1lc3NhZ2VzDQpjdnMgZGlmZjogRGlmZmluZyB0ZXN0L2RhdGEvdmFsaWQtc2Vydmlj
ZS1maWxlcw0KY3ZzIGRpZmY6IERpZmZpbmcgdGVzdC9nbGliDQpJbmRleDogdGVzdC9nbGliL3Rl
c3Qtc2VydmljZS1nbGliLnhtbA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvZGJ1cy9kYnVz
L3Rlc3QvZ2xpYi90ZXN0LXNlcnZpY2UtZ2xpYi54bWwsdg0KcmV0cmlldmluZyByZXZpc2lvbiAx
LjINCmRpZmYgLXUgLXAgLXIxLjIgdGVzdC1zZXJ2aWNlLWdsaWIueG1sDQotLS0gdGVzdC9nbGli
L3Rlc3Qtc2VydmljZS1nbGliLnhtbAkxNyBGZWIgMjAwNSAyMToxMToxOCAtMDAwMAkxLjINCisr
KyB0ZXN0L2dsaWIvdGVzdC1zZXJ2aWNlLWdsaWIueG1sCTI0IEZlYiAyMDA1IDE5OjUyOjQ4IC0w
MDAwDQpAQCAtMTEsOCArMTEsOCBAQA0KIA0KICAgICA8bWV0aG9kIG5hbWU9IkluY3JlbWVudCI+
DQogICAgICAgPGFubm90YXRpb24gbmFtZT0ib3JnLmZyZWVkZXNrdG9wLkRCdXMuR0xpYi5DU3lt
Ym9sIiB2YWx1ZT0ibXlfb2JqZWN0X2luY3JlbWVudCIvPg0KLSAgICAgIDxhcmcgdHlwZT0idWlu
dDMyIiBuYW1lPSJ4IiAvPg0KLSAgICAgIDxhcmcgdHlwZT0idWludDMyIiBkaXJlY3Rpb249Im91
dCIgLz4NCisgICAgICA8YXJnIHR5cGU9InUiIG5hbWU9IngiIC8+DQorICAgICAgPGFyZyB0eXBl
PSJ1IiBkaXJlY3Rpb249Im91dCIgLz4NCiAgICAgPC9tZXRob2Q+DQogDQogICAgIDxtZXRob2Qg
bmFtZT0iVGhyb3dFcnJvciI+DQpAQCAtMjEsMTcgKzIxLDE3IEBADQogDQogICAgIDxtZXRob2Qg
bmFtZT0iVXBwZXJjYXNlIj4NCiAgICAgICA8YW5ub3RhdGlvbiBuYW1lPSJvcmcuZnJlZWRlc2t0
b3AuREJ1cy5HTGliLkNTeW1ib2wiIHZhbHVlPSJteV9vYmplY3RfdXBwZXJjYXNlIi8+DQotICAg
ICAgPGFyZyB0eXBlPSJzdHJpbmciIGRpcmVjdGlvbj0iaW4iIC8+DQotICAgICAgPGFyZyB0eXBl
PSJzdHJpbmciIGRpcmVjdGlvbj0ib3V0IiAvPg0KKyAgICAgIDxhcmcgdHlwZT0icyIgZGlyZWN0
aW9uPSJpbiIgLz4NCisgICAgICA8YXJnIHR5cGU9InMiIGRpcmVjdGlvbj0ib3V0IiAvPg0KICAg
ICA8L21ldGhvZD4NCiANCiAgICAgPG1ldGhvZCBuYW1lPSJNYW55QXJncyI+DQogICAgICAgPGFu
bm90YXRpb24gbmFtZT0ib3JnLmZyZWVkZXNrdG9wLkRCdXMuR0xpYi5DU3ltYm9sIiB2YWx1ZT0i
bXlfb2JqZWN0X21hbnlfYXJncyIvPg0KLSAgICAgIDxhcmcgdHlwZT0idWludDMyIiBuYW1lPSJ4
IiBkaXJlY3Rpb249ImluIiAvPg0KLSAgICAgIDxhcmcgdHlwZT0ic3RyaW5nIiBuYW1lPSJzdHIi
IGRpcmVjdGlvbj0iaW4iIC8+DQotICAgICAgPGFyZyB0eXBlPSJkb3VibGUiIG5hbWU9InRyb3Vi
bGUiIGRpcmVjdGlvbj0iaW4iIC8+DQotICAgICAgPGFyZyB0eXBlPSJkb3VibGUiIG5hbWU9ImRf
cmV0IiBkaXJlY3Rpb249Im91dCIgLz4NCi0gICAgICA8YXJnIHR5cGU9InN0cmluZyIgbmFtZT0i
c3RyX3JldCIgZGlyZWN0aW9uPSJvdXQiIC8+DQorICAgICAgPGFyZyB0eXBlPSJ1IiBuYW1lPSJ4
IiBkaXJlY3Rpb249ImluIiAvPg0KKyAgICAgIDxhcmcgdHlwZT0icyIgbmFtZT0ic3RyIiBkaXJl
Y3Rpb249ImluIiAvPg0KKyAgICAgIDxhcmcgdHlwZT0iZCIgbmFtZT0idHJvdWJsZSIgZGlyZWN0
aW9uPSJpbiIgLz4NCisgICAgICA8YXJnIHR5cGU9ImQiIG5hbWU9ImRfcmV0IiBkaXJlY3Rpb249
Im91dCIgLz4NCisgICAgICA8YXJnIHR5cGU9InMiIG5hbWU9InN0cl9yZXQiIGRpcmVjdGlvbj0i
b3V0IiAvPg0KICAgICA8L21ldGhvZD4NCiANCiAgIDwvaW50ZXJmYWNlPg0KY3ZzIGRpZmY6IERp
ZmZpbmcgdG9vbHMNCkluZGV4OiB0b29scy9kYnVzLXRyZWUtdmlldy5jDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS
Q1MgZmlsZTogL2N2cy9kYnVzL2RidXMvdG9vbHMvZGJ1cy10cmVlLXZpZXcuYyx2DQpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuOA0KZGlmZiAtdSAtcCAtcjEuOCBkYnVzLXRyZWUtdmlldy5jDQotLS0g
dG9vbHMvZGJ1cy10cmVlLXZpZXcuYwkxMyBGZWIgMjAwNSAxNzoxNjoyNSAtMDAwMAkxLjgNCisr
KyB0b29scy9kYnVzLXRyZWUtdmlldy5jCTI0IEZlYiAyMDA1IDE5OjUyOjQ4IC0wMDAwDQpAQCAt
MjUsNDkgKzI1LDYgQEANCiAjaW5jbHVkZSAiZGJ1cy10cmVlLXZpZXcuaCINCiAjaW5jbHVkZSA8
Z2xpYi9naTE4bi5oPg0KIA0KLS8qIEZJWE1FIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGp1c3QgYmUg
aW4gdGhlIGxpYnJhcnkgKi8NCi1zdGF0aWMgY29uc3QgY2hhciAqDQotdHlwZV90b19zdHJpbmcg
KGludCB0eXBlKQ0KLXsNCi0gIHN3aXRjaCAodHlwZSkNCi0gICAgew0KLSAgICBjYXNlIERCVVNf
VFlQRV9JTlZBTElEOg0KLSAgICAgIHJldHVybiAiaW52YWxpZCI7DQotICAgIGNhc2UgREJVU19U
WVBFX0JPT0xFQU46DQotICAgICAgcmV0dXJuICJib29sZWFuIjsNCi0gICAgY2FzZSBEQlVTX1RZ
UEVfQllURToNCi0gICAgICByZXR1cm4gImJ5dGUiOw0KLSAgICBjYXNlIERCVVNfVFlQRV9JTlQx
NjoNCi0gICAgICByZXR1cm4gImludDE2IjsNCi0gICAgY2FzZSBEQlVTX1RZUEVfVUlOVDE2Og0K
LSAgICAgIHJldHVybiAidWludDE2IjsNCi0gICAgY2FzZSBEQlVTX1RZUEVfSU5UMzI6DQotICAg
ICAgcmV0dXJuICJpbnQzMiI7DQotICAgIGNhc2UgREJVU19UWVBFX1VJTlQzMjoNCi0gICAgICBy
ZXR1cm4gInVpbnQzMiI7DQotICAgIGNhc2UgREJVU19UWVBFX0RPVUJMRToNCi0gICAgICByZXR1
cm4gImRvdWJsZSI7DQotICAgIGNhc2UgREJVU19UWVBFX1NUUklORzoNCi0gICAgICByZXR1cm4g
InN0cmluZyI7DQotICAgIGNhc2UgREJVU19UWVBFX09CSkVDVF9QQVRIOg0KLSAgICAgIHJldHVy
biAib2JqZWN0X3BhdGgiOw0KLSAgICBjYXNlIERCVVNfVFlQRV9TSUdOQVRVUkU6DQotICAgICAg
cmV0dXJuICJzaWduYXR1cmUiOw0KLSAgICBjYXNlIERCVVNfVFlQRV9TVFJVQ1Q6DQotICAgICAg
cmV0dXJuICJzdHJ1Y3QiOw0KLSAgICBjYXNlIERCVVNfVFlQRV9BUlJBWToNCi0gICAgICByZXR1
cm4gImFycmF5IjsNCi0gICAgY2FzZSBEQlVTX1RZUEVfVkFSSUFOVDoNCi0gICAgICByZXR1cm4g
InZhcmlhbnQiOw0KLSAgICBjYXNlIERCVVNfU1RSVUNUX0JFR0lOX0NIQVI6DQotICAgICAgcmV0
dXJuICJiZWdpbl9zdHJ1Y3QiOw0KLSAgICBjYXNlIERCVVNfU1RSVUNUX0VORF9DSEFSOg0KLSAg
ICAgIHJldHVybiAiZW5kX3N0cnVjdCI7DQotICAgIGRlZmF1bHQ6DQotICAgICAgcmV0dXJuICJ1
bmtub3duIjsNCi0gICAgfQ0KLX0NCi0NCiBlbnVtDQogew0KICAgTU9ERUxfQ09MVU1OX0lORk8s
DQpAQCAtMzM0LDE0ICsyOTEsMTQgQEAgaW5mb19zZXRfZnVuY190ZXh0IChHdGtUcmVlVmlld0Nv
bHVtbiAqdA0KICAgICBjYXNlIElORk9fVFlQRV9QUk9QRVJUWToNCiAgICAgICBnX3N0cmluZ19h
cHBlbmQgKHN0ciwgIjxpPnByb3BlcnR5PC9pPiIpOw0KICAgICAgIGdfc3RyaW5nX2FwcGVuZF9w
cmludGYgKHN0ciwgIiA8Yj4lczwvYj4iLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGVfdG9fc3RyaW5nIChwcm9wZXJ0eV9pbmZvX2dldF90eXBlICgoUHJvcGVydHlJbmZvKilp
bmZvKSkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5X2luZm9fZ2V0
X3R5cGUgKChQcm9wZXJ0eUluZm8qKWluZm8pKTsNCiAgICAgICBicmVhazsNCiAgICAgY2FzZSBJ
TkZPX1RZUEVfQVJHOg0KICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHN0ciwgIjxpPmFy
ZzwvaT4gJXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19pbmZvX2dldF9k
aXJlY3Rpb24gKChBcmdJbmZvKilpbmZvKSA9PSBBUkdfSU4gPw0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJpbiIgOiAib3V0Iik7DQogICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50
ZiAoc3RyLCAiIDxiPiVzPC9iPiIsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZV90b19zdHJpbmcgKGFyZ19pbmZvX2dldF90eXBlICgoQXJnSW5mbyopaW5mbykpKTsNCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdfaW5mb19nZXRfdHlwZSAoKEFyZ0luZm8qKWlu
Zm8pKTsNCiAgICAgICBicmVhazsNCiAgICAgfQ0KIA0K


--=-gyum7qmDTLvNR8uHSAXH--

--=-o275vnh436cMSsVki1jj
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQBCHjR5OIkJWWp2WGURAu8yAJ9bskT9+x3DEk8qcJvzplbeXie1qQCaAhkf
gmZXrT64NjulxTIzN19GrdU=
=8bsO
-----END PGP SIGNATURE-----

--=-o275vnh436cMSsVki1jj--


--===============0704365976==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-- 
dbus mailing list
dbus@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dbus

--===============0704365976==--


From dbus-bounces@lists.freedesktop.org Mon Feb 28 23:02:05 2005
Received: from [131.252.208.82] (helo=gabe.freedesktop.org) by mx27.web.de
	with esmtp (WEB.DE 4.103 #192) id 1D5sxo-0007Yj-00 for
	danny.kukawka@web.de; Mon, 28 Feb 2005 23:02:05 +0100
Received: from gabe.freedesktop.org (localhost.localdomain [127.0.0.1]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 4E2BC9EA54; Mon, 28 Feb 2005
	14:01:57 -0800 (PST)
X-Original-To: dbus@lists.freedesktop.org
Delivered-To: dbus@lists.freedesktop.org
Received: from monk.area614.net (monk.area614.net [64.46.156.22]) by
	gabe.freedesktop.org (Postfix) with ESMTP id 9E5449E800 for
	<dbus@lists.freedesktop.org>; Mon, 28 Feb 2005 14:01:54 -0800 (PST)
Received: from nexus.verbum.private (localhost.localdomain [127.0.0.1]) by
	monk.area614.net (Postfix) with ESMTP id 9113A410845; Mon, 28 Feb 2005
	17:01:06 -0500 (EST)
From: Colin Walters <walters@verbum.org>
To: Havoc Pennington <hp@redhat.com>
In-Reply-To: <1109627240.9943.49.camel@localhost.localdomain>
References: <1109275770.3934.28.camel@nexus.verbum.private>
	 <1109276829.9108.49.camel@localhost.localdomain>
	 <1109364549.3810.38.camel@nexus.verbum.private>
	 <1109385192.17079.13.camel@localhost.localdomain>
	 <1109622091.3809.22.camel@nexus.verbum.private>
	 <1109627240.9943.49.camel@localhost.localdomain>
Date: Mon, 28 Feb 2005 17:01:52 -0500
Message-Id: <1109628113.3809.27.camel@nexus.verbum.private>
Mime-Version: 1.0
X-Mailer: Evolution 2.1.5 (2.1.5-1) 
Cc: dbus@lists.freedesktop.org
Subject: Re: [patch] initial conversion of glib bindings to use signatures
X-BeenThere: dbus@lists.freedesktop.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Desktop message bus technical discussion
	<dbus.lists.freedesktop.org>
List-Unsubscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=unsubscribe>
List-Archive: <http://lists.freedesktop.org/archives/dbus>
List-Post: <mailto:dbus@lists.freedesktop.org>
List-Help: <mailto:dbus-request@lists.freedesktop.org?subject=help>
List-Subscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1429439026=="
Mime-version: 1.0
Errors-To: dbus-bounces@lists.freedesktop.org
Sender: dbus-bounces@lists.freedesktop.org
X-Evolution-Source: pop://danny.kukawka@pop.web.de/
X-Evolution: 00000010-0020


--===============1429439026==
Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-RAciXv67jN89Wh3nvaVP"


--=-RAciXv67jN89Wh3nvaVP
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

On Mon, 2005-02-28 at 16:47 -0500, Havoc Pennington wrote:

>Yes. The other thing I'm saying though is that we'd consider it
>"supported" to define your own struct with two int32 in it and use that.
>i.e. you don't _have_ to use the generated struct if you don't want to.

Yeah, I understand that.  For people using _begin_call etc. directly it
should work well.  I'm just trying to think about how to preserve as
much as possible the type-safety of the current generated client
wrappers. =20


--=-RAciXv67jN89Wh3nvaVP
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQBCI5TQOIkJWWp2WGURAr7vAJ9NGTjVXw7u6zsZbJxwPDrmzgne0gCeJ7mr
nMIfNZmydDf15IZIy3rYGPs=
=r5SG
-----END PGP SIGNATURE-----

--=-RAciXv67jN89Wh3nvaVP--


--===============1429439026==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-- 
dbus mailing list
dbus@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dbus

--===============1429439026==--


From dbus-bounces@lists.freedesktop.org Mon Feb 28 22:46:57 2005
Received: from [131.252.208.82] (helo=gabe.freedesktop.org) by mx23.web.de
	with esmtp (WEB.DE 4.103 #192) id 1D5sjB-0003gy-00 for
	danny.kukawka@web.de; Mon, 28 Feb 2005 22:46:57 +0100
Received: from gabe.freedesktop.org (localhost.localdomain [127.0.0.1]) by
	gabe.freedesktop.org (Postfix) with ESMTP id F3B1B9EA71; Mon, 28 Feb 2005
	13:46:50 -0800 (PST)
X-Original-To: dbus@lists.freedesktop.org
Delivered-To: dbus@lists.freedesktop.org
Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by
	gabe.freedesktop.org (Postfix) with ESMTP id E49D79E9DB for
	<dbus@lists.freedesktop.org>; Mon, 28 Feb 2005 13:46:40 -0800 (PST)
Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com
	[172.16.52.254]) by mx1.redhat.com (8.12.11/8.12.11) with ESMTP id
	j1SLkeuH015365; Mon, 28 Feb 2005 16:46:40 -0500
Received: from pobox.corp.redhat.com (pobox.corp.redhat.com
	[172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id
	j1SLkeK31157;  Mon, 28 Feb 2005 16:46:40 -0500
Received: from localhost.localdomain (sebastian-int.corp.redhat.com
	[172.16.52.221]) by pobox.corp.redhat.com (8.12.8/8.12.8) with ESMTP id
	j1SLkdEC029730;  Mon, 28 Feb 2005 16:46:39 -0500
From: Havoc Pennington <hp@redhat.com>
To: Colin Walters <walters@verbum.org>
In-Reply-To: <1109622091.3809.22.camel@nexus.verbum.private>
References: <1109275770.3934.28.camel@nexus.verbum.private>
	 <1109276829.9108.49.camel@localhost.localdomain>
	 <1109364549.3810.38.camel@nexus.verbum.private>
	 <1109385192.17079.13.camel@localhost.localdomain>
	 <1109622091.3809.22.camel@nexus.verbum.private>
Content-Type: text/plain
Date: Mon, 28 Feb 2005 16:47:20 -0500
Message-Id: <1109627240.9943.49.camel@localhost.localdomain>
Mime-Version: 1.0
X-Mailer: Evolution 2.0.2 (2.0.2-3) 
Content-Transfer-Encoding: 7bit
Cc: dbus@lists.freedesktop.org
Subject: Re: [patch] initial conversion of glib bindings to use signatures
X-BeenThere: dbus@lists.freedesktop.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Desktop message bus technical discussion
	<dbus.lists.freedesktop.org>
List-Unsubscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=unsubscribe>
List-Archive: <http://lists.freedesktop.org/archives/dbus>
List-Post: <mailto:dbus@lists.freedesktop.org>
List-Help: <mailto:dbus-request@lists.freedesktop.org?subject=help>
List-Subscribe: <http://lists.freedesktop.org/mailman/listinfo/dbus>,
	<mailto:dbus-request@lists.freedesktop.org?subject=subscribe>
Errors-To: dbus-bounces@lists.freedesktop.org
Sender: dbus-bounces@lists.freedesktop.org
X-Evolution-Source: pop://danny.kukawka@pop.web.de/
X-Evolution: 00000012-0000

On Mon, 2005-02-28 at 15:21 -0500, Colin Walters wrote:
> >
> > - we don't necessarily have to generate a struct at all, though we can.
> >We can just 
> >   declare that "(ii)" can be stored in anything that is:
> >   struct { dbus_int32_t field1; dbus_int32_t field2; }
> >   so while dbus-binding-tool will probably know how to generate such a
> >struct 
> >   decl, you can also just declare your own struct if not using dbus-
> >binding-tool.
> 
> So we could generate glue like this client-side:
> 
> #ifndef DBUS_DEFINED_STRUCT_ii
> #define DBUS_DEFINED_STRUCT_ii
> typedef struct { dbus_int32_t field1; dbus_int32_t field2; } DBusStructure_ii;
> #endif
> 
> gboolean
> org_freedesktop_NetworkManager_frobnicate (int x, DBusStructure_ii *foo, GError **error)
> {
>   /* invoke dbus method */
> }
> 
> And we'd have similar typedef bits in the server-side glue.
> 
> Is that about right?

Yes. The other thing I'm saying though is that we'd consider it
"supported" to define your own struct with two int32 in it and use that.
i.e. you don't _have_ to use the generated struct if you don't want to.

The point is to avoid structs with weird magic in them, like special
padding or something.

Havoc


-- 
dbus mailing list
dbus@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dbus

