Mercurial > repos > blastem
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 } |