[sane-devel] Replacing u_char and friends (was Re: [PATCH] Port to OS X)
Olaf Meeuwissen
paddy-hack at member.fsf.org
Tue Oct 27 13:43:30 UTC 2015
Hi Devs,
Olaf Meeuwissen writes:
> Hi Luiz, Devs,
>
> Luiz Angelo Daros de Luca writes:
>
>> Olaf and Yurii,
>>
>> The sys/type.h problem is the same I face while compiling with musl
>> instead of glibc. There are just some files that miss it. I have a
>> patch for them but it still misses the ifdef around it. Check the
>> other patches that might easy your port.
>>
>> https://github.com/openwrt/packages/blob/master/utils/sane-backends/patches/
>
> I looked at the 030-musl.patch and except maybe for the backend/hp*.c
> files, all fixes seem to involve u_char and friends. Now, ./configure
> checks for their presence. If they are absent, they will be defined
> automatically for you in include/sane/config.h. If they are present,
> these defines are not provided and whoever uses them will need to add an
> #include for a header that does, normally sys/types.h. However, that
> header may be absent itself, so ...
>
> Somehow, I get the impression that ./configure is only doing half of
> this job. On the other hand, (blindly?) including sys/types.h in the
> config.h file seems pretty heavy handed too. Moreover, that file may
> not be there.
>
> Now, if the issue is just u_char and friends, can't we just simply avoid
> the whole issue and replace them with "unsigned char" and the like? For
> all I know that ought to work everywhere.
> A similar suggestion was made (way back) on StackOverflow[1].
>
> [1] http://stackoverflow.com/questions/1918934/is-u-char-a-standard
>
> Grepping for the ones that ./configure checks for (SANE_CHECK_U_TYPES in
> acinclude.m4) with:
>
> $ git grep -wE 'u_(char|short|int|long)' master | wc -l
> 2084
>
> that would be quite a monster patch though. Would such a patch be
> acceptable?
Following private communication with Luiz, I've decided to use his
030-musl.patch rather than replace u_TYPE with unsigned TYPE in all of
the sources.
When C libraries change their includes or someone tries to build with a
previously unused C library we will probably get to fix up another few
files that are getting a "free ride" through an implicitly included
<sys/types.h> somewhere. We'll just keep playing whack-a-mole. :-|
Hope this helps,
--
Olaf Meeuwissen, LPIC-2 FSF Associate Member since 2004-01-27
Support Free Software Support the Free Software Foundation
https://my.fsf.org/donate https://my.fsf.org/join
GnuPG key: F84A2DD9/B3C0 2F47 EA19 64F4 9F13 F43E B8A4 A88A F84A 2DD9
More information about the sane-devel
mailing list