X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;f=direct%2Fyaffsfs.c;h=eaf30808862179807c9540445e3d62ad6fdcc07b;hb=8151c9a6c035743c7d12229eaab73e6f5adb9c39;hp=69cf0a48ad9e424d7fc53890683cc1af61682e87;hpb=efeb8cffeda1302c3ab0c36b1c91e09ffd417f4a;p=yaffs2.git diff --git a/direct/yaffsfs.c b/direct/yaffsfs.c index 69cf0a4..eaf3080 100644 --- a/direct/yaffsfs.c +++ b/direct/yaffsfs.c @@ -43,7 +43,7 @@ static yaffs_DIR *yaffsfs_opendir_reldir_no_lock( struct yaffs_obj *reldir, const YCHAR *dirname); static int yaffsfs_closedir_no_lock(yaffs_DIR *dirent); -unsigned int yaffs_wr_attempts; +int yaffs_wr_attempts; /* * Handle management. @@ -783,7 +783,7 @@ int yaffs_dup(int handle) static int yaffsfs_TooManyObjects(struct yaffs_dev *dev) { - int current_objects = dev->n_obj - dev->n_deleted_files; + u32 current_objects = dev->n_obj - dev->n_deleted_files; if (dev->param.max_objects && current_objects > dev->param.max_objects) return 1; @@ -1139,7 +1139,7 @@ static int yaffsfs_do_read(int handle, void *vbuf, unsigned int nbyte, Y_LOFF_T startPos = 0; Y_LOFF_T endPos = 0; int nRead = 0; - int nToRead = 0; + unsigned int nToRead = 0; int totalRead = 0; Y_LOFF_T maxRead; u8 *buf = (u8 *) vbuf; @@ -1161,9 +1161,6 @@ static int yaffsfs_do_read(int handle, void *vbuf, unsigned int nbyte, /* Not a reading handle */ yaffsfs_SetError(-EINVAL); totalRead = -1; - } else if (nbyte > YAFFS_MAX_FILE_SIZE) { - yaffsfs_SetError(-EINVAL); - totalRead = -1; } else { if (isPread) startPos = offset; @@ -1177,7 +1174,7 @@ static int yaffsfs_do_read(int handle, void *vbuf, unsigned int nbyte, else maxRead = 0; - if (nbyte > maxRead) + if ((Y_LOFF_T)nbyte > maxRead) nbyte = maxRead; yaffsfs_GetHandle(handle); @@ -1185,7 +1182,6 @@ static int yaffsfs_do_read(int handle, void *vbuf, unsigned int nbyte, endPos = pos + nbyte; if (pos < 0 || pos > YAFFS_MAX_FILE_SIZE || - nbyte > YAFFS_MAX_FILE_SIZE || endPos < 0 || endPos > YAFFS_MAX_FILE_SIZE) { totalRead = -1; nbyte = 0; @@ -1213,7 +1209,7 @@ static int yaffsfs_do_read(int handle, void *vbuf, unsigned int nbyte, buf += nRead; } - if (nRead == nToRead) + if (nRead == (int)nToRead) nbyte -= nRead; else nbyte = 0; /* no more to read */ @@ -1263,7 +1259,7 @@ static int yaffsfs_do_write(int handle, const void *vbuf, unsigned int nbyte, int nWritten = 0; int totalWritten = 0; int write_trhrough = 0; - int nToWrite = 0; + unsigned int nToWrite = 0; const u8 *buf = (const u8 *)vbuf; if (yaffsfs_CheckMemRegion(vbuf, nbyte, 0) < 0) { @@ -1298,7 +1294,6 @@ static int yaffsfs_do_write(int handle, const void *vbuf, unsigned int nbyte, endPos = pos + nbyte; if (pos < 0 || pos > YAFFS_MAX_FILE_SIZE || - nbyte > YAFFS_MAX_FILE_SIZE || endPos < 0 || endPos > YAFFS_MAX_FILE_SIZE) { totalWritten = -1; nbyte = 0; @@ -1328,7 +1323,7 @@ static int yaffsfs_do_write(int handle, const void *vbuf, unsigned int nbyte, buf += nWritten; } - if (nWritten == nToWrite) + if (nWritten == (int)nToWrite) nbyte -= nToWrite; else nbyte = 0; @@ -1714,7 +1709,7 @@ static int yaffsfs_DoStat(struct yaffs_obj *obj, struct yaffs_stat *buf) obj = yaffs_get_equivalent_obj(obj); if (obj && buf) { - buf->st_dev = (int)obj->my_dev->os_context; + buf->st_dev = 0; buf->st_ino = obj->obj_id; buf->st_mode = obj->yst_mode & ~S_IFMT; @@ -1855,7 +1850,6 @@ static int yaffsfs_DoUtime(struct yaffs_obj *obj, const struct yaffs_utimbuf *buf) { int retVal = -1; - struct yaffs_utimbuf local; obj = yaffs_get_equivalent_obj(obj); @@ -1865,20 +1859,24 @@ static int yaffsfs_DoUtime(struct yaffs_obj *obj, } #if !CONFIG_YAFFS_WINCE - if (!buf) { - local.actime = Y_CURRENT_TIME; - local.modtime = local.actime; - buf = &local; - } + { + struct yaffs_utimbuf local; - if (obj) { - int result; + if (!buf) { + local.actime = Y_CURRENT_TIME; + local.modtime = local.actime; + buf = &local; + } - obj->yst_atime = buf->actime; - obj->yst_mtime = buf->modtime; - obj->dirty = 1; - result = yaffs_flush_file(obj, 0, 0, 0); - retVal = result == YAFFS_OK ? 0 : -1; + if (obj) { + int result; + + obj->yst_atime = buf->actime; + obj->yst_mtime = buf->modtime; + obj->dirty = 1; + result = yaffs_flush_file(obj, 0, 0, 0); + retVal = result == YAFFS_OK ? 0 : -1; + } } #endif @@ -3488,7 +3486,7 @@ struct yaffs_dirent *yaffsfs_readdir_no_lock(yaffs_DIR * dirp) if (dsc->nextReturn) { dsc->de.d_ino = yaffs_get_equivalent_obj(dsc->nextReturn)->obj_id; - dsc->de.d_dont_use = (unsigned)dsc->nextReturn; + dsc->de.d_dont_use = dsc->nextReturn; dsc->de.d_off = dsc->offset++; yaffs_get_obj_name(dsc->nextReturn, dsc->de.d_name, NAME_MAX);