Hello Jakub,
On 07/12/2018 12:57 AM, Jakub Wilk wrote:
* Robin Kuzmin <kuzmin.robin@xxxxxxxxx>, 2018-07-11, 09:56:
I see:
The strncpy() function is similar, except that at most n **bytes**
of src are copied
I expected:
The strncpy() function is similar, except that at most n
**characters** of src are copied
The difference is important because if the `char` size (in bytes) is
different from 1 byte on some implementation then "the number of
characters" and "the number of bytes" are different.
This is a common misconception about the C language. No, the size of
char is always exactly one byte. (Now, that byte might be wider than 8
bits the people are used to, but that's a different story...)
The confirmation to my words is in C99:
7.21.2.4 The strncpy function
The strncpy function copies not more than n **characters** ...
In C99, "character" is another name for "single-byte character".
On the other hand, in POSIX lingo, "character" means multi-byte character.
POSIX uses the term "byte" in their definitions of strncpy and similar
functions, which is compatible with C99 and unambiguous. Linux man pages
should do the same.
Thank you for jumping in with the nice explanation. I fixed many pages
back in 2012, after a report from Andries Brouwer, to use the right
(i.e., POSIX) terminology, but I just checked and I see there were a
couple I missed still. I fixed those now.
Cheers,
Michael
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html