termux-packages/packages/python/posixmodule.c.patch

101 lines
3.3 KiB
Diff

diff -u -r ../Python-3.4.1/Modules/posixmodule.c ./Modules/posixmodule.c
--- ../Python-3.4.1/Modules/posixmodule.c 2014-05-19 07:19:39.000000000 +0200
+++ ./Modules/posixmodule.c 2014-06-25 21:42:11.191524129 +0200
@@ -6048,7 +6048,7 @@
if (_Py_set_inheritable(master_fd, 0, NULL) < 0)
goto posix_error;
-#if !defined(__CYGWIN__) && !defined(HAVE_DEV_PTC)
+#if !defined(__CYGWIN__) && !defined(HAVE_DEV_PTC) && !defined(__ANDROID__)
ioctl(slave_fd, I_PUSH, "ptem"); /* push ptem */
ioctl(slave_fd, I_PUSH, "ldterm"); /* push ldterm */
#ifndef __hpux
@@ -9162,7 +9162,12 @@
needed definitions in sys/statvfs.h */
#define _SVID3
#endif
-#include <sys/statvfs.h>
+#ifdef __ANDROID__
+# include <sys/vfs.h>
+# define statvfs statfs
+#else
+# include <sys/statvfs.h>
+#endif
static PyObject*
_pystatvfs_fromstructstatvfs(struct statvfs st) {
@@ -9178,9 +9183,15 @@
PyStructSequence_SET_ITEM(v, 4, PyLong_FromLong((long) st.f_bavail));
PyStructSequence_SET_ITEM(v, 5, PyLong_FromLong((long) st.f_files));
PyStructSequence_SET_ITEM(v, 6, PyLong_FromLong((long) st.f_ffree));
+#ifdef __ANDROID__
+ PyStructSequence_SET_ITEM(v, 7, PyLong_FromLong((long) st.f_bavail));
+ PyStructSequence_SET_ITEM(v, 8, PyLong_FromLong((long) st.f_flags));
+ PyStructSequence_SET_ITEM(v, 9, PyLong_FromLong((long) st.f_namelen));
+#else
PyStructSequence_SET_ITEM(v, 7, PyLong_FromLong((long) st.f_favail));
PyStructSequence_SET_ITEM(v, 8, PyLong_FromLong((long) st.f_flag));
PyStructSequence_SET_ITEM(v, 9, PyLong_FromLong((long) st.f_namemax));
+#endif
#else
PyStructSequence_SET_ITEM(v, 0, PyLong_FromLong((long) st.f_bsize));
PyStructSequence_SET_ITEM(v, 1, PyLong_FromLong((long) st.f_frsize));
@@ -9194,11 +9205,18 @@
PyLong_FromLongLong((PY_LONG_LONG) st.f_files));
PyStructSequence_SET_ITEM(v, 6,
PyLong_FromLongLong((PY_LONG_LONG) st.f_ffree));
+#ifdef __ANDROID__
+ PyStructSequence_SET_ITEM(v, 7,
+ PyLong_FromLongLong((PY_LONG_LONG) st.b_favail));
+ PyStructSequence_SET_ITEM(v, 8, PyLong_FromLong((long) st.f_flags));
+ PyStructSequence_SET_ITEM(v, 9, PyLong_FromLong((long) st.f_namelen));
+#else
PyStructSequence_SET_ITEM(v, 7,
PyLong_FromLongLong((PY_LONG_LONG) st.f_favail));
PyStructSequence_SET_ITEM(v, 8, PyLong_FromLong((long) st.f_flag));
PyStructSequence_SET_ITEM(v, 9, PyLong_FromLong((long) st.f_namemax));
#endif
+#endif
if (PyErr_Occurred()) {
Py_DECREF(v);
return NULL;
@@ -9221,7 +9239,11 @@
if (!PyArg_ParseTuple(args, "i:fstatvfs", &fd))
return NULL;
Py_BEGIN_ALLOW_THREADS
+#ifdef __ANDROID__
+ res = fstatfs(fd, &st);
+#else
res = fstatvfs(fd, &st);
+#endif
Py_END_ALLOW_THREADS
if (res != 0)
return posix_error();
@@ -9232,7 +9254,13 @@
#if defined(HAVE_STATVFS) && defined(HAVE_SYS_STATVFS_H)
-#include <sys/statvfs.h>
+#ifdef __ANDROID__
+# include <sys/vfs.h>
+# define statvfs statfs
+#else
+# include <sys/statvfs.h>
+#endif
+
PyDoc_STRVAR(posix_statvfs__doc__,
"statvfs(path)\n\n\
@@ -9271,7 +9299,11 @@
goto exit;
}
#endif
+#ifdef __ANDROID__
+ result = fstatfs(path.fd, &st);
+#else
result = fstatvfs(path.fd, &st);
+#endif
}
else
#endif