
On 02/17/2013 01:58 PM, Ian Lynagh wrote:
Hi Nathan,
On Tue, Jan 29, 2013 at 07:45:34PM +0100, Nathan Hüsken wrote:
2 is difficult. To correctly test if _POSIX_VDISABLE is supported, a program must be compiled and run which test if _POSIX_VDISABLE is != -1. But that is not possible for cross compilation, because the program can not be run. Suggestion what should be done here? The patch did: +#ifdef __ANDROID__ +-- the android ndk does not define this symbol +#define _POSIX_VDISABLE _PC_VDISABLE +#endif so can't you test whether compiling int i = _POSIX_VDISABLE; succeeds? I assume that that will fail on Android with an undefined variable error. Or we could just do #if !defined(_POSIX_VDISABLE) && defined(_PC_VDISABLE) #define _POSIX_VDISABLE _PC_VDISABLE #endif
Are you sure the patch is right, though? On Linux I have _POSIX_VDISABLE == 0 and _PC_VDISABLE == 8. No, I am not really sure what the right thing to do is. When I google, somewhere it said that _POSIX_VDISABLE must not necessarily be a define. And even if it exists, a value of "-1" means that is should not be used.
I am just reading here [1] that my approach of using _PC_VDISABLE is _not_ correct. [1] says, that one should use the return value of pathconf(path,_PC_VDISABLE), but only if it is not "-1". A general solution should consider, there might not be a value to disable special characters might not exists. And I have not Idea what to do then. Regards, Nathan [1]: http://books.google.com/books?id=rHyMRyDEG3gC&pg=PA157&dq=_POSIX_VDISABLE&hl=de&sa=X&ei=qA8hUcXcJ4S42gWWiYGABQ&ved=0CDQQ6AEwAA#v=onepage&q=_POSIX_VDISABLE&f=false