# HG changeset patch # User Michael Pavone # Date 1446862060 28800 # Node ID f173317ecdb4d3d88d3e3919b5277964455619e5 # Parent 4298db923cf8c8500a7ce5886892e9e82c1b983c More efficient handling of going up one directory in menu diff -r 4298db923cf8 -r f173317ecdb4 menu.c --- a/menu.c Fri Nov 06 18:04:43 2015 -0800 +++ b/menu.c Fri Nov 06 18:07:40 2015 -0800 @@ -111,9 +111,20 @@ break; } } - char *pieces[] = {menu->curpath, "/", buf}; - menu->curpath = alloc_concat_m(3, pieces); - free(pieces[0]); + if (!strcmp(buf, "..")) { + size_t len = strlen(menu->curpath); + while (len > 1) { + --len; + if (menu->curpath[len] == '/') { + menu->curpath[len] = 0; + break; + } + } + } else { + char *pieces[] = {menu->curpath, "/", buf}; + menu->curpath = alloc_concat_m(3, pieces); + free(pieces[0]); + } break; } default: