Beispiel #1
0
static BT_HANDLE ext2_opendir(BT_HANDLE hMount, const BT_i8 *szpPath, BT_ERROR *pError) {
	if(!hMount) {
		if(pError) *pError = BT_ERR_GENERIC;
		goto err_out;
	}
	BT_EXT2_DIR *pDir = (BT_EXT2_DIR *) BT_CreateHandle(&oDirHandleInterface, sizeof(BT_EXT2_DIR), pError);
	if(!pDir) {
		*pError = BT_ERR_NO_MEMORY;
		goto err_out;
	}
	pDir->pMount = (BT_EXT2_MOUNT *)hMount;
	pDir->szpFname = BT_kMalloc(BT_EXT2_FNAME_MAX_STRLEN);
	if(!pDir->szpFname) {
		*pError = BT_ERR_NO_MEMORY;
		goto err_free_out;
	}
	if(ext2fs_open_dir((char *)szpPath) < 0)
	{
		if(pError) *pError = BT_ERR_GENERIC;
		goto err_free_out;
	}
#if 0
	if(ext2fs_ls((char *)szpPath) < 0)
	{
		if(pError) *pError = BT_ERR_GENERIC;
		goto err_free_out;
	}
#endif
	return (BT_HANDLE) pDir;
err_free_out:
	if(pDir->szpFname) BT_kFree(pDir->szpFname);
	BT_DestroyHandle((BT_HANDLE)pDir);
err_out:
	return NULL;
}
Beispiel #2
0
int do_ext2ls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
	char *filename = "/";
	int dev=0;
	int part=1;
	char *ep;
	block_dev_desc_t *dev_desc=NULL;
	int part_length;

	if (argc < 3) {
		printf ("Usage:\n%s\n", cmdtp->usage);
		return(1);
	}
	dev = (int)simple_strtoul (argv[2], &ep, 16);
	//printf("argv[1] = %s dev =%d",argv[1],dev);
	dev_desc = get_dev(argv[1],dev);

	if (dev_desc == NULL) {
		printf ("\n** Block device %s %d not supported\n", argv[1], dev);
		return(1);
	}

	if (*ep) {
		if (*ep != ':') {
			puts ("\n** Invalid boot device, use `dev[:part]' **\n");
			return(1);
		}
		part = (int)simple_strtoul(++ep, NULL, 16);
	}

	if (argc == 4) {
	    filename = argv[3];
	}

	PRINTF("Using device %s %d:%d, directory: %s\n", argv[1], dev, part, filename);

	if ((part_length = ext2fs_set_blk_dev(dev_desc, part)) == 0) {
		printf ("** Bad partition - %s %d:%d **\n",  argv[1], dev, part);
		ext2fs_close();
		return(1);
	}

	if (!ext2fs_mount(part_length)) {
		printf ("** Bad ext2 partition or disk - %s %d:%d **\n",  argv[1], dev, part);
		ext2fs_close();
		return(1);
	}

	if (ext2fs_ls (filename)) {
		printf ("** Error ext2fs_ls() **\n");
		ext2fs_close();
		return(1);
	};

	ext2fs_close();

	return(0);
}