*/
const char *yaffs_guts_c_version =
- "$Id: yaffs_guts.c,v 1.82 2009-03-09 04:24:17 charles Exp $";
+ "$Id: yaffs_guts.c,v 1.83 2009-05-25 02:27:36 charles Exp $";
#include "yportenv.h"
const yaffs_ExtendedTags *tags);
/* Other local prototypes */
+static void yaffs_UpdateParent(yaffs_Object *obj);
static int yaffs_UnlinkObject(yaffs_Object *obj);
static int yaffs_ObjectHasCachedWriteData(yaffs_Object *obj);
in = NULL;
}
+ yaffs_UpdateParent(parent);
}
return in;
existingTarget->objectId);
yaffs_UnlinkObject(existingTarget);
}
+ yaffs_UpdateParent(oldDir);
+ if(newDir != oldDir)
+ yaffs_UpdateParent(newDir);
return yaffs_ChangeObjectName(obj, newDir, newName, 1, 0);
}
immediateDeletion = 1;
#endif
+ if(obj)
+ yaffs_UpdateParent(obj->parent);
+
if (obj->variantType == YAFFS_OBJECT_TYPE_HARDLINK) {
return yaffs_DeleteHardLink(obj);
} else if (!ylist_empty(&obj->hardLinks)) {
}
}
+/*
+ *yaffs_UpdateParent() handles fixing a directories mtime when a new
+ * link (ie. name) is created or deleted in the directory.
+ *
+ * ie.
+ * create dir/a : update dir's mtime
+ * rm dir/a: update dir's mtime
+ * modify dir/a: don't update dir's mtimme.
+ */
+
+static void yaffs_UpdateParent(yaffs_Object *obj)
+{
+ if(!obj)
+ return;
+
+ obj->dirty = 1;
+ obj->yst_mtime = Y_CURRENT_TIME;
+
+ yaffs_UpdateObjectHeader(obj,NULL,0,0,0);
+}
static void yaffs_RemoveObjectFromDirectory(yaffs_Object *obj)
{
ylist_del_init(&obj->siblings);
obj->parent = NULL;
-
+
yaffs_VerifyDirectory(parent);
}
-
static void yaffs_AddObjectToDirectory(yaffs_Object *directory,
yaffs_Object *obj)
{