diff options
| author | Stefan Roese <sr@denx.de> | 2009-03-19 15:35:50 +0100 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2009-03-20 22:39:15 +0100 | 
| commit | ce6d0c8de031f345bde745f3b855082adf1c4e45 (patch) | |
| tree | 66ad8e03c22d0a9432dea924d968ad28b3c2c4a3 /common/cmd_ubifs.c | |
| parent | 9eefe2a2b37a838558e3d213a9f5519503d0c180 (diff) | |
| download | olio-uboot-2014.01-ce6d0c8de031f345bde745f3b855082adf1c4e45.tar.xz olio-uboot-2014.01-ce6d0c8de031f345bde745f3b855082adf1c4e45.zip | |
UBIFS: Add UBIFS commands
This patchset adds these UBIFS related commands:
- ubifsmount
  Mount an UBIFS volume
- ubifsls
  List a directory of the mounted UBIFS volume
- ubifsload
  Load a file from the mounted UBIFS volume to memory
Signed-off-by: Stefan Roese <sr@denx.de>
Diffstat (limited to 'common/cmd_ubifs.c')
| -rw-r--r-- | common/cmd_ubifs.c | 132 | 
1 files changed, 132 insertions, 0 deletions
| diff --git a/common/cmd_ubifs.c b/common/cmd_ubifs.c new file mode 100644 index 000000000..b2e0f4fdf --- /dev/null +++ b/common/cmd_ubifs.c @@ -0,0 +1,132 @@ +/* + * (C) Copyright 2008 + * Stefan Roese, DENX Software Engineering, sr@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + + +/* + * UBIFS command support + */ + +#undef DEBUG + +#include <common.h> +#include <config.h> +#include <command.h> + +static int ubifs_initialized; +static int ubifs_mounted; + +/* Prototypes */ +int ubifs_init(void); +int ubifs_mount(char *vol_name); +int ubifs_ls(char *dir_name); +int ubifs_load(char *filename, u32 addr, u32 size); + +int do_ubifs_mount(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ +	char *vol_name; +	int ret; + +	vol_name = argv[1]; +	debug("Using volume %s\n", vol_name); + +	if (ubifs_initialized == 0) { +		ubifs_init(); +		ubifs_initialized = 1; +	} + +	ret = ubifs_mount(vol_name); +	if (ret) +		return -1; + +	ubifs_mounted = 1; + +	return 0; +} + +int do_ubifs_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ +	char *filename = "/"; +	int ret; + +	if (!ubifs_mounted) { +		printf("UBIFS not mounted, use ubifs mount to mount volume first!\n"); +		return -1; +	} + +	if (argc == 2) +		filename = argv[1]; +	debug("Using filename %s\n", filename); + +	ret = ubifs_ls(filename); +	if (ret) +		printf("%s not found!\n", filename); + +	return ret; +} + +int do_ubifs_load(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{ +	char *filename; +	int ret; +	u32 addr; +	u32 size = 0; + +	if (!ubifs_mounted) { +		printf("UBIFS not mounted, use ubifs mount to mount volume first!\n"); +		return -1; +	} + +	if (argc < 3) { +		printf("Usage:\n%s\n", cmdtp->usage); +		return -1; +	} + +	addr = simple_strtoul(argv[1], NULL, 16); +	filename = argv[2]; + +	if (argc == 4) +		size = simple_strtoul(argv[3], NULL, 16); +	debug("Loading file '%s' to address 0x%08x (size %d)\n", filename, addr, size); + +	ret = ubifs_load(filename, addr, size); +	if (ret) +		printf("%s not found!\n", filename); + +	return ret; +} + +U_BOOT_CMD( +	ubifsmount, 2, 0, do_ubifs_mount, +	"ubifsmount- mount UBIFS volume\n", +	"\n"); + +U_BOOT_CMD(ubifsls, 2, 0, do_ubifs_ls, +	   "ubifsls - list files in a directory\n", +	   "[directory]\n" +	   "    - list files in a 'directory' (default '/')\n"); + +U_BOOT_CMD(ubifsload, 4, 0, do_ubifs_load, +	   "ubifsload- load file from an UBIFS filesystem\n", +	   "<addr> <filename> [bytes]\n" +	   "    - load file 'filename' to address 'addr'\n"); |