Re: mutt_buffer_concat_path is broken [PATCH: 1/1] Version 2

"Kevin J. McCarthy" <[email protected]> Fri, 8 May 2026 13:58:36 +0800
Newsgroups gmane.mail.mutt.devel
Message-ID <af17jAMFfU-sZMak@qinghai>
On Fri, May 08, 2026 at 12:57:09PM +0800, Kevin J. McCarthy wrote:
>On Fri, May 08, 2026 at 06:08:37AM +0200, Rene Kita wrote:
>>If we don't care about adding empty strings we could just do (untested):
>>#v+
>>void mutt_buffer_concat_path(BUFFER *d, const char *dir, const char *fname)
>>{
>> mutt_buffer_clear(d);
>> mutt_buffer_addstr(d, dir);
>>
>> if (*dir && dir[strlen(dir)-1 != '/')
>>   mutt_buffer_addch(d, '/');
>> while (*fname && *fname == '/') fname++;
>> mutt_buffer_addstr(d, fname);
>>}
>>#v-
>
>I like this version (subject to testing).

Ah, sorry, this version isn't the same, since it inverts the dir trailing 
slash check.

It fails the test: "" + "/baz" =>   "/baz"

I think fixing it while keeping it concise would just devolve to the 
same logic as with Alex's one line patch.  So I vote for just using that 
one-line fix in both the buffer and non-buffer version.

-- 
Kevin J. McCarthy
GPG Fingerprint: 8975 A9B3 3AA3 7910 385C  5308 ADEF 7684 8031 6BDA
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEiXWpszqjeRA4XFMIre92hIAxa9oFAmn9e4wACgkQre92hIAx
a9qB0xAAnq6x7U0s7Oau9ppUPNFacu7TGa8EqaILvu+HYbkxiRZA/7Fu0kqHeqNA
ph8Ov1HJudUEWg7ZiGlSJwis5ZV7vJ66m92lJI4Q/4+ynicusBVd3C/d8VzjISns
Fk+XdQkL3Cr8mp3dR+ZFGdkHmWZ2QRIzsoC3Wb0ATp3dbkubiqBjtvX0Kz7CfhjD
a5+cQwsJCoA7bQkqqMcEdXc3/jGexOSnB78VF8KwlmDEiUv8BCFrlHeYfMua12Ds
OrKWJYZsIBVe031TUqNKdyZDVHCfBCEbD5vHHd7YeX0n4ncgDudmEc684zu/xMB2
n0j5vt0Y9cn8ljDHyW5wo0XC9YLDUipMLDKOzRvUIOFRMkfcOOlW1opyIYMFKWSp
KYWp5XIVQtALuXsW3EsX44/QwHb4KsgjUCYZAWL57eFaVFrUUWWuTqqQnoBNG4y6
jAMO+iKXYGb+GCKPDpq7mik7U7TYrGvQJfUvTcIqnOY5pgPP+ipK9sqGpHu3N71M
b7X1Z12t/pQHOKs9aq/6JXDcL3fTti9HyX/VDaAFY3DhTPCtonX52EAZjUpLLxHr
4w/fBatskG3CBXM4/RfSv+ekPP+xSWkecUKra60j1puiLwyk+Ml92jlPvYxPfgFn
JO6UKVA5CjixymUH+US3ENHdCKbadsKGcphOSFnQObcmfp7T2N4=
=caf4
-----END PGP SIGNATURE-----