diff options
author | Okan Demirmen <okan@cvs.openbsd.org> | 2015-03-28 22:09:11 +0000 |
---|---|---|
committer | Okan Demirmen <okan@cvs.openbsd.org> | 2015-03-28 22:09:11 +0000 |
commit | 070eb34531f5de4b8eeca8cbb19d4d1e0e6783bc (patch) | |
tree | b631c0d3b1c843b2adeb22eda96d2539acbe0651 /app | |
parent | bc6f3e6149b9ab2d56ebfb073a839bd040f2879b (diff) |
Reshuffle and slightly simplify menu_complete_path(), removing an
allocation, for tab-completion; checked by Alexander Polakov as well.
Diffstat (limited to 'app')
-rw-r--r-- | app/cwm/menu.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/app/cwm/menu.c b/app/cwm/menu.c index 6c04fd6b0..7c9cce802 100644 --- a/app/cwm/menu.c +++ b/app/cwm/menu.c @@ -16,7 +16,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: menu.c,v 1.78 2015/01/19 14:54:16 okan Exp $ + * $OpenBSD: menu.c,v 1.79 2015/03/28 22:09:10 okan Exp $ */ #include <sys/types.h> @@ -189,9 +189,7 @@ menu_complete_path(struct menu_ctx *mc) { struct menu *mi, *mr; struct menu_q menuq; - char *path = NULL; - path = xcalloc(1, sizeof(mr->text)); mr = xcalloc(1, sizeof(*mr)); TAILQ_INIT(&menuq); @@ -200,17 +198,15 @@ menu_complete_path(struct menu_ctx *mc) CWM_MENU_DUMMY, search_match_path_any, NULL)) != NULL) { mr->abort = mi->abort; mr->dummy = mi->dummy; - strlcpy(path, mi->text, sizeof(mi->text)); + if (mi->text[0] != '\0') + snprintf(mr->text, sizeof(mr->text), "%s \"%s\"", + mc->searchstr, mi->text); + else if (!mr->abort) + strlcpy(mr->text, mc->searchstr, sizeof(mr->text)); } menuq_clear(&menuq); - if (path[0] != '\0') - snprintf(mr->text, sizeof(mr->text), "%s \"%s\"", - mc->searchstr, path); - else if (!mr->abort) - strlcpy(mr->text, mc->searchstr, sizeof(mr->text)); - free(path); return(mr); } |