Lines Matching full:file
22 #include "uffs/uffs_fd.h" /* posix file api is here */
32 #define FILE_PATH_MAX 256 /* the longest file path */
55 case UEACCES:/** Tried to open read-only file for writing, or files sharing mode in uffs_result_to_dfs()
65 case UEMFILE: /** No more file handles available(too many open files) */ in uffs_result_to_dfs()
68 case UENOENT: /** file or path not found */ in uffs_result_to_dfs()
71 case UETIME: /** can't set file time */ in uffs_result_to_dfs()
74 case UEBADF: /** invalid file handle */ in uffs_result_to_dfs()
276 static int dfs_uffs_open(struct dfs_fd* file) in dfs_uffs_open() argument
282 oflag = file->flags; in dfs_uffs_open()
289 if (uffs_mkdir(file->path) < 0) in dfs_uffs_open()
297 if (file->path[0] == '/' && !(file->path[1] == 0)) in dfs_uffs_open()
298 rt_snprintf(file_path, FILE_PATH_MAX, "%s/", file->path); in dfs_uffs_open()
313 file->data = dir; in dfs_uffs_open()
317 /* regular file operations */ in dfs_uffs_open()
324 /* Opens the file, if it is existing. If not, a new file is created. */ in dfs_uffs_open()
326 /* Creates a new file. If the file is existing, it is truncated and overwritten. */ in dfs_uffs_open()
328 /* Creates a new file. The function fails if the file is already existing. */ in dfs_uffs_open()
331 fd = uffs_open(file->path, mode); in dfs_uffs_open()
340 file->data = (void *)fd; in dfs_uffs_open()
341 file->pos = uffs_seek(fd, 0, USEEK_CUR); in dfs_uffs_open()
342 file->size = uffs_seek(fd, 0, USEEK_END); in dfs_uffs_open()
343 uffs_seek(fd, file->pos, USEEK_SET); in dfs_uffs_open()
347 file->pos = uffs_seek(fd, 0, USEEK_END); in dfs_uffs_open()
352 static int dfs_uffs_close(struct dfs_fd* file) in dfs_uffs_close() argument
357 oflag = file->flags; in dfs_uffs_close()
361 if (uffs_closedir((uffs_DIR *)(file->data)) < 0) in dfs_uffs_close()
366 /* regular file operations */ in dfs_uffs_close()
367 fd = (int)(file->data); in dfs_uffs_close()
375 static int dfs_uffs_ioctl(struct dfs_fd * file, int cmd, void* args) in dfs_uffs_ioctl() argument
380 static int dfs_uffs_read(struct dfs_fd * file, void* buf, size_t len) in dfs_uffs_read() argument
385 fd = (int)(file->data); in dfs_uffs_read()
391 file->pos = uffs_seek(fd, 0, USEEK_CUR); in dfs_uffs_read()
395 static int dfs_uffs_write(struct dfs_fd* file, in dfs_uffs_write() argument
402 fd = (int)(file->data); in dfs_uffs_write()
409 file->pos = uffs_seek(fd, 0, USEEK_CUR); in dfs_uffs_write()
413 static int dfs_uffs_flush(struct dfs_fd* file) in dfs_uffs_flush() argument
418 fd = (int)(file->data); in dfs_uffs_flush()
440 static int dfs_uffs_seek(struct dfs_fd* file, in dfs_uffs_seek() argument
446 if (file->type == FT_DIRECTORY) in dfs_uffs_seek()
448 uffs_rewinddir((uffs_DIR *)(file->data)); in dfs_uffs_seek()
449 result = uffs_seekdir((uffs_DIR *)(file->data), offset/sizeof(struct dirent)); in dfs_uffs_seek()
452 file->pos = offset; in dfs_uffs_seek()
456 else if (file->type == FT_REGULAR) in dfs_uffs_seek()
458 result = uffs_seek((int)(file->data), offset, USEEK_SET); in dfs_uffs_seek()
468 struct dfs_fd* file, in dfs_uffs_getdents() argument
478 dir = (uffs_DIR*)(file->data); in dfs_uffs_getdents()
485 /* allocate file name */ in dfs_uffs_getdents()
505 if (file->path[0] == '/' && !(file->path[1] == 0)) in dfs_uffs_getdents()
506 rt_snprintf(file_path, FILE_PATH_MAX, "%s/%s", file->path, uffs_d->d_name); in dfs_uffs_getdents()
511 switch(s.st_mode & US_IFMT) /* file type mark */ in dfs_uffs_getdents()
516 case US_IFDIR: /* regular file */ in dfs_uffs_getdents()
537 /* free file name buf */ in dfs_uffs_getdents()
543 file->pos += index * sizeof(struct dirent); in dfs_uffs_getdents()
553 /* judge file type, dir is to be delete by uffs_rmdir, others by uffs_remove */ in dfs_uffs_unlink()
568 /* unknown file type */ in dfs_uffs_unlink()
624 "uffs", /* file system type: uffs */
644 /* register uffs file system */ in dfs_uffs_init()