info-mtools
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Info-mtools] [PATCH] Use own definition of strtoi


From: Alain Knaff
Subject: Re: [Info-mtools] [PATCH] Use own definition of strtoi
Date: Sun, 10 Apr 2022 20:34:15 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0

Hi,

On 06/03/2022 03:42, Sam James wrote:
> Before this change, build resulted in implicit function declarations like:
> ```
> * config.c:269:57: warning: implicit declaration of function ‘strtoi’; did 
> you mean ‘strtoui’? [-Wimplicit-function-declaration]
> * floppyd_io.c:473:20: warning: implicit declaration of function ‘strtoi’; 
> did you mean ‘strtoui’? [-Wimplicit-function-declaration]
> ```
> 
> The include(s) for inttypes.h are guarded by HAVE_INTTYPES_H
> (normal autoconf pattern) but we're not checking for inttypes.h
> in configure. But adding this doesn't solve the issue.
> 
> If libbsd is installed, configure discovers the strtoi
> provided by libbsd  although the included version may still
> end up being glibc's as the include path doesn't change
> (glibc has its own which doesn't feature strtoi).
> 
> If trying to use libbsd's, we end up with a build failure:
> ```
> config.c: In function ‘get_env_conf’:
> config.c:269:57: error: too few arguments to function ‘strtoi’
>   269 |                 * ((int *)global_switches[i].address) = strtoi(s,0,0);
>       |                                                         ^~~~~~
> In file included from sysincludes.h:174,
>                  from config.c:18:
> /usr/include/bsd/inttypes.h:43:10: note: declared here
>    43 | intmax_t strtoi(const char *__restrict nptr, char **__restrict endptr,
>       |          ^~~~~~
> ```

Thanks for the note, I wasn't aware that BSD was actually using strtoi
for something which is not just the signed int equivalent of strtoui.

> 
> So, it seems best to just always use our own definition of strtoi,
> given our definition doesn't match libbsd's anyway. This avoids
> the build failure as well as the implicit declaration warnings.

I preferred to change the name instead: strtosi (str to *s*igned *i*nt),
that way there is no confusion possible.

Fix is in 4.0.39

Regards,

Alain



reply via email to

[Prev in Thread] Current Thread [Next in Thread]