Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wAgAk-000De2-07 for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 03:35:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wAgAi-003OzY-1A for pgsql-hackers@arkaria.postgresql.org; Thu, 09 Apr 2026 03:35:13 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wAgAi-003OzQ-0A for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 03:35:12 +0000 Received: from mail-dy1-x132f.google.com ([2607:f8b0:4864:20::132f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wAgAg-0000000079A-49Ae for pgsql-hackers@lists.postgresql.org; Thu, 09 Apr 2026 03:35:12 +0000 Received: by mail-dy1-x132f.google.com with SMTP id 5a478bee46e88-2d44ef4695cso28643eec.0 for ; Wed, 08 Apr 2026 20:35:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775705708; cv=none; d=google.com; s=arc-20240605; b=RbFcBD4+Jnqe+j5+YLq4Qy5KjR4/jlA49qPW4ANGGQ3vebkJvMg3nDKW+a0xp1XSlo yqTlYGZYYWSPip4Rd2gIpmTSmG+GrctEdMz6FMNjfgEtXE5FgnYZkOfTMwFR4DiDLd5Q IhFyoSlky8GEywAjoNMCjeaEsS7Me1c20AyIU2ya8N63FR9vxj0idbc117qlW4ohnrI9 Q/mT76dBfXgUwgsJ5QS+R5eCyLDtMW4pOJIe6vvkKayqeOvu2Kqvkbf/IdwMbPydAkfp nHXgQHdLdq/ObD25OQbKl7Uk1sxcMiaPsQHVgFdkPb8BcaXTvUXBB8J//03yewBCLVvP l8Bg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=71AIZogO6tny/uO8jHYbBkfaJfmA7aNMJ5gdYs7c+/U=; fh=dxJXJbLzq9Nah1LUdsj4QTuQ3JoDScd0wp1YHY64NXM=; b=EYr7iVnpIwayqC0+4pQQ4NiPwbqS4+dXIpKe4TNnj3xikjD7BStmqdhQV1CeMXAsty k10c9CysH8TphyamxuMHhkTvgYy/K2zT1xr+zyDw7TAPS0j5UImv+NVSzYB6/6gE5J/i AnQkqoBvn/vF4j28cS0GqBT1Sb753qoeOa1euc0xOK+tBDKbWpLH4fFVmTJTHVvYNAGR eoyGRn32lSc4d2nXUqsaZBwGds3r+k+KzYcb+zimCAeEQJEqCyhlFHPgJGOXsuSURAG/ HvmWTdJFDgJSYir9kwO0RTVBD/+jibaEciPi/YvuS2iIDS2YMq3hcCxcn2wR/IOek1rb +EQQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775705708; x=1776310508; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=71AIZogO6tny/uO8jHYbBkfaJfmA7aNMJ5gdYs7c+/U=; b=kUTJvZjuCZ/Di94i03DFJ5EtPugGG1Qk63n2MFk6e9LUZ7eCjFDKf39CeSc+7XXtyH x/2cZO3HgfPofd2TkmdGp2KXUqazlvOWZx82wtkCTeaN72L8COC9sbAYIZ3BtT2ewUv1 /VHLTn2HzuGpRm0gn8nyeY7FfpNZDXs/demMLmacx0GkFc/6oIvnw8SMQhvdw81j3XMS hi8mV9RM0Ml5nOMzd0jgsLM0be3YVRq/sopO9Pa6wmN2pG7i7yZvL34EIhjLdrN0jtRD 7irhYCHFLiDTgeo64+ffQvIkugKNb0X0qn4nA2s/brOE7pji0K5MovtVKZ47AjOH6Wpc +GxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775705708; x=1776310508; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=71AIZogO6tny/uO8jHYbBkfaJfmA7aNMJ5gdYs7c+/U=; b=Y3HwFmfMWJrJ3AcIURQf/KV4eRyHS3k6oRqdRWCG5Nd6io001Q2RDYgQ0INfdxBRCK o48nvljG9Qo2MiN2pVCK/qiTQi5NO/nEom78tgGgAicr42MkBqHSZtRsqOIgxfPRc1oD Zhuv6inZkAHgW4gaI7vxVw3m9KPjPG9ADKGC++ioRl8IAuLVeRGb9Cz6Y398/7C8/3ya 5WXazJxUBvxvR50BZN1p3yr6Xbp1JUKDSB7wuhlmb950Dz7pBrxy3AQfv9+8uNHDfGe7 qAJi5xbUyHcvWJglHuRwsM/vCLR0b/HlIiULZelfv0EGJ2dtHZM7rS8O4QmVa2whaPsE 8GQQ== X-Gm-Message-State: AOJu0Yzftibgb94RLYfukLQR7L0QCJHYn3K9KA0KoAipH4g58K/Fuf7q JQn8TdascNGHPgAGUWe1Tu6GXwODKup4dM2SYZZWSpMkWVcLb2nOpbbGvbNh8Z5mDf0v4w3SLnW mPXBEKV2hnMGYf0CviKlWUxtMFgDRQg4CB0Nv X-Gm-Gg: AeBDieso96/BRkCgwzwDNZjMe6NtVGq/vp1W3XjTll9QwFg9WHjQtinrA9rlbY9ZmKN r7truwnDm9YH+3FEc40L5ykvrOC3kSke1l5lM7XpfXnw9gsN6DbA8/iMh0c4OQzba0TemKvq0uk n+fe194LTAVN16/KJsxuGejGvz5OyJAwvzFDGx0fC8x0Mv9U77zvn7x+SVzeO9ME/3CJpevLLF6 4GR5T42e/lxItcyBajjhTzmDJmKcviH8RRVJDGofBxTC9OoSl9Rn4uLTGE07nbFnPSvikMIywoL yJUalEaEKYrpAFDOBeTy4lX94EGpcOsSsB7qYljMeOtXF7sFUE3jcjHuvA7bPnsBarsIJFlkCNg = X-Received: by 2002:a05:7300:8623:b0:2c7:8e1c:956b with SMTP id 5a478bee46e88-2cbfc16eba8mr5698200eec.4.1775705708232; Wed, 08 Apr 2026 20:35:08 -0700 (PDT) MIME-Version: 1.0 From: Thomas Munro Date: Thu, 9 Apr 2026 15:34:30 +1200 X-Gm-Features: AQROBzCyUKsmynlFcoZvIpTTKZfZeYNVz0Gdns64SzDHVY_1GRpEU08psuZc7RQ Message-ID: Subject: [[deprecated("don't call this, call that")]] To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000f785bb064efeb3b3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f785bb064efeb3b3 Content-Type: text/plain; charset="UTF-8" Hi, While working on 1e7fe06c, I wished I could make functions generate compiler warnings: pg_attribute_deprecated("use pg_mblen_{cstr,range,with_len,unbounded} instead") extern int pg_mblen(const char *mbstr); That'd avoid accidental reintroduction, and also get extension maintainers' attention. $SUBJECT is C23/C++14's syntax, but you've long been able to do that with in __attribute__ or __declspec for the usual suspects so I looked into which compiler versions introduced that and came up with the attached. The idea would be to back-patch the deprecation warnings, and delete the functions in, I guess now, v20. Then the deprecation notice facility would always be there for next time we need it. --000000000000f785bb064efeb3b3 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Provide-pg_attribute_deprecated-message-macro.patch" Content-Disposition: attachment; filename="0001-Provide-pg_attribute_deprecated-message-macro.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnqwov4g0 RnJvbSBiNzgwYmE0NWJiYjM2NjQwNmNkMmZmNDJkYjNjNjkwNzBjYTJiMjJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAyMjoyMDo1NSArMTMwMApTdWJqZWN0OiBbUEFUQ0ggMS8z XSBQcm92aWRlIHBnX2F0dHJpYnV0ZV9kZXByZWNhdGVkKCJtZXNzYWdlIikgbWFjcm8uCgpUaGlz IGV4cGFuZHMgdG8gQzIzL0MrKzE0IFtbZGVwcmVjYXRlZCgibWVzc2FnZSIpXV0sIG9yIGVxdWl2 YWxlbnQKYXR0cmlidXRlcyBhdmFpbGFibGUgc2luY2UgR0NDIDQuOSwgQ2xhbmcgMi45IGFuZCBN U1ZDIDIwMDggKGFuZCBmdXJ0aGVyCmJhY2sgd2l0aG91dCBhIG1lc3NhZ2UpLiAgSXQgY2FuIGJl IHBsYWNlZCBiZWZvcmUgYSB0eXBlIG9yIGZ1bmN0aW9uCmRlY2xhcmF0aW9uIHRvIHRyaWdnZXIg Y29tcGlsZXIgd2FybmluZ3Mgd2hlbiB1c2VkLgoKQmFja3BhdGNoLXRocm91Z2g6IDE0Ci0tLQog c3JjL2luY2x1ZGUvYy5oIHwgMTUgKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTUg aW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2MuaCBiL3NyYy9pbmNsdWRl L2MuaAppbmRleCA4OGQxM2VjOTk5My4uNjdhNzU5YjFiZjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2MuaAorKysgYi9zcmMvaW5jbHVkZS9jLmgKQEAgLTIzOCw2ICsyMzgsMjEgQEAgZXh0ZXJu ICJDKysiCiAjZGVmaW5lIHBnX2F0dHJpYnV0ZV90YXJnZXQoLi4uKQogI2VuZGlmCiAKKy8qCisg KiBTdXBwb3J0IGZvciBtYXJraW5nIGZ1bmN0aW9ucyBhbmQgdHlwZXMgYXMgZGVwcmVjYXRlZCwg d2l0aCBhIGNvbXBpbGVyCisgKiB3YXJuaW5nIGlmIHRoZSBmdW5jdGlvbiBpcyB1c2VkLiAgUHJl Y2VkZXMgYSBkZWNsYXJhdGlvbi4KKyAqLworI2lmIChkZWZpbmVkKF9fU1REQ19WRVJTSU9OX18p ICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMjAyMzExTCkgfHwgXAorCShkZWZpbmVkKF9fY3BsdXNw bHVzKSAmJiBfX2NwbHVzcGx1cyA+PSAyMDE0MDJMKQorI2RlZmluZSBwZ19hdHRyaWJ1dGVfZGVw cmVjYXRlZChtZXNzYWdlKSBbW2RlcHJlY2F0ZWQobWVzc2FnZSldXQorI2VsaWYgZGVmaW5lZChf X2NsYW5nX18pIHx8IChkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSA1KQorI2RlZmlu ZSBwZ19hdHRyaWJ1dGVfZGVwcmVjYXRlZChtZXNzYWdlKSBfX2F0dHJpYnV0ZV9fKChkZXByZWNh dGVkKG1lc3NhZ2UpKSkKKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpCisjZGVmaW5lIHBnX2F0dHJp YnV0ZV9kZXByZWNhdGVkKG1lc3NhZ2UpIF9fZGVjbHNwZWMoZGVwcmVjYXRlZChtZXNzYWdlKSkK KyNlbHNlCisjZGVmaW5lIHBnX2F0dHJpYnV0ZV9kZXByZWNhdGVkKG1lc3NhZ2UpCisjZW5kaWYK KwogLyoKICAqIEFwcGVuZCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFkgdG8gZGVmaW5pdGlvbnMg b2YgdmFyaWFibGVzIHRoYXQgYXJlIG9ubHkKICAqIHVzZWQgaW4gYXNzZXJ0LWVuYWJsZWQgYnVp bGRzLCB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncyBhYm91dCB1bnVzZWQKLS0gCjIuNTMuMAoK --000000000000f785bb064efeb3b3 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Mark-pg_mblen-and-t_is-as-deprecated.patch" Content-Disposition: attachment; filename="0002-Mark-pg_mblen-and-t_is-as-deprecated.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnqwoxjv1 RnJvbSA1N2JhZGIyYzliMzM2M2FjMmYxMGRkNGRmMjIyYjJiYjZjNDA1ZTgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAyMjoyODoyNSArMTMwMApTdWJqZWN0OiBbUEFUQ0ggMi8z XSBNYXJrIHBnX21ibGVuKCkgYW5kIHRfaXMqKCkgYXMgZGVwcmVjYXRlZC4KClRoZXNlIGZ1bmN0 aW9ucyB3ZXJlIGRlcHJlY2F0ZWQgYnkgY29tbWl0IDFlN2ZlMDZjIGFuZCBzaG91bGRuJ3QgYmUg dXNlZAppbiBuZXcgY29kZS4gIEFkZGluZyBhIGRlcHJlY2F0ZWQgYXR0cmlidXRlIHdpbGwgY2F1 c2Ugd2FybmluZ3MgaW4KZXh0ZW5zaW9uIGNvZGUgdGhhdCBpcyB1c2luZyB0aGVtLgoKQmFja3Bh dGNoLXRocm91Z2g6IDE0ClJldmlld2VkLWJ5OgpEaXNjdXNzaW9uOgotLS0KIHNyYy9pbmNsdWRl L21iL3BnX3djaGFyLmggICAgICAgfCAyICstCiBzcmMvaW5jbHVkZS90c2VhcmNoL3RzX2xvY2Fs ZS5oIHwgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWIvcGdfd2NoYXIuaCBiL3NyYy9pbmNsdWRl L21iL3BnX3djaGFyLmgKaW5kZXggZTE2NTVmZTYxZDYuLmEzMzI2ZTM2NWE3IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9tYi9wZ193Y2hhci5oCisrKyBiL3NyYy9pbmNsdWRlL21iL3BnX3djaGFy LmgKQEAgLTcwMCw3ICs3MDAsNyBAQCBleHRlcm4gaW50CXBnX21ibGVuX3JhbmdlKGNvbnN0IGNo YXIgKm1ic3RyLCBjb25zdCBjaGFyICplbmQpOwogZXh0ZXJuIGludAlwZ19tYmxlbl93aXRoX2xl bihjb25zdCBjaGFyICptYnN0ciwgaW50IGxpbWl0KTsKIGV4dGVybiBpbnQJcGdfbWJsZW5fdW5i b3VuZGVkKGNvbnN0IGNoYXIgKm1ic3RyKTsKIAotLyogZGVwcmVjYXRlZCAqLworcGdfYXR0cmli dXRlX2RlcHJlY2F0ZWQoInVzZSBwZ19tYmxlbl97Y3N0cixyYW5nZSx3aXRoX2xlbix1bmJvdW5k ZWR9IGluc3RlYWQiKQogZXh0ZXJuIGludAlwZ19tYmxlbihjb25zdCBjaGFyICptYnN0cik7CiAK IGV4dGVybiBpbnQJcGdfZHNwbGVuKGNvbnN0IGNoYXIgKm1ic3RyKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3RzZWFyY2gvdHNfbG9jYWxlLmggYi9zcmMvaW5jbHVkZS90c2VhcmNoL3RzX2xv Y2FsZS5oCmluZGV4IDZlMmQ2N2VlNGE1Li45MGU1MzNlZWEzMSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvdHNlYXJjaC90c19sb2NhbGUuaAorKysgYi9zcmMvaW5jbHVkZS90c2VhcmNoL3RzX2xv Y2FsZS5oCkBAIC02MCw3ICs2MCw3IEBAIGV4dGVybiBpbnQJdF9pcyMjY2hhcmFjdGVyX2NsYXNz IyNfd2l0aF9sZW4oY29uc3QgY2hhciAqcHRyLCBpbnQgbGVuKTsgXAogZXh0ZXJuIGludAl0X2lz IyNjaGFyYWN0ZXJfY2xhc3MjI19jc3RyKGNvbnN0IGNoYXIgKnB0cik7IFwKIGV4dGVybiBpbnQJ dF9pcyMjY2hhcmFjdGVyX2NsYXNzIyNfdW5ib3VuZGVkKGNvbnN0IGNoYXIgKnB0cik7IFwKIFwK LS8qIGRlcHJlY2F0ZWQgKi8gXAorcGdfYXR0cmlidXRlX2RlcHJlY2F0ZWQoInVzZSB0X2lzWFhY X3tjc3RyLHdpdGhfbGVuLHVuYm91bmRlZH0gaW5zdGVhZCIpIFwKIGV4dGVybiBpbnQJdF9pcyMj Y2hhcmFjdGVyX2NsYXNzKGNvbnN0IGNoYXIgKnB0cik7CiAKIEdFTkVSQVRFX1RfSVNDTEFTU19E RUNMKGFsbnVtKTsKLS0gCjIuNTMuMAoK --000000000000f785bb064efeb3b3 Content-Type: text/x-patch; charset="US-ASCII"; name="0003-Remove-pg_mblen-and-related-functions.patch" Content-Disposition: attachment; filename="0003-Remove-pg_mblen-and-related-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnqwp00c2 RnJvbSA0NzdjZjhlYzFhZTllZjMzMzk4OGMwZGNkNDhhMjBkMDBlYWNkOTNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAyMzoyNDozMyArMTMwMApTdWJqZWN0OiBbUEFUQ0ggMy8z XSBSZW1vdmUgcGdfbWJsZW4oKSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCgpwZ19tYmxlbigpIHdh cyB1bnNhZmUgYW5kIGRlY2xhcmVkIGRlcHJlY2F0ZWQgaW4gYWxsIHJlbGVhc2UgYnJhbmNoZXMs CmFuZCBjYW4gbm93IHJlbW92ZWQgaW4gbWFzdGVyLiAgVGhlIHRfaXMqKCkgZnVuY3Rpb25zIHdl cmUgbGVzcyB1bnNhZmUsCmJ1dCBuZWVkZWQgdG8ga25vdyB3aGljaCBwZ19tYmxlbl9YWFgoKSBy ZXBsYWNlbWVudCB0byBjYWxsIHNvIHRoZXkgYWxzbwpnYWluZWQgcGFyYWxsZWwgcmVwbGFjZW1l bnRzLgoKUmV2aWV3ZWQtYnk6CkRpc2N1c3Npb246Ci0tLQogc3JjL2JhY2tlbmQvdHNlYXJjaC90 c19sb2NhbGUuYyB8IDEyIC0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbWIvbWJ1dGls cy5jICB8IDEwIC0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL21iL3BnX3djaGFyLmggICAgICAgfCAg MyAtLS0KIHNyYy9pbmNsdWRlL3RzZWFyY2gvdHNfbG9jYWxlLmggfCAgOSArLS0tLS0tLS0KIDQg ZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfbG9jYWxlLmMgYi9zcmMvYmFja2VuZC90c2VhcmNo L3RzX2xvY2FsZS5jCmluZGV4IGRmMDJmZmIxMmZkLi4xMmVmM2QxMWIzMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdHNlYXJjaC90c19sb2NhbGUuYworKysgYi9zcmMvYmFja2VuZC90c2VhcmNo L3RzX2xvY2FsZS5jCkBAIC00MSwxOCArNDEsNiBAQCBpbnQgXAogdF9pcyMjY2hhcmFjdGVyX2Ns YXNzIyNfY3N0cihjb25zdCBjaGFyICpwdHIpIFwKIHsgXAogCXJldHVybiB0X2lzIyNjaGFyYWN0 ZXJfY2xhc3MjI193aXRoX2xlbihwdHIsIHBnX21ibGVuX2NzdHIocHRyKSk7IFwKLX0gXAotLyog cHRyIHNoYWxsIHBvaW50IHRvIGEgc3RyaW5nIHdpdGggcHJlLXZhbGlkYXRlZCBlbmNvZGluZyAq LyBcCi1pbnQgXAotdF9pcyMjY2hhcmFjdGVyX2NsYXNzIyNfdW5ib3VuZGVkKGNvbnN0IGNoYXIg KnB0cikgXAoteyBcCi0JcmV0dXJuIHRfaXMjI2NoYXJhY3Rlcl9jbGFzcyMjX3dpdGhfbGVuKHB0 ciwgcGdfbWJsZW5fdW5ib3VuZGVkKHB0cikpOyBcCi19IFwKLS8qIGhpc3RvcmljYWwgbmFtZSBm b3IgX3VuYm91bmRlZCAqLyBcCi1pbnQgXAotdF9pcyMjY2hhcmFjdGVyX2NsYXNzKGNvbnN0IGNo YXIgKnB0cikgXAoteyBcCi0JcmV0dXJuIHRfaXMjI2NoYXJhY3Rlcl9jbGFzcyMjX3VuYm91bmRl ZChwdHIpOyBcCiB9CiAKIEdFTkVSQVRFX1RfSVNDTEFTU19ERUYoYWxudW0pCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9tYi9tYnV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9tYi9t YnV0aWxzLmMKaW5kZXggNzhmNGQ1ZTIwMmMuLjA4ZDgwZjJjMzZmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9tYi9tYnV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWIvbWJ1 dGlscy5jCkBAIC0xMTQzLDE2ICsxMTQzLDYgQEAgcGdfbWJsZW5fdW5ib3VuZGVkKGNvbnN0IGNo YXIgKm1ic3RyKQogCXJldHVybiBsZW5ndGg7CiB9CiAKLS8qCi0gKiBIaXN0b3JpY2FsIG5hbWUg Zm9yIHBnX21ibGVuX3VuYm91bmRlZCgpLiAgU2hvdWxkIG5vdCBiZSB1c2VkIGFuZCB3aWxsIGJl Ci0gKiByZW1vdmVkIGluIGEgbGF0ZXIgdmVyc2lvbi4KLSAqLwotaW50Ci1wZ19tYmxlbihjb25z dCBjaGFyICptYnN0cikKLXsKLQlyZXR1cm4gcGdfbWJsZW5fdW5ib3VuZGVkKG1ic3RyKTsKLX0K LQogLyogcmV0dXJucyB0aGUgZGlzcGxheSBsZW5ndGggb2YgYSBtdWx0aWJ5dGUgY2hhcmFjdGVy ICovCiBpbnQKIHBnX2RzcGxlbihjb25zdCBjaGFyICptYnN0cikKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL21iL3BnX3djaGFyLmggYi9zcmMvaW5jbHVkZS9tYi9wZ193Y2hhci5oCmluZGV4IGEz MzI2ZTM2NWE3Li5lNDJjZjU2MjYzNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWIvcGdfd2No YXIuaAorKysgYi9zcmMvaW5jbHVkZS9tYi9wZ193Y2hhci5oCkBAIC03MDAsOSArNzAwLDYgQEAg ZXh0ZXJuIGludAlwZ19tYmxlbl9yYW5nZShjb25zdCBjaGFyICptYnN0ciwgY29uc3QgY2hhciAq ZW5kKTsKIGV4dGVybiBpbnQJcGdfbWJsZW5fd2l0aF9sZW4oY29uc3QgY2hhciAqbWJzdHIsIGlu dCBsaW1pdCk7CiBleHRlcm4gaW50CXBnX21ibGVuX3VuYm91bmRlZChjb25zdCBjaGFyICptYnN0 cik7CiAKLXBnX2F0dHJpYnV0ZV9kZXByZWNhdGVkKCJ1c2UgcGdfbWJsZW5fe2NzdHIscmFuZ2Us d2l0aF9sZW4sdW5ib3VuZGVkfSBpbnN0ZWFkIikKLWV4dGVybiBpbnQJcGdfbWJsZW4oY29uc3Qg Y2hhciAqbWJzdHIpOwotCiBleHRlcm4gaW50CXBnX2RzcGxlbihjb25zdCBjaGFyICptYnN0cik7 CiBleHRlcm4gaW50CXBnX21ic3RybGVuKGNvbnN0IGNoYXIgKm1ic3RyKTsKIGV4dGVybiBpbnQJ cGdfbWJzdHJsZW5fd2l0aF9sZW4oY29uc3QgY2hhciAqbWJzdHIsIGludCBsaW1pdCk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS90c2VhcmNoL3RzX2xvY2FsZS5oIGIvc3JjL2luY2x1ZGUvdHNl YXJjaC90c19sb2NhbGUuaAppbmRleCA5MGU1MzNlZWEzMS4uYjZhMmQyOWVlM2YgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3RzZWFyY2gvdHNfbG9jYWxlLmgKKysrIGIvc3JjL2luY2x1ZGUvdHNl YXJjaC90c19sb2NhbGUuaApAQCAtNTIsMTYgKzUyLDkgQEAgdHNfY29weWNoYXJfY3N0cih2b2lk ICpkZXN0LCBjb25zdCB2b2lkICpzcmMpCiAJcmV0dXJuIHRzX2NvcHljaGFyX3dpdGhfbGVuKGRl c3QsIHNyYywgcGdfbWJsZW5fY3N0cigoY29uc3QgY2hhciAqKSBzcmMpKTsKIH0KIAotLyogSGlz dG9yaWNhbCBtYWNybyBmb3IgdGhlIGFib3ZlLiAqLwotI2RlZmluZSBDT1BZQ0hBUiB0c19jb3B5 Y2hhcl9jc3RyCi0KICNkZWZpbmUgR0VORVJBVEVfVF9JU0NMQVNTX0RFQ0woY2hhcmFjdGVyX2Ns YXNzKSBcCiBleHRlcm4gaW50CXRfaXMjI2NoYXJhY3Rlcl9jbGFzcyMjX3dpdGhfbGVuKGNvbnN0 IGNoYXIgKnB0ciwgaW50IGxlbik7IFwKLWV4dGVybiBpbnQJdF9pcyMjY2hhcmFjdGVyX2NsYXNz IyNfY3N0cihjb25zdCBjaGFyICpwdHIpOyBcCi1leHRlcm4gaW50CXRfaXMjI2NoYXJhY3Rlcl9j bGFzcyMjX3VuYm91bmRlZChjb25zdCBjaGFyICpwdHIpOyBcCi1cCi1wZ19hdHRyaWJ1dGVfZGVw cmVjYXRlZCgidXNlIHRfaXNYWFhfe2NzdHIsd2l0aF9sZW4sdW5ib3VuZGVkfSBpbnN0ZWFkIikg XAotZXh0ZXJuIGludAl0X2lzIyNjaGFyYWN0ZXJfY2xhc3MoY29uc3QgY2hhciAqcHRyKTsKK2V4 dGVybiBpbnQJdF9pcyMjY2hhcmFjdGVyX2NsYXNzIyNfY3N0cihjb25zdCBjaGFyICpwdHIpOwog CiBHRU5FUkFURV9UX0lTQ0xBU1NfREVDTChhbG51bSk7CiBHRU5FUkFURV9UX0lTQ0xBU1NfREVD TChhbHBoYSk7Ci0tIAoyLjUzLjAKCg== --000000000000f785bb064efeb3b3--