⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file.c

📁 S3c2410 usb host Firmware....
💻 C
字号:

#include "fat.h"
/* Supported filesystems */
//static const struct filesystem filesystems[] = {
//	{ file_fat_detectfs,  file_fat_ls,  file_fat_read,  "FAT" },
//};
//#define NUM_FILESYS	(sizeof(filesystems)/sizeof(struct filesystem))
/* The filesystem which was last detected */
//static int current_filesystem = FSTYPE_NONE;
/* The current working directory */
//#define CWD_LEN		511
//char file_cwd[CWD_LEN+1] = "/";
/*
const char *
file_getfsname(int idx)
{
	if (idx < 0 || idx >= NUM_FILESYS) return NULL;
	return filesystems[idx].name;
}


static void
pathcpy(char *dest, const char *src)
{
	char *origdest = dest;
	do {
		if (dest-file_cwd >= CWD_LEN) {
			*dest = '\0';
			return;
		}
		*(dest) = *(src);
		if (*src == '\0') {
			if (dest-- != origdest && ISDIRDELIM(*dest)) {
				*dest = '\0';
			}
			return;
		}
		++dest;
		if (ISDIRDELIM(*src)) {
			while (ISDIRDELIM(*src)) src++;
		} else {
			src++;
		}
	} while (1);
}


int
file_cd(const char *path)
{
	if (ISDIRDELIM(*path)) {
		while (ISDIRDELIM(*path)) path++;
		strncpy(file_cwd+1, path, CWD_LEN-1);
	} else {
		const char *origpath = path;
		char *tmpstr = file_cwd;
		int back = 0;
		while (*tmpstr != '\0') tmpstr++;
		do {
			tmpstr--;
		} while (ISDIRDELIM(*tmpstr));
		while (*path == '.') {
			path++;
			while (*path == '.') {
				path++;
				back++;
			}
			if (*path != '\0' && !ISDIRDELIM(*path)) {
				path = origpath;
				back = 0;
				break;
			}
			while (ISDIRDELIM(*path)) path++;
			origpath = path;
		}
		while (back--) {
			// Strip off path component //
			while (!ISDIRDELIM(*tmpstr)) {
				tmpstr--;
			}
			if (tmpstr == file_cwd) {
				// Incremented again right after the loop.//
				tmpstr--;
				break;
			}
			//Skip delimiters //
			while (ISDIRDELIM(*tmpstr)) tmpstr--;
		}
		tmpstr++;
		if (*path == '\0') {
			if (tmpstr == file_cwd) {
				*tmpstr = '/';
				tmpstr++;
			}
			*tmpstr = '\0';
			return 0;
		}
		*tmpstr = '/';
		pathcpy(tmpstr+1, path);
	}
	return 0;
}


int
file_detectfs(void)
{
	int i;
	current_filesystem = FSTYPE_NONE;
	for (i = 0; i < NUM_FILESYS; i++) {
		if (filesystems[i].detect() == 0) {
			strcpy(file_cwd, "/");
			current_filesystem = i;
			break;
		}
	}
	return current_filesystem;
}


int
file_ls(const char *dir)
{
	char fullpath[1024];
	const char *arg;
	if (current_filesystem == FSTYPE_NONE) {
		FAT_DPRINT("Can't list files without a filesystem!\n");
		return -1;
	}
	if (ISDIRDELIM(*dir)) {
		arg = dir;
	} else {
		sprintf(fullpath, "%s/%s", file_cwd, dir);
		arg = fullpath;
	}
	return filesystems[current_filesystem].ls(arg);
}


long
file_read(const char *filename, void *buffer, unsigned long maxsize)
{
	char fullpath[1024];
	const char *arg;
	if (current_filesystem == FSTYPE_NONE) {
		FAT_DPRINT("Can't load file without a filesystem!\n");
		return -1;
	}
	if (ISDIRDELIM(*filename)) {
		arg = filename;
	} else {
		sprintf(fullpath, "%s/%s", file_cwd, filename);
		arg = fullpath;
	}
	return filesystems[current_filesystem].read(arg, buffer, maxsize);
}


*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -