:: Re: [DNG] The D in Systemd stands f…
Top Page
Delete this message
Reply to this message
Author: Adam Borowski
Date:  
To: dng
Subject: Re: [DNG] The D in Systemd stands for 'Dammmmit!'
On Tue, Oct 30, 2018 at 11:01:15AM +0100, Didier Kryn wrote:
> Le 29/10/2018 à 22:42, Adam Borowski a écrit :
> > Well, it is possible to use strcpy() right. On the other hand, _every_ use
> > of strncpy() for a C string is a bug.
>
>     Let's assume "the programmer knows what she is doing" (this is how the C
> language assume its insecurity). Then she knows the length of the
> destination is smaller than the length of the source. It is an error, but,
> in some cases (which we are dealing with here), it is acceptable to just
> truncate the string. So what can she do?
>
>     Certainly strcpy() is unusable because it would overflow. The fastest
> way to do the job with the standard C library is to invoke strncpy() with
> sizeof(dest)-1 and append a null.


In that case, memcpy() is strictly better:
* faster:
+ no need to compare every byte
+ can copy longer strings a word at a time
* safer: you don't get the false impression it'd null-terminate the string
for you

> The two other methods are to use snprintf() or to copy the bytes one by
> one in a loop.


Or copy word by word -- or even via a mem-to-mem DMA transfer some folks
want to add to new machines. Or...


Meow!
--
⢀⣴⠾⠻⢶⣦⠀ Have you heard of the Amber Road? For thousands of years, the
⣾⠁⢰⠒⠀⣿⡁ Romans and co valued amber, hauled through the Europe over the
⢿⡄⠘⠷⠚⠋⠀ mountains and along the Vistula, from Gdańsk. To where it came
⠈⠳⣄⠀⠀⠀⠀ together with silk (judging by today's amber stalls).