Is there a format (or other function) that lets me
print strings without an \0 terminator using an explicit length arg instead?
Something like:
printk("%s...", str, str_len); /* replace ... */
or some other funktion perhaps ?
Jocke
On Jul 09 2020, Joakim Tjernlund wrote:
> Is there a format (or other function) that lets me
> print strings without an \0 terminator using an explicit length arg instead?
Use the precision.
Andreas.
--
Andreas Schwab, [email protected]
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1
"And now for something completely different."
On Thu, 2020-07-09 at 14:56 +0200, Andreas Schwab wrote:
> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
>
> On Jul 09 2020, Joakim Tjernlund wrote:
>
> > Is there a format (or other function) that lets me
> > print strings without an \0 terminator using an explicit length arg instead?
>
> Use the precision.
Looking at that now but have a hard time figuring how to use it, can you give me an example?
Jocke
On 09/07/2020 15.26, Joakim Tjernlund wrote:
> On Thu, 2020-07-09 at 14:56 +0200, Andreas Schwab wrote:
>> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
>>
>>
>> On Jul 09 2020, Joakim Tjernlund wrote:
>>
>>> Is there a format (or other function) that lets me
>>> print strings without an \0 terminator using an explicit length arg instead?
>>
>> Use the precision.
>
> Looking at that now but have a hard time figuring how to use it, can you give me an example?
Exactly as you'd do in userspace:
printf("%.*s\n", len, buf)
Of course, vsnprintf() will still stop if it encounters a nul byte
within those first len bytes in buf. And you need len to have type int,
so you may need a cast if you have a size_t or ssize_t or whatnot.
Rasmus
On Thu, 2020-07-09 at 15:30 +0200, Rasmus Villemoes wrote:
> On 09/07/2020 15.26, Joakim Tjernlund wrote:
> > On Thu, 2020-07-09 at 14:56 +0200, Andreas Schwab wrote:
> > > CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
> > >
> > >
> > > On Jul 09 2020, Joakim Tjernlund wrote:
> > >
> > > > Is there a format (or other function) that lets me
> > > > print strings without an \0 terminator using an explicit length arg instead?
> > >
> > > Use the precision.
> >
> > Looking at that now but have a hard time figuring how to use it, can you give me an example?
>
> Exactly as you'd do in userspace:
>
> printf("%.*s\n", len, buf)
>
> Of course, vsnprintf() will still stop if it encounters a nul byte
> within those first len bytes in buf. And you need len to have type int,
> so you may need a cast if you have a size_t or ssize_t or whatnot.
Thanks, this did the trick :)