[Fontconfig] How necessary is 'scandir'?

Akira TAGOH akira at tagoh.org
Sun Feb 22 22:26:21 PST 2015


dropped scandir check (as well as -Werror) and its use in the code. tested
on NetBSD. not sure if there are any platforms where opendir/readdir stuff
doesn't work.. if any, please let me know.

On Mon, Feb 16, 2015 at 12:03 PM, Akira TAGOH <akira at tagoh.org> wrote:

> the background is, we've added -Werror to address the build issue on older
> glibc against posix_fadvise()[1]. the error stopped on scandir() check was
> a side-effect coming from it. maybe it was wrong way. though I had no idea
> to address it other than that way.
>
> let me take a look again and think more.
>
> [1] https://bugs.freedesktop.org/show_bug.cgi?id=52573
>
> On Sun, Feb 15, 2015 at 10:01 PM, Raimund Steger <rs at mytum.de> wrote:
>
>> On 02/12/15 03:59, Akira TAGOH wrote:
>>
>>> If the own scandir works on the platforms where don't have POSIX version
>>> of scandir, we could drop that check. if anyone confirm, that would be
>>> appreciated.
>>>
>>
>> The question is, for what cases would we need our own scandir. Because:
>>
>> (1) On Win32, FcDirChecksum isn't used (we use FcStat/GetFileAttributesEx
>> only)
>>
>> (2) On all platforms we supported before 38ab7ab2fbd83c0c62e4b78302b5fe89da0cb79e
>> (where the configure check was introduced), scandir *is* available. Either
>> the POSIX one (in the sense of [1]) which uses dirent comparators or the
>> one that uses void* [2].
>>
>> Because of that, we wouldn't need to specifically test for [1] and could
>> just assume it's there, avoiding clashes with UNIX compilers that can't
>> execute our test because of -Werror.
>>
>> Now what about platforms where there is indeed neither
>> GetFileAttributesEx nor any version of scandir? I admit that these were
>> probably supported before 0ac6c98294d666762960824d39329459b22b48b7 (
>> https://bugs.freedesktop.org/show_bug.cgi?id=25535) and aren't now. If
>> we wanted to support those, then yes, we would need to check for both
>> scandir versions, although the check for the POSIX variant could be a
>> simple fallback that doesn't need -Werror. And even then, we could probably
>> simply ignore the result of FcIsFsMtimeBroken as the change addressed FAT
>> file systems on UNIX/Linux only. I mean, the set of UNIX/Linux systems that
>> don't have scandir and at the same time use a font directory on FAT is
>> probably rather small...
>>
>> Raimund
>>
>>
>> [1] http://pubs.opengroup.org/onlinepubs/9699919799/
>> functions/alphasort.html
>> [2] http://netbsd.gw.com/cgi-bin/man-cgi?scandir+3+NetBSD-current
>>
>>
>>
>>
>>
>>
>>  On Thu, Feb 12, 2015 at 7:55 AM, Raimund Steger <rs at mytum.de
>>> <mailto:rs at mytum.de>> wrote:
>>>
>>>     On 02/11/15 19:40, Michael Felt wrote:
>>>
>>>         Yes, xlC, and I was hoping it was just a stray gcc flag.
>>>
>>>
>>>     If that's indeed the reason, you can:
>>>
>>>     (0) To confirm whether it is, replace WERROR_CFLAGS="-Werror" with
>>>     WERROR_CFLAGS="" in configure.ac <http://configure.ac>, run
>>>     autoconf, configure etc.
>>>
>>>     If that works:
>>>
>>>     (1) find an equivalent flag for XL C and create a patch, just like
>>>     the one for SunPRO [1]. If I understand the documentation right [2],
>>>     this could be "-qmaxerr=1:w" (increase the number 1 if some
>>>     'statement not reached' stuff gets in your way), but it's difficult
>>>     to say without an actual installation to test.
>>>
>>>     (2) create a patch similar to (1), but set WERROR_CFLAGS="" or
>>>     disable the scandir check altogether when compiling with XL C. I
>>>     believe before [3] there wasn't even a scandir check, and the change
>>>     was only to silence warnings on NetBSD if I read the commit right. I
>>>     doubt you will have any problem on AIX.
>>>
>>>     Actually I'm still somewhat unhappy that configure wants to
>>>     acknowledge the POSIX version of scandir specially when only
>>>     recognizing the NetBSD version would probably have sufficed ...
>>>     would have saved us a lot of if's, maybe even the one for $os_win32.
>>>
>>>     But I'll shut my mouth again.
>>>
>>>     -Raimund
>>>
>>>
>>>
>>>     [1]
>>>     http://cgit.freedesktop.org/__fontconfig/commit/?id=__
>>> 694368667a15341ea30b37a36e9540__e6b1492680
>>>     <http://cgit.freedesktop.org/fontconfig/commit/?id=
>>> 694368667a15341ea30b37a36e9540e6b1492680>
>>>     [2]
>>>     http://www-01.ibm.com/support/__knowledgecenter/SSGH2K_13.1.
>>> 0/__com.ibm.xlc131.aix.doc/__compiler_ref/opt_maxerr.html?__lang=en
>>>     <http://www-01.ibm.com/support/knowledgecenter/
>>> SSGH2K_13.1.0/com.ibm.xlc131.aix.doc/compiler_ref/opt_
>>> maxerr.html?lang=en>
>>>     [3]
>>>     http://cgit.freedesktop.org/__fontconfig/commit/?id=__
>>> 38ab7ab2fbd83c0c62e4b78302b5fe__89da0cb79e
>>>     <http://cgit.freedesktop.org/fontconfig/commit/?id=
>>> 38ab7ab2fbd83c0c62e4b78302b5fe89da0cb79e>
>>>
>>>
>>>
>>>
>>>
>>>
>>> --
>>> Akira TAGOH
>>>
>>
>>
>> --
>> Worringer Str 31 Duesseldorf 40211 DE  home: <rs at mytum.de>
>> +49-179-2981632 icq 16845346           work: <rs at interface-ag.de>
>>
>
>
>
> --
> Akira TAGOH
>



-- 
Akira TAGOH
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/fontconfig/attachments/20150223/0f51374b/attachment.html>


More information about the Fontconfig mailing list