Re: strncpy clarify result may not be null terminated

Paul Eggert
2023-11-08T23:31:40Z

On 11/8/23 14:11, Alejandro Colomar wrote:
> I just don't think we need,
> as GNU or Linux projects, to be restricted to the decisions of ISO. We
> can realize that certain functions are bad, and mark them as deprecated
> in our scope.

There's enough use of strncpy for the intended use (smallish fixed size
character arrays that are null padded, not null terminated) that saying
it's deprecated would likely cause more trouble than it's worth. It's
not just utmp and tar; it's also socket programming (sun_path) and I'm
sure other stuff.

Were we designing the C library from scratch I'd agree with you: in that
context, strncpy would clearly be more trouble than it's worth. But now
that we're stuck with strncpy we have better things to do than try to
deprecate it.

Instead of saying "deprecate" I suggest we say something like "This
function is generally a poor choice for processing strings" and point to
the longer man page about strings in general. That's what the glibc
manual does and it works reasonably well.