diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2012-11-03 14:04:27 +0100 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2012-11-03 14:04:27 +0100 |
commit | 99f20b85f6856fa636e41c6987e34bf343a235ae (patch) | |
tree | 60f974cc307f457752e557e5a95c62222d5f374b /utils/nwztools/emmctools/nvp.c | |
parent | 6d04ed343c76b38b5cd632ff0e0ba472ecade583 (diff) | |
download | rockbox-99f20b85f6856fa636e41c6987e34bf343a235ae.tar.gz rockbox-99f20b85f6856fa636e41c6987e34bf343a235ae.zip |
nwztools: various fix and enhancements
Change-Id: Iaa89df27b7a0c4eb9fc6603c431de3d1fe791fa1
Diffstat (limited to 'utils/nwztools/emmctools/nvp.c')
-rw-r--r-- | utils/nwztools/emmctools/nvp.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/utils/nwztools/emmctools/nvp.c b/utils/nwztools/emmctools/nvp.c index 46515f74db..3adf61f621 100644 --- a/utils/nwztools/emmctools/nvp.c +++ b/utils/nwztools/emmctools/nvp.c | |||
@@ -279,6 +279,7 @@ int nvp_read_data(int shadow, int area, int zone, int offset, void *buf, int siz | |||
279 | { | 279 | { |
280 | int large = nvp_area_info[area].kind == NVP_AREA_LARGE_KIND; | 280 | int large = nvp_area_info[area].kind == NVP_AREA_LARGE_KIND; |
281 | int unit_size = large ? NVP_LARGE_AREA_SIZE : NVP_SMALL_AREA_SIZE; | 281 | int unit_size = large ? NVP_LARGE_AREA_SIZE : NVP_SMALL_AREA_SIZE; |
282 | int read_size = 0; | ||
282 | 283 | ||
283 | while(size > 0) | 284 | while(size > 0) |
284 | { | 285 | { |
@@ -288,17 +289,23 @@ int nvp_read_data(int shadow, int area, int zone, int offset, void *buf, int siz | |||
288 | nvp_get_cluster_number(shadow, area, zone, index) : | 289 | nvp_get_cluster_number(shadow, area, zone, index) : |
289 | nvp_get_sector_number(shadow, area, zone, index); | 290 | nvp_get_sector_number(shadow, area, zone, index); |
290 | if(sec_cluster == 0) | 291 | if(sec_cluster == 0) |
291 | return -1; | 292 | break; |
292 | //cprintf(GREY, "[sec_cluster=%d]", sec_cluster); | ||
293 | int read = MIN(size, unit_size - unit_offset); | 293 | int read = MIN(size, unit_size - unit_offset); |
294 | //cprintf(GREY, "[sec_cluster=%d read=%d]", sec_cluster, read); | ||
294 | int ret = nvp_read(sec_cluster * unit_size, read, buf); | 295 | int ret = nvp_read(sec_cluster * unit_size, read, buf); |
295 | if(ret) | 296 | if(ret) |
296 | return ret; | 297 | return ret; |
297 | buf += read; | 298 | buf += read; |
298 | offset += read; | 299 | offset += read; |
299 | size -= read; | 300 | size -= read; |
301 | read_size += read; | ||
300 | } | 302 | } |
301 | return 0; | 303 | return read_size; |
304 | } | ||
305 | |||
306 | bool nvp_is_valid_node(int node) | ||
307 | { | ||
308 | return node >= 0 && node < nr_nodes && node_info[node].area != -1; | ||
302 | } | 309 | } |
303 | 310 | ||
304 | struct nvp_node_info_t nvp_get_node_info(int node) | 311 | struct nvp_node_info_t nvp_get_node_info(int node) |
@@ -527,16 +534,18 @@ int nvp_info(void) | |||
527 | cprintf_field(" Zone ", "%s", zones[j].name); | 534 | cprintf_field(" Zone ", "%s", zones[j].name); |
528 | cprintf(BLUE, " ->"); | 535 | cprintf(BLUE, " ->"); |
529 | uint8_t buf[0x20]; | 536 | uint8_t buf[0x20]; |
530 | int ret = nvp_read_data(0, i, j, 0, buf, MIN(0x20, zones[j].size)); | 537 | int sz = 0x20; |
531 | if(ret) | 538 | int ret = nvp_read_data(0, i, j, 0, buf, MIN(sz, zones[j].size)); |
539 | if(ret <= 0) | ||
532 | { | 540 | { |
533 | cprintf(RED, " No data\n"); | 541 | cprintf(RED, " No data\n"); |
534 | continue; | 542 | continue; |
535 | } | 543 | } |
536 | for(int i = 0; i < MIN(0x20, zones[j].size); i++) | 544 | sz = MIN(sz, ret); |
545 | for(int i = 0; i < MIN(sz, zones[j].size); i++) | ||
537 | cprintf(YELLOW, " %02x", buf[i]); | 546 | cprintf(YELLOW, " %02x", buf[i]); |
538 | cprintf(BLUE, " -> "); | 547 | cprintf(BLUE, " -> "); |
539 | for(int i = 0; i < MIN(0x20, zones[j].size); i++) | 548 | for(int i = 0; i < MIN(sz, zones[j].size); i++) |
540 | cprintf(YELLOW, "%c", isprint(buf[i]) ? buf[i] : '.'); | 549 | cprintf(YELLOW, "%c", isprint(buf[i]) ? buf[i] : '.'); |
541 | printf("\n"); | 550 | printf("\n"); |
542 | } | 551 | } |