comparison menu.c @ 870:f173317ecdb4

More efficient handling of going up one directory in menu
author Michael Pavone <pavone@retrodev.com>
date Fri, 06 Nov 2015 18:07:40 -0800
parents 1bab7e01ae98
children 7022ba865cfd
comparison
equal deleted inserted replaced
869:4298db923cf8 870:f173317ecdb4
109 cur[1] = *dest; 109 cur[1] = *dest;
110 if (!*dest || !dest[1]) { 110 if (!*dest || !dest[1]) {
111 break; 111 break;
112 } 112 }
113 } 113 }
114 char *pieces[] = {menu->curpath, "/", buf}; 114 if (!strcmp(buf, "..")) {
115 menu->curpath = alloc_concat_m(3, pieces); 115 size_t len = strlen(menu->curpath);
116 free(pieces[0]); 116 while (len > 1) {
117 --len;
118 if (menu->curpath[len] == '/') {
119 menu->curpath[len] = 0;
120 break;
121 }
122 }
123 } else {
124 char *pieces[] = {menu->curpath, "/", buf};
125 menu->curpath = alloc_concat_m(3, pieces);
126 free(pieces[0]);
127 }
117 break; 128 break;
118 } 129 }
119 default: 130 default:
120 fprintf(stderr, "WARNING: write to undefined menu port %X\n", address); 131 fprintf(stderr, "WARNING: write to undefined menu port %X\n", address);
121 } 132 }