summaryrefslogtreecommitdiff
path: root/lib/libedit
diff options
context:
space:
mode:
authorabhinav <abhinav@NetBSD.org>2019-03-24 16:42:49 +0000
committerabhinav <abhinav@NetBSD.org>2019-03-24 16:42:49 +0000
commit3f17bb64eadafbce6eb4d59a3b77b451ca04f2cc (patch)
tree922f4c37b5e87d529ddff48cbd87019d3eb3597d /lib/libedit
parent954588f6de077adff4d9d55e4d0e9e309fc8040e (diff)
Only quote the completion matches if we are doing filename completion
If the user supplies a value for the attempted_completion_function parameter then we cannot be sure if the completion is for filename or something else, in such a case don't attempt to quote the completion matches. Reviewed by christos This should address PR lib/54067
Diffstat (limited to 'lib/libedit')
-rw-r--r--lib/libedit/filecomplete.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/libedit/filecomplete.c b/lib/libedit/filecomplete.c
index 4593bbc601b..0445b9f430d 100644
--- a/lib/libedit/filecomplete.c
+++ b/lib/libedit/filecomplete.c
@@ -1,4 +1,4 @@
-/* $NetBSD: filecomplete.c,v 1.51 2018/05/04 20:38:26 christos Exp $ */
+/* $NetBSD: filecomplete.c,v 1.52 2019/03/24 16:42:49 abhinav Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
#include "config.h"
#if !defined(lint) && !defined(SCCSID)
-__RCSID("$NetBSD: filecomplete.c,v 1.51 2018/05/04 20:38:26 christos Exp $");
+__RCSID("$NetBSD: filecomplete.c,v 1.52 2019/03/24 16:42:49 abhinav Exp $");
#endif /* not lint && not SCCSID */
#include <sys/types.h>
@@ -655,15 +655,19 @@ fn_complete(EditLine *el,
* it, unless we do filename completion and the
* object is a directory. Also do necessary escape quoting
*/
- char *escaped_completion = escape_filename(el, matches[0]);
- if (escaped_completion == NULL)
+ char *completion;
+ if (!attempted_completion_function)
+ completion = escape_filename(el, matches[0]);
+ else
+ completion = strdup(matches[0]);
+ if (completion == NULL)
goto out;
el_winsertstr(el,
- ct_decode_string(escaped_completion, &el->el_scratch));
+ ct_decode_string(completion, &el->el_scratch));
el_winsertstr(el,
- ct_decode_string((*app_func)(escaped_completion),
+ ct_decode_string((*app_func)(completion),
&el->el_scratch));
- free(escaped_completion);
+ free(completion);
} else {
/*
* Only replace the completed string with common part of