void __mkdir(const char* pathname) { /* make a new directory */ if (dfile_raw_open(&fd, pathname, DFS_O_DIRECTORY | DFS_O_CREAT) == 0) { dfile_raw_close(&fd); } else rt_kprintf("Can't mkdir %s\n", pathname); }
void __ls(const char* pathname) { struct dfs_stat stat; int length; /* list directory */ if ( dfile_raw_open(&fd, pathname, DFS_O_DIRECTORY) == 0 ) { rt_kprintf("Directory %s:\n", pathname); do { rt_memset(&dirent, 0, sizeof(struct dfs_dirent)); length = dfile_raw_getdents(&fd, &dirent, sizeof(struct dfs_dirent)); if ( length > 0 ) { rt_memset(&stat, 0, sizeof(struct dfs_stat)); /* build full path for each file */ strncpy(fullpath, pathname, 256); strcat(fullpath, "/"); strcat(fullpath, dirent.d_name); dfile_raw_stat(fullpath, &stat); if ( stat.st_mode & DFS_S_IFDIR ) { rt_kprintf("%s\t\t<DIR>\n", dirent.d_name); } else { rt_kprintf("%s\t\t%lu\n", dirent.d_name, stat.st_size); } } }while(length > 0); dfile_raw_close(&fd); } else { rt_kprintf("No such directory\n"); } }
void __cat(const char* filename) { rt_uint32_t length; char buffer[81]; if (dfile_raw_open(&fd, filename, DFS_O_RDONLY) < 0) { rt_kprintf("Open %s failed\n", filename); return; } do { rt_memset(buffer, 0, sizeof(buffer)); length = dfile_raw_read(&fd, buffer, 81); if (length > 0) { rt_kprintf("%s", buffer); } }while (length > 0); dfile_raw_close(&fd); }
/* +------------------------------------------------------------------------------ | Function : close +------------------------------------------------------------------------------ | Description : | | Parameters : | Returns : | +------------------------------------------------------------------------------ */ int close(int fd) { int result; struct dfs_fd* d; d = fd_get(fd); if (d == RT_NULL) { rt_set_errno(-RT_ERROR); return -1; } result = dfile_raw_close(d); fd_put(d); fd_put(d); if (result < 0) { rt_set_errno(result); return -1; } return 0; }