Remove the static qualifier from ubi_find_volume() and add a declaration to include/ubi_uboot.h so that other translation units can look up a UBI volume by name.
The function now refers to ubi_devices[0] directly instead of the file-local 'ubi' pointer, and takes a const char * for the volume name. Signed-off-by: Daniel Golle <[email protected]> --- cmd/ubi.c | 10 +++++++--- include/ubi_uboot.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/cmd/ubi.c b/cmd/ubi.c index 93de6f3aea2..ca7d657aa07 100644 --- a/cmd/ubi.c +++ b/cmd/ubi.c @@ -247,13 +247,17 @@ static int ubi_create_vol(char *volume, int64_t size, int dynamic, int vol_id, return ubi_create_volume(ubi, &req); } -static struct ubi_volume *ubi_find_volume(char *volume) +struct ubi_volume *ubi_find_volume(const char *volume) { + struct ubi_device *dev = ubi_devices[0]; struct ubi_volume *vol; int i; - for (i = 0; i < ubi->vtbl_slots; i++) { - vol = ubi->volumes[i]; + if (!dev) + return NULL; + + for (i = 0; i < dev->vtbl_slots; i++) { + vol = dev->volumes[i]; if (vol && !strcmp(vol->name, volume)) return vol; } diff --git a/include/ubi_uboot.h b/include/ubi_uboot.h index ea0db69c72a..92892704d0a 100644 --- a/include/ubi_uboot.h +++ b/include/ubi_uboot.h @@ -50,6 +50,7 @@ extern void ubi_exit(void); extern int ubi_part(char *part_name, const char *vid_header_offset); extern int ubi_volume_write(char *volume, void *buf, loff_t offset, size_t size); extern int ubi_volume_read(char *volume, char *buf, loff_t offset, size_t size); +struct ubi_volume *ubi_find_volume(const char *volume); extern struct ubi_device *ubi_devices[]; int cmd_ubifs_mount(char *vol_name); -- 2.53.0

