projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix file header to match all the others
[yaffs2.git]
/
direct
/
yaffsfs.c
diff --git
a/direct/yaffsfs.c
b/direct/yaffsfs.c
index 914e714b412ec2ef587b6142b779a6dc99c8f09c..90046854ff29def2dc975bd03bc38173152d526a 100644
(file)
--- a/
direct/yaffsfs.c
+++ b/
direct/yaffsfs.c
@@
-1,15
+1,14
@@
/*
/*
- * YAFFS: Yet another FFS. A NAND-flash specific file system.
- * yaffsfs.c The interface functions for using YAFFS via a "direct" interface.
+ * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
*
*
- * Copyright (C) 2002 Aleph One Ltd.
+ * Copyright (C) 2002-2007 Aleph One Ltd.
+ * for Toby Churchill Ltd and Brightstar Engineering
*
* Created by Charles Manning <charles@aleph1.co.uk>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* Created by Charles Manning <charles@aleph1.co.uk>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
- *
*/
#include "yaffsfs.h"
*/
#include "yaffsfs.h"
@@
-25,7
+24,7
@@
#endif
#endif
-const char *yaffsfs_c_version="$Id: yaffsfs.c,v 1.
8 2006-02-08 22:38:24 charles
Exp $";
+const char *yaffsfs_c_version="$Id: yaffsfs.c,v 1.
17 2007-02-14 01:09:06 wookey
Exp $";
// configurationList is the list of devices that are supported
static yaffsfs_DeviceConfiguration *yaffsfs_configurationList;
// configurationList is the list of devices that are supported
static yaffsfs_DeviceConfiguration *yaffsfs_configurationList;
@@
-620,7
+619,7
@@
int yaffs_write(int fd, const void *buf, unsigned int nbyte)
}
}
-int yaffs_truncate(int fd,
unsigned in
t newSize)
+int yaffs_truncate(int fd,
off_
t newSize)
{
yaffsfs_Handle *h = NULL;
yaffs_Object *obj = NULL;
{
yaffsfs_Handle *h = NULL;
yaffs_Object *obj = NULL;
@@
-729,10
+728,6
@@
int yaffsfs_DoUnlink(const char *path,int isDirectory)
{
yaffsfs_SetError(-ENOTDIR);
}
{
yaffsfs_SetError(-ENOTDIR);
}
- else if(isDirectory && obj->variantType != YAFFS_OBJECT_TYPE_DIRECTORY)
- {
- yaffsfs_SetError(-ENOTDIR);
- }
else
{
result = yaffs_Unlink(dir,name);
else
{
result = yaffs_Unlink(dir,name);
@@
-851,7
+846,7
@@
static int yaffsfs_DoStat(yaffs_Object *obj,struct yaffs_stat *buf)
buf->st_gid = 0;;
buf->st_rdev = obj->yst_rdev;
buf->st_size = yaffs_GetObjectFileLength(obj);
buf->st_gid = 0;;
buf->st_rdev = obj->yst_rdev;
buf->st_size = yaffs_GetObjectFileLength(obj);
- buf->st_blksize = obj->myDev->nBytesPerChunk;
+ buf->st_blksize = obj->myDev->n
Data
BytesPerChunk;
buf->st_blocks = (buf->st_size + buf->st_blksize -1)/buf->st_blksize;
buf->yst_atime = obj->yst_atime;
buf->yst_ctime = obj->yst_ctime;
buf->st_blocks = (buf->st_size + buf->st_blksize -1)/buf->st_blksize;
buf->yst_atime = obj->yst_atime;
buf->yst_ctime = obj->yst_ctime;
@@
-999,13
+994,14
@@
int yaffs_fchmod(int fd, mode_t mode)
int yaffs_mkdir(const char *path, mode_t mode)
{
yaffs_Object *parent = NULL;
int yaffs_mkdir(const char *path, mode_t mode)
{
yaffs_Object *parent = NULL;
- yaffs_Object *dir;
+ yaffs_Object *dir
= NULL
;
char *name;
int retVal= -1;
yaffsfs_Lock();
parent = yaffsfs_FindDirectory(NULL,path,&name,0);
char *name;
int retVal= -1;
yaffsfs_Lock();
parent = yaffsfs_FindDirectory(NULL,path,&name,0);
- dir = yaffs_MknodDirectory(parent,name,mode,0,0);
+ if(parent)
+ dir = yaffs_MknodDirectory(parent,name,mode,0,0);
if(dir)
{
retVal = 0;
if(dir)
{
retVal = 0;
@@
-1075,6
+1071,10
@@
int yaffs_unmount(const char *path)
{
int i;
int inUse;
{
int i;
int inUse;
+
+ yaffs_FlushEntireDeviceCache(dev);
+ yaffs_CheckpointSave(dev);
+
for(i = inUse = 0; i < YAFFSFS_N_HANDLES && !inUse; i++)
{
if(yaffsfs_handle[i].inUse && yaffsfs_handle[i].obj->myDev == dev)
for(i = inUse = 0; i < YAFFSFS_N_HANDLES && !inUse; i++)
{
if(yaffsfs_handle[i].inUse && yaffsfs_handle[i].obj->myDev == dev)
@@
-1113,9
+1113,9
@@
int yaffs_unmount(const char *path)
}
}
-off_t yaffs_freespace(const char *path)
+
l
off_t yaffs_freespace(const char *path)
{
{
- off_t retVal=-1;
+
l
off_t retVal=-1;
yaffs_Device *dev=NULL;
char *dummy;
yaffs_Device *dev=NULL;
char *dummy;
@@
-1124,7
+1124,7
@@
off_t yaffs_freespace(const char *path)
if(dev && dev->isMounted)
{
retVal = yaffs_GetNumberOfFreeChunks(dev);
if(dev && dev->isMounted)
{
retVal = yaffs_GetNumberOfFreeChunks(dev);
- retVal *= dev->nBytesPerChunk;
+ retVal *= dev->n
Data
BytesPerChunk;
}
else
}
else
@@
-1297,8
+1297,14
@@
struct yaffs_dirent *yaffs_readdir(yaffs_DIR *dirp)
yaffsfs_SetError(0);
if(dsc->nextReturn){
dsc->de.d_ino = yaffs_GetEquivalentObject(dsc->nextReturn)->objectId;
yaffsfs_SetError(0);
if(dsc->nextReturn){
dsc->de.d_ino = yaffs_GetEquivalentObject(dsc->nextReturn)->objectId;
+ dsc->de.d_dont_use = (unsigned)dsc->nextReturn;
dsc->de.d_off = dsc->offset++;
dsc->de.d_off = dsc->offset++;
- yaffs_GetObjectName(dsc->nextReturn,dsc->de.d_name,NAME_MAX+1);
+ yaffs_GetObjectName(dsc->nextReturn,dsc->de.d_name,NAME_MAX);
+ if(strlen(dsc->de.d_name) == 0)
+ {
+ // this should not happen!
+ strcpy(dsc->de.d_name,"zz");
+ }
dsc->de.d_reclen = sizeof(struct yaffs_dirent);
retVal = &dsc->de;
yaffsfs_DirAdvance(dsc);
dsc->de.d_reclen = sizeof(struct yaffs_dirent);
retVal = &dsc->de;
yaffsfs_DirAdvance(dsc);
@@
-1407,7
+1413,7
@@
int yaffs_link(const char *oldpath, const char *newpath)
// Creates a link called newpath to existing oldpath
yaffs_Object *obj = NULL;
yaffs_Object *target = NULL;
// Creates a link called newpath to existing oldpath
yaffs_Object *obj = NULL;
yaffs_Object *target = NULL;
- int retVal;
+ int retVal
= 0
;
yaffsfs_Lock();
yaffsfs_Lock();