summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2012-07-02 11:00:20 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-07-02 11:00:20 +0200
commitecb682dfdae30e660d95ff2a1a2823d55517e296 (patch)
treec087bbd2e1ac551e2828c507b2b33026c9b3c0e6
parent05772f77e849de982866cd94941262dc84abd1e1 (diff)
parentcdd4b4f075592738feb0205b6e04c45b9c997bed (diff)
downloadbarebox-ecb682dfdae30e660d95ff2a1a2823d55517e296.tar.gz
barebox-ecb682dfdae30e660d95ff2a1a2823d55517e296.tar.xz
Merge branch 'for-next/size-decrease'
-rw-r--r--common/menu.c70
-rw-r--r--common/partitions.c2
-rw-r--r--include/menu.h3
-rw-r--r--net/eth.c4
4 files changed, 17 insertions, 62 deletions
diff --git a/common/menu.c b/common/menu.c
index 6c530b6f86..649926fa8a 100644
--- a/common/menu.c
+++ b/common/menu.c
@@ -53,7 +53,6 @@ void menu_free(struct menu *m)
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 @@ EXPORT_SYMBOL(menu_remove);
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 @@ void menu_entry_free(struct menu_entry *me)
}
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 @@ static void print_menu_entry(struct menu *m, struct menu_entry *me,
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 @@ static void print_menu(struct menu *m)
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 @@ static void print_menu(struct menu *m)
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 menu_show(struct menu *m)
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 dc91933890..78b09fc786 100644
--- a/common/partitions.c
+++ b/common/partitions.c
@@ -97,7 +97,7 @@ static void __maybe_unused try_dos_partition(struct block_device *blk,
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 74abcfb077..40f8eabee3 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -60,9 +60,6 @@ struct menu {
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 2b492ad904..e023d65322 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -100,11 +100,9 @@ struct eth_device * eth_get_current(void)
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;