mercurial/cext/parsers.c
changeset 48244 f7fd629ffb98
parent 48234 7e78c72ee3ea
child 48261 1730b2fceaa1
equal deleted inserted replaced
48243:0524c1359bfc 48244:f7fd629ffb98
   117 	} else {
   117 	} else {
   118 		t->mode = 0;
   118 		t->mode = 0;
   119 		t->size = 0;
   119 		t->size = 0;
   120 	}
   120 	}
   121 	if (has_meaningful_mtime) {
   121 	if (has_meaningful_mtime) {
   122 		t->flags |= dirstate_flag_has_meaningful_mtime;
   122 		t->flags |= dirstate_flag_has_file_mtime;
   123 		t->mtime = mtime;
   123 		t->mtime = mtime;
   124 	} else {
   124 	} else {
   125 		t->mtime = 0;
   125 		t->mtime = 0;
   126 	}
   126 	}
   127 	return (PyObject *)t;
   127 	return (PyObject *)t;
   223 
   223 
   224 static inline int dirstate_item_c_v1_mtime(dirstateItemObject *self)
   224 static inline int dirstate_item_c_v1_mtime(dirstateItemObject *self)
   225 {
   225 {
   226 	if (dirstate_item_c_removed(self)) {
   226 	if (dirstate_item_c_removed(self)) {
   227 		return 0;
   227 		return 0;
   228 	} else if (!(self->flags & dirstate_flag_has_meaningful_mtime) ||
   228 	} else if (!(self->flags & dirstate_flag_has_file_mtime) ||
   229 	           !(self->flags & dirstate_flag_p1_tracked) ||
   229 	           !(self->flags & dirstate_flag_p1_tracked) ||
   230 	           !(self->flags & dirstate_flag_wc_tracked) ||
   230 	           !(self->flags & dirstate_flag_wc_tracked) ||
   231 	           (self->flags & dirstate_flag_p2_info)) {
   231 	           (self->flags & dirstate_flag_p2_info)) {
   232 		return ambiguous_time;
   232 		return ambiguous_time;
   233 	} else {
   233 	} else {
   332 			t->size = size;
   332 			t->size = size;
   333 		} else {
   333 		} else {
   334 			t->flags = (dirstate_flag_wc_tracked |
   334 			t->flags = (dirstate_flag_wc_tracked |
   335 			            dirstate_flag_p1_tracked |
   335 			            dirstate_flag_p1_tracked |
   336 			            dirstate_flag_has_meaningful_data |
   336 			            dirstate_flag_has_meaningful_data |
   337 			            dirstate_flag_has_meaningful_mtime);
   337 			            dirstate_flag_has_file_mtime);
   338 			t->mode = mode;
   338 			t->mode = mode;
   339 			t->size = size;
   339 			t->size = size;
   340 			t->mtime = mtime;
   340 			t->mtime = mtime;
   341 		}
   341 		}
   342 	} else {
   342 	} else {
   393 
   393 
   394 /* This means the next status call will have to actually check its content
   394 /* This means the next status call will have to actually check its content
   395    to make sure it is correct. */
   395    to make sure it is correct. */
   396 static PyObject *dirstate_item_set_possibly_dirty(dirstateItemObject *self)
   396 static PyObject *dirstate_item_set_possibly_dirty(dirstateItemObject *self)
   397 {
   397 {
   398 	self->flags &= ~dirstate_flag_has_meaningful_mtime;
   398 	self->flags &= ~dirstate_flag_has_file_mtime;
   399 	Py_RETURN_NONE;
   399 	Py_RETURN_NONE;
   400 }
   400 }
   401 
   401 
   402 /* See docstring of the python implementation for details */
   402 /* See docstring of the python implementation for details */
   403 static PyObject *dirstate_item_set_clean(dirstateItemObject *self,
   403 static PyObject *dirstate_item_set_clean(dirstateItemObject *self,
   407 	if (!PyArg_ParseTuple(args, "iii", &mode, &size, &mtime)) {
   407 	if (!PyArg_ParseTuple(args, "iii", &mode, &size, &mtime)) {
   408 		return NULL;
   408 		return NULL;
   409 	}
   409 	}
   410 	self->flags = dirstate_flag_wc_tracked | dirstate_flag_p1_tracked |
   410 	self->flags = dirstate_flag_wc_tracked | dirstate_flag_p1_tracked |
   411 	              dirstate_flag_has_meaningful_data |
   411 	              dirstate_flag_has_meaningful_data |
   412 	              dirstate_flag_has_meaningful_mtime;
   412 	              dirstate_flag_has_file_mtime;
   413 	self->mode = mode;
   413 	self->mode = mode;
   414 	self->size = size;
   414 	self->size = size;
   415 	self->mtime = mtime;
   415 	self->mtime = mtime;
   416 	Py_RETURN_NONE;
   416 	Py_RETURN_NONE;
   417 }
   417 }
   418 
   418 
   419 static PyObject *dirstate_item_set_tracked(dirstateItemObject *self)
   419 static PyObject *dirstate_item_set_tracked(dirstateItemObject *self)
   420 {
   420 {
   421 	self->flags |= dirstate_flag_wc_tracked;
   421 	self->flags |= dirstate_flag_wc_tracked;
   422 	self->flags &= ~dirstate_flag_has_meaningful_mtime;
   422 	self->flags &= ~dirstate_flag_has_file_mtime;
   423 	Py_RETURN_NONE;
   423 	Py_RETURN_NONE;
   424 }
   424 }
   425 
   425 
   426 static PyObject *dirstate_item_set_untracked(dirstateItemObject *self)
   426 static PyObject *dirstate_item_set_untracked(dirstateItemObject *self)
   427 {
   427 {
   435 static PyObject *dirstate_item_drop_merge_data(dirstateItemObject *self)
   435 static PyObject *dirstate_item_drop_merge_data(dirstateItemObject *self)
   436 {
   436 {
   437 	if (self->flags & dirstate_flag_p2_info) {
   437 	if (self->flags & dirstate_flag_p2_info) {
   438 		self->flags &= ~(dirstate_flag_p2_info |
   438 		self->flags &= ~(dirstate_flag_p2_info |
   439 		                 dirstate_flag_has_meaningful_data |
   439 		                 dirstate_flag_has_meaningful_data |
   440 		                 dirstate_flag_has_meaningful_mtime);
   440 		                 dirstate_flag_has_file_mtime);
   441 		self->mode = 0;
   441 		self->mode = 0;
   442 		self->mtime = 0;
   442 		self->mtime = 0;
   443 		self->size = 0;
   443 		self->size = 0;
   444 	}
   444 	}
   445 	Py_RETURN_NONE;
   445 	Py_RETURN_NONE;