mercurial/cext/parsers.c
changeset 48253 948570aa7630
parent 48252 602c8e8411f5
child 48260 269ff8978086
--- a/mercurial/cext/parsers.c	Mon Oct 18 20:02:15 2021 +0200
+++ b/mercurial/cext/parsers.c	Mon Oct 18 20:02:05 2021 +0200
@@ -59,14 +59,12 @@
 	int size;
 	int mtime;
 	PyObject *parentfiledata;
+	PyObject *fallback_exec;
+	PyObject *fallback_symlink;
 	static char *keywords_name[] = {
-	    "wc_tracked",
-	    "p1_tracked",
-	    "p2_info",
-	    "has_meaningful_data",
-	    "has_meaningful_mtime",
-	    "parentfiledata",
-	    NULL,
+	    "wc_tracked",          "p1_tracked",           "p2_info",
+	    "has_meaningful_data", "has_meaningful_mtime", "parentfiledata",
+	    "fallback_exec",       "fallback_symlink",     NULL,
 	};
 	wc_tracked = 0;
 	p1_tracked = 0;
@@ -74,10 +72,13 @@
 	has_meaningful_mtime = 1;
 	has_meaningful_data = 1;
 	parentfiledata = Py_None;
-	if (!PyArg_ParseTupleAndKeywords(
-	        args, kwds, "|iiiiiO", keywords_name, &wc_tracked, &p1_tracked,
-	        &p2_info, &has_meaningful_data, &has_meaningful_mtime,
-	        &parentfiledata)) {
+	fallback_exec = Py_None;
+	fallback_symlink = Py_None;
+	if (!PyArg_ParseTupleAndKeywords(args, kwds, "|iiiiiOOO", keywords_name,
+	                                 &wc_tracked, &p1_tracked, &p2_info,
+	                                 &has_meaningful_data,
+	                                 &has_meaningful_mtime, &parentfiledata,
+	                                 &fallback_exec, &fallback_symlink)) {
 		return NULL;
 	}
 	t = (dirstateItemObject *)subtype->tp_alloc(subtype, 1);
@@ -96,6 +97,19 @@
 		t->flags |= dirstate_flag_p2_info;
 	}
 
+	if (fallback_exec != Py_None) {
+		t->flags |= dirstate_flag_has_fallback_exec;
+		if (PyObject_IsTrue(fallback_exec)) {
+			t->flags |= dirstate_flag_fallback_exec;
+		}
+	}
+	if (fallback_symlink != Py_None) {
+		t->flags |= dirstate_flag_has_fallback_symlink;
+		if (PyObject_IsTrue(fallback_symlink)) {
+			t->flags |= dirstate_flag_fallback_symlink;
+		}
+	}
+
 	if (parentfiledata != Py_None) {
 		if (!PyTuple_CheckExact(parentfiledata)) {
 			PyErr_SetString(