diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2020-04-12 03:41:30 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2020-04-12 03:41:30 +0100 |
commit | 623ee73d661e5ed8475cb264511f683407d87365 (patch) | |
tree | 993eb27c93ec7a2d2d19550300d888fc1fed9e69 /dev-libs/libedit/files | |
parent | ceeeb463cc1eef97fd62eaee8bf2196ba04bc384 (diff) |
gentoo Easter resync : 12.04.2020
Diffstat (limited to 'dev-libs/libedit/files')
-rw-r--r-- | dev-libs/libedit/files/libedit-20170329.3.1-el_fn_sh_complete.patch | 249 | ||||
-rw-r--r-- | dev-libs/libedit/files/libedit-20170329.3.1-ncursesprivate.patch | 10 |
2 files changed, 0 insertions, 259 deletions
diff --git a/dev-libs/libedit/files/libedit-20170329.3.1-el_fn_sh_complete.patch b/dev-libs/libedit/files/libedit-20170329.3.1-el_fn_sh_complete.patch deleted file mode 100644 index c54f27600e34..000000000000 --- a/dev-libs/libedit/files/libedit-20170329.3.1-el_fn_sh_complete.patch +++ /dev/null @@ -1,249 +0,0 @@ ---- libedit-20170329-3.1/src/filecomplete.c 2017-03-29 21:15:04.000000000 +0300 -+++ libedit-20170329-3.1/src/filecomplete.c 2017-05-21 02:23:16.000000000 +0300 -@@ -51,6 +51,7 @@ - #include "filecomplete.h" - - static const wchar_t break_chars[] = L" \t\n\"\\'`@$><=;|&{("; -+static const wchar_t extra_quote_chars[] = L")}*?[$\0"; - - /********************************/ - /* completion functions */ -@@ -405,10 +406,14 @@ - char **(*attempted_completion_function)(const char *, int, int), - const wchar_t *word_break, const wchar_t *special_prefixes, - const char *(*app_func)(const char *), size_t query_items, -- int *completion_type, int *over, int *point, int *end) -+ int *completion_type, int *over, int *point, int *end, -+ const char *(*find_word_start_func)(const char *, const char *), -+ char *(*dequoting_func)(const char *), -+ char *(*quoting_func)(const char *)) - { - const LineInfoW *li; - wchar_t *temp; -+ char *dequoted_temp; - char **matches; - const wchar_t *ctemp; - size_t len; -@@ -429,17 +434,28 @@ - - /* We now look backwards for the start of a filename/variable word */ - li = el_wline(el); -+ if (find_word_start_func) -+ ctemp = ct_decode_string(find_word_start_func(ct_encode_string(li->buffer,&el->el_scratch), ct_encode_string(li->cursor,&el->el_scratch)),&el->el_scratch); -+ else { - ctemp = li->cursor; - while (ctemp > li->buffer - && !wcschr(word_break, ctemp[-1]) - && (!special_prefixes || !wcschr(special_prefixes, ctemp[-1]) ) ) - ctemp--; -+ } - - len = (size_t)(li->cursor - ctemp); - temp = el_malloc((len + 1) * sizeof(*temp)); - (void)wcsncpy(temp, ctemp, len); - temp[len] = '\0'; - -+ if (dequoting_func) { -+ dequoted_temp = dequoting_func(ct_encode_string(temp,&el->el_scratch)); -+ if (dequoted_temp == NULL) -+ return retval; -+ } else -+ dequoted_temp = NULL; -+ - /* these can be used by function called in completion_matches() */ - /* or (*attempted_completion_function)() */ - if (point != NULL) -@@ -450,14 +466,14 @@ - if (attempted_completion_function) { - int cur_off = (int)(li->cursor - li->buffer); - matches = (*attempted_completion_function)( -- ct_encode_string(temp, &el->el_scratch), -+ dequoted_temp? dequoted_temp : ct_encode_string(temp, &el->el_scratch), - cur_off - (int)len, cur_off); - } else - matches = NULL; - if (!attempted_completion_function || - (over != NULL && !*over && !matches)) - matches = completion_matches( -- ct_encode_string(temp, &el->el_scratch), complet_func); -+ dequoted_temp? dequoted_temp : ct_encode_string(temp, &el->el_scratch), complet_func); - - if (over != NULL) - *over = 0; -@@ -472,9 +488,18 @@ - * possible matches if there is possible completion. - */ - if (matches[0][0] != '\0') { -+ char *quoted_match; -+ if (quoting_func) { -+ quoted_match = quoting_func(matches[0]); -+ if (quoted_match == NULL) -+ goto free_matches; -+ } else -+ quoted_match = NULL; -+ - el_deletestr(el, (int) len); - el_winsertstr(el, -- ct_decode_string(matches[0], &el->el_scratch)); -+ ct_decode_string(quoted_match? quoted_match : matches[0], &el->el_scratch)); -+ free(quoted_match); - } - - -@@ -545,12 +570,14 @@ - retval = CC_NORM; - } - -+free_matches: - /* free elements of array and the array itself */ - for (i = 0; matches[i]; i++) - el_free(matches[i]); - el_free(matches); - matches = NULL; - } -+ el_free(dequoted_temp); - el_free(temp); - return retval; - } -@@ -564,5 +591,102 @@ - { - return (unsigned char)fn_complete(el, NULL, NULL, - break_chars, NULL, NULL, (size_t)100, -- NULL, NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL, -+ NULL, NULL, NULL); -+} -+ -+static const char * -+sh_find_word_start(const char *buffer, const char *cursor) -+{ -+ const char *word_start = buffer; -+ -+ while (buffer < cursor) { -+ if (*buffer == '\\') -+ buffer++; -+ else if (strchr(break_chars, *buffer)) -+ word_start = buffer + 1; -+ -+ buffer++; -+ } -+ -+ return word_start; -+} -+ -+ -+static char * -+sh_quote(const char *str) -+{ -+ const char *src; -+ int extra_len = 0; -+ char *quoted_str, *dst; -+ -+ if (*str == '-' || *str == '+') -+ extra_len += 2; -+ for (src = str; *src != '\0'; src++) -+ if (strchr(break_chars, *src) || -+ strchr(extra_quote_chars, *src)) -+ extra_len++; -+ -+ quoted_str = malloc(sizeof(*quoted_str) * -+ (strlen(str) + extra_len + 1)); -+ if (quoted_str == NULL) -+ return NULL; -+ -+ dst = quoted_str; -+ if (*str == '-' || *str == '+') -+ *dst++ = '.', *dst++ = '/'; -+ for (src = str; *src != '\0'; src++) { -+ if (strchr(break_chars, *src) || -+ strchr(extra_quote_chars, *src)) -+ *dst++ = '\\'; -+ *dst++ = *src; -+ } -+ *dst = '\0'; -+ -+ return quoted_str; -+} -+ -+ -+static char * -+sh_dequote(const char *str) -+{ -+ char *dequoted_str, *dst; -+ -+ /* save extra space to replace \~ with ./~ */ -+ dequoted_str = malloc(sizeof(*dequoted_str) * (strlen(str) + 1 + 1)); -+ if (dequoted_str == NULL) -+ return NULL; -+ -+ dst = dequoted_str; -+ -+ /* dequote \~ at start as ./~ */ -+ if (*str == '\\' && str[1] == '~') { -+ str++; -+ *dst++ = '.'; -+ *dst++ = '/'; -+ } -+ -+ while (*str) { -+ if (*str == '\\') -+ str++; -+ if (*str) -+ *dst++ = *str++; -+ } -+ *dst = '\0'; -+ -+ return dequoted_str; -+} -+ -+ -+/* -+ * completion function using sh quoting rules; for key binding -+ */ -+/* ARGSUSED */ -+unsigned char -+_el_fn_sh_complete(EditLine *el, int ch __attribute__((__unused__))) -+{ -+ return (unsigned char)fn_complete(el, NULL, NULL, -+ break_chars, NULL, NULL, 100, -+ NULL, NULL, NULL, NULL, -+ sh_find_word_start, sh_dequote, sh_quote); - } - ---- libedit-20170329-3.1/src/readline.c 2017-03-29 21:15:04.000000000 +0300 -+++ libedit-20170329-3.1/src/readline.c 2017-05-21 02:24:57.000000000 +0300 -@@ -1869,7 +1869,7 @@ - _rl_completion_append_character_function, - (size_t)rl_completion_query_items, - &rl_completion_type, &rl_attempted_completion_over, -- &rl_point, &rl_end); -+ &rl_point, &rl_end, NULL, NULL, NULL); - - - } - ---- libedit-20170329-3.1/src/histedit.h 2017-03-29 21:08:21.000000000 +0300 -+++ libedit-20170329-3.1/src/histedit.h 2017-05-21 02:32:04.000000000 +0300 -@@ -113,6 +113,7 @@ - int el_set(EditLine *, int, ...); - int el_get(EditLine *, int, ...); - unsigned char _el_fn_complete(EditLine *, int); -+unsigned char _el_fn_sh_complete(EditLine *, int); - - /* - * el_set/el_get parameters - ---- libedit-20170329-3.1/src/filecomplete.h 2017-03-29 21:08:21.000000000 +0300 -+++ libedit-20170329-3.1/src/filecomplete.h 2017-05-21 02:32:27.000000000 +0300 -@@ -35,7 +35,10 @@ - char *(*)(const char *, int), - char **(*)(const char *, int, int), - const wchar_t *, const wchar_t *, const char *(*)(const char *), size_t, -- int *, int *, int *, int *); -+ int *, int *, int *, int *, -+ const char *(*)(const char *, const char *), -+ char *(*)(const char *), -+ char *(*)(const char *)); - - void fn_display_match_list(EditLine *, char **, size_t, size_t); - char *fn_tilde_expand(const char *); diff --git a/dev-libs/libedit/files/libedit-20170329.3.1-ncursesprivate.patch b/dev-libs/libedit/files/libedit-20170329.3.1-ncursesprivate.patch deleted file mode 100644 index 1d5432fac0be..000000000000 --- a/dev-libs/libedit/files/libedit-20170329.3.1-ncursesprivate.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- libedit-20170329-3.1/libedit.pc.in 2017-03-29 21:08:21.000000000 +0300 -+++ libedit-20170329-3.1/libedit.pc.in 2017-05-21 01:28:55.000000000 +0300 -@@ -7,5 +7,6 @@ - Description: command line editor library provides generic line editing, history, and tokenization functions. - Version: @VERSION@ - Requires: --Libs: -L${libdir} -ledit @LIBS@ -+Libs: -L${libdir} -ledit -+Libs.private: @LIBS@ - Cflags: -I${includedir} -I${includedir}/editline |