Mercurial > hg
changeset 31564:102f291807c9
osutil: export a "getfstype" method
This patch exports the "getfstype" method. So we can use it to enable
hardlinks for known safe filesystems.
The patch was tested manually via debugshell on a Linux system.
"mercurial.osutil.getfstype" works as expected. It's hard to mount
filesystem on user-space easily. I will add a test for real hardlink support
to indirectly test this patch, after turning on real hardlinks support for
certain whitelisted filesystems.
author | Jun Wu <quark@fb.com> |
---|---|
date | Mon, 20 Mar 2017 16:34:12 -0700 |
parents | cc3ec3027695 |
children | 553ad16b274f |
files | mercurial/osutil.c |
diffstat | 1 files changed, 18 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/osutil.c Mon Mar 20 16:24:59 2017 -0700 +++ b/mercurial/osutil.c Mon Mar 20 16:34:12 2017 -0700 @@ -1079,6 +1079,20 @@ /* End of Linux filesystems */ return NULL; } + +static PyObject *pygetfstype(PyObject *self, PyObject *args) +{ + const char *path = NULL; + if (!PyArg_ParseTuple(args, "s", &path)) + return NULL; + + const char *type = getfstype(path); + if (type == NULL) + Py_RETURN_NONE; + + PyObject *result = Py_BuildValue("s", type); + return result; +} #endif /* def HAVE_STATFS */ #endif /* ndef _WIN32 */ @@ -1257,6 +1271,10 @@ {"setprocname", (PyCFunction)setprocname, METH_VARARGS, "set process title (best-effort)\n"}, #endif +#ifdef HAVE_STATFS + {"getfstype", (PyCFunction)pygetfstype, METH_VARARGS, + "get filesystem type (best-effort)\n"}, +#endif #endif /* ndef _WIN32 */ #ifdef __APPLE__ {