예제 #1
0
파일: dfs_raw.c 프로젝트: samkrew/nxp-lpc
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);
}
예제 #2
0
파일: dfs_raw.c 프로젝트: samkrew/nxp-lpc
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");
	}
}
예제 #3
0
파일: dfs_raw.c 프로젝트: samkrew/nxp-lpc
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);
}
예제 #4
0
/*
+------------------------------------------------------------------------------
| Function    : open
+------------------------------------------------------------------------------
| Description :
|
| Parameters  :
| Returns     :
|
+------------------------------------------------------------------------------
*/
int open(const char *file, int flags, int mode)
{
	int fd, result;
	struct dfs_fd* d;

	/* allocate a fd */
	fd = fd_new();
	if (fd < 0) return -1;
	d  = fd_get(fd);

	result = dfile_raw_open(d, file, flags);
	if (result < 0)
	{
		rt_set_errno(result);
		fd_put(d);
		fd_put(d);

		return -1;
	}

	/* release the ref-count of fd */
	fd_put(d);
	return fd;
}