diff --git a/common/menu.c b/common/menu.c index 6c530b6..649926f 100644 --- a/common/menu.c +++ b/common/menu.c @@ -53,7 +53,6 @@ free(m->name); free(m->display); free(m->auto_display); - free(m->display_buffer); list_for_each_entry_safe(me, tmp, &m->entries, list) menu_entry_free(me); @@ -87,15 +86,9 @@ int menu_add_entry(struct menu *m, struct menu_entry *me) { - int len; - if (!m || !me || !me->display) return -EINVAL; - len = strlen(me->display); - - m->width = max(len, m->width); - m->nb_entries++; me->num = m->nb_entries; list_add_tail(&me->list, &m->entries); @@ -160,6 +153,18 @@ } EXPORT_SYMBOL(menu_entry_free); +static void __print_entry(const char *str) +{ + static char outstr[256]; + + if (IS_ENABLED(CONFIG_SHELL_HUSH)) { + process_escape_sequence(str, outstr, 256); + puts(outstr); + } else { + puts(str); + } +} + static void print_menu_entry(struct menu *m, struct menu_entry *me, int selected) { @@ -174,17 +179,11 @@ puts(" "); } - if (IS_ENABLED(CONFIG_SHELL_HUSH)) - process_escape_sequence(me->display, m->display_buffer, - m->display_buffer_size); - printf(" %d: ", me->num); if (selected) puts("\e[7m"); - if (IS_ENABLED(CONFIG_SHELL_HUSH)) - puts(m->display_buffer); - else - puts(me->display); + + __print_entry(me->display); if (selected) puts("\e[m"); @@ -241,13 +240,7 @@ clear(); gotoXY(1, 2); if(m->display) { - if (IS_ENABLED(CONFIG_SHELL_HUSH)) { - process_escape_sequence(m->display, m->display_buffer, - m->display_buffer_size); - puts(m->display_buffer); - } else { - puts(m->display); - } + __print_entry(m->display); } else { puts("Menu : "); puts(m->name); @@ -266,34 +259,6 @@ print_menu_entry(m, m->selected, 1); } -static int menu_alloc_display_buffer(struct menu *m) -{ - int min_size; - - if (m->display) - min_size = max((int)strlen(m->display), m->width); - else - min_size = m->width; - - - if (m->display_buffer) { - if (m->display_buffer_size >= min_size) - return 0; - m->display_buffer = realloc(m->display_buffer, min_size * sizeof(char)); - } else { - m->display_buffer = calloc(min_size, sizeof(char)); - } - - if (!m->display_buffer) { - perror("display_buffer"); - return -ENOMEM; - } - - m->display_buffer_size = min_size; - - return 0; -} - int menu_show(struct menu *m) { int ch, ch_previous = 0; @@ -301,15 +266,10 @@ int countdown; int auto_display_len = 16; uint64_t start, second; - int ret; if(!m || list_empty(&m->entries)) return -EINVAL; - ret = menu_alloc_display_buffer(m); - if (ret) - return ret; - print_menu(m); countdown = m->auto_select; diff --git a/common/partitions.c b/common/partitions.c index dc91933..78b09fc 100644 --- a/common/partitions.c +++ b/common/partitions.c @@ -97,7 +97,7 @@ table = (struct partition_entry *)&buffer[446]; /* valid for x86 BIOS based disks only */ - if (blk->num_blocks == 0) + if (IS_ENABLED(CONFIG_DISK_BIOS) && blk->num_blocks == 0) blk->num_blocks = disk_guess_size(blk->dev, table); for (i = 0; i < 4; i++) { diff --git a/include/menu.h b/include/menu.h index 74abcfb..40f8eab 100644 --- a/include/menu.h +++ b/include/menu.h @@ -60,9 +60,6 @@ struct list_head entries; int nb_entries; - int width; - char *display_buffer; - int display_buffer_size; struct menu_entry *selected; void *priv; diff --git a/net/eth.c b/net/eth.c index 2b492ad..e023d65 100644 --- a/net/eth.c +++ b/net/eth.c @@ -100,11 +100,9 @@ struct eth_device *eth_get_byname(char *ethname) { struct eth_device *edev; - char name[MAX_DRIVER_NAME]; list_for_each_entry(edev, &netdev_list, list) { - sprintf(name, "%s%d", edev->dev.name, edev->dev.id); - if (!strcmp(ethname, name)) + if (!strcmp(ethname, dev_name(&edev->dev))) return edev; } return NULL;