*** empty log message ***
[yaffs/.git] / yaffs_guts.c
index 5784d7956cc63d008c4df3045968e0839c90f70a..7afb1406a444114a9081c1d66d5b6f4af7145389 100644 (file)
@@ -14,7 +14,7 @@
  */
  //yaffs_guts.c
 
-const char *yaffs_guts_c_version="$Id: yaffs_guts.c,v 1.25 2003-05-20 22:30:35 charles Exp $";
+const char *yaffs_guts_c_version="$Id: yaffs_guts.c,v 1.28 2003-08-20 03:53:39 charles Exp $";
 
 #include "yportenv.h"
 
@@ -782,11 +782,16 @@ static void yaffs_FreeTnode(yaffs_Device*dev, yaffs_Tnode *tn)
 static void yaffs_DeinitialiseTnodes(yaffs_Device*dev)
 {
        // Free the list of allocated tnodes
-       
+       yaffs_TnodeList *tmp;
+               
        while(dev->allocatedTnodeList)
        {
+               tmp =  dev->allocatedTnodeList->next;
+
                YFREE(dev->allocatedTnodeList->tnodes);
-               dev->allocatedTnodeList =  dev->allocatedTnodeList->next;
+               YFREE(dev->allocatedTnodeList);
+               dev->allocatedTnodeList = tmp;
+               
        }
        
        dev->freeTnodes = NULL;
@@ -1452,10 +1457,15 @@ static void yaffs_DeinitialiseObjects(yaffs_Device *dev)
 {
        // Free the list of allocated Objects
        
+       yaffs_ObjectList *tmp;
+       
        while( dev->allocatedObjectList)
        {
+               tmp =  dev->allocatedObjectList->next;
                YFREE(dev->allocatedObjectList->objects);
-               dev->allocatedObjectList =  dev->allocatedObjectList->next;
+               YFREE(dev->allocatedObjectList);
+               
+               dev->allocatedObjectList =  tmp;
        }
        
        dev->freeObjects = NULL;
@@ -1625,7 +1635,12 @@ yaffs_Object *yaffs_CreateNewObject(yaffs_Device *dev,int number,yaffs_ObjectTyp
                theObject->win_ctime[1] = theObject->win_mtime[1] = theObject->win_atime[1];
 
 #else
-               theObject->st_atime = theObject->st_mtime =     theObject->st_ctime = CURRENT_TIME;
+
+#if defined(CONFIG_KERNEL_2_5)
+               theObject->st_atime = theObject->st_mtime =     theObject->st_ctime = CURRENT_TIME.tv_sec;              
+#else
+               theObject->st_atime = theObject->st_mtime =     theObject->st_ctime = CURRENT_TIME;             
+#endif
 #endif
                switch(type)
                {
@@ -1728,8 +1743,12 @@ yaffs_Object *yaffs_MknodObject( yaffs_ObjectType type,
                in->win_ctime[0] = in->win_mtime[0] = in->win_atime[0];
                in->win_ctime[1] = in->win_mtime[1] = in->win_atime[0];
                
+#else
+#if defined(CONFIG_KERNEL_2_5)
+               in->st_atime = in->st_mtime = in->st_ctime = CURRENT_TIME.tv_sec;
 #else
                in->st_atime = in->st_mtime = in->st_ctime = CURRENT_TIME;
+#endif
                in->st_rdev  = rdev;
                in->st_uid   = uid;
                in->st_gid   = gid;
@@ -3692,8 +3711,12 @@ int yaffs_FlushFile(yaffs_Object *in, int updateTime)
                {
 #ifdef CONFIG_YAFFS_WINCE
                        yfsd_WinFileTimeNow(in->win_mtime);
+#else
+#if defined(CONFIG_KERNEL_2_5)
+                       in->st_mtime = CURRENT_TIME.tv_sec;
 #else
                        in->st_mtime = CURRENT_TIME;
+#endif
 #endif
                }
 
@@ -4546,9 +4569,15 @@ int yaffs_SetAttributes(yaffs_Object *obj, struct iattr *attr)
        if(valid & ATTR_UID) obj->st_uid = attr->ia_uid;
        if(valid & ATTR_GID) obj->st_gid = attr->ia_gid;
        
+#if defined(CONFIG_KERNEL_2_5)
+       if(valid & ATTR_ATIME) obj->st_atime = attr->ia_atime.tv_sec;
+       if(valid & ATTR_CTIME) obj->st_ctime = attr->ia_ctime.tv_sec;
+       if(valid & ATTR_MTIME) obj->st_mtime = attr->ia_mtime.tv_sec;
+#else
        if(valid & ATTR_ATIME) obj->st_atime = attr->ia_atime;
        if(valid & ATTR_CTIME) obj->st_ctime = attr->ia_ctime;
        if(valid & ATTR_MTIME) obj->st_mtime = attr->ia_mtime;
+#endif
        
        if(valid & ATTR_SIZE) yaffs_ResizeFile(obj,attr->ia_size);
        
@@ -4565,10 +4594,15 @@ int yaffs_GetAttributes(yaffs_Object *obj, struct iattr *attr)
        attr->ia_uid = obj->st_uid;             valid |= ATTR_UID;
        attr->ia_gid = obj->st_gid;             valid |= ATTR_GID;
        
+#if defined(CONFIG_KERNEL_2_5)
+       attr->ia_atime.tv_sec = obj->st_atime;  valid |= ATTR_ATIME;
+       attr->ia_ctime.tv_sec = obj->st_ctime;  valid |= ATTR_CTIME;
+       attr->ia_mtime.tv_sec = obj->st_mtime;  valid |= ATTR_MTIME;
+#else  
        attr->ia_atime = obj->st_atime; valid |= ATTR_ATIME;
        attr->ia_ctime = obj->st_ctime; valid |= ATTR_CTIME;
        attr->ia_mtime = obj->st_mtime; valid |= ATTR_MTIME;
-       
+#endif 
        attr->ia_size = yaffs_GetFileSize(obj); valid |= ATTR_SIZE;
        
        attr->ia_valid = valid;