Received: from localhost (maia-4.hub.org [200.46.204.183]) by postgresql.org (Postfix) with ESMTP id 3B2369FB5D3 for ; Wed, 24 Jan 2007 01:18:09 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-new, port 10024) with ESMTP id 50815-02-2 for ; Wed, 24 Jan 2007 01:17:59 -0400 (AST) X-Greylist: from auto-whitelisted by SQLgrey-1.7.4 Received: from mail1.fujitsu.com.au (mail1.fujitsu.com.au [216.14.192.229]) by postgresql.org (Postfix) with ESMTP id 0A4079FB2B4 for ; Wed, 24 Jan 2007 01:17:46 -0400 (AST) Received: from localhost (localhost.localdomain [127.0.0.1]) by mail1.fujitsu.com.au (Postfix) with ESMTP id 7814460799; Wed, 24 Jan 2007 16:17:45 +1100 (EST) Received: from mail1.fujitsu.com.au ([127.0.0.1]) by localhost (mail1.fujitsu.com.au [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 10514-01-76; Wed, 24 Jan 2007 16:17:45 +1100 (EST) Received: from mailfilter1.au.fjanz.com (mailfilter1.au.fjanz.com [137.172.19.78]) by mail1.fujitsu.com.au (Postfix) with ESMTP id 373D5603C8; Wed, 24 Jan 2007 16:17:45 +1100 (EST) X-SEF-Processed: 5_0_0_816__2007_01_24_16_17_45 Received: from Unknown [137.172.75.51] by mailfilter1.au.fjanz.com - SurfControl E-mail Filter (5.0.1); Wed, 24 Jan 2007 16:17:43 +1100 Received: from fast.fujitsu.com.au (localhost.localdomain [127.0.0.1]) by fast.fujitsu.com.au (8.13.1/8.13.1) with ESMTP id l0O5Fax8029434; Wed, 24 Jan 2007 16:15:36 +1100 Received: from fast.fujitsu.com.au (root@localhost) by fast.fujitsu.com.au (8.13.1/8.13.1/Submit) with ESMTP id l0O5FZTQ029433; Wed, 24 Jan 2007 16:15:35 +1100 Received: from there (unknown 137.172.75.153) by fast.fujitsu.com.au (Scalix SMTP Relay 10.0.1.3) via ESMTP; Wed, 24 Jan 2007 16:15:35 +1100 (EST) Date: Thu, 25 Jan 2007 03:18:30 +1100 From: "FAST PostgreSQL" Reply-To: "FAST PostgreSQL" To: Neil Conway Cc: pgsql-patches@postgresql.org Message-ID: <22604.10061169615735.fast.fujitsu.com.au@MHS> In-Reply-To: <12753.10921169188931.fast.fujitsu.com.au@MHS> References: <12753.10901169180733.fast.fujitsu.com.au@MHS> References: <12753.10921169188931.fast.fujitsu.com.au@MHS> Subject: Re: pg_get_domaindef x-scalix-Hops: 1 Organization: FAST X-Mailer: KMail [version 1.3.2] MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="------------Boundary-00=_UYRDIEKDUVNK6VBX6JJ7" X-Virus-Scanned: by amavisd-new at mail1.fujitsu.com.au X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.625 tagged_above=0 required=5 tests=AWL, BAYES_20, DATE_IN_FUTURE_06_12, UNPARSEABLE_RELAY X-Spam-Level: X-Archive-Number: 200701/462 X-Sequence-Number: 270 --------------Boundary-00=_UYRDIEKDUVNK6VBX6JJ7 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Content-Disposition: inline Please find attached the patch with modifications Rgds, Arul Shaji On Sat, 20 Jan 2007 04:44, FAST PostgreSQL wrote: > On Fri, 19 Jan 2007 17:02, Neil Conway wrote: > > On Sat, 2007-01-20 at 02:28 +1100, FAST PostgreSQL wrote: > > > Attached is a small patch that implements the pg_get_domaindef(oid) > > > function. > > > > A few minor comments: > > > > - don't use C++-style comments > > OK. Can do. > > > - why does this code append a "-" to the output when SPI_processed != 1, > > rather than erroring out? > > get_ruledef() does the same. As the user gets a '-' in that case when a > non-existent oid is given, I just wanted to be consistent. Maybe a wrong > idea ? > > > - you probably want to elog(ERROR) if typeTuple is invalid: > > Of course. > > > + if (typnotnull || constraint != NULL) > > + { > > + if ( ( (contype != NULL) && (strcmp(contype, > > "c") != 0) ) || typnotnull ) > > + { > > + appendStringInfo(&buf, "CONSTRAINT "); > > + } > > + if (typnotnull) > > + { > > + appendStringInfo(&buf, "NOT NULL "); > > + } > > + } > > + if (constraint != NULL) > > + { > > + appendStringInfo(&buf, > > quote_identifier(constraint)); > > + } > > > > This logic seems pretty awkward. Perhaps simpler would be a check for > > typnotnull (and then appending "CONSTRAINT NOT NULL"), and then handling > > the non-typnotnull branch separately. > > Yeah agree. > > > -Neil > > Rgds, > Arul Shaji > > > > ---------------------------(end of broadcast)--------------------------- > TIP 6: explain analyze is your friend This is an email from Fujitsu Australia Software Technology Pty Ltd, ABN 27 003 693 481. It is confidential to the ordinary user of the email address to which it was addressed and may contain copyright and/or legally privileged information. No one else may read, print, store, copy or forward all or any of it or its attachments. If you receive this email in error, please return to sender. Thank you. If you do not wish to receive commercial email messages from Fujitsu Australia Software Technology Pty Ltd, please email unsubscribe@fast.fujitsu.com.au --------------Boundary-00=_UYRDIEKDUVNK6VBX6JJ7 Content-Type: text/x-diff; charset="iso-8859-1"; name="pg_get_domaindef.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pg_get_domaindef.patch" KioqIHBnc3FsL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5oCTIwMDctMDEtMjQgMTM6 NTg6NDAuMjkxNTc0NzUyICsxMTAwCi0tLSB3b3JraW5ncGdzcWwvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmgJMjAwNy0wMS0yNCAxNToxMjowMi40MTAzNTA5NzYgKzExMDAKKioq KioqKioqKioqKioqCioqKiAyMzE1LDIzMjEgKioqKgogIERFU0NSKCJkZXBhcnNlIGFuIGVu Y29kZWQgZXhwcmVzc2lvbiIpOwogIERBVEEoaW5zZXJ0IE9JRCA9IDE2NjUgKCAgcGdfZ2V0 X3NlcmlhbF9zZXF1ZW5jZQlQR05TUCBQR1VJRCAxMiAxIDAgZiBmIHQgZiBzIDIgMjUgIjI1 IDI1IiBfbnVsbF8gX251bGxfIF9udWxsXwlwZ19nZXRfc2VyaWFsX3NlcXVlbmNlIC0gX251 bGxfICkpOwogIERFU0NSKCJuYW1lIG9mIHNlcXVlbmNlIGZvciBhIHNlcmlhbCBjb2x1bW4i KTsKISAKICAKICAvKiBHZW5lcmljIHJlZmVyZW50aWFsIGludGVncml0eSBjb25zdHJhaW50 IHRyaWdnZXJzICovCiAgREFUQShpbnNlcnQgT0lEID0gMTY0NCAoICBSSV9GS2V5X2NoZWNr X2lucwkJUEdOU1AgUEdVSUQgMTIgMSAwIGYgZiB0IGYgdiAwIDIyNzkgIiIgX251bGxfIF9u dWxsXyBfbnVsbF8gUklfRktleV9jaGVja19pbnMgLSBfbnVsbF8gKSk7Ci0tLSAyMzE1LDIz MjIgLS0tLQogIERFU0NSKCJkZXBhcnNlIGFuIGVuY29kZWQgZXhwcmVzc2lvbiIpOwogIERB VEEoaW5zZXJ0IE9JRCA9IDE2NjUgKCAgcGdfZ2V0X3NlcmlhbF9zZXF1ZW5jZQlQR05TUCBQ R1VJRCAxMiAxIDAgZiBmIHQgZiBzIDIgMjUgIjI1IDI1IiBfbnVsbF8gX251bGxfIF9udWxs XwlwZ19nZXRfc2VyaWFsX3NlcXVlbmNlIC0gX251bGxfICkpOwogIERFU0NSKCJuYW1lIG9m IHNlcXVlbmNlIGZvciBhIHNlcmlhbCBjb2x1bW4iKTsKISBEQVRBKGluc2VydCBPSUQgPSAy OTUwICggIHBnX2dldF9kb21haW5kZWYJUEdOU1AgUEdVSUQgMTIgMSAwIGYgZiB0IGYgcyAx IDI1ICIyNiIgX251bGxfIF9udWxsXyBfbnVsbF8gcGdfZ2V0X2RvbWFpbmRlZiAtIF9udWxs XyApKTsKISBERVNDUigiZG9tYWluIGRlc2NyaXB0aW9uIik7CiAgCiAgLyogR2VuZXJpYyBy ZWZlcmVudGlhbCBpbnRlZ3JpdHkgY29uc3RyYWludCB0cmlnZ2VycyAqLwogIERBVEEoaW5z ZXJ0IE9JRCA9IDE2NDQgKCAgUklfRktleV9jaGVja19pbnMJCVBHTlNQIFBHVUlEIDEyIDEg MCBmIGYgdCBmIHYgMCAyMjc5ICIiIF9udWxsXyBfbnVsbF8gX251bGxfIFJJX0ZLZXlfY2hl Y2tfaW5zIC0gX251bGxfICkpOwoqKiogcGdzcWwvc3JjL2luY2x1ZGUvdXRpbHMvYnVpbHRp bnMuaAkyMDA3LTAxLTE4IDE1OjI3OjE1LjAwMDAwMDAwMCArMTEwMAotLS0gd29ya2luZ3Bn c3FsL3NyYy9pbmNsdWRlL3V0aWxzL2J1aWx0aW5zLmgJMjAwNy0wMS0yNCAxNDoxMjo0OC4x Njc2Nzc5OTIgKzExMDAKKioqKioqKioqKioqKioqCioqKiA1MzQsNTM5ICoqKioKLS0tIDUz NCw1NDAgLS0tLQogIGV4dGVybiBEYXR1bSBwZ19nZXRfZXhwcl9leHQoUEdfRlVOQ1RJT05f QVJHUyk7CiAgZXh0ZXJuIERhdHVtIHBnX2dldF91c2VyYnlpZChQR19GVU5DVElPTl9BUkdT KTsKICBleHRlcm4gRGF0dW0gcGdfZ2V0X3NlcmlhbF9zZXF1ZW5jZShQR19GVU5DVElPTl9B UkdTKTsKKyBleHRlcm4gRGF0dW0gcGdfZ2V0X2RvbWFpbmRlZihQR19GVU5DVElPTl9BUkdT KTsKICBleHRlcm4gY2hhciAqZGVwYXJzZV9leHByZXNzaW9uKE5vZGUgKmV4cHIsIExpc3Qg KmRwY29udGV4dCwKICAJCQkJICAgYm9vbCBmb3JjZXByZWZpeCwgYm9vbCBzaG93aW1wbGlj aXQpOwogIGV4dGVybiBMaXN0ICpkZXBhcnNlX2NvbnRleHRfZm9yKGNvbnN0IGNoYXIgKmFs aWFzbmFtZSwgT2lkIHJlbGlkKTsKKioqIHBnc3FsL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYwkyMDA3LTAxLTI0IDEzOjU4OjI4LjQxNzM3OTkwNCArMTEwMAotLS0gd29y a2luZ3Bnc3FsL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwkyMDA3LTAxLTI0 IDE1OjE4OjU3Ljk0NDE4MDIzMiArMTEwMAoqKioqKioqKioqKioqKioKKioqIDExMywxMTgg KioqKgotLS0gMTEzLDEyMyAtLS0tCiAgc3RhdGljIHZvaWQgKnBsYW5fZ2V0dmlld3J1bGUg PSBOVUxMOwogIHN0YXRpYyBjaGFyICpxdWVyeV9nZXR2aWV3cnVsZSA9ICJTRUxFQ1QgKiBG Uk9NIHBnX2NhdGFsb2cucGdfcmV3cml0ZSBXSEVSRSBldl9jbGFzcyA9ICQxIEFORCBydWxl bmFtZSA9ICQyIjsKICAKKyAvKiBRdWVyaWVzIHRvIGV4dHJhY3QgZG9tYWluIGRlc2NyaXB0 aW9uICovCisgc3RhdGljIHZvaWQgKnBsYW5fZ2V0ZG9tYWluYnlPaWQgPSBOVUxMOworIHN0 YXRpYyBjaGFyICpxdWVyeV9nZXRkb21haW5ieU9pZCA9ICJTRUxFQ1QgKiBGUk9NIHBnX2Nh dGFsb2cucGdfdHlwZSBXSEVSRSBvaWQgPSAkMSBBTkQgdHlwdHlwZSA9ICdkJyI7Cisgc3Rh dGljIHZvaWQgKnBsYW5fZ2V0Y29uc3RyYWludGJ5Y29udHlwaWQgPSBOVUxMOworIHN0YXRp YyBjaGFyICpxdWVyeV9nZXRjb25zdHJhaW50Ynljb250eXBpZCA9ICJTRUxFQ1Qgb2lkLCBj b250eXBlIEZST00gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IFdIRVJFIGNvbnR5cGlkID0g JDEiOwogIAogIC8qIC0tLS0tLS0tLS0KICAgKiBMb2NhbCBmdW5jdGlvbnMKKioqKioqKioq KioqKioqCioqKiAxMzUsMTQwICoqKioKLS0tIDE0MCwxNDYgLS0tLQogIAkJCQkJCQlpbnQg cHJldHR5RmxhZ3MpOwogIHN0YXRpYyBjaGFyICpwZ19nZXRfZXhwcl93b3JrZXIodGV4dCAq ZXhwciwgT2lkIHJlbGlkLCBjaGFyICpyZWxuYW1lLAogIAkJCQkgICBpbnQgcHJldHR5Rmxh Z3MpOworIHN0YXRpYyBjaGFyICpwZ19nZXRfZG9tYWluZGVmX3dvcmtlcihPaWQgZG9tYWlu T2lkLCBpbnQgcHJldHR5RmxhZ3MpOwogIHN0YXRpYyB2b2lkIG1ha2VfcnVsZWRlZihTdHJp bmdJbmZvIGJ1ZiwgSGVhcFR1cGxlIHJ1bGV0dXAsIFR1cGxlRGVzYyBydWxldHRjLAogIAkJ CSBpbnQgcHJldHR5RmxhZ3MpOwogIHN0YXRpYyB2b2lkIG1ha2Vfdmlld2RlZihTdHJpbmdJ bmZvIGJ1ZiwgSGVhcFR1cGxlIHJ1bGV0dXAsIFR1cGxlRGVzYyBydWxldHRjLAoqKioqKioq KioqKioqKioKKioqIDQyNCw0MjkgKioqKgotLS0gNDMwLDYyNSAtLS0tCiAgCXJldHVybiBi dWYuZGF0YTsKICB9CiAgCisgLyoKKyAgKiBnZXRfZG9tYWluZGVmIC0gR2V0IHRoZSBkZWZp bml0aW9uIG9mIGEgZG9tYWluCisgICovCisgRGF0dW0KKyBwZ19nZXRfZG9tYWluZGVmKFBH X0ZVTkNUSU9OX0FSR1MpCisgeworIAlPaWQJZG9tYWluT2lkID0gUEdfR0VUQVJHX09JRCgw KTsKKyAJUEdfUkVUVVJOX1RFWFRfUChzdHJpbmdfdG9fdGV4dChwZ19nZXRfZG9tYWluZGVm X3dvcmtlcihkb21haW5PaWQsIDApKSk7CQorIH0KKyAKKyAvKgorICAqIHdvcmtlciBjb2Rl IGZvciBnZXR0aW5nIGRvbWFpbmRlZgorICAqLworIHN0YXRpYyBjaGFyICoKKyBwZ19nZXRf ZG9tYWluZGVmX3dvcmtlcihPaWQgZG9tYWluT2lkLCBpbnQgcHJldHR5RmxhZ3MpCisgewor IAlEYXR1bQkJYXJnc1sxXTsKKyAJY2hhcgkJbnVsbHNbMV07CisgCWludAkJc3BpcmM7Cisg CUhlYXBUdXBsZQlkb21haW50dXA7CisgCUhlYXBUdXBsZSAJdHlwZVR1cGxlOworIAlUdXBs ZURlc2MJZG9tYWludHRjOworIAlTdHJpbmdJbmZvRGF0YSAJYnVmOworIAorIAljaGFyICpk b21haW5uYW1lOworIAljaGFyICp0eXBlYmFzZXR5cGUgPSBOVUxMOworIAljaGFyICp0eXBk ZWZhdWx0OworIAljaGFyICpjb25zdHJhaW50ID0gTlVMTDsKKyAJCisgCWludAlmbm87Cisg CURhdHVtCWRhdDsKKyAJYm9vbAlpc251bGw7CisgCWJvb2wgCXR5cG5vdG51bGwgPSBmYWxz ZTsKKyAKKyAJT2lkIAliYXNldHlwZU9pZDsKKyAJT2lkCWNvbnN0cmFpbnRPaWQ7CisgCisg CS8qCisgCSAqIERvIHRoaXMgZmlyc3Qgc28gdGhhdCBzdHJpbmcgaXMgYWxsb2MnZCBpbiBv dXRlciBjb250ZXh0IG5vdCBTUEkncy4KKyAJICovCisgCWluaXRTdHJpbmdJbmZvKCZidWYp OworIAorIAkvKgorIAkgKiBDb25uZWN0IHRvIFNQSSBtYW5hZ2VyCisgCSAqLworIAlpZiAo U1BJX2Nvbm5lY3QoKSAhPSBTUElfT0tfQ09OTkVDVCkKKyAJCWVsb2coRVJST1IsICJTUElf Y29ubmVjdCBmYWlsZWQiKTsKKyAKKyAJLyoKKyAJICogT24gdGhlIGZpcnN0IGNhbGwgcHJl cGFyZSB0aGUgcGxhbiB0byBsb29rdXAgcGdfdHlwZS4gV2UgcmVhZAorIAkgKiBwZ190eXBl IG92ZXIgdGhlIFNQSSBtYW5hZ2VyIGluc3RlYWQgb2YgdXNpbmcgdGhlIHN5c2NhY2hlIHRv IGJlCisgCSAqIGNoZWNrZWQgZm9yIHJlYWQgYWNjZXNzIG9uIHBnX3R5cGUuCisgCSAqLwor IAlpZiAocGxhbl9nZXRkb21haW5ieU9pZCA9PSBOVUxMKQorIAl7CisgCQlPaWQJYXJndHlw ZXNbMV07CisgCQl2b2lkCSpwbGFuOworIAorIAkJYXJndHlwZXNbMF0gPSBPSURPSUQ7Cisg CQlwbGFuID0gU1BJX3ByZXBhcmUocXVlcnlfZ2V0ZG9tYWluYnlPaWQsIDEsIGFyZ3R5cGVz KTsKKyAJCWlmIChwbGFuID09IE5VTEwpCisgCQkJZWxvZyhFUlJPUiwgIlNQSV9wcmVwYXJl IGZhaWxlZCBmb3IgXCIlc1wiIiwgcXVlcnlfZ2V0ZG9tYWluYnlPaWQpOworIAkJcGxhbl9n ZXRkb21haW5ieU9pZCA9IFNQSV9zYXZlcGxhbihwbGFuKTsKKyAJfQorIAorIAkvKgorIAkg KiBHZXQgdGhlIHBnX3R5cGUgdHVwbGUgZm9yIHRoaXMgZG9tYWluCisgCSAqLworIAlhcmdz WzBdID0gT2JqZWN0SWRHZXREYXR1bShkb21haW5PaWQpOworIAludWxsc1swXSA9ICcgJzsK KyAJc3BpcmMgPSBTUElfZXhlY3V0ZV9wbGFuKHBsYW5fZ2V0ZG9tYWluYnlPaWQsIGFyZ3Ms IG51bGxzLCB0cnVlLCAxKTsKKyAJaWYgKHNwaXJjICE9IFNQSV9PS19TRUxFQ1QpCisgCQll bG9nKEVSUk9SLCAiZmFpbGVkIHRvIGdldCBwZ190eXBlIHR1cGxlIGZvciBkb21haW4gJXUi LCBkb21haW5PaWQpOworIAlpZiAoU1BJX3Byb2Nlc3NlZCAhPSAxKQorIAkJYXBwZW5kU3Ry aW5nSW5mbygmYnVmLCAiLSIpOworIAllbHNlCisgCXsKKyAJCS8qCisgCQkgKiBHZXQgdGhl IHR5cGVzIGRlZmluaXRpb24gYW5kIHB1dCBpdCBpbnRvIGV4ZWN1dG9ycyBtZW1vcnkKKyAJ CSAqLworIAkJZG9tYWludHVwID0gU1BJX3R1cHRhYmxlLT52YWxzWzBdOworIAkJZG9tYWlu dHRjID0gU1BJX3R1cHRhYmxlLT50dXBkZXNjOworIAorIAkJLyoKKyAJCSAqIEdldCB0aGUg YXR0cmlidXRlIHZhbHVlcyBmcm9tIHRoZSB0dXBsZQorIAkJICovCisgCQlmbm8gPSBTUElf Zm51bWJlcihkb21haW50dGMsICJ0eXBuYW1lIik7CisgCQlkYXQgPSBTUElfZ2V0YmludmFs KGRvbWFpbnR1cCwgZG9tYWludHRjLCBmbm8sICZpc251bGwpOworIAkJQXNzZXJ0KCFpc251 bGwpOworIAkJZG9tYWlubmFtZSA9IE5hbWVTdHIoKihEYXR1bUdldE5hbWUoZGF0KSkpOwor IAorIAkJLyoKKyAJCSAqIFN0YXJ0IGJ1aWxkaW5nIHRoZSBkb21haW4gZGVmaW5pdGlvbiB0 ZXh0CisgCQkgKi8KKyAJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgIkNSRUFURSBET01BSU4g JXMgQVMgIiwKKyAJCQkJCXF1b3RlX2lkZW50aWZpZXIoZG9tYWlubmFtZSkpOworIAorIAkJ Zm5vID0gU1BJX2ZudW1iZXIoZG9tYWludHRjLCAidHlwYmFzZXR5cGUiKTsKKyAJCWRhdCA9 IFNQSV9nZXRiaW52YWwoZG9tYWludHVwLCBkb21haW50dGMsIGZubywgJmlzbnVsbCk7Cisg CQlBc3NlcnQoIWlzbnVsbCk7CisgCQliYXNldHlwZU9pZCA9IERhdHVtR2V0T2JqZWN0SWQo ZGF0KTsKKyAKKyAJCS8qCisgCQkgKiBHZXQgdGhlIGJhc2UgdHlwZSBvZiB0aGUgZG9tYWlu CisgCQkgKi8KKyAJCXR5cGVUdXBsZSA9IFNlYXJjaFN5c0NhY2hlKFRZUEVPSUQsCisgCQkJ CQkJT2JqZWN0SWRHZXREYXR1bShiYXNldHlwZU9pZCksCisgCQkJCQkJMCwgMCwgMCk7Cisg CisgCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHlwZVR1cGxlKSkKKyAJCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgdHlwZSAldSIsIGJhc2V0eXBlT2lkKTsKKyAK KyAJCXR5cGViYXNldHlwZSA9IHBzdHJkdXAoTmFtZVN0cigoKEZvcm1fcGdfdHlwZSkgR0VU U1RSVUNUKHR5cGVUdXBsZSkpLT50eXBuYW1lKSk7CisgCQlhcHBlbmRTdHJpbmdJbmZvKCZi dWYsICIlcyAiLCBxdW90ZV9pZGVudGlmaWVyKHR5cGViYXNldHlwZSkpOworIAkJUmVsZWFz ZVN5c0NhY2hlKHR5cGVUdXBsZSk7CisgCisgCQkvKgorIAkJICogR2V0IHRoZSBkZWZhdWx0 IHZhbHVlcyBpZiBhbnkuCisgCSAJICovCisgCQlmbm8gPSBTUElfZm51bWJlcihkb21haW50 dGMsICJ0eXBkZWZhdWx0Iik7CisgCQl0eXBkZWZhdWx0ID0gU1BJX2dldHZhbHVlKGRvbWFp bnR1cCwgZG9tYWludHRjLCBmbm8pOworIAorIAkJaWYgKHR5cGRlZmF1bHQgIT0gTlVMTCkK KyAJCXsKKyAJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICJERUZBVUxUICVzICIsIHF1b3Rl X2lkZW50aWZpZXIodHlwZGVmYXVsdCkpOwkKKyAJCX0KKyAKKyAJCS8qCisgCQkgKiBHZXQg dGhlIGNvbnN0cmFpbnRzLiBXZSB3b24ndCBoYXZlIHRoZSBjb25zdHJhaW50IG5hbWUKKyAJ CSAqIGlmIGl0IGlzIGp1c3QgYSBOT1QgTlVMTCBjb25zdHJhaW50LgorIAkgCSAqLworIAkJ Zm5vID0gU1BJX2ZudW1iZXIoZG9tYWludHRjLCAidHlwbm90bnVsbCIpOworIAkJZGF0ID0g U1BJX2dldGJpbnZhbChkb21haW50dXAsIGRvbWFpbnR0YywgZm5vLCAmaXNudWxsKTsKKyAJ CUFzc2VydCghaXNudWxsKTsKKyAJCXR5cG5vdG51bGwgPSBEYXR1bUdldEJvb2woZGF0KTsK KyAJCQorIAkJaWYgKHBsYW5fZ2V0Y29uc3RyYWludGJ5Y29udHlwaWQgPT0gTlVMTCkKKyAJ CXsKKyAJCQlPaWQJYXJndHlwZXNbMV07CisgCQkJdm9pZAkqcGxhbjsKKyAKKyAJCQlhcmd0 eXBlc1swXSA9IE9JRE9JRDsKKyAgCQkJcGxhbiA9IFNQSV9wcmVwYXJlKHF1ZXJ5X2dldGNv bnN0cmFpbnRieWNvbnR5cGlkLCAxLCBhcmd0eXBlcyk7CisgCisgCQkJaWYgKHBsYW4gIT0g TlVMTCkKKyAJCQkJcGxhbl9nZXRjb25zdHJhaW50Ynljb250eXBpZCA9IFNQSV9zYXZlcGxh bihwbGFuKTsKKyAJCX0JCQorIAkJYXJnc1swXSA9IE9iamVjdElkR2V0RGF0dW0oZG9tYWlu T2lkKTsKKyAJCW51bGxzWzBdID0gJyAnOworIAkJU1BJX2V4ZWN1dGVfcGxhbihwbGFuX2dl dGNvbnN0cmFpbnRieWNvbnR5cGlkLCBhcmdzLCBudWxscywgdHJ1ZSwgMSk7CisgCisgCQlp ZiAoU1BJX3Byb2Nlc3NlZCA9PSAxKQorIAkJeworIAkJCS8qCisgCQkJICogR2V0IHRoZSB0 eXBlcyBkZWZpbml0aW9uIGFuZCBwdXQgaXQgaW50byBleGVjdXRvcnMgbWVtb3J5CisgCQkJ ICovCisgCQkJZG9tYWludHVwID0gU1BJX3R1cHRhYmxlLT52YWxzWzBdOworIAkJCWRvbWFp bnR0YyA9IFNQSV90dXB0YWJsZS0+dHVwZGVzYzsKKyAKKyAJCQlmbm8gPSBTUElfZm51bWJl cihkb21haW50dGMsICJvaWQiKTsKKyAJCQlkYXQgPSBTUElfZ2V0YmludmFsKGRvbWFpbnR1 cCwgZG9tYWludHRjLCBmbm8sICZpc251bGwpOworIAkJCUFzc2VydCghaXNudWxsKTsKKyAJ CQljb25zdHJhaW50T2lkID0gRGF0dW1HZXRPYmplY3RJZChkYXQpOworIAkJCWNvbnN0cmFp bnQgPSBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoY29uc3RyYWludE9pZCwgZmFsc2Us IDApOworIAkJfQorIAorIAkJaWYgKHR5cG5vdG51bGwpCisgCQl7CisgCQkJYXBwZW5kU3Ry aW5nSW5mbygmYnVmLCAiQ09OU1RSQUlOVCBOT1QgTlVMTCAiKTsKKyAJCX0KKyAJCWVsc2Ug aWYgKGNvbnN0cmFpbnQgIT0gTlVMTCkKKyAJCXsKKyAJCQlhcHBlbmRTdHJpbmdJbmZvKCZi dWYsICJDT05TVFJBSU5UICIpOworIAkJfQorIAorIAkJaWYgKGNvbnN0cmFpbnQgIT0gTlVM TCkKKyAJCXsKKyAJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsIHF1b3RlX2lkZW50aWZpZXIo Y29uc3RyYWludCkpOworIAkJfQorIAl9CisgCisgCS8qCisgCSAqIERpc2Nvbm5lY3QgZnJv bSBTUEkgbWFuYWdlcgorIAkgKi8KKyAJaWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklO SVNIKQorIAkJZWxvZyhFUlJPUiwgIlNQSV9maW5pc2ggZmFpbGVkIik7CisgCisgCXJldHVy biBidWYuZGF0YTsKKyB9CisgCiAgLyogLS0tLS0tLS0tLQogICAqIGdldF90cmlnZ2VyZGVm CQkJLSBHZXQgdGhlIGRlZmluaXRpb24gb2YgYSB0cmlnZ2VyCiAgICogLS0tLS0tLS0tLQo= --------------Boundary-00=_UYRDIEKDUVNK6VBX6JJ7--