2012/6/2 Igor Stasenko <[email protected]>:
> On 2 June 2012 17:26, Stéphane Ducasse <[email protected]> wrote:
>
>> Don't you think that this is what we are trying to do since ages: improving 
>> the infrastructure
>> but not by piling junk on junk.
>
> hehe stef.. I can say this happens everywhere. Piles of junk on top of
> each other..
>
> Like figuring out, why output of readdir() function having strange results..
> To figure it out, you have to read this code, and understand what's going on:
>  this is part of standard C library on mac (/usr/include/dirent.h on
> your machine, you can check it)
>
>
> __BEGIN_DECLS
> #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
> int alphasort(const void *, const void *) __DARWIN_INODE64(alphasort);
> #endif /* not POSIX */
> int closedir(DIR *) __DARWIN_ALIAS(closedir);
> #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
> int getdirentries(int, char *, int, long *)
> #if __DARWIN_64_BIT_INO_T
> /*
>  * getdirentries() doesn't work when 64-bit inodes is in effect, so we
>  * generate a link error.
>  */
>                                                
> __asm("_getdirentries_is_not_available_when_64_bit_inodes_are_in_effect")
> #else /* !__DARWIN_64_BIT_INO_T */
>                                                
> __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,
> __IPHONE_2_0,__IPHONE_2_0)
> #endif /* __DARWIN_64_BIT_INO_T */
> ;
> #endif /* not POSIX */
> DIR *opendir(const char *) __DARWIN_ALIAS_I(opendir);
> #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
> DIR *__opendir2(const char *, int) __DARWIN_ALIAS_I(__opendir2);
> #endif /* not POSIX */
> struct dirent *readdir(DIR *) __DARWIN_INODE64(readdir);
> int readdir_r(DIR *, struct dirent *, struct dirent **)
> __DARWIN_INODE64(readdir_r);
> void rewinddir(DIR *) __DARWIN_ALIAS_I(rewinddir);
> #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
> int scandir(const char *, struct dirent ***,
>    int (*)(struct dirent *), int (*)(const void *, const void *))
> __DARWIN_INODE64(scandir);
> #ifdef __BLOCKS__
> int scandir_b(const char *, struct dirent ***,
>    int (^)(struct dirent *), int (^)(const void *, const void *))
> __DARWIN_INODE64(scandir_b) __OSX_AVAILABLE_STARTING(__MAC_10_6,
> __IPHONE_3_2);
> #endif /* __BLOCKS__ */
> #endif /* not POSIX */
> void seekdir(DIR *, long) __DARWIN_ALIAS_I(seekdir);
> long telldir(DIR *) __DARWIN_ALIAS_I(telldir);
> __END_DECLS
>
> #endif /* !KERNEL */
>

Ouch, Igor, you gonna give us a headache.
That's exatly the kind of niceties that makes FFI impracticle without
a pre-processor, remember our discussion?

Nicolas

Reply via email to