[PATCH 6 of 6] osutil: export a "getfstype" method
Jun Wu
quark at fb.com
Mon Mar 20 20:04:39 EDT 2017
# HG changeset patch
# User Jun Wu <quark at fb.com>
# Date 1490052852 25200
# Mon Mar 20 16:34:12 2017 -0700
# Node ID c8693bc1191b3ac1af0a67e97068777b13cfa672
# Parent f710d54d1985975d7d37aa58e9d5740ebdcf5b7b
# Available At https://bitbucket.org/quark-zju/hg-draft
# hg pull https://bitbucket.org/quark-zju/hg-draft -r c8693bc1191b
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.
diff --git a/mercurial/osutil.c b/mercurial/osutil.c
--- a/mercurial/osutil.c
+++ b/mercurial/osutil.c
@@ -1080,4 +1080,18 @@ const char *getfstype(const char *path)
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 */
@@ -1258,4 +1272,8 @@ static PyMethodDef methods[] = {
"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__
More information about the Mercurial-devel
mailing list