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 1vsFuZ-00DDrE-2j for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Feb 2026 07:54:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vsFuY-0092JI-1k for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Feb 2026 07:54:22 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vsFuY-0092J7-0L for pgsql-hackers@lists.postgresql.org; Tue, 17 Feb 2026 07:54:22 +0000 Received: from mail-ej1-x633.google.com ([2a00:1450:4864:20::633]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vsFuU-000000011Xc-3Emb for pgsql-hackers@postgresql.org; Tue, 17 Feb 2026 07:54:20 +0000 Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-b79f8f7ea43so653399466b.2 for ; Mon, 16 Feb 2026 23:54:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771314858; cv=none; d=google.com; s=arc-20240605; b=TpbdFQCpswNPh/LkF8rOhEMH0aoaBbW8sdLL6vQdRXzCVDrFqVWgdra7Z/48ipaIEQ zanUfRRjns8pIyhkKfPr9XyEK7m87En/92cEqTUNebQIdJM7FKHgwcCg65opu29rF1Iv Fujlmx/zCU3wD6nDGek1IwmOyU3GBqM5lcHI0XpMLq8BJ2nG+m5DOQ/8264WsTGik04i Em94F59xU7y8+qEY8V/JYsbLdDVdoheeQ3j1G1SU4dtg+tCDVpAAZeDM/ZB9U9XI1m0V 27PrQDliSDHQfxHP4n0kHHKEHrwIE9G6FId3ggnxin3Hx2+d6KfOyCdQhV8iUdh3S2kY kbkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=ZOVSHSYr6V0G3wwFFkru799ub05jANa/jKSdg/V7JzU=; fh=Rmer12QtJYjEVzyDZFCPAnKWNcMPiXDrEyGSbiww+8k=; b=JwfqmeV8SmGyFjs/3pEskg4f6/noSPTqrpt0YstVwmypey218nsToaX/sxUOMfY+IB htpyy/h0ojHxbWnO6Isw/s3Kp4otYJCSyPt+VEK5qPcWIk68y8jTIptIX9RSRLn06UuK nSQ7JhmxrCVSLqJmJJ13McayjAo5uK6ueWCSrVL6Fehc71waQKei2SFEItr3wDTs7O5X 0c/Hw8/lcN084PyMuuDf+zz8Gc8ccZVwtRBLxhnQMn0AM7S/5sf2g+hYxxGvxKzWs/bb SgteWHiyCBCSnef+tqoWznv7EhorVCngWWkEKc8EQKgJTdrxQZTZ/Qi2ftMBXOi/i6uA y9kA==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1771314858; x=1771919658; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ZOVSHSYr6V0G3wwFFkru799ub05jANa/jKSdg/V7JzU=; b=ikwI5bHOUqgioIEI0xxdoFOlM/0bJixWo7EEPDTPNZ1TsUv01MYfX6V10HeLf8NpQQ hWmkfTfA3d2Wey4ALs7SA3fH6ruFsXFKlojwuIfxhcjAy7sZuLjdwoPtg+IubKmc0cTg hl/mkxnSLJkwvHg+bmXnHwp6MRNh0UoKgGFrZmqTLtGe9qMSKCr4hU/IQBU9zi7BD3yz jUCNo1SyIt1IKVyAm2aga1ymUUDu0h146JjzGPPcSFNryVmTy6HujgxXZ5i6w2vB7HmQ L5II4BcCfPo2jduNsVhMUUWCW/hKer1ij520FMKo/uWKWX0k+dt5wMn6MPsarrFWP4JH xXcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771314858; x=1771919658; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ZOVSHSYr6V0G3wwFFkru799ub05jANa/jKSdg/V7JzU=; b=ESs+aKHj/IV9PTLXpKzE0/gd6/3fiu6kX63NQMnOV4bMBABPFJ6YXXNj6odnE4y+e3 bbxRtFBG/AxCPe7peqfndnfswDByaVX8ZespZ5A2Ixkr/NHKitvteSAakumZ6bUJFahx lsWRB1/56oIyjYuryNd5tDxq1xSUHEwUtq8bHIwhu9C3zTOxkTQwrLPt5u0kTOMO8l56 44JzNukz7WPyl6g2licTyEyzaB8O37iuWxCUfaKMCG+6k130gtc9jBzG49Rr/8qbbZWL +tG6UCDKmXGIlNK76K/QBf6PqJ43Lq2hneuKbvuMpied2UZbzK3WtvqT4k8go55N4Ft4 ltNQ== X-Forwarded-Encrypted: i=1; AJvYcCVGbjzyuPQ5563aop/2hdPuMCw3YF2DAW0gJc7XWvsqOLK8sztPETnf1iPyYWnB85qK8ViYSbGaSuUmh5On@postgresql.org X-Gm-Message-State: AOJu0YyGo1ZRcizddcG3knAvVZlZcjg1CNbXBlyu14XZ1aa+ZSnnAwsC 2kSb9FCNcgqhyIfeznKocCp+4JnQNjSGowKMGXq6rUs/kTVIteqWFsbmjlQpqwEnWMC/9Sle2HN CvDDvoJUyEbgNmup8HHC6hnhl4NOGcYWPeeTlbbUoPZUPb2wZO6jl9NULXMA= X-Gm-Gg: AZuq6aL4P2TeNCMguqT7YshWsSAReBB7Qrshgn7evPb7jNQsKKZc+0TMa1fhHHOU9gL lRTu6wUr1tnWXxZFPIKr5IixpeEl2yH0jjrFQEtNoZG+XVsLpysUlEr6F5CPPLIJeeJUPhqe6rO duxhsFw1xn6fA6MJvCtounF3fSMGRmFkpFw6rwl8mz802xFu6PcLkf9W7NCrl2+NLCLEuqh8Nns KMBQSAe4r8oS0cWMXrC2fKYnOocUFUgElmUipiIT/MoY0DevoElVJ1G09csnBOv8EWyIZSc3NgG ckEtJh0w X-Received: by 2002:a17:907:74c:b0:b88:8782:fead with SMTP id a640c23a62f3a-b8fb44dce3bmr710593766b.47.1771314857943; Mon, 16 Feb 2026 23:54:17 -0800 (PST) MIME-Version: 1.0 References: <3bd49b59-7a87-4ab6-9eac-59b5d9cb78de@dunslane.net> <1133418.1771260634@sss.pgh.pa.us> In-Reply-To: From: Akshay Joshi Date: Tue, 17 Feb 2026 13:24:05 +0530 X-Gm-Features: AaiRm50VqT3ijtfu9LNfvdNoLP0CSf_hxJ9DkUR8JoRAFHORshBIjONdRV6jX0I Message-ID: Subject: Re: [PATCH] pgindent truncates last line of files missing a trailing newline To: Ashutosh Bapat Cc: Tom Lane , Andrew Dunstan , pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000e4e6d5064b0060b6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e4e6d5064b0060b6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I have addressed the review comments from Andrew. Attached is the v2 patch, ready for review. On Tue, Feb 17, 2026 at 7:50=E2=80=AFAM Ashutosh Bapat wrote: > > On Mon, Feb 16, 2026 at 10:20=E2=80=AFPM Tom Lane wro= te: > > > > Andrew Dunstan writes: > > > Yeah. I wonder if we shouldn't be just ensuring that there is a line > > > feed at the end of the buffer, i.e. add one if it's not there. We > > > shouldn't be adding files without a trailing LF, and ensuring there i= s > > > one seems like a reasonable thing to do in pg_bsd_indent. > > > > +1 > > +1. That will allow me to remove some code from my patch preparation > script. Ref. [1] > > [1] https://www.postgresql.org/message-id/flat/CAExHW5v8u7-2H2LqWP3ybhh5G= nAVVeCOYuTfkg9pmdnrLwAtNA%40mail.gmail.com#fdbb87e825f89e7109dfb0ed959b2dd4 > > -- > Best Wishes, > Ashutosh Bapat --000000000000e4e6d5064b0060b6 Content-Type: application/octet-stream; name="v2-0001-Fix-pgindent-truncates-last-line-of-files.patch" Content-Disposition: attachment; filename="v2-0001-Fix-pgindent-truncates-last-line-of-files.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlqb4bvo0 RnJvbSBmMWY0YzI4ODZlMDdkOGEzNzZjMzRjZDk1OGVlYTE1MzRlZTVmOTZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBa3NoYXkgSm9zaGkgPGFrc2hheS5qb3NoaUBlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBNb24sIDE2IEZlYiAyMDI2IDE2OjM5OjA4ICswNTMwClN1YmplY3Q6IFtQ QVRDSF0gRml4IHBnaW5kZW50IHRvIGVuc3VyZSBmaWxlcyBlbmQgd2l0aCBhIHRyYWlsaW5nIG5l d2xpbmUuCgpJZiBhIHNvdXJjZSBmaWxlIGlzIG1pc3NpbmcgYSB0cmFpbGluZyBuZXdsaW5lLCBw Z19ic2RfaW5kZW50IG5vdyBhZGRzCm9uZS4gVGhlIGZpbGxfYnVmZmVyKCkgZnVuY3Rpb24gYWxy ZWFkeSBhZGRzIGEgc3ludGhldGljIG5ld2xpbmUgYXQgRU9GOwp0aGlzIGNoYW5nZSBlbnN1cmVz IHRoYXQgbmV3bGluZSBpcyBlbWl0dGVkIHRvIHRoZSBvdXRwdXQgcmF0aGVyIHRoYW4KYmVpbmcg c3VwcHJlc3NlZC4KCkF1dGhvcjogQWtzaGF5IEpvc2hpIDxha3NoYXkuam9zaGlAZW50ZXJwcmlz ZWRiLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0 PgotLS0KIHNyYy90b29scy9wZ19ic2RfaW5kZW50L2xleGkuYyAgICAgICAgICAgICAgICB8IDI5 ICsrKysrKysrKysrKysrKy0tLS0KIC4uLi9wZ19ic2RfaW5kZW50L3Rlc3RzL25vX3RyYWlsaW5n X25ld2xpbmUuMCB8ICA0ICsrKwogLi4uL3Rlc3RzL25vX3RyYWlsaW5nX25ld2xpbmUuMC5zdGRv dXQgICAgICAgIHwgIDYgKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCA2 IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90b29scy9wZ19ic2RfaW5kZW50 L3Rlc3RzL25vX3RyYWlsaW5nX25ld2xpbmUuMAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90b29s cy9wZ19ic2RfaW5kZW50L3Rlc3RzL25vX3RyYWlsaW5nX25ld2xpbmUuMC5zdGRvdXQKCmRpZmYg LS1naXQgYS9zcmMvdG9vbHMvcGdfYnNkX2luZGVudC9sZXhpLmMgYi9zcmMvdG9vbHMvcGdfYnNk X2luZGVudC9sZXhpLmMKaW5kZXggOTQzYmY3Y2U2YjAuLmIwMjZmZWY2ZmNhIDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdfYnNkX2luZGVudC9sZXhpLmMKKysrIGIvc3JjL3Rvb2xzL3BnX2JzZF9p bmRlbnQvbGV4aS5jCkBAIC00NTMsMTIgKzQ1MywyOSBAQCBsZXhpKHN0cnVjdCBwYXJzZXJfc3Rh dGUgKnN0YXRlKQogICAgIGNhc2UgJ1xuJzoKIAl1bmFyeV9kZWxpbSA9IHN0YXRlLT5sYXN0X3Vf ZDsKIAlzdGF0ZS0+bGFzdF9ubCA9IHRydWU7CS8qIHJlbWVtYmVyIHRoYXQgd2UganVzdCBoYWQg YSBuZXdsaW5lICovCi0JY29kZSA9IChoYWRfZW9mID8gMCA6IG5ld2xpbmUpOwotCi0JLyoKLQkg KiBpZiBkYXRhIGhhcyBiZWVuIGV4aGF1c3RlZCwgdGhlIG5ld2xpbmUgaXMgYSBkdW1teSwgYW5k IHdlIHNob3VsZAotCSAqIHJldHVybiBjb2RlIHRvIHN0b3AKLQkgKi8KKwl7CisJCS8qCisJCSog RW5zdXJlIHdlIG91dHB1dCBleGFjdGx5IG9uZSBuZXdsaW5lIGF0IEVPRjogZWl0aGVyIHRoZSBm aWxlJ3MgcmVhbAorCQkqIHRyYWlsaW5nIG5ld2xpbmUsIG9yIHRoZSBzeW50aGV0aWMgb25lIGFk ZGVkIGJ5IGZpbGxfYnVmZmVyKCkgaWYgdGhlCisJCSogZmlsZSB3YXMgbWlzc2luZyBvbmUuCisJ CSovCisJCXN0YXRpYyBib29sIGZpbmFsX25ld2xpbmVfZG9uZSA9IGZhbHNlOworCisJCWlmICho YWRfZW9mKQorCQl7CisJCQlpZiAoZmluYWxfbmV3bGluZV9kb25lKQorCQkJCWNvZGUgPSAwOwkJ CS8qIGFscmVhZHkgZW1pdHRlZCBmaW5hbCBuZXdsaW5lLCBzdG9wIG5vdyAqLworCQkJZWxzZQor CQkJeworCQkJCWNvZGUgPSBuZXdsaW5lOworCQkJCWZpbmFsX25ld2xpbmVfZG9uZSA9IHRydWU7 CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQljb2RlID0gbmV3bGluZTsKKwkJfQorCX0KIAli cmVhazsKIAogICAgIGNhc2UgJ1wnJzoJCQkvKiBzdGFydCBvZiBxdW90ZWQgY2hhcmFjdGVyICov CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdfYnNkX2luZGVudC90ZXN0cy9ub190cmFpbGluZ19u ZXdsaW5lLjAgYi9zcmMvdG9vbHMvcGdfYnNkX2luZGVudC90ZXN0cy9ub190cmFpbGluZ19uZXds aW5lLjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMyMzM5OTBlMTFm Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rvb2xzL3BnX2JzZF9pbmRlbnQvdGVzdHMvbm9fdHJh aWxpbmdfbmV3bGluZS4wCkBAIC0wLDAgKzEsNCBAQAorLyogVGVzdDogZmlsZSB3aXRob3V0IHRy YWlsaW5nIG5ld2xpbmUgKi8KK3ZvaWQgdGVzdCh2b2lkKSB7CitpbnQgeCA9IDE7Cit9ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnX2JzZF9pbmRl bnQvdGVzdHMvbm9fdHJhaWxpbmdfbmV3bGluZS4wLnN0ZG91dCBiL3NyYy90b29scy9wZ19ic2Rf aW5kZW50L3Rlc3RzL25vX3RyYWlsaW5nX25ld2xpbmUuMC5zdGRvdXQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM2MzJkNjJmMTZjCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rvb2xzL3BnX2JzZF9pbmRlbnQvdGVzdHMvbm9fdHJhaWxpbmdfbmV3bGluZS4wLnN0ZG91 dApAQCAtMCwwICsxLDYgQEAKKy8qIFRlc3Q6IGZpbGUgd2l0aG91dCB0cmFpbGluZyBuZXdsaW5l ICovCit2b2lkCit0ZXN0KHZvaWQpCit7CisJaW50CQl4ID0gMTsKK30KLS0gCjIuNTEuMAoK --000000000000e4e6d5064b0060b6--