Getdents system call was superseded with with getdents64 in Linux 2.4 (January 2001). New architectures, such as 64-Bit ARM opt out not to support legacy system calls, and getdents is one of them. Since getdents64 has been supported for over a decade, I don't think adding ifdef to support both makes sense. Using getdents64 cleans up the current _posixsubprocess code as the entries are long long everywhere. The attached patch makes _posixsubprocess module compile on 64-Bit ARM and causes on regressions on the python3.3 testsuite on x86 and x86_64
looks sane and cleaner than the silly x32 hack in there, i'll take care of it. FYI - your patch forgot to add the "unsigned char d_type;" struct member before name. fixed and applied. When i wrote that code I was probably assuming that sticking with the ancient syscall made more sense for compatibility. I'm happy to see that compatibility goes the other way on this one.