OpenCoverage

bind.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/bash/src/lib/readline/bind.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* bind.c -- key binding and startup file support for the readline library. */-
2-
3/* Copyright (C) 1987-2017 Free Software Foundation, Inc.-
4-
5 This file is part of the GNU Readline Library (Readline), a library-
6 for reading lines of text with interactive input and history editing.-
7-
8 Readline is free software: you can redistribute it and/or modify-
9 it under the terms of the GNU General Public License as published by-
10 the Free Software Foundation, either version 3 of the License, or-
11 (at your option) any later version.-
12-
13 Readline is distributed in the hope that it will be useful,-
14 but WITHOUT ANY WARRANTY; without even the implied warranty of-
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-
16 GNU General Public License for more details.-
17-
18 You should have received a copy of the GNU General Public License-
19 along with Readline. If not, see <http://www.gnu.org/licenses/>.-
20*/-
21-
22#define READLINE_LIBRARY-
23-
24#if defined (__TANDEM)-
25# include <floss.h>-
26#endif-
27-
28#if defined (HAVE_CONFIG_H)-
29# include <config.h>-
30#endif-
31-
32#include <stdio.h>-
33#include <sys/types.h>-
34#include <fcntl.h>-
35#if defined (HAVE_SYS_FILE_H)-
36# include <sys/file.h>-
37#endif /* HAVE_SYS_FILE_H */-
38-
39#if defined (HAVE_UNISTD_H)-
40# include <unistd.h>-
41#endif /* HAVE_UNISTD_H */-
42-
43#if defined (HAVE_STDLIB_H)-
44# include <stdlib.h>-
45#else-
46# include "ansi_stdlib.h"-
47#endif /* HAVE_STDLIB_H */-
48-
49#include <errno.h>-
50-
51#if !defined (errno)-
52extern int errno;-
53#endif /* !errno */-
54-
55#include "posixstat.h"-
56-
57/* System-specific feature definitions and include files. */-
58#include "rldefs.h"-
59-
60/* Some standard library routines. */-
61#include "readline.h"-
62#include "history.h"-
63-
64#include "rlprivate.h"-
65#include "rlshell.h"-
66#include "xmalloc.h"-
67-
68#if !defined (strchr) && !defined (__STDC__)-
69extern char *strchr (), *strrchr ();-
70#endif /* !strchr && !__STDC__ */-
71-
72/* Variables exported by this file. */-
73Keymap rl_binding_keymap;-
74-
75static int _rl_skip_to_delim PARAMS((char *, int, int));-
76-
77#if defined (USE_VARARGS) && defined (PREFER_STDARG)-
78static void _rl_init_file_error (const char *, ...) __attribute__((__format__ (printf, 1, 2)));-
79#else-
80static void _rl_init_file_error ();-
81#endif-
82-
83static rl_command_func_t *_rl_function_of_keyseq_internal PARAMS((const char *, size_t, Keymap, int *));-
84-
85static char *_rl_read_file PARAMS((char *, size_t *));-
86static int _rl_read_init_file PARAMS((const char *, int));-
87static int glean_key_from_name PARAMS((char *));-
88-
89static int find_boolean_var PARAMS((const char *));-
90static int find_string_var PARAMS((const char *));-
91-
92static const char *boolean_varname PARAMS((int));-
93static const char *string_varname PARAMS((int));-
94-
95static char *_rl_get_string_variable_value PARAMS((const char *));-
96static int substring_member_of_array PARAMS((const char *, const char * const *));-
97-
98static int currently_reading_init_file;-
99-
100/* used only in this file */-
101static int _rl_prefer_visible_bell = 1;-
102-
103#define OP_EQ 1-
104#define OP_NE 2-
105#define OP_GT 3-
106#define OP_GE 4-
107#define OP_LT 5-
108#define OP_LE 6-
109-
110#define OPSTART(c) ((c) == '=' || (c) == '!' || (c) == '<' || (c) == '>')-
111#define CMPSTART(c) ((c) == '=' || (c) == '!')-
112-
113/* **************************************************************** */-
114/* */-
115/* Binding keys */-
116/* */-
117/* **************************************************************** */-
118-
119/* rl_add_defun (char *name, rl_command_func_t *function, int key)-
120 Add NAME to the list of named functions. Make FUNCTION be the function-
121 that gets called. If KEY is not -1, then bind it. */-
122int-
123rl_add_defun (const char *name, rl_command_func_t *function, int key)-
124{-
125 if (key != -1)
key != -1Description
TRUEnever evaluated
FALSEnever evaluated
0
126 rl_bind_key (key, function);
never executed: rl_bind_key (key, function);
0
127 rl_add_funmap_entry (name, function);-
128 return 0;
never executed: return 0;
0
129}-
130-
131/* Bind KEY to FUNCTION. Returns non-zero if KEY is out of range. */-
132int-
133rl_bind_key (int key, rl_command_func_t *function)-
134{-
135 char keyseq[3];-
136 int l;-
137-
138 if (key < 0)
key < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
139 return (key);
never executed: return (key);
0
140-
141 if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii)
(key) > 0x07fDescription
TRUEnever evaluated
FALSEnever evaluated
(key) <= 255Description
TRUEnever evaluated
FALSEnever evaluated
_rl_convert_me...chars_to_asciiDescription
TRUEnever evaluated
FALSEnever evaluated
0
142 {-
143 if (_rl_keymap[ESC].type == ISKMAP)
_rl_keymap[(('...1f)].type == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
144 {-
145 Keymap escmap;-
146-
147 escmap = FUNCTION_TO_KEYMAP (_rl_keymap, ESC);-
148 key = UNMETA (key);-
149 escmap[key].type = ISFUNC;-
150 escmap[key].function = function;-
151 return (0);
never executed: return (0);
0
152 }-
153 return (key);
never executed: return (key);
0
154 }-
155-
156 /* If it's bound to a function or macro, just overwrite. Otherwise we have-
157 to treat it as a key sequence so rl_generic_bind handles shadow keymaps-
158 for us. If we are binding '\' make sure to escape it so it makes it-
159 through the call to rl_translate_keyseq. */-
160 if (_rl_keymap[key].type != ISKMAP)
_rl_keymap[key].type != 1Description
TRUEnever evaluated
FALSEnever evaluated
0
161 {-
162 _rl_keymap[key].type = ISFUNC;-
163 _rl_keymap[key].function = function;-
164 }
never executed: end of block
0
165 else-
166 {-
167 l = 0;-
168 if (key == '\\')
key == '\\'Description
TRUEnever evaluated
FALSEnever evaluated
0
169 keyseq[l++] = '\\';
never executed: keyseq[l++] = '\\';
0
170 keyseq[l++] = key;-
171 keyseq[l] = '\0';-
172 rl_bind_keyseq (keyseq, function);-
173 }
never executed: end of block
0
174 rl_binding_keymap = _rl_keymap;-
175 return (0);
never executed: return (0);
0
176}-
177-
178/* Bind KEY to FUNCTION in MAP. Returns non-zero in case of invalid-
179 KEY. */-
180int-
181rl_bind_key_in_map (int key, rl_command_func_t *function, Keymap map)-
182{-
183 int result;-
184 Keymap oldmap;-
185-
186 oldmap = _rl_keymap;-
187 _rl_keymap = map;-
188 result = rl_bind_key (key, function);-
189 _rl_keymap = oldmap;-
190 return (result);
never executed: return (result);
0
191}-
192-
193/* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right-
194 now, this is always used to attempt to bind the arrow keys. */-
195int-
196rl_bind_key_if_unbound_in_map (int key, rl_command_func_t *default_func, Keymap kmap)-
197{-
198 char *keyseq;-
199-
200 keyseq = rl_untranslate_keyseq ((unsigned char)key);-
201 return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap));
never executed: return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, kmap));
0
202}-
203-
204int-
205rl_bind_key_if_unbound (int key, rl_command_func_t *default_func)-
206{-
207 char *keyseq;-
208-
209 keyseq = rl_untranslate_keyseq ((unsigned char)key);-
210 return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap));
never executed: return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap));
0
211}-
212-
213/* Make KEY do nothing in the currently selected keymap.-
214 Returns non-zero in case of error. This is not the same as self-insert;-
215 this makes it a dead key. */-
216int-
217rl_unbind_key (int key)-
218{-
219 return (rl_bind_key (key, (rl_command_func_t *)NULL));
never executed: return (rl_bind_key (key, (rl_command_func_t *) ((void *)0) ));
0
220}-
221-
222/* Make KEY do nothing in MAP. Returns non-zero in case of error. */-
223int-
224rl_unbind_key_in_map (int key, Keymap map)-
225{-
226 return (rl_bind_key_in_map (key, (rl_command_func_t *)NULL, map));
never executed: return (rl_bind_key_in_map (key, (rl_command_func_t *) ((void *)0) , map));
0
227}-
228-
229/* Unbind all keys bound to FUNCTION in MAP. */-
230int-
231rl_unbind_function_in_map (rl_command_func_t *func, Keymap map)-
232{-
233 register int i, rval;-
234-
235 for (i = rval = 0; i < KEYMAP_SIZE; i++)
i < 257Description
TRUEnever evaluated
FALSEnever evaluated
0
236 {-
237 if (map[i].type == ISFUNC && map[i].function == func)
map[i].type == 0Description
TRUEnever evaluated
FALSEnever evaluated
map[i].function == funcDescription
TRUEnever evaluated
FALSEnever evaluated
0
238 {-
239 map[i].function = (rl_command_func_t *)NULL;-
240 rval = 1;-
241 }
never executed: end of block
0
242 }
never executed: end of block
0
243 return rval;
never executed: return rval;
0
244}-
245-
246/* Unbind all keys bound to COMMAND, which is a bindable command name, in MAP */-
247int-
248rl_unbind_command_in_map (const char *command, Keymap map)-
249{-
250 rl_command_func_t *func;-
251-
252 func = rl_named_function (command);-
253 if (func == 0)
func == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
254 return 0;
never executed: return 0;
0
255 return (rl_unbind_function_in_map (func, map));
never executed: return (rl_unbind_function_in_map (func, map));
0
256}-
257-
258/* Bind the key sequence represented by the string KEYSEQ to-
259 FUNCTION, starting in the current keymap. This makes new-
260 keymaps as necessary. */-
261int-
262rl_bind_keyseq (const char *keyseq, rl_command_func_t *function)-
263{-
264 return (rl_generic_bind (ISFUNC, keyseq, (char *)function, _rl_keymap));
never executed: return (rl_generic_bind (0, keyseq, (char *)function, _rl_keymap));
0
265}-
266-
267/* Bind the key sequence represented by the string KEYSEQ to-
268 FUNCTION. This makes new keymaps as necessary. The initial-
269 place to do bindings is in MAP. */-
270int-
271rl_bind_keyseq_in_map (const char *keyseq, rl_command_func_t *function, Keymap map)-
272{-
273 return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map));
never executed: return (rl_generic_bind (0, keyseq, (char *)function, map));
0
274}-
275-
276/* Backwards compatibility; equivalent to rl_bind_keyseq_in_map() */-
277int-
278rl_set_key (const char *keyseq, rl_command_func_t *function, Keymap map)-
279{-
280 return (rl_generic_bind (ISFUNC, keyseq, (char *)function, map));
never executed: return (rl_generic_bind (0, keyseq, (char *)function, map));
0
281}-
282-
283/* Bind key sequence KEYSEQ to DEFAULT_FUNC if KEYSEQ is unbound. Right-
284 now, this is always used to attempt to bind the arrow keys, hence the-
285 check for rl_vi_movement_mode. */-
286int-
287rl_bind_keyseq_if_unbound_in_map (const char *keyseq, rl_command_func_t *default_func, Keymap kmap)-
288{-
289 rl_command_func_t *func;-
290 char *keys;-
291 int keys_len;-
292-
293 if (keyseq)
keyseqDescription
TRUEnever evaluated
FALSEnever evaluated
0
294 {-
295 /* Handle key sequences that require translations and `raw' ones that-
296 don't. This might be a problem with backslashes. */-
297 keys = (char *)xmalloc (1 + (2 * strlen (keyseq)));-
298 if (rl_translate_keyseq (keyseq, keys, &keys_len))
rl_translate_k...ys, &keys_len)Description
TRUEnever evaluated
FALSEnever evaluated
0
299 {-
300 xfree (keys);-
301 return -1;
never executed: return -1;
0
302 }-
303 func = rl_function_of_keyseq_len (keys, keys_len, kmap, (int *)NULL);-
304 xfree (keys);-
305#if defined (VI_MODE)-
306 if (!func || func == rl_do_lowercase_version || func == rl_vi_movement_mode)
!funcDescription
TRUEnever evaluated
FALSEnever evaluated
func == rl_do_...ercase_versionDescription
TRUEnever evaluated
FALSEnever evaluated
func == rl_vi_movement_modeDescription
TRUEnever evaluated
FALSEnever evaluated
0
307#else-
308 if (!func || func == rl_do_lowercase_version)-
309#endif-
310 return (rl_bind_keyseq_in_map (keyseq, default_func, kmap));
never executed: return (rl_bind_keyseq_in_map (keyseq, default_func, kmap));
0
311 else-
312 return 1;
never executed: return 1;
0
313 }-
314 return 0;
never executed: return 0;
0
315}-
316-
317int-
318rl_bind_keyseq_if_unbound (const char *keyseq, rl_command_func_t *default_func)-
319{-
320 return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap));
never executed: return (rl_bind_keyseq_if_unbound_in_map (keyseq, default_func, _rl_keymap));
0
321}-
322-
323/* Bind the key sequence represented by the string KEYSEQ to-
324 the string of characters MACRO. This makes new keymaps as-
325 necessary. The initial place to do bindings is in MAP. */-
326int-
327rl_macro_bind (const char *keyseq, const char *macro, Keymap map)-
328{-
329 char *macro_keys;-
330 int macro_keys_len;-
331-
332 macro_keys = (char *)xmalloc ((2 * strlen (macro)) + 1);-
333-
334 if (rl_translate_keyseq (macro, macro_keys, &macro_keys_len))
rl_translate_k...acro_keys_len)Description
TRUEnever evaluated
FALSEnever evaluated
0
335 {-
336 xfree (macro_keys);-
337 return -1;
never executed: return -1;
0
338 }-
339 rl_generic_bind (ISMACR, keyseq, macro_keys, map);-
340 return 0;
never executed: return 0;
0
341}-
342-
343/* Bind the key sequence represented by the string KEYSEQ to-
344 the arbitrary pointer DATA. TYPE says what kind of data is-
345 pointed to by DATA, right now this can be a function (ISFUNC),-
346 a macro (ISMACR), or a keymap (ISKMAP). This makes new keymaps-
347 as necessary. The initial place to do bindings is in MAP. */-
348int-
349rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)-
350{-
351 char *keys;-
352 int keys_len, prevkey;-
353 register int i;-
354 KEYMAP_ENTRY k;-
355 Keymap prevmap; -
356-
357 k.function = 0;-
358-
359 /* If no keys to bind to, exit right away. */-
360 if (keyseq == 0 || *keyseq == 0)
keyseq == 0Description
TRUEnever evaluated
FALSEnever evaluated
*keyseq == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
361 {-
362 if (type == ISMACR)
type == 2Description
TRUEnever evaluated
FALSEnever evaluated
0
363 xfree (data);
never executed: xfree (data);
0
364 return -1;
never executed: return -1;
0
365 }-
366-
367 keys = (char *)xmalloc (1 + (2 * strlen (keyseq)));-
368-
369 /* Translate the ASCII representation of KEYSEQ into an array of-
370 characters. Stuff the characters into KEYS, and the length of-
371 KEYS into KEYS_LEN. */-
372 if (rl_translate_keyseq (keyseq, keys, &keys_len))
rl_translate_k...ys, &keys_len)Description
TRUEnever evaluated
FALSEnever evaluated
0
373 {-
374 xfree (keys);-
375 return -1;
never executed: return -1;
0
376 }-
377-
378 prevmap = map;-
379 prevkey = keys[0];-
380-
381 /* Bind keys, making new keymaps as necessary. */-
382 for (i = 0; i < keys_len; i++)
i < keys_lenDescription
TRUEnever evaluated
FALSEnever evaluated
0
383 {-
384 unsigned char uc = keys[i];-
385 int ic;-
386-
387 if (i > 0)
i > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
388 prevkey = ic;
never executed: prevkey = ic;
0
389-
390 ic = uc;-
391 if (ic < 0 || ic >= KEYMAP_SIZE)
ic < 0Description
TRUEnever evaluated
FALSEnever evaluated
ic >= 257Description
TRUEnever evaluated
FALSEnever evaluated
0
392 {-
393 xfree (keys);-
394 return -1;
never executed: return -1;
0
395 }-
396-
397 if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
(ic) > 0x07fDescription
TRUEnever evaluated
FALSEnever evaluated
(ic) <= 255Description
TRUEnever evaluated
FALSEnever evaluated
_rl_convert_me...chars_to_asciiDescription
TRUEnever evaluated
FALSEnever evaluated
0
398 {-
399 ic = UNMETA (ic);-
400 if (map[ESC].type == ISKMAP)
map[(('[') & 0x1f)].type == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
401 {-
402 prevmap = map;-
403 map = FUNCTION_TO_KEYMAP (map, ESC);-
404 }
never executed: end of block
0
405 }
never executed: end of block
0
406-
407 if ((i + 1) < keys_len)
(i + 1) < keys_lenDescription
TRUEnever evaluated
FALSEnever evaluated
0
408 {-
409 if (map[ic].type != ISKMAP)
map[ic].type != 1Description
TRUEnever evaluated
FALSEnever evaluated
0
410 {-
411 /* We allow subsequences of keys. If a keymap is being-
412 created that will `shadow' an existing function or macro-
413 key binding, we save that keybinding into the ANYOTHERKEY-
414 index in the new map. The dispatch code will look there-
415 to find the function to execute if the subsequence is not-
416 matched. ANYOTHERKEY was chosen to be greater than-
417 UCHAR_MAX. */-
418 k = map[ic];-
419-
420 map[ic].type = ISKMAP;-
421 map[ic].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap());-
422 }
never executed: end of block
0
423 prevmap = map;-
424 map = FUNCTION_TO_KEYMAP (map, ic);-
425 /* The dispatch code will return this function if no matching-
426 key sequence is found in the keymap. This (with a little-
427 help from the dispatch code in readline.c) allows `a' to be-
428 mapped to something, `abc' to be mapped to something else,-
429 and the function bound to `a' to be executed when the user-
430 types `abx', leaving `bx' in the input queue. */-
431 if (k.function && ((k.type == ISFUNC && k.function != rl_do_lowercase_version) || k.type == ISMACR))
k.functionDescription
TRUEnever evaluated
FALSEnever evaluated
k.type == 0Description
TRUEnever evaluated
FALSEnever evaluated
k.function != ...ercase_versionDescription
TRUEnever evaluated
FALSEnever evaluated
k.type == 2Description
TRUEnever evaluated
FALSEnever evaluated
0
432 {-
433 map[ANYOTHERKEY] = k;-
434 k.function = 0;-
435 }
never executed: end of block
0
436 }
never executed: end of block
0
437 else-
438 {-
439 if (map[ic].type == ISMACR)
map[ic].type == 2Description
TRUEnever evaluated
FALSEnever evaluated
0
440 xfree ((char *)map[ic].function);
never executed: xfree ((char *)map[ic].function);
0
441 else if (map[ic].type == ISKMAP)
map[ic].type == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
442 {-
443 prevmap = map;-
444 map = FUNCTION_TO_KEYMAP (map, ic);-
445 ic = ANYOTHERKEY;-
446 /* If we're trying to override a keymap with a null function-
447 (e.g., trying to unbind it), we can't use a null pointer-
448 here because that's indistinguishable from having not been-
449 overridden. We use a special bindable function that does-
450 nothing. */-
451 if (type == ISFUNC && data == 0)
type == 0Description
TRUEnever evaluated
FALSEnever evaluated
data == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
452 data = (char *)_rl_null_function;
never executed: data = (char *)_rl_null_function;
0
453 }
never executed: end of block
0
454-
455 map[ic].function = KEYMAP_TO_FUNCTION (data);-
456 map[ic].type = type;-
457 }
never executed: end of block
0
458-
459 rl_binding_keymap = map;-
460-
461 }
never executed: end of block
0
462-
463 /* If we unbound a key (type == ISFUNC, data == 0), and the prev keymap-
464 points to the keymap where we unbound the key (sanity check), and the-
465 current binding keymap is empty (rl_empty_keymap() returns non-zero),-
466 and the binding keymap has ANYOTHERKEY set with type == ISFUNC-
467 (overridden function), delete the now-empty keymap, take the previously--
468 overridden function and remove the override. */-
469 /* Right now, this only works one level back. */-
470 if (type == ISFUNC && data == 0 &&
type == 0Description
TRUEnever evaluated
FALSEnever evaluated
data == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
471 prevmap[prevkey].type == ISKMAP &&
prevmap[prevkey].type == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
472 (FUNCTION_TO_KEYMAP(prevmap, prevkey) == rl_binding_keymap) &&
((Keymap)(prev...inding_keymap)Description
TRUEnever evaluated
FALSEnever evaluated
0
473 rl_binding_keymap[ANYOTHERKEY].type == ISFUNC &&
rl_binding_key... -1].type == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
474 rl_empty_keymap (rl_binding_keymap))
rl_empty_keyma...inding_keymap)Description
TRUEnever evaluated
FALSEnever evaluated
0
475 {-
476 prevmap[prevkey].type = rl_binding_keymap[ANYOTHERKEY].type;-
477 prevmap[prevkey].function = rl_binding_keymap[ANYOTHERKEY].function;-
478 rl_discard_keymap (rl_binding_keymap);-
479 rl_binding_keymap = prevmap;-
480 }
never executed: end of block
0
481-
482 xfree (keys);-
483 return 0;
never executed: return 0;
0
484}-
485-
486/* Translate the ASCII representation of SEQ, stuffing the values into ARRAY,-
487 an array of characters. LEN gets the final length of ARRAY. Return-
488 non-zero if there was an error parsing SEQ. */-
489int-
490rl_translate_keyseq (const char *seq, char *array, int *len)-
491{-
492 register int i, c, l, temp;-
493-
494 for (i = l = 0; c = seq[i]; i++)
c = seq[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
495 {-
496 if (c == '\\')
c == '\\'Description
TRUEnever evaluated
FALSEnever evaluated
0
497 {-
498 c = seq[++i];-
499-
500 if (c == 0)
c == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
501 {-
502 array[l++] = '\\'; /* preserve trailing backslash */-
503 break;
never executed: break;
0
504 }-
505-
506 /* Handle \C- and \M- prefixes. */-
507 if ((c == 'C' || c == 'M') && seq[i + 1] == '-')
c == 'C'Description
TRUEnever evaluated
FALSEnever evaluated
c == 'M'Description
TRUEnever evaluated
FALSEnever evaluated
seq[i + 1] == '-'Description
TRUEnever evaluated
FALSEnever evaluated
0
508 {-
509 /* Handle special case of backwards define. */-
510 if (strncmp (&seq[i], "C-\\M-", 5) == 0)
never executed: __result = (((const unsigned char *) (const char *) ( &seq[i] ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
never executed: __result = (((const unsigned char *) (const char *) ( "C-\\M-" ))[3] - __s2[3]);
never executed: end of block
never executed: end of block
(__extension__..." , 5 ))) == 0Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_constant_p ( 5 )Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons..._p ( &seq[i] )Description
TRUEnever evaluated
FALSEnever evaluated
strlen ( &seq[...size_t) ( 5 ))Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...p ( "C-\\M-" )Description
TRUEnever evaluated
FALSEnever evaluated
strlen ( "C-\\...size_t) ( 5 ))Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s1_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 0Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 1Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
__s2_len > 2Description
TRUEnever evaluated
FALSEnever evaluated
__result == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
511 {-
512 array[l++] = ESC; /* ESC is meta-prefix */-
513 i += 5;-
514 array[l++] = CTRL (_rl_to_upper (seq[i]));
never executed: end of block
never executed: __res = toupper ( (unsigned char)seq[i] );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)seq[i] )];
sizeof ( (unsi...r)seq[i] ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons... char)seq[i] )Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha...) == (seq[i]))Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISlower)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
0
515 }
never executed: end of block
0
516 else if (c == 'M')
c == 'M'Description
TRUEnever evaluated
FALSEnever evaluated
0
517 {-
518 i++; /* seq[i] == '-' */-
519 /* XXX - obey convert-meta setting */-
520 if (_rl_convert_meta_chars_to_ascii && _rl_keymap[ESC].type == ISKMAP)
_rl_convert_me...chars_to_asciiDescription
TRUEnever evaluated
FALSEnever evaluated
_rl_keymap[(('...1f)].type == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
521 array[l++] = ESC; /* ESC is meta-prefix */
never executed: array[l++] = (('[') & 0x1f);
0
522 else if (seq[i+1] == '\\' && seq[i+2] == 'C' && seq[i+3] == '-')
seq[i+1] == '\\'Description
TRUEnever evaluated
FALSEnever evaluated
seq[i+2] == 'C'Description
TRUEnever evaluated
FALSEnever evaluated
seq[i+3] == '-'Description
TRUEnever evaluated
FALSEnever evaluated
0
523 {-
524 i += 4;-
525 temp = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i]));
never executed: end of block
never executed: __res = toupper ( (unsigned char)seq[i] );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)seq[i] )];
sizeof ( (unsi...r)seq[i] ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons... char)seq[i] )Description
TRUEnever evaluated
FALSEnever evaluated
(seq[i] == '?')Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha...) == (seq[i]))Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISlower)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
0
526 array[l++] = META (temp);-
527 }
never executed: end of block
0
528 else-
529 {-
530 /* This doesn't yet handle things like \M-\a, which may-
531 or may not have any reasonable meaning. You're-
532 probably better off using straight octal or hex. */-
533 i++;-
534 array[l++] = META (seq[i]);-
535 }
never executed: end of block
0
536 }-
537 else if (c == 'C')
c == 'C'Description
TRUEnever evaluated
FALSEnever evaluated
0
538 {-
539 i += 2;-
540 /* Special hack for C-?... */-
541 array[l++] = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i]));
never executed: end of block
never executed: __res = toupper ( (unsigned char)seq[i] );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)seq[i] )];
sizeof ( (unsi...r)seq[i] ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons... char)seq[i] )Description
TRUEnever evaluated
FALSEnever evaluated
(seq[i] == '?')Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha...) == (seq[i]))Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISlower)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
0
542 }
never executed: end of block
0
543 if (seq[i] == '\0')
seq[i] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
544 break;
never executed: break;
0
545 continue;
never executed: continue;
0
546 } -
547-
548 /* Translate other backslash-escaped characters. These are the-
549 same escape sequences that bash's `echo' and `printf' builtins-
550 handle, with the addition of \d -> RUBOUT. A backslash-
551 preceding a character that is not special is stripped. */-
552 switch (c)-
553 {-
554 case 'a':
never executed: case 'a':
0
555 array[l++] = '\007';-
556 break;
never executed: break;
0
557 case 'b':
never executed: case 'b':
0
558 array[l++] = '\b';-
559 break;
never executed: break;
0
560 case 'd':
never executed: case 'd':
0
561 array[l++] = RUBOUT; /* readline-specific */-
562 break;
never executed: break;
0
563 case 'e':
never executed: case 'e':
0
564 array[l++] = ESC;-
565 break;
never executed: break;
0
566 case 'f':
never executed: case 'f':
0
567 array[l++] = '\f';-
568 break;
never executed: break;
0
569 case 'n':
never executed: case 'n':
0
570 array[l++] = NEWLINE;-
571 break;
never executed: break;
0
572 case 'r':
never executed: case 'r':
0
573 array[l++] = RETURN;-
574 break;
never executed: break;
0
575 case 't':
never executed: case 't':
0
576 array[l++] = TAB;-
577 break;
never executed: break;
0
578 case 'v':
never executed: case 'v':
0
579 array[l++] = 0x0B;-
580 break;
never executed: break;
0
581 case '\\':
never executed: case '\\':
0
582 array[l++] = '\\';-
583 break;
never executed: break;
0
584 case '0': case '1': case '2': case '3':
never executed: case '0':
never executed: case '1':
never executed: case '2':
never executed: case '3':
0
585 case '4': case '5': case '6': case '7':
never executed: case '4':
never executed: case '5':
never executed: case '6':
never executed: case '7':
0
586 i++;-
587 for (temp = 2, c -= '0'; ISOCTAL ((unsigned char)seq[i]) && temp--; i++)
((unsigned char)seq[i]) >= '0'Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned char)seq[i]) <= '7'Description
TRUEnever evaluated
FALSEnever evaluated
temp--Description
TRUEnever evaluated
FALSEnever evaluated
0
588 c = (c * 8) + OCTVALUE (seq[i]);
never executed: c = (c * 8) + ((seq[i]) - '0');
0
589 i--; /* auto-increment in for loop */-
590 array[l++] = c & largest_char;-
591 break;
never executed: break;
0
592 case 'x':
never executed: case 'x':
0
593 i++;-
594 for (temp = 2, c = 0; ISXDIGIT ((unsigned char)seq[i]) && temp--; i++)
((*__ctype_b_l...nt) _ISxdigit)Description
TRUEnever evaluated
FALSEnever evaluated
temp--Description
TRUEnever evaluated
FALSEnever evaluated
0
595 c = (c * 16) + HEXVALUE (seq[i]);
never executed: c = (c * 16) + (((seq[i]) >= 'a' && (seq[i]) <= 'f') ? (seq[i])-'a'+10 : (seq[i]) >= 'A' && (seq[i]) <= 'F' ? (seq[i])-'A'+10 : (seq[i])-'0');
(seq[i]) >= 'a'Description
TRUEnever evaluated
FALSEnever evaluated
(seq[i]) <= 'f'Description
TRUEnever evaluated
FALSEnever evaluated
(seq[i]) >= 'A'Description
TRUEnever evaluated
FALSEnever evaluated
(seq[i]) <= 'F'Description
TRUEnever evaluated
FALSEnever evaluated
0
596 if (temp == 2)
temp == 2Description
TRUEnever evaluated
FALSEnever evaluated
0
597 c = 'x';
never executed: c = 'x';
0
598 i--; /* auto-increment in for loop */-
599 array[l++] = c & largest_char;-
600 break;
never executed: break;
0
601 default: /* backslashes before non-special chars just add the char */
never executed: default:
0
602 array[l++] = c;-
603 break; /* the backslash is stripped */
never executed: break;
0
604 }-
605 continue;
never executed: continue;
0
606 }-
607-
608 array[l++] = c;-
609 }
never executed: end of block
0
610-
611 *len = l;-
612 array[l] = '\0';-
613 return (0);
never executed: return (0);
0
614}-
615-
616static int-
617_rl_isescape (int c)-
618{-
619 switch (c)-
620 {-
621 case '\007':
never executed: case '\007':
0
622 case '\b':
never executed: case '\b':
0
623 case '\f':
never executed: case '\f':
0
624 case '\n':
never executed: case '\n':
0
625 case '\r':
never executed: case '\r':
0
626 case TAB:
never executed: case '\t':
0
627 case 0x0b: return (1);
never executed: return (1);
never executed: case 0x0b:
0
628 default: return (0);
never executed: return (0);
never executed: default:
0
629 }-
630}-
631-
632static int-
633_rl_escchar (int c)-
634{-
635 switch (c)-
636 {-
637 case '\007': return ('a');
never executed: return ('a');
never executed: case '\007':
0
638 case '\b': return ('b');
never executed: return ('b');
never executed: case '\b':
0
639 case '\f': return ('f');
never executed: return ('f');
never executed: case '\f':
0
640 case '\n': return ('n');
never executed: return ('n');
never executed: case '\n':
0
641 case '\r': return ('r');
never executed: return ('r');
never executed: case '\r':
0
642 case TAB: return ('t');
never executed: return ('t');
never executed: case '\t':
0
643 case 0x0b: return ('v');
never executed: return ('v');
never executed: case 0x0b:
0
644 default: return (c);
never executed: return (c);
never executed: default:
0
645 }-
646}-
647-
648char *-
649rl_untranslate_keyseq (int seq)-
650{-
651 static char kseq[16];-
652 int i, c;-
653-
654 i = 0;-
655 c = seq;-
656 if (META_CHAR (c))
(c) > 0x07fDescription
TRUEnever evaluated
FALSEnever evaluated
(c) <= 255Description
TRUEnever evaluated
FALSEnever evaluated
0
657 {-
658 kseq[i++] = '\\';-
659 kseq[i++] = 'M';-
660 kseq[i++] = '-';-
661 c = UNMETA (c);-
662 }
never executed: end of block
0
663 else if (c == ESC)
c == (('[') & 0x1f)Description
TRUEnever evaluated
FALSEnever evaluated
0
664 {-
665 kseq[i++] = '\\';-
666 c = 'e';-
667 }
never executed: end of block
0
668 else if (CTRL_CHAR (c))
(c) < 0x020Description
TRUEnever evaluated
FALSEnever evaluated
(((c) & 0x80) == 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
669 {-
670 kseq[i++] = '\\';-
671 kseq[i++] = 'C';-
672 kseq[i++] = '-';-
673 c = _rl_to_lower (UNCTRL (c));
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = tolower ( (unsigned char)((((unsigned char)(((c)|0x40)) == (((c)|0x40))) && (1 && ((*__ctype_b_loc ())[(int) (( (unsigned char)((c)|0x40) ))] & (unsigned short int) _ISlower) )) ? (__extension__ ({ int __res; if (sizeof ( (unsigned char)((c)|0x40)...d char)((c)|0x40) ); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper ( (unsigned char)((c)|0x40) ); } else __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )]; __res; })) : (((c)|0x40))) );
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: __res = (*__ctype_tolower_loc ())[(int) ( (unsigned char)((((unsigned char)(((c)|0x40)) == (((c)|0x40))) && (1 && ((*__ctype_b_loc ())[(int) (( (unsigned char)((c)|0x40) ))] & (unsigned short int) _ISlower) )) ? (__extension__ ({ int __res; if (sizeof ( (... char)((c)|0x40) ); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper ( (unsigned char)((c)|0x40) ); } else __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )]; __res; })) : (((c)|0x40))) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...|0x40))) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...((c)|0x40))) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha...((c)|0x40)))))Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha... (((c)|0x40)))Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISlower)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISupper)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha... (((c)|0x40)))Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISlower)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
0
674 }
never executed: end of block
0
675 else if (c == RUBOUT)
c == 0x7fDescription
TRUEnever evaluated
FALSEnever evaluated
0
676 {-
677 kseq[i++] = '\\';-
678 kseq[i++] = 'C';-
679 kseq[i++] = '-';-
680 c = '?';-
681 }
never executed: end of block
0
682-
683 if (c == ESC)
c == (('[') & 0x1f)Description
TRUEnever evaluated
FALSEnever evaluated
0
684 {-
685 kseq[i++] = '\\';-
686 c = 'e';-
687 }
never executed: end of block
0
688 else if (c == '\\' || c == '"')
c == '\\'Description
TRUEnever evaluated
FALSEnever evaluated
c == '"'Description
TRUEnever evaluated
FALSEnever evaluated
0
689 {-
690 kseq[i++] = '\\';-
691 }
never executed: end of block
0
692-
693 kseq[i++] = (unsigned char) c;-
694 kseq[i] = '\0';-
695 return kseq;
never executed: return kseq;
0
696}-
697-
698char *-
699_rl_untranslate_macro_value (char *seq, int use_escapes)-
700{-
701 char *ret, *r, *s;-
702 int c;-
703-
704 r = ret = (char *)xmalloc (7 * strlen (seq) + 1);-
705 for (s = seq; *s; s++)
*sDescription
TRUEnever evaluated
FALSEnever evaluated
0
706 {-
707 c = *s;-
708 if (META_CHAR (c))
(c) > 0x07fDescription
TRUEnever evaluated
FALSEnever evaluated
(c) <= 255Description
TRUEnever evaluated
FALSEnever evaluated
0
709 {-
710 *r++ = '\\';-
711 *r++ = 'M';-
712 *r++ = '-';-
713 c = UNMETA (c);-
714 }
never executed: end of block
0
715 else if (c == ESC)
c == (('[') & 0x1f)Description
TRUEnever evaluated
FALSEnever evaluated
0
716 {-
717 *r++ = '\\';-
718 c = 'e';-
719 }
never executed: end of block
0
720 else if (CTRL_CHAR (c))
(c) < 0x020Description
TRUEnever evaluated
FALSEnever evaluated
(((c) & 0x80) == 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
721 {-
722 *r++ = '\\';-
723 if (use_escapes && _rl_isescape (c))
use_escapesDescription
TRUEnever evaluated
FALSEnever evaluated
_rl_isescape (c)Description
TRUEnever evaluated
FALSEnever evaluated
0
724 c = _rl_escchar (c);
never executed: c = _rl_escchar (c);
0
725 else-
726 {-
727 *r++ = 'C';-
728 *r++ = '-';-
729 c = _rl_to_lower (UNCTRL (c));
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = tolower ( (unsigned char)((((unsigned char)(((c)|0x40)) == (((c)|0x40))) && (1 && ((*__ctype_b_loc ())[(int) (( (unsigned char)((c)|0x40) ))] & (unsigned short int) _ISlower) )) ? (__extension__ ({ int __res; if (sizeof ( (unsigned char)((c)|0x40)...d char)((c)|0x40) ); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper ( (unsigned char)((c)|0x40) ); } else __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )]; __res; })) : (((c)|0x40))) );
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: __res = (*__ctype_tolower_loc ())[(int) ( (unsigned char)((((unsigned char)(((c)|0x40)) == (((c)|0x40))) && (1 && ((*__ctype_b_loc ())[(int) (( (unsigned char)((c)|0x40) ))] & (unsigned short int) _ISlower) )) ? (__extension__ ({ int __res; if (sizeof ( (... char)((c)|0x40) ); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper ( (unsigned char)((c)|0x40) ); } else __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )]; __res; })) : (((c)|0x40))) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...|0x40))) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...((c)|0x40))) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha...((c)|0x40)))))Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha... (((c)|0x40)))Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISlower)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISupper)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha... (((c)|0x40)))Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISlower)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
0
730 }
never executed: end of block
0
731 }-
732 else if (c == RUBOUT)
c == 0x7fDescription
TRUEnever evaluated
FALSEnever evaluated
0
733 {-
734 *r++ = '\\';-
735 *r++ = 'C';-
736 *r++ = '-';-
737 c = '?';-
738 }
never executed: end of block
0
739-
740 if (c == ESC)
c == (('[') & 0x1f)Description
TRUEnever evaluated
FALSEnever evaluated
0
741 {-
742 *r++ = '\\';-
743 c = 'e';-
744 }
never executed: end of block
0
745 else if (c == '\\' || c == '"')
c == '\\'Description
TRUEnever evaluated
FALSEnever evaluated
c == '"'Description
TRUEnever evaluated
FALSEnever evaluated
0
746 *r++ = '\\';
never executed: *r++ = '\\';
0
747-
748 *r++ = (unsigned char)c;-
749 }
never executed: end of block
0
750 *r = '\0';-
751 return ret;
never executed: return ret;
0
752}-
753-
754/* Return a pointer to the function that STRING represents.-
755 If STRING doesn't have a matching function, then a NULL pointer-
756 is returned. */-
757rl_command_func_t *-
758rl_named_function (const char *string)-
759{-
760 register int i;-
761-
762 rl_initialize_funmap ();-
763-
764 for (i = 0; funmap[i]; i++)
funmap[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
765 if (_rl_stricmp (funmap[i]->name, string) == 0)
strcasecmp (fu..., string) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
766 return (funmap[i]->function);
never executed: return (funmap[i]->function);
0
767 return ((rl_command_func_t *)NULL);
never executed: return ((rl_command_func_t *) ((void *)0) );
0
768}-
769-
770/* Return the function (or macro) definition which would be invoked via-
771 KEYSEQ if executed in MAP. If MAP is NULL, then the current keymap is-
772 used. TYPE, if non-NULL, is a pointer to an int which will receive the-
773 type of the object pointed to. One of ISFUNC (function), ISKMAP (keymap),-
774 or ISMACR (macro). */-
775static rl_command_func_t *-
776_rl_function_of_keyseq_internal (const char *keyseq, size_t len, Keymap map, int *type)-
777{-
778 register int i;-
779-
780 if (map == 0)
map == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
781 map = _rl_keymap;
never executed: map = _rl_keymap;
0
782-
783 for (i = 0; keyseq && i < len; i++)
keyseqDescription
TRUEnever evaluated
FALSEnever evaluated
i < lenDescription
TRUEnever evaluated
FALSEnever evaluated
0
784 {-
785 unsigned char ic = keyseq[i];-
786-
787 if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
(ic) > 0x07fDescription
TRUEnever evaluated
FALSEnever evaluated
(ic) <= 255Description
TRUEnever evaluated
FALSEnever evaluated
_rl_convert_me...chars_to_asciiDescription
TRUEnever evaluated
FALSEnever evaluated
0
788 {-
789 if (map[ESC].type == ISKMAP)
map[(('[') & 0x1f)].type == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
790 {-
791 map = FUNCTION_TO_KEYMAP (map, ESC);-
792 ic = UNMETA (ic);-
793 }
never executed: end of block
0
794 /* XXX - should we just return NULL here, since this obviously-
795 doesn't match? */-
796 else-
797 {-
798 if (type)
typeDescription
TRUEnever evaluated
FALSEnever evaluated
0
799 *type = map[ESC].type;
never executed: *type = map[(('[') & 0x1f)].type;
0
800-
801 return (map[ESC].function);
never executed: return (map[(('[') & 0x1f)].function);
0
802 }-
803 }-
804-
805 if (map[ic].type == ISKMAP)
map[ic].type == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
806 {-
807 /* If this is the last key in the key sequence, return the-
808 map. */-
809 if (keyseq[i + 1] == '\0')
keyseq[i + 1] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
810 {-
811 if (type)
typeDescription
TRUEnever evaluated
FALSEnever evaluated
0
812 *type = ISKMAP;
never executed: *type = 1;
0
813-
814 return (map[ic].function);
never executed: return (map[ic].function);
0
815 }-
816 else-
817 map = FUNCTION_TO_KEYMAP (map, ic);
never executed: map = (Keymap)(map[ic].function);
0
818 }-
819 /* If we're not at the end of the key sequence, and the current key-
820 is bound to something other than a keymap, then the entire key-
821 sequence is not bound. */-
822 else if (map[ic].type != ISKMAP && keyseq[i+1])
map[ic].type != 1Description
TRUEnever evaluated
FALSEnever evaluated
keyseq[i+1]Description
TRUEnever evaluated
FALSEnever evaluated
0
823 return ((rl_command_func_t *)NULL);
never executed: return ((rl_command_func_t *) ((void *)0) );
0
824 else /* map[ic].type != ISKMAP && keyseq[i+1] == 0 */-
825 {-
826 if (type)
typeDescription
TRUEnever evaluated
FALSEnever evaluated
0
827 *type = map[ic].type;
never executed: *type = map[ic].type;
0
828-
829 return (map[ic].function);
never executed: return (map[ic].function);
0
830 }-
831 }-
832 return ((rl_command_func_t *) NULL);
never executed: return ((rl_command_func_t *) ((void *)0) );
0
833}-
834-
835rl_command_func_t *-
836rl_function_of_keyseq (const char *keyseq, Keymap map, int *type)-
837{-
838 return _rl_function_of_keyseq_internal (keyseq, strlen (keyseq), map, type);
never executed: return _rl_function_of_keyseq_internal (keyseq, strlen (keyseq), map, type);
0
839}-
840-
841rl_command_func_t *-
842rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type)-
843{-
844 return _rl_function_of_keyseq_internal (keyseq, len, map, type);
never executed: return _rl_function_of_keyseq_internal (keyseq, len, map, type);
0
845}-
846-
847/* The last key bindings file read. */-
848static char *last_readline_init_file = (char *)NULL;-
849-
850/* The file we're currently reading key bindings from. */-
851static const char *current_readline_init_file;-
852static int current_readline_init_include_level;-
853static int current_readline_init_lineno;-
854-
855/* Read FILENAME into a locally-allocated buffer and return the buffer.-
856 The size of the buffer is returned in *SIZEP. Returns NULL if any-
857 errors were encountered. */-
858static char *-
859_rl_read_file (char *filename, size_t *sizep)-
860{-
861 struct stat finfo;-
862 size_t file_size;-
863 char *buffer;-
864 int i, file;-
865-
866 file = -1;-
867 if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0))
((file = open ... , 0666)) < 0)Description
TRUEnever evaluated
FALSEnever evaluated
(fstat (file, &finfo) < 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
868 {-
869 if (file >= 0)
file >= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
870 close (file);
never executed: close (file);
0
871 return ((char *)NULL);
never executed: return ((char *) ((void *)0) );
0
872 }-
873-
874 file_size = (size_t)finfo.st_size;-
875-
876 /* check for overflow on very large files */-
877 if (file_size != finfo.st_size || file_size + 1 < file_size)
file_size != finfo.st_sizeDescription
TRUEnever evaluated
FALSEnever evaluated
file_size + 1 < file_sizeDescription
TRUEnever evaluated
FALSEnever evaluated
0
878 {-
879 if (file >= 0)
file >= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
880 close (file);
never executed: close (file);
0
881#if defined (EFBIG)-
882 errno = EFBIG;-
883#endif-
884 return ((char *)NULL);
never executed: return ((char *) ((void *)0) );
0
885 }-
886-
887 /* Read the file into BUFFER. */-
888 buffer = (char *)xmalloc (file_size + 1);-
889 i = read (file, buffer, file_size);-
890 close (file);-
891-
892 if (i < 0)
i < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
893 {-
894 xfree (buffer);-
895 return ((char *)NULL);
never executed: return ((char *) ((void *)0) );
0
896 }-
897-
898 RL_CHECK_SIGNALS ();
never executed: _rl_signal_handler (_rl_caught_signal);
_rl_caught_signalDescription
TRUEnever evaluated
FALSEnever evaluated
0
899-
900 buffer[i] = '\0';-
901 if (sizep)
sizepDescription
TRUEnever evaluated
FALSEnever evaluated
0
902 *sizep = i;
never executed: *sizep = i;
0
903-
904 return (buffer);
never executed: return (buffer);
0
905}-
906-
907/* Re-read the current keybindings file. */-
908int-
909rl_re_read_init_file (int count, int ignore)-
910{-
911 int r;-
912 r = rl_read_init_file ((const char *)NULL);-
913 rl_set_keymap_from_edit_mode ();-
914 return r;
never executed: return r;
0
915}-
916-
917/* Do key bindings from a file. If FILENAME is NULL it defaults-
918 to the first non-null filename from this list:-
919 1. the filename used for the previous call-
920 2. the value of the shell variable `INPUTRC'-
921 3. ~/.inputrc-
922 4. /etc/inputrc-
923 If the file existed and could be opened and read, 0 is returned,-
924 otherwise errno is returned. */-
925int-
926rl_read_init_file (const char *filename)-
927{-
928 /* Default the filename. */-
929 if (filename == 0)
filename == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
930 filename = last_readline_init_file;
never executed: filename = last_readline_init_file;
0
931 if (filename == 0)
filename == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
932 filename = sh_get_env_value ("INPUTRC");
never executed: filename = sh_get_env_value ("INPUTRC");
0
933 if (filename == 0 || *filename == 0)
filename == 0Description
TRUEnever evaluated
FALSEnever evaluated
*filename == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
934 {-
935 filename = DEFAULT_INPUTRC;-
936 /* Try to read DEFAULT_INPUTRC; fall back to SYS_INPUTRC on failure */-
937 if (_rl_read_init_file (filename, 0) == 0)
_rl_read_init_...ename, 0) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
938 return 0;
never executed: return 0;
0
939 filename = SYS_INPUTRC;-
940 }
never executed: end of block
0
941-
942#if defined (__MSDOS__)-
943 if (_rl_read_init_file (filename, 0) == 0)-
944 return 0;-
945 filename = "~/_inputrc";-
946#endif-
947 return (_rl_read_init_file (filename, 0));
never executed: return (_rl_read_init_file (filename, 0));
0
948}-
949-
950static int-
951_rl_read_init_file (const char *filename, int include_level)-
952{-
953 register int i;-
954 char *buffer, *openname, *line, *end;-
955 size_t file_size;-
956-
957 current_readline_init_file = filename;-
958 current_readline_init_include_level = include_level;-
959-
960 openname = tilde_expand (filename);-
961 buffer = _rl_read_file (openname, &file_size);-
962 xfree (openname);-
963-
964 RL_CHECK_SIGNALS ();
never executed: _rl_signal_handler (_rl_caught_signal);
_rl_caught_signalDescription
TRUEnever evaluated
FALSEnever evaluated
0
965 if (buffer == 0)
buffer == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
966 return (errno);
never executed: return ( (*__errno_location ()) );
0
967 -
968 if (include_level == 0 && filename != last_readline_init_file)
include_level == 0Description
TRUEnever evaluated
FALSEnever evaluated
filename != la...line_init_fileDescription
TRUEnever evaluated
FALSEnever evaluated
0
969 {-
970 FREE (last_readline_init_file);
never executed: free (last_readline_init_file);
last_readline_init_fileDescription
TRUEnever evaluated
FALSEnever evaluated
0
971 last_readline_init_file = savestring (filename);-
972 }
never executed: end of block
0
973-
974 currently_reading_init_file = 1;-
975-
976 /* Loop over the lines in the file. Lines that start with `#' are-
977 comments; all other lines are commands for readline initialization. */-
978 current_readline_init_lineno = 1;-
979 line = buffer;-
980 end = buffer + file_size;-
981 while (line < end)
line < endDescription
TRUEnever evaluated
FALSEnever evaluated
0
982 {-
983 /* Find the end of this line. */-
984 for (i = 0; line + i != end && line[i] != '\n'; i++);
never executed: ;
line + i != endDescription
TRUEnever evaluated
FALSEnever evaluated
line[i] != '\n'Description
TRUEnever evaluated
FALSEnever evaluated
0
985-
986#if defined (__CYGWIN__)-
987 /* ``Be liberal in what you accept.'' */-
988 if (line[i] == '\n' && line[i-1] == '\r')-
989 line[i - 1] = '\0';-
990#endif-
991-
992 /* Mark end of line. */-
993 line[i] = '\0';-
994-
995 /* Skip leading whitespace. */-
996 while (*line && whitespace (*line))
*lineDescription
TRUEnever evaluated
FALSEnever evaluated
((*line) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((*line) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
997 {-
998 line++;-
999 i--;-
1000 }
never executed: end of block
0
1001-
1002 /* If the line is not a comment, then parse it. */-
1003 if (*line && *line != '#')
*lineDescription
TRUEnever evaluated
FALSEnever evaluated
*line != '#'Description
TRUEnever evaluated
FALSEnever evaluated
0
1004 rl_parse_and_bind (line);
never executed: rl_parse_and_bind (line);
0
1005-
1006 /* Move to the next line. */-
1007 line += i + 1;-
1008 current_readline_init_lineno++;-
1009 }
never executed: end of block
0
1010-
1011 xfree (buffer);-
1012 currently_reading_init_file = 0;-
1013 return (0);
never executed: return (0);
0
1014}-
1015-
1016static void-
1017#if defined (PREFER_STDARG)-
1018_rl_init_file_error (const char *format, ...)-
1019#else-
1020_rl_init_file_error (va_alist)-
1021 va_dcl-
1022#endif-
1023{-
1024 va_list args;-
1025#if defined (PREFER_VARARGS)-
1026 char *format;-
1027#endif-
1028-
1029#if defined (PREFER_STDARG)-
1030 va_start (args, format);-
1031#else-
1032 va_start (args);-
1033 format = va_arg (args, char *);-
1034#endif-
1035-
1036 fprintf (stderr, "readline: ");-
1037 if (currently_reading_init_file)
currently_reading_init_fileDescription
TRUEnever evaluated
FALSEnever evaluated
0
1038 fprintf (stderr, "%s: line %d: ", current_readline_init_file,
never executed: fprintf ( stderr , "%s: line %d: ", current_readline_init_file, current_readline_init_lineno);
0
1039 current_readline_init_lineno);
never executed: fprintf ( stderr , "%s: line %d: ", current_readline_init_file, current_readline_init_lineno);
0
1040-
1041 vfprintf (stderr, format, args);-
1042 fprintf (stderr, "\n");-
1043 fflush (stderr);-
1044-
1045 va_end (args);-
1046}
never executed: end of block
0
1047-
1048/* **************************************************************** */-
1049/* */-
1050/* Parser Helper Functions */-
1051/* */-
1052/* **************************************************************** */-
1053-
1054static int-
1055parse_comparison_op (s, indp)-
1056 const char *s;-
1057 int *indp;-
1058{-
1059 int i, peekc, op;-
1060-
1061 if (OPSTART (s[*indp]) == 0)
((s[*indp]) ==...) == '>') == 0Description
TRUEnever evaluated
FALSEnever evaluated
(s[*indp]) == '='Description
TRUEnever evaluated
FALSEnever evaluated
(s[*indp]) == '!'Description
TRUEnever evaluated
FALSEnever evaluated
(s[*indp]) == '<'Description
TRUEnever evaluated
FALSEnever evaluated
(s[*indp]) == '>'Description
TRUEnever evaluated
FALSEnever evaluated
0
1062 return -1;
never executed: return -1;
0
1063 i = *indp;-
1064 peekc = s[i] ? s[i+1] : 0;
s[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
1065 op = -1;-
1066-
1067 if (s[i] == '=')
s[i] == '='Description
TRUEnever evaluated
FALSEnever evaluated
0
1068 {-
1069 op = OP_EQ;-
1070 if (peekc == '=')
peekc == '='Description
TRUEnever evaluated
FALSEnever evaluated
0
1071 i++;
never executed: i++;
0
1072 i++;-
1073 }
never executed: end of block
0
1074 else if (s[i] == '!' && peekc == '=')
s[i] == '!'Description
TRUEnever evaluated
FALSEnever evaluated
peekc == '='Description
TRUEnever evaluated
FALSEnever evaluated
0
1075 {-
1076 op = OP_NE;-
1077 i += 2;-
1078 }
never executed: end of block
0
1079 else if (s[i] == '<' && peekc == '=')
s[i] == '<'Description
TRUEnever evaluated
FALSEnever evaluated
peekc == '='Description
TRUEnever evaluated
FALSEnever evaluated
0
1080 {-
1081 op = OP_LE;-
1082 i += 2;-
1083 }
never executed: end of block
0
1084 else if (s[i] == '>' && peekc == '=')
s[i] == '>'Description
TRUEnever evaluated
FALSEnever evaluated
peekc == '='Description
TRUEnever evaluated
FALSEnever evaluated
0
1085 {-
1086 op = OP_GE;-
1087 i += 2;-
1088 }
never executed: end of block
0
1089 else if (s[i] == '<')
s[i] == '<'Description
TRUEnever evaluated
FALSEnever evaluated
0
1090 {-
1091 op = OP_LT;-
1092 i += 1;-
1093 }
never executed: end of block
0
1094 else if (s[i] == '>')
s[i] == '>'Description
TRUEnever evaluated
FALSEnever evaluated
0
1095 {-
1096 op = OP_GT;-
1097 i += 1;-
1098 }
never executed: end of block
0
1099-
1100 *indp = i;-
1101 return op;
never executed: return op;
0
1102}-
1103-
1104/* **************************************************************** */-
1105/* */-
1106/* Parser Directives */-
1107/* */-
1108/* **************************************************************** */-
1109-
1110typedef int _rl_parser_func_t PARAMS((char *));-
1111-
1112/* Things that mean `Control'. */-
1113const char * const _rl_possible_control_prefixes[] = {-
1114 "Control-", "C-", "CTRL-", (const char *)NULL-
1115};-
1116-
1117const char * const _rl_possible_meta_prefixes[] = {-
1118 "Meta", "M-", (const char *)NULL-
1119};-
1120-
1121/* Conditionals. */-
1122-
1123/* Calling programs set this to have their argv[0]. */-
1124const char *rl_readline_name = "other";-
1125-
1126/* Stack of previous values of parsing_conditionalized_out. */-
1127static unsigned char *if_stack = (unsigned char *)NULL;-
1128static int if_stack_depth;-
1129static int if_stack_size;-
1130-
1131/* Push _rl_parsing_conditionalized_out, and set parser state based-
1132 on ARGS. */-
1133static int-
1134parser_if (char *args)-
1135{-
1136 int i, llen, boolvar, strvar;-
1137-
1138 boolvar = strvar = -1;-
1139-
1140 /* Push parser state. */-
1141 if (if_stack_depth + 1 >= if_stack_size)
if_stack_depth... if_stack_sizeDescription
TRUEnever evaluated
FALSEnever evaluated
0
1142 {-
1143 if (!if_stack)
!if_stackDescription
TRUEnever evaluated
FALSEnever evaluated
0
1144 if_stack = (unsigned char *)xmalloc (if_stack_size = 20);
never executed: if_stack = (unsigned char *)xmalloc (if_stack_size = 20);
0
1145 else-
1146 if_stack = (unsigned char *)xrealloc (if_stack, if_stack_size += 20);
never executed: if_stack = (unsigned char *)xrealloc (if_stack, if_stack_size += 20);
0
1147 }-
1148 if_stack[if_stack_depth++] = _rl_parsing_conditionalized_out;-
1149-
1150 /* If parsing is turned off, then nothing can turn it back on except-
1151 for finding the matching endif. In that case, return right now. */-
1152 if (_rl_parsing_conditionalized_out)
_rl_parsing_co...tionalized_outDescription
TRUEnever evaluated
FALSEnever evaluated
0
1153 return 0;
never executed: return 0;
0
1154-
1155 llen = strlen (args);-
1156-
1157 /* Isolate first argument. */-
1158 for (i = 0; args[i] && !whitespace (args[i]); i++);
never executed: ;
args[i]Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1159-
1160 if (args[i])
args[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
1161 args[i++] = '\0';
never executed: args[i++] = '\0';
0
1162-
1163 /* Handle "$if term=foo" and "$if mode=emacs" constructs. If this-
1164 isn't term=foo, or mode=emacs, then check to see if the first-
1165 word in ARGS is the same as the value stored in rl_readline_name. */-
1166 if (rl_terminal_name && _rl_strnicmp (args, "term=", 5) == 0)
rl_terminal_nameDescription
TRUEnever evaluated
FALSEnever evaluated
strncasecmp (a...erm=", 5) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1167 {-
1168 char *tem, *tname;-
1169-
1170 /* Terminals like "aaa-60" are equivalent to "aaa". */-
1171 tname = savestring (rl_terminal_name);-
1172 tem = strchr (tname, '-');
__builtin_constant_p ( '-' )Description
TRUEnever evaluated
FALSEnever evaluated
!__builtin_con...nt_p ( tname )Description
TRUEnever evaluated
FALSEnever evaluated
( '-' ) == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
1173 if (tem)
temDescription
TRUEnever evaluated
FALSEnever evaluated
0
1174 *tem = '\0';
never executed: *tem = '\0';
0
1175-
1176 /* Test the `long' and `short' forms of the terminal name so that-
1177 if someone has a `sun-cmd' and does not want to have bindings-
1178 that will be executed if the terminal is a `sun', they can put-
1179 `$if term=sun-cmd' into their .inputrc. */-
1180 _rl_parsing_conditionalized_out = _rl_stricmp (args + 5, tname) &&
strcasecmp (args + 5, tname)Description
TRUEnever evaluated
FALSEnever evaluated
0
1181 _rl_stricmp (args + 5, rl_terminal_name);
strcasecmp (ar...terminal_name)Description
TRUEnever evaluated
FALSEnever evaluated
0
1182 xfree (tname);-
1183 }
never executed: end of block
0
1184#if defined (VI_MODE)-
1185 else if (_rl_strnicmp (args, "mode=", 5) == 0)
strncasecmp (a...ode=", 5) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1186 {-
1187 int mode;-
1188-
1189 if (_rl_stricmp (args + 5, "emacs") == 0)
strcasecmp (ar... "emacs") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1190 mode = emacs_mode;
never executed: mode = 1;
0
1191 else if (_rl_stricmp (args + 5, "vi") == 0)
strcasecmp (ar... 5, "vi") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1192 mode = vi_mode;
never executed: mode = 0;
0
1193 else-
1194 mode = no_mode;
never executed: mode = -1;
0
1195-
1196 _rl_parsing_conditionalized_out = mode != rl_editing_mode;-
1197 }
never executed: end of block
0
1198#endif /* VI_MODE */-
1199 else if (_rl_strnicmp (args, "version", 7) == 0)
strncasecmp (a...sion", 7) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1200 {-
1201 int rlversion, versionarg, op, previ, major, minor;-
1202-
1203 _rl_parsing_conditionalized_out = 1;-
1204 rlversion = RL_VERSION_MAJOR*10 + RL_VERSION_MINOR;-
1205 /* if "version" is separated from the operator by whitespace, or the-
1206 operand is separated from the operator by whitespace, restore it.-
1207 We're more liberal with allowed whitespace for this variable. */-
1208 if (i > 0 && i <= llen && args[i-1] == '\0')
i > 0Description
TRUEnever evaluated
FALSEnever evaluated
i <= llenDescription
TRUEnever evaluated
FALSEnever evaluated
args[i-1] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
1209 args[i-1] = ' ';
never executed: args[i-1] = ' ';
0
1210 args[llen] = '\0'; /* just in case */-
1211 for (i = 7; whitespace (args[i]); i++)
((args[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1212 ;
never executed: ;
0
1213 if (OPSTART(args[i]) == 0)
((args[i]) == ...) == '>') == 0Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) == '='Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) == '!'Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) == '<'Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) == '>'Description
TRUEnever evaluated
FALSEnever evaluated
0
1214 {-
1215 _rl_init_file_error ("comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line");-
1216 return 0;
never executed: return 0;
0
1217 }-
1218 previ = i;-
1219 op = parse_comparison_op (args, &i);-
1220 if (op <= 0)
op <= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1221 {-
1222 _rl_init_file_error ("comparison operator expected, found `%s'", args+previ);-
1223 return 0;
never executed: return 0;
0
1224 }-
1225 for ( ; args[i] && whitespace (args[i]); i++)
args[i]Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1226 ;
never executed: ;
0
1227 if (args[i] == 0 || _rl_digit_p (args[i]) == 0)
args[i] == 0Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) >= ...) <= '9') == 0Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) >= '0'Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) <= '9'Description
TRUEnever evaluated
FALSEnever evaluated
0
1228 {-
1229 _rl_init_file_error ("numeric argument expected, found `%s'", args+i);-
1230 return 0;
never executed: return 0;
0
1231 }-
1232 major = minor = 0;-
1233 previ = i;-
1234 for ( ; args[i] && _rl_digit_p (args[i]); i++)
args[i]Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) >= '0'Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) <= '9'Description
TRUEnever evaluated
FALSEnever evaluated
0
1235 major = major*10 + _rl_digit_value (args[i]);
never executed: major = major*10 + ((args[i]) - '0');
0
1236 if (args[i] == '.')
args[i] == '.'Description
TRUEnever evaluated
FALSEnever evaluated
0
1237 {-
1238 if (args[i + 1] && _rl_digit_p (args [i + 1]) == 0)
args[i + 1]Description
TRUEnever evaluated
FALSEnever evaluated
((args [i + 1]...) <= '9') == 0Description
TRUEnever evaluated
FALSEnever evaluated
(args [i + 1]) >= '0'Description
TRUEnever evaluated
FALSEnever evaluated
(args [i + 1]) <= '9'Description
TRUEnever evaluated
FALSEnever evaluated
0
1239 {-
1240 _rl_init_file_error ("numeric argument expected, found `%s'", args+previ);-
1241 return 0;
never executed: return 0;
0
1242 }-
1243 for (++i; args[i] && _rl_digit_p (args[i]); i++)
args[i]Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) >= '0'Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) <= '9'Description
TRUEnever evaluated
FALSEnever evaluated
0
1244 minor = minor*10 + _rl_digit_value (args[i]);
never executed: minor = minor*10 + ((args[i]) - '0');
0
1245 }
never executed: end of block
0
1246 /* optional - check for trailing garbage on the line, allow whitespace-
1247 and a trailing comment */-
1248 previ = i;-
1249 for ( ; args[i] && whitespace (args[i]); i++)
args[i]Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1250 ;
never executed: ;
0
1251 if (args[i] && args[i] != '#')
args[i]Description
TRUEnever evaluated
FALSEnever evaluated
args[i] != '#'Description
TRUEnever evaluated
FALSEnever evaluated
0
1252 {-
1253 _rl_init_file_error ("trailing garbage on line: `%s'", args+previ);-
1254 return 0;
never executed: return 0;
0
1255 }-
1256 versionarg = major*10 + minor;-
1257-
1258 switch (op)-
1259 {-
1260 case OP_EQ:
never executed: case 1:
0
1261 _rl_parsing_conditionalized_out = rlversion == versionarg;-
1262 break;
never executed: break;
0
1263 case OP_NE:
never executed: case 2:
0
1264 _rl_parsing_conditionalized_out = rlversion != versionarg;-
1265 break;
never executed: break;
0
1266 case OP_GT:
never executed: case 3:
0
1267 _rl_parsing_conditionalized_out = rlversion > versionarg;-
1268 break;
never executed: break;
0
1269 case OP_GE:
never executed: case 4:
0
1270 _rl_parsing_conditionalized_out = rlversion >= versionarg;-
1271 break;
never executed: break;
0
1272 case OP_LT:
never executed: case 5:
0
1273 _rl_parsing_conditionalized_out = rlversion < versionarg;-
1274 break;
never executed: break;
0
1275 case OP_LE:
never executed: case 6:
0
1276 _rl_parsing_conditionalized_out = rlversion <= versionarg;-
1277 break;
never executed: break;
0
1278 }-
1279 }
never executed: end of block
0
1280 /* Check to see if the first word in ARGS is the same as the-
1281 value stored in rl_readline_name. */-
1282 else if (_rl_stricmp (args, rl_readline_name) == 0)
strcasecmp (ar...ine_name) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1283 _rl_parsing_conditionalized_out = 0;
never executed: _rl_parsing_conditionalized_out = 0;
0
1284 else if ((boolvar = find_boolean_var (args)) >= 0 || (strvar = find_string_var (args)) >= 0)
(boolvar = fin...r (args)) >= 0Description
TRUEnever evaluated
FALSEnever evaluated
(strvar = find...r (args)) >= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1285 {-
1286 int op, previ;-
1287 size_t vlen;-
1288 const char *vname;-
1289 char *valuearg, *vval, prevc;-
1290-
1291 _rl_parsing_conditionalized_out = 1;-
1292 vname = (boolvar >= 0) ? boolean_varname (boolvar) : string_varname (strvar);
(boolvar >= 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
1293 vlen = strlen (vname);-
1294 if (i > 0 && i <= llen && args[i-1] == '\0')
i > 0Description
TRUEnever evaluated
FALSEnever evaluated
i <= llenDescription
TRUEnever evaluated
FALSEnever evaluated
args[i-1] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
1295 args[i-1] = ' ';
never executed: args[i-1] = ' ';
0
1296 args[llen] = '\0'; /* just in case */-
1297 for (i = vlen; whitespace (args[i]); i++)
((args[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1298 ;
never executed: ;
0
1299 if (CMPSTART(args[i]) == 0)
((args[i]) == ...) == '!') == 0Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) == '='Description
TRUEnever evaluated
FALSEnever evaluated
(args[i]) == '!'Description
TRUEnever evaluated
FALSEnever evaluated
0
1300 {-
1301 _rl_init_file_error ("equality comparison operator expected, found `%s'", args[i] ? args + i : "end-of-line");-
1302 return 0;
never executed: return 0;
0
1303 }-
1304 previ = i;-
1305 op = parse_comparison_op (args, &i);-
1306 if (op != OP_EQ && op != OP_NE)
op != 1Description
TRUEnever evaluated
FALSEnever evaluated
op != 2Description
TRUEnever evaluated
FALSEnever evaluated
0
1307 {-
1308 _rl_init_file_error ("equality comparison operator expected, found `%s'", args+previ);-
1309 return 0;
never executed: return 0;
0
1310 }-
1311 for ( ; args[i] && whitespace (args[i]); i++)
args[i]Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1312 ;
never executed: ;
0
1313 if (args[i] == 0)
args[i] == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1314 {-
1315 _rl_init_file_error ("argument expected, found `%s'", args+i);-
1316 return 0;
never executed: return 0;
0
1317 }-
1318 previ = i;-
1319 valuearg = args + i;-
1320 for ( ; args[i] && whitespace (args[i]) == 0; i++)
args[i]Description
TRUEnever evaluated
FALSEnever evaluated
(((args[i]) ==...== '\t')) == 0Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((args[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1321 ;
never executed: ;
0
1322 prevc = args[i];-
1323 args[i] = '\0'; /* null-terminate valuearg */-
1324 vval = rl_variable_value (vname);-
1325 if (op == OP_EQ)
op == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
1326 _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) != 0;
never executed: _rl_parsing_conditionalized_out = strcasecmp (vval, valuearg) != 0;
0
1327 else if (op == OP_NE)
op == 2Description
TRUEnever evaluated
FALSEnever evaluated
0
1328 _rl_parsing_conditionalized_out = _rl_stricmp (vval, valuearg) == 0;
never executed: _rl_parsing_conditionalized_out = strcasecmp (vval, valuearg) == 0;
0
1329 args[i] = prevc;-
1330 }
never executed: end of block
0
1331 else-
1332 _rl_parsing_conditionalized_out = 1;
never executed: _rl_parsing_conditionalized_out = 1;
0
1333 return 0;
never executed: return 0;
0
1334}-
1335-
1336/* Invert the current parser state if there is anything on the stack. */-
1337static int-
1338parser_else (char *args)-
1339{-
1340 register int i;-
1341-
1342 if (if_stack_depth == 0)
if_stack_depth == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1343 {-
1344 _rl_init_file_error ("$else found without matching $if");-
1345 return 0;
never executed: return 0;
0
1346 }-
1347-
1348#if 0-
1349 /* Check the previous (n - 1) levels of the stack to make sure that-
1350 we haven't previously turned off parsing. */-
1351 for (i = 0; i < if_stack_depth - 1; i++)-
1352#else-
1353 /* Check the previous (n) levels of the stack to make sure that-
1354 we haven't previously turned off parsing. */-
1355 for (i = 0; i < if_stack_depth; i++)
i < if_stack_depthDescription
TRUEnever evaluated
FALSEnever evaluated
0
1356#endif-
1357 if (if_stack[i] == 1)
if_stack[i] == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
1358 return 0;
never executed: return 0;
0
1359-
1360 /* Invert the state of parsing if at top level. */-
1361 _rl_parsing_conditionalized_out = !_rl_parsing_conditionalized_out;-
1362 return 0;
never executed: return 0;
0
1363}-
1364-
1365/* Terminate a conditional, popping the value of-
1366 _rl_parsing_conditionalized_out from the stack. */-
1367static int-
1368parser_endif (char *args)-
1369{-
1370 if (if_stack_depth)
if_stack_depthDescription
TRUEnever evaluated
FALSEnever evaluated
0
1371 _rl_parsing_conditionalized_out = if_stack[--if_stack_depth];
never executed: _rl_parsing_conditionalized_out = if_stack[--if_stack_depth];
0
1372 else-
1373 _rl_init_file_error ("$endif without matching $if");
never executed: _rl_init_file_error ("$endif without matching $if");
0
1374 return 0;
never executed: return 0;
0
1375}-
1376-
1377static int-
1378parser_include (char *args)-
1379{-
1380 const char *old_init_file;-
1381 char *e;-
1382 int old_line_number, old_include_level, r;-
1383-
1384 if (_rl_parsing_conditionalized_out)
_rl_parsing_co...tionalized_outDescription
TRUEnever evaluated
FALSEnever evaluated
0
1385 return (0);
never executed: return (0);
0
1386-
1387 old_init_file = current_readline_init_file;-
1388 old_line_number = current_readline_init_lineno;-
1389 old_include_level = current_readline_init_include_level;-
1390-
1391 e = strchr (args, '\n');
__builtin_constant_p ( '\n' )Description
TRUEnever evaluated
FALSEnever evaluated
!__builtin_constant_p ( args )Description
TRUEnever evaluated
FALSEnever evaluated
( '\n' ) == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
1392 if (e)
eDescription
TRUEnever evaluated
FALSEnever evaluated
0
1393 *e = '\0';
never executed: *e = '\0';
0
1394 r = _rl_read_init_file ((const char *)args, old_include_level + 1);-
1395-
1396 current_readline_init_file = old_init_file;-
1397 current_readline_init_lineno = old_line_number;-
1398 current_readline_init_include_level = old_include_level;-
1399-
1400 return r;
never executed: return r;
0
1401}-
1402 -
1403/* Associate textual names with actual functions. */-
1404static const struct {-
1405 const char * const name;-
1406 _rl_parser_func_t *function;-
1407} parser_directives [] = {-
1408 { "if", parser_if },-
1409 { "endif", parser_endif },-
1410 { "else", parser_else },-
1411 { "include", parser_include },-
1412 { (char *)0x0, (_rl_parser_func_t *)0x0 }-
1413};-
1414-
1415/* Handle a parser directive. STATEMENT is the line of the directive-
1416 without any leading `$'. */-
1417static int-
1418handle_parser_directive (char *statement)-
1419{-
1420 register int i;-
1421 char *directive, *args;-
1422-
1423 /* Isolate the actual directive. */-
1424-
1425 /* Skip whitespace. */-
1426 for (i = 0; whitespace (statement[i]); i++);
never executed: ;
((statement[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((statement[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1427-
1428 directive = &statement[i];-
1429-
1430 for (; statement[i] && !whitespace (statement[i]); i++);
never executed: ;
statement[i]Description
TRUEnever evaluated
FALSEnever evaluated
((statement[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((statement[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1431-
1432 if (statement[i])
statement[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
1433 statement[i++] = '\0';
never executed: statement[i++] = '\0';
0
1434-
1435 for (; statement[i] && whitespace (statement[i]); i++);
never executed: ;
statement[i]Description
TRUEnever evaluated
FALSEnever evaluated
((statement[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((statement[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1436-
1437 args = &statement[i];-
1438-
1439 /* Lookup the command, and act on it. */-
1440 for (i = 0; parser_directives[i].name; i++)
parser_directives[i].nameDescription
TRUEnever evaluated
FALSEnever evaluated
0
1441 if (_rl_stricmp (directive, parser_directives[i].name) == 0)
strcasecmp (di...[i].name) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1442 {-
1443 (*parser_directives[i].function) (args);-
1444 return (0);
never executed: return (0);
0
1445 }-
1446-
1447 /* display an error message about the unknown parser directive */-
1448 _rl_init_file_error ("%s: unknown parser directive", directive);-
1449 return (1);
never executed: return (1);
0
1450}-
1451-
1452/* Start at STRING[START] and look for DELIM. Return I where STRING[I] ==-
1453 DELIM or STRING[I] == 0. DELIM is usually a double quote. */-
1454static int-
1455_rl_skip_to_delim (char *string, int start, int delim)-
1456{-
1457 int i, c, passc;-
1458-
1459 for (i = start,passc = 0; c = string[i]; i++)
c = string[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
1460 {-
1461 if (passc)
passcDescription
TRUEnever evaluated
FALSEnever evaluated
0
1462 {-
1463 passc = 0;-
1464 if (c == 0)
c == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1465 break;
never executed: break;
0
1466 continue;
never executed: continue;
0
1467 }-
1468-
1469 if (c == '\\')
c == '\\'Description
TRUEnever evaluated
FALSEnever evaluated
0
1470 {-
1471 passc = 1;-
1472 continue;
never executed: continue;
0
1473 }-
1474-
1475 if (c == delim)
c == delimDescription
TRUEnever evaluated
FALSEnever evaluated
0
1476 break;
never executed: break;
0
1477 }
never executed: end of block
0
1478-
1479 return i;
never executed: return i;
0
1480}-
1481-
1482/* Read the binding command from STRING and perform it.-
1483 A key binding command looks like: Keyname: function-name\0,-
1484 a variable binding command looks like: set variable value.-
1485 A new-style keybinding looks like "\C-x\C-x": exchange-point-and-mark. */-
1486int-
1487rl_parse_and_bind (char *string)-
1488{-
1489 char *funname, *kname;-
1490 register int c, i;-
1491 int key, equivalency, foundmod, foundsep;-
1492-
1493 while (string && whitespace (*string))
stringDescription
TRUEnever evaluated
FALSEnever evaluated
((*string) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((*string) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1494 string++;
never executed: string++;
0
1495-
1496 if (string == 0 || *string == 0 || *string == '#')
string == 0Description
TRUEnever evaluated
FALSEnever evaluated
*string == 0Description
TRUEnever evaluated
FALSEnever evaluated
*string == '#'Description
TRUEnever evaluated
FALSEnever evaluated
0
1497 return 0;
never executed: return 0;
0
1498-
1499 /* If this is a parser directive, act on it. */-
1500 if (*string == '$')
*string == '$'Description
TRUEnever evaluated
FALSEnever evaluated
0
1501 {-
1502 handle_parser_directive (&string[1]);-
1503 return 0;
never executed: return 0;
0
1504 }-
1505-
1506 /* If we aren't supposed to be parsing right now, then we're done. */-
1507 if (_rl_parsing_conditionalized_out)
_rl_parsing_co...tionalized_outDescription
TRUEnever evaluated
FALSEnever evaluated
0
1508 return 0;
never executed: return 0;
0
1509-
1510 i = 0;-
1511 /* If this keyname is a complex key expression surrounded by quotes,-
1512 advance to after the matching close quote. This code allows the-
1513 backslash to quote characters in the key expression. */-
1514 if (*string == '"')
*string == '"'Description
TRUEnever evaluated
FALSEnever evaluated
0
1515 {-
1516 i = _rl_skip_to_delim (string, 1, '"');-
1517-
1518 /* If we didn't find a closing quote, abort the line. */-
1519 if (string[i] == '\0')
string[i] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
1520 {-
1521 _rl_init_file_error ("%s: no closing `\"' in key binding", string);-
1522 return 1;
never executed: return 1;
0
1523 }-
1524 else-
1525 i++; /* skip past closing double quote */
never executed: i++;
0
1526 }-
1527-
1528 /* Advance to the colon (:) or whitespace which separates the two objects. */-
1529 for (; (c = string[i]) && c != ':' && c != ' ' && c != '\t'; i++ );
never executed: ;
(c = string[i])Description
TRUEnever evaluated
FALSEnever evaluated
c != ':'Description
TRUEnever evaluated
FALSEnever evaluated
c != ' 'Description
TRUEnever evaluated
FALSEnever evaluated
c != '\t'Description
TRUEnever evaluated
FALSEnever evaluated
0
1530-
1531 if (i == 0)
i == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1532 {-
1533 _rl_init_file_error ("`%s': invalid key binding: missing key sequence", string);-
1534 return 1;
never executed: return 1;
0
1535 }-
1536-
1537 equivalency = (c == ':' && string[i + 1] == '=');
c == ':'Description
TRUEnever evaluated
FALSEnever evaluated
string[i + 1] == '='Description
TRUEnever evaluated
FALSEnever evaluated
0
1538-
1539 foundsep = c != 0;-
1540-
1541 /* Mark the end of the command (or keyname). */-
1542 if (string[i])
string[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
1543 string[i++] = '\0';
never executed: string[i++] = '\0';
0
1544-
1545 /* If doing assignment, skip the '=' sign as well. */-
1546 if (equivalency)
equivalencyDescription
TRUEnever evaluated
FALSEnever evaluated
0
1547 string[i++] = '\0';
never executed: string[i++] = '\0';
0
1548-
1549 /* If this is a command to set a variable, then do that. */-
1550 if (_rl_stricmp (string, "set") == 0)
strcasecmp (st...g, "set") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1551 {-
1552 char *var, *value, *e;-
1553 int s;-
1554-
1555 var = string + i;-
1556 /* Make VAR point to start of variable name. */-
1557 while (*var && whitespace (*var)) var++;
never executed: var++;
*varDescription
TRUEnever evaluated
FALSEnever evaluated
((*var) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((*var) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1558-
1559 /* Make VALUE point to start of value string. */-
1560 value = var;-
1561 while (*value && whitespace (*value) == 0) value++;
never executed: value++;
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
(((*value) == ...== '\t')) == 0Description
TRUEnever evaluated
FALSEnever evaluated
((*value) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((*value) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1562 if (*value)
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
1563 *value++ = '\0';
never executed: *value++ = '\0';
0
1564 while (*value && whitespace (*value)) value++;
never executed: value++;
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
((*value) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((*value) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1565-
1566 /* Strip trailing whitespace from values of boolean variables. */-
1567 if (find_boolean_var (var) >= 0)
find_boolean_var (var) >= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1568 {-
1569 /* remove trailing whitespace */-
1570remove_trailing:-
1571 e = value + strlen (value) - 1;-
1572 while (e >= value && whitespace (*e))
e >= valueDescription
TRUEnever evaluated
FALSEnever evaluated
((*e) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((*e) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1573 e--;
never executed: e--;
0
1574 e++; /* skip back to whitespace or EOS */-
1575 -
1576 if (*e && e >= value)
*eDescription
TRUEnever evaluated
FALSEnever evaluated
e >= valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
1577 *e = '\0';
never executed: *e = '\0';
0
1578 }
never executed: end of block
0
1579 else if ((i = find_string_var (var)) >= 0)
(i = find_stri...ar (var)) >= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1580 {-
1581 /* Allow quoted strings in variable values */-
1582 if (*value == '"')
*value == '"'Description
TRUEnever evaluated
FALSEnever evaluated
0
1583 {-
1584 i = _rl_skip_to_delim (value, 1, *value);-
1585 value[i] = '\0';-
1586 value++; /* skip past the quote */-
1587 }
never executed: end of block
0
1588 else-
1589 goto remove_trailing;
never executed: goto remove_trailing;
0
1590 }-
1591 -
1592 rl_variable_bind (var, value);-
1593 return 0;
never executed: return 0;
0
1594 }-
1595-
1596 /* Skip any whitespace between keyname and funname. */-
1597 for (; string[i] && whitespace (string[i]); i++);
never executed: ;
string[i]Description
TRUEnever evaluated
FALSEnever evaluated
((string[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((string[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1598 funname = &string[i];-
1599-
1600 /* Now isolate funname.-
1601 For straight function names just look for whitespace, since-
1602 that will signify the end of the string. But this could be a-
1603 macro definition. In that case, the string is quoted, so skip-
1604 to the matching delimiter. We allow the backslash to quote the-
1605 delimiter characters in the macro body. */-
1606 /* This code exists to allow whitespace in macro expansions, which-
1607 would otherwise be gobbled up by the next `for' loop.*/-
1608 /* XXX - it may be desirable to allow backslash quoting only if " is-
1609 the quoted string delimiter, like the shell. */-
1610 if (*funname == '\'' || *funname == '"')
*funname == '\''Description
TRUEnever evaluated
FALSEnever evaluated
*funname == '"'Description
TRUEnever evaluated
FALSEnever evaluated
0
1611 {-
1612 i = _rl_skip_to_delim (string, i+1, *funname);-
1613 if (string[i])
string[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
1614 i++;
never executed: i++;
0
1615 else-
1616 {-
1617 _rl_init_file_error ("`%s': missing closing quote for macro", funname);-
1618 return 1;
never executed: return 1;
0
1619 }-
1620 }-
1621-
1622 /* Advance to the end of the string. */-
1623 for (; string[i] && whitespace (string[i]) == 0; i++);
never executed: ;
string[i]Description
TRUEnever evaluated
FALSEnever evaluated
(((string[i]) ...== '\t')) == 0Description
TRUEnever evaluated
FALSEnever evaluated
((string[i]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((string[i]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
1624-
1625 /* No extra whitespace at the end of the string. */-
1626 string[i] = '\0';-
1627-
1628 /* Handle equivalency bindings here. Make the left-hand side be exactly-
1629 whatever the right-hand evaluates to, including keymaps. */-
1630 if (equivalency)
equivalencyDescription
TRUEnever evaluated
FALSEnever evaluated
0
1631 {-
1632 return 0;
never executed: return 0;
0
1633 }-
1634-
1635 if (foundsep == 0)
foundsep == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1636 {-
1637 _rl_init_file_error ("%s: no key sequence terminator", string);-
1638 return 1;
never executed: return 1;
0
1639 }-
1640-
1641 /* If this is a new-style key-binding, then do the binding with-
1642 rl_bind_keyseq (). Otherwise, let the older code deal with it. */-
1643 if (*string == '"')
*string == '"'Description
TRUEnever evaluated
FALSEnever evaluated
0
1644 {-
1645 char *seq;-
1646 register int j, k, passc;-
1647-
1648 seq = (char *)xmalloc (1 + strlen (string));-
1649 for (j = 1, k = passc = 0; string[j]; j++)
string[j]Description
TRUEnever evaluated
FALSEnever evaluated
0
1650 {-
1651 /* Allow backslash to quote characters, but leave them in place.-
1652 This allows a string to end with a backslash quoting another-
1653 backslash, or with a backslash quoting a double quote. The-
1654 backslashes are left in place for rl_translate_keyseq (). */-
1655 if (passc || (string[j] == '\\'))
passcDescription
TRUEnever evaluated
FALSEnever evaluated
(string[j] == '\\')Description
TRUEnever evaluated
FALSEnever evaluated
0
1656 {-
1657 seq[k++] = string[j];-
1658 passc = !passc;-
1659 continue;
never executed: continue;
0
1660 }-
1661-
1662 if (string[j] == '"')
string[j] == '"'Description
TRUEnever evaluated
FALSEnever evaluated
0
1663 break;
never executed: break;
0
1664-
1665 seq[k++] = string[j];-
1666 }
never executed: end of block
0
1667 seq[k] = '\0';-
1668-
1669 /* Binding macro? */-
1670 if (*funname == '\'' || *funname == '"')
*funname == '\''Description
TRUEnever evaluated
FALSEnever evaluated
*funname == '"'Description
TRUEnever evaluated
FALSEnever evaluated
0
1671 {-
1672 j = strlen (funname);-
1673-
1674 /* Remove the delimiting quotes from each end of FUNNAME. */-
1675 if (j && funname[j - 1] == *funname)
jDescription
TRUEnever evaluated
FALSEnever evaluated
funname[j - 1] == *funnameDescription
TRUEnever evaluated
FALSEnever evaluated
0
1676 funname[j - 1] = '\0';
never executed: funname[j - 1] = '\0';
0
1677-
1678 rl_macro_bind (seq, &funname[1], _rl_keymap);-
1679 }
never executed: end of block
0
1680 else-
1681 rl_bind_keyseq (seq, rl_named_function (funname));
never executed: rl_bind_keyseq (seq, rl_named_function (funname));
0
1682-
1683 xfree (seq);-
1684 return 0;
never executed: return 0;
0
1685 }-
1686-
1687 /* Get the actual character we want to deal with. */-
1688 kname = strrchr (string, '-');-
1689 if (kname == 0)
kname == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1690 kname = string;
never executed: kname = string;
0
1691 else-
1692 kname++;
never executed: kname++;
0
1693-
1694 key = glean_key_from_name (kname);-
1695-
1696 /* Add in control and meta bits. */-
1697 foundmod = 0;-
1698 if (substring_member_of_array (string, _rl_possible_control_prefixes))
substring_memb...trol_prefixes)Description
TRUEnever evaluated
FALSEnever evaluated
0
1699 {-
1700 key = CTRL (_rl_to_upper (key));
never executed: end of block
never executed: __res = toupper ( (unsigned char)key );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)key )];
sizeof ( (unsi...char)key ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...ned char)key )Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha...key) == (key))Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISlower)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
0
1701 foundmod = 1;-
1702 }
never executed: end of block
0
1703-
1704 if (substring_member_of_array (string, _rl_possible_meta_prefixes))
substring_memb...meta_prefixes)Description
TRUEnever evaluated
FALSEnever evaluated
0
1705 {-
1706 key = META (key);-
1707 foundmod = 1;-
1708 }
never executed: end of block
0
1709-
1710 if (foundmod == 0 && kname != string)
foundmod == 0Description
TRUEnever evaluated
FALSEnever evaluated
kname != stringDescription
TRUEnever evaluated
FALSEnever evaluated
0
1711 {-
1712 _rl_init_file_error ("%s: unknown key modifier", string);-
1713 return 1;
never executed: return 1;
0
1714 }-
1715-
1716 /* Temporary. Handle old-style keyname with macro-binding. */-
1717 if (*funname == '\'' || *funname == '"')
*funname == '\''Description
TRUEnever evaluated
FALSEnever evaluated
*funname == '"'Description
TRUEnever evaluated
FALSEnever evaluated
0
1718 {-
1719 char useq[2];-
1720 int fl = strlen (funname);-
1721-
1722 useq[0] = key; useq[1] = '\0';-
1723 if (fl && funname[fl - 1] == *funname)
flDescription
TRUEnever evaluated
FALSEnever evaluated
funname[fl - 1] == *funnameDescription
TRUEnever evaluated
FALSEnever evaluated
0
1724 funname[fl - 1] = '\0';
never executed: funname[fl - 1] = '\0';
0
1725-
1726 rl_macro_bind (useq, &funname[1], _rl_keymap);-
1727 }
never executed: end of block
0
1728#if defined (PREFIX_META_HACK)-
1729 /* Ugly, but working hack to keep prefix-meta around. */-
1730 else if (_rl_stricmp (funname, "prefix-meta") == 0)
strcasecmp (fu...ix-meta") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1731 {-
1732 char seq[2];-
1733-
1734 seq[0] = key;-
1735 seq[1] = '\0';-
1736 rl_generic_bind (ISKMAP, seq, (char *)emacs_meta_keymap, _rl_keymap);-
1737 }
never executed: end of block
0
1738#endif /* PREFIX_META_HACK */-
1739 else-
1740 rl_bind_key (key, rl_named_function (funname));
never executed: rl_bind_key (key, rl_named_function (funname));
0
1741-
1742 return 0;
never executed: return 0;
0
1743}-
1744-
1745/* Simple structure for boolean readline variables (i.e., those that can-
1746 have one of two values; either "On" or 1 for truth, or "Off" or 0 for-
1747 false. */-
1748-
1749#define V_SPECIAL 0x1-
1750-
1751static const struct {-
1752 const char * const name;-
1753 int *value;-
1754 int flags;-
1755} boolean_varlist [] = {-
1756 { "bind-tty-special-chars", &_rl_bind_stty_chars, 0 },-
1757 { "blink-matching-paren", &rl_blink_matching_paren, V_SPECIAL },-
1758 { "byte-oriented", &rl_byte_oriented, 0 },-
1759#if defined (COLOR_SUPPORT)-
1760 { "colored-completion-prefix",&_rl_colored_completion_prefix, 0 },-
1761 { "colored-stats", &_rl_colored_stats, 0 },-
1762#endif-
1763 { "completion-ignore-case", &_rl_completion_case_fold, 0 },-
1764 { "completion-map-case", &_rl_completion_case_map, 0 },-
1765 { "convert-meta", &_rl_convert_meta_chars_to_ascii, 0 },-
1766 { "disable-completion", &rl_inhibit_completion, 0 },-
1767 { "echo-control-characters", &_rl_echo_control_chars, 0 },-
1768 { "enable-bracketed-paste", &_rl_enable_bracketed_paste, 0 },-
1769 { "enable-keypad", &_rl_enable_keypad, 0 },-
1770 { "enable-meta-key", &_rl_enable_meta, 0 },-
1771 { "expand-tilde", &rl_complete_with_tilde_expansion, 0 },-
1772 { "history-preserve-point", &_rl_history_preserve_point, 0 },-
1773 { "horizontal-scroll-mode", &_rl_horizontal_scroll_mode, 0 },-
1774 { "input-meta", &_rl_meta_flag, 0 },-
1775 { "mark-directories", &_rl_complete_mark_directories, 0 },-
1776 { "mark-modified-lines", &_rl_mark_modified_lines, 0 },-
1777 { "mark-symlinked-directories", &_rl_complete_mark_symlink_dirs, 0 },-
1778 { "match-hidden-files", &_rl_match_hidden_files, 0 },-
1779 { "menu-complete-display-prefix", &_rl_menu_complete_prefix_first, 0 },-
1780 { "meta-flag", &_rl_meta_flag, 0 },-
1781 { "output-meta", &_rl_output_meta_chars, 0 },-
1782 { "page-completions", &_rl_page_completions, 0 },-
1783 { "prefer-visible-bell", &_rl_prefer_visible_bell, V_SPECIAL },-
1784 { "print-completions-horizontally", &_rl_print_completions_horizontally, 0 },-
1785 { "revert-all-at-newline", &_rl_revert_all_at_newline, 0 },-
1786 { "show-all-if-ambiguous", &_rl_complete_show_all, 0 },-
1787 { "show-all-if-unmodified", &_rl_complete_show_unmodified, 0 },-
1788 { "show-mode-in-prompt", &_rl_show_mode_in_prompt, 0 },-
1789 { "skip-completed-text", &_rl_skip_completed_text, 0 },-
1790#if defined (VISIBLE_STATS)-
1791 { "visible-stats", &rl_visible_stats, 0 },-
1792#endif /* VISIBLE_STATS */-
1793 { (char *)NULL, (int *)NULL, 0 }-
1794};-
1795-
1796static int-
1797find_boolean_var (const char *name)-
1798{-
1799 register int i;-
1800-
1801 for (i = 0; boolean_varlist[i].name; i++)
boolean_varlist[i].nameDescription
TRUEevaluated 33 times by 1 test
Evaluated by:
  • Self test
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test
1-33
1802 if (_rl_stricmp (name, boolean_varlist[i].name) == 0)
strcasecmp (na...[i].name) == 0Description
TRUEnever evaluated
FALSEevaluated 33 times by 1 test
Evaluated by:
  • Self test
0-33
1803 return i;
never executed: return i;
0
1804 return -1;
executed 1 time by 1 test: return -1;
Executed by:
  • Self test
1
1805}-
1806-
1807static const char *-
1808boolean_varname (int i)-
1809{-
1810 return ((i >= 0) ? boolean_varlist[i].name : (char *)NULL);
never executed: return ((i >= 0) ? boolean_varlist[i].name : (char *) ((void *)0) );
0
1811} -
1812-
1813/* Hooks for handling special boolean variables, where a-
1814 function needs to be called or another variable needs-
1815 to be changed when they're changed. */-
1816static void-
1817hack_special_boolean_var (int i)-
1818{-
1819 const char *name;-
1820-
1821 name = boolean_varlist[i].name;-
1822-
1823 if (_rl_stricmp (name, "blink-matching-paren") == 0)
strcasecmp (na...g-paren") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1824 _rl_enable_paren_matching (rl_blink_matching_paren);
never executed: _rl_enable_paren_matching (rl_blink_matching_paren);
0
1825 else if (_rl_stricmp (name, "prefer-visible-bell") == 0)
strcasecmp (na...le-bell") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1826 {-
1827 if (_rl_prefer_visible_bell)
_rl_prefer_visible_bellDescription
TRUEnever evaluated
FALSEnever evaluated
0
1828 _rl_bell_preference = VISIBLE_BELL;
never executed: _rl_bell_preference = 2;
0
1829 else-
1830 _rl_bell_preference = AUDIBLE_BELL;
never executed: _rl_bell_preference = 1;
0
1831 }-
1832 else if (_rl_stricmp (name, "show-mode-in-prompt") == 0)
strcasecmp (na...-prompt") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1833 _rl_reset_prompt ();
never executed: _rl_reset_prompt ();
0
1834}
never executed: end of block
0
1835-
1836typedef int _rl_sv_func_t PARAMS((const char *));-
1837-
1838/* These *must* correspond to the array indices for the appropriate-
1839 string variable. (Though they're not used right now.) */-
1840#define V_BELLSTYLE 0-
1841#define V_COMBEGIN 1-
1842#define V_EDITMODE 2-
1843#define V_ISRCHTERM 3-
1844#define V_KEYMAP 4-
1845-
1846#define V_STRING 1-
1847#define V_INT 2-
1848-
1849/* Forward declarations */-
1850static int sv_bell_style PARAMS((const char *));-
1851static int sv_combegin PARAMS((const char *));-
1852static int sv_dispprefix PARAMS((const char *));-
1853static int sv_compquery PARAMS((const char *));-
1854static int sv_compwidth PARAMS((const char *));-
1855static int sv_editmode PARAMS((const char *));-
1856static int sv_emacs_modestr PARAMS((const char *));-
1857static int sv_histsize PARAMS((const char *));-
1858static int sv_isrchterm PARAMS((const char *));-
1859static int sv_keymap PARAMS((const char *));-
1860static int sv_seqtimeout PARAMS((const char *));-
1861static int sv_viins_modestr PARAMS((const char *));-
1862static int sv_vicmd_modestr PARAMS((const char *));-
1863-
1864static const struct {-
1865 const char * const name;-
1866 int flags;-
1867 _rl_sv_func_t *set_func;-
1868} string_varlist[] = {-
1869 { "bell-style", V_STRING, sv_bell_style },-
1870 { "comment-begin", V_STRING, sv_combegin },-
1871 { "completion-display-width", V_INT, sv_compwidth },-
1872 { "completion-prefix-display-length", V_INT, sv_dispprefix },-
1873 { "completion-query-items", V_INT, sv_compquery },-
1874 { "editing-mode", V_STRING, sv_editmode },-
1875 { "emacs-mode-string", V_STRING, sv_emacs_modestr }, -
1876 { "history-size", V_INT, sv_histsize },-
1877 { "isearch-terminators", V_STRING, sv_isrchterm },-
1878 { "keymap", V_STRING, sv_keymap },-
1879 { "keyseq-timeout", V_INT, sv_seqtimeout },-
1880 { "vi-cmd-mode-string", V_STRING, sv_vicmd_modestr }, -
1881 { "vi-ins-mode-string", V_STRING, sv_viins_modestr }, -
1882 { (char *)NULL, 0, (_rl_sv_func_t *)0 }-
1883};-
1884-
1885static int-
1886find_string_var (const char *name)-
1887{-
1888 register int i;-
1889-
1890 for (i = 0; string_varlist[i].name; i++)
string_varlist[i].nameDescription
TRUEevaluated 6 times by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-6
1891 if (_rl_stricmp (name, string_varlist[i].name) == 0)
strcasecmp (na...[i].name) == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test
FALSEevaluated 5 times by 1 test
Evaluated by:
  • Self test
1-5
1892 return i;
executed 1 time by 1 test: return i;
Executed by:
  • Self test
1
1893 return -1;
never executed: return -1;
0
1894}-
1895-
1896static const char *-
1897string_varname (int i)-
1898{-
1899 return ((i >= 0) ? string_varlist[i].name : (char *)NULL);
never executed: return ((i >= 0) ? string_varlist[i].name : (char *) ((void *)0) );
0
1900} -
1901-
1902/* A boolean value that can appear in a `set variable' command is true if-
1903 the value is null or empty, `on' (case-insensitive), or "1". Any other-
1904 values result in 0 (false). */-
1905static int-
1906bool_to_int (const char *value)-
1907{-
1908 return (value == 0 || *value == '\0' ||
never executed: return (value == 0 || *value == '\0' || (strcasecmp (value, "on") == 0) || (value[0] == '1' && value[1] == '\0'));
0
1909 (_rl_stricmp (value, "on") == 0) ||
never executed: return (value == 0 || *value == '\0' || (strcasecmp (value, "on") == 0) || (value[0] == '1' && value[1] == '\0'));
0
1910 (value[0] == '1' && value[1] == '\0'));
never executed: return (value == 0 || *value == '\0' || (strcasecmp (value, "on") == 0) || (value[0] == '1' && value[1] == '\0'));
0
1911}-
1912-
1913char *-
1914rl_variable_value (const char *name)-
1915{-
1916 register int i;-
1917-
1918 /* Check for simple variables first. */-
1919 i = find_boolean_var (name);-
1920 if (i >= 0)
i >= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1921 return (*boolean_varlist[i].value ? "on" : "off");
never executed: return (*boolean_varlist[i].value ? "on" : "off");
0
1922-
1923 i = find_string_var (name);-
1924 if (i >= 0)
i >= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1925 return (_rl_get_string_variable_value (string_varlist[i].name));
never executed: return (_rl_get_string_variable_value (string_varlist[i].name));
0
1926-
1927 /* Unknown variable names return NULL. */-
1928 return 0;
never executed: return 0;
0
1929}-
1930-
1931int-
1932rl_variable_bind (const char *name, const char *value)-
1933{-
1934 register int i;-
1935 int v;-
1936-
1937 /* Check for simple variables first. */-
1938 i = find_boolean_var (name);-
1939 if (i >= 0)
i >= 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test
0-1
1940 {-
1941 *boolean_varlist[i].value = bool_to_int (value);-
1942 if (boolean_varlist[i].flags & V_SPECIAL)
boolean_varlist[i].flags & 0x1Description
TRUEnever evaluated
FALSEnever evaluated
0
1943 hack_special_boolean_var (i);
never executed: hack_special_boolean_var (i);
0
1944 return 0;
never executed: return 0;
0
1945 }-
1946-
1947 i = find_string_var (name);-
1948-
1949 /* For the time being, string names without a handler function are simply-
1950 ignored. */-
1951 if (i < 0 || string_varlist[i].set_func == 0)
i < 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test
string_varlist....set_func == 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test
0-1
1952 {-
1953 if (i < 0)
i < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1954 _rl_init_file_error ("%s: unknown variable name", name);
never executed: _rl_init_file_error ("%s: unknown variable name", name);
0
1955 return 0;
never executed: return 0;
0
1956 }-
1957-
1958 v = (*string_varlist[i].set_func) (value);-
1959 return v;
executed 1 time by 1 test: return v;
Executed by:
  • Self test
1
1960}-
1961-
1962static int-
1963sv_editmode (const char *value)-
1964{-
1965 if (_rl_strnicmp (value, "vi", 2) == 0)
strncasecmp (v... "vi", 2) == 0Description
TRUEnever evaluated
FALSEevaluated 1 time by 1 test
Evaluated by:
  • Self test
0-1
1966 {-
1967#if defined (VI_MODE)-
1968 _rl_keymap = vi_insertion_keymap;-
1969 rl_editing_mode = vi_mode;-
1970#endif /* VI_MODE */-
1971 return 0;
never executed: return 0;
0
1972 }-
1973 else if (_rl_strnicmp (value, "emacs", 5) == 0)
strncasecmp (v...macs", 5) == 0Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • Self test
FALSEnever evaluated
0-1
1974 {-
1975 _rl_keymap = emacs_standard_keymap;-
1976 rl_editing_mode = emacs_mode;-
1977 return 0;
executed 1 time by 1 test: return 0;
Executed by:
  • Self test
1
1978 }-
1979 return 1;
never executed: return 1;
0
1980}-
1981-
1982static int-
1983sv_combegin (const char *value)-
1984{-
1985 if (value && *value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
1986 {-
1987 FREE (_rl_comment_begin);
never executed: free (_rl_comment_begin);
_rl_comment_beginDescription
TRUEnever evaluated
FALSEnever evaluated
0
1988 _rl_comment_begin = savestring (value);-
1989 return 0;
never executed: return 0;
0
1990 }-
1991 return 1;
never executed: return 1;
0
1992}-
1993-
1994static int-
1995sv_dispprefix (const char *value)-
1996{-
1997 int nval = 0;-
1998-
1999 if (value && *value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
2000 {-
2001 nval = atoi (value);-
2002 if (nval < 0)
nval < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2003 nval = 0;
never executed: nval = 0;
0
2004 }
never executed: end of block
0
2005 _rl_completion_prefix_display_length = nval;-
2006 return 0;
never executed: return 0;
0
2007}-
2008-
2009static int-
2010sv_compquery (const char *value)-
2011{-
2012 int nval = 100;-
2013-
2014 if (value && *value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
2015 {-
2016 nval = atoi (value);-
2017 if (nval < 0)
nval < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2018 nval = 0;
never executed: nval = 0;
0
2019 }
never executed: end of block
0
2020 rl_completion_query_items = nval;-
2021 return 0;
never executed: return 0;
0
2022}-
2023-
2024static int-
2025sv_compwidth (const char *value)-
2026{-
2027 int nval = -1;-
2028-
2029 if (value && *value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
2030 nval = atoi (value);
never executed: nval = atoi (value);
0
2031-
2032 _rl_completion_columns = nval;-
2033 return 0;
never executed: return 0;
0
2034}-
2035-
2036static int-
2037sv_histsize (const char *value)-
2038{-
2039 int nval;-
2040-
2041 nval = 500;-
2042 if (value && *value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
2043 {-
2044 nval = atoi (value);-
2045 if (nval < 0)
nval < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2046 {-
2047 unstifle_history ();-
2048 return 0;
never executed: return 0;
0
2049 }-
2050 }
never executed: end of block
0
2051 stifle_history (nval);-
2052 return 0;
never executed: return 0;
0
2053}-
2054-
2055static int-
2056sv_keymap (const char *value)-
2057{-
2058 Keymap kmap;-
2059-
2060 kmap = rl_get_keymap_by_name (value);-
2061 if (kmap)
kmapDescription
TRUEnever evaluated
FALSEnever evaluated
0
2062 {-
2063 rl_set_keymap (kmap);-
2064 return 0;
never executed: return 0;
0
2065 }-
2066 return 1;
never executed: return 1;
0
2067}-
2068-
2069static int-
2070sv_seqtimeout (const char *value)-
2071{-
2072 int nval;-
2073-
2074 nval = 0;-
2075 if (value && *value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
2076 {-
2077 nval = atoi (value);-
2078 if (nval < 0)
nval < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2079 nval = 0;
never executed: nval = 0;
0
2080 }
never executed: end of block
0
2081 _rl_keyseq_timeout = nval;-
2082 return 0;
never executed: return 0;
0
2083}-
2084-
2085static int-
2086sv_bell_style (const char *value)-
2087{-
2088 if (value == 0 || *value == '\0')
value == 0Description
TRUEnever evaluated
FALSEnever evaluated
*value == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
0
2089 _rl_bell_preference = AUDIBLE_BELL;
never executed: _rl_bell_preference = 1;
0
2090 else if (_rl_stricmp (value, "none") == 0 || _rl_stricmp (value, "off") == 0)
strcasecmp (va..., "none") == 0Description
TRUEnever evaluated
FALSEnever evaluated
strcasecmp (value, "off") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2091 _rl_bell_preference = NO_BELL;
never executed: _rl_bell_preference = 0;
0
2092 else if (_rl_stricmp (value, "audible") == 0 || _rl_stricmp (value, "on") == 0)
strcasecmp (va...audible") == 0Description
TRUEnever evaluated
FALSEnever evaluated
strcasecmp (value, "on") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2093 _rl_bell_preference = AUDIBLE_BELL;
never executed: _rl_bell_preference = 1;
0
2094 else if (_rl_stricmp (value, "visible") == 0)
strcasecmp (va...visible") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2095 _rl_bell_preference = VISIBLE_BELL;
never executed: _rl_bell_preference = 2;
0
2096 else-
2097 return 1;
never executed: return 1;
0
2098 return 0;
never executed: return 0;
0
2099}-
2100-
2101static int-
2102sv_isrchterm (const char *value)-
2103{-
2104 int beg, end, delim;-
2105 char *v;-
2106-
2107 if (value == 0)
value == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2108 return 1;
never executed: return 1;
0
2109-
2110 /* Isolate the value and translate it into a character string. */-
2111 v = savestring (value);-
2112 FREE (_rl_isearch_terminators);
never executed: free (_rl_isearch_terminators);
_rl_isearch_terminatorsDescription
TRUEnever evaluated
FALSEnever evaluated
0
2113 if (v[0] == '"' || v[0] == '\'')
v[0] == '"'Description
TRUEnever evaluated
FALSEnever evaluated
v[0] == '\''Description
TRUEnever evaluated
FALSEnever evaluated
0
2114 {-
2115 delim = v[0];-
2116 for (beg = end = 1; v[end] && v[end] != delim; end++)
v[end]Description
TRUEnever evaluated
FALSEnever evaluated
v[end] != delimDescription
TRUEnever evaluated
FALSEnever evaluated
0
2117 ;
never executed: ;
0
2118 }
never executed: end of block
0
2119 else-
2120 {-
2121 for (beg = end = 0; v[end] && whitespace (v[end]) == 0; end++)
v[end]Description
TRUEnever evaluated
FALSEnever evaluated
(((v[end]) == ...== '\t')) == 0Description
TRUEnever evaluated
FALSEnever evaluated
((v[end]) == ' ')Description
TRUEnever evaluated
FALSEnever evaluated
((v[end]) == '\t')Description
TRUEnever evaluated
FALSEnever evaluated
0
2122 ;
never executed: ;
0
2123 }
never executed: end of block
0
2124-
2125 v[end] = '\0';-
2126-
2127 /* The value starts at v + beg. Translate it into a character string. */-
2128 _rl_isearch_terminators = (char *)xmalloc (2 * strlen (v) + 1);-
2129 rl_translate_keyseq (v + beg, _rl_isearch_terminators, &end);-
2130 _rl_isearch_terminators[end] = '\0';-
2131-
2132 xfree (v);-
2133 return 0;
never executed: return 0;
0
2134}-
2135-
2136extern char *_rl_emacs_mode_str;-
2137-
2138static int-
2139sv_emacs_modestr (const char *value)-
2140{-
2141 if (value && *value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
2142 {-
2143 FREE (_rl_emacs_mode_str);
never executed: free (_rl_emacs_mode_str);
_rl_emacs_mode_strDescription
TRUEnever evaluated
FALSEnever evaluated
0
2144 _rl_emacs_mode_str = (char *)xmalloc (2 * strlen (value) + 1);-
2145 rl_translate_keyseq (value, _rl_emacs_mode_str, &_rl_emacs_modestr_len);-
2146 _rl_emacs_mode_str[_rl_emacs_modestr_len] = '\0';-
2147 return 0;
never executed: return 0;
0
2148 }-
2149 else if (value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
2150 {-
2151 FREE (_rl_emacs_mode_str);
never executed: free (_rl_emacs_mode_str);
_rl_emacs_mode_strDescription
TRUEnever evaluated
FALSEnever evaluated
0
2152 _rl_emacs_mode_str = (char *)xmalloc (1);-
2153 _rl_emacs_mode_str[_rl_emacs_modestr_len = 0] = '\0';-
2154 return 0;
never executed: return 0;
0
2155 }-
2156 else if (value == 0)
value == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2157 {-
2158 FREE (_rl_emacs_mode_str);
never executed: free (_rl_emacs_mode_str);
_rl_emacs_mode_strDescription
TRUEnever evaluated
FALSEnever evaluated
0
2159 _rl_emacs_mode_str = 0; /* prompt_modestr does the right thing */-
2160 _rl_emacs_modestr_len = 0;-
2161 return 0;
never executed: return 0;
0
2162 }-
2163 return 1;
never executed: return 1;
0
2164}-
2165-
2166static int-
2167sv_viins_modestr (const char *value)-
2168{-
2169 if (value && *value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
2170 {-
2171 FREE (_rl_vi_ins_mode_str);
never executed: free (_rl_vi_ins_mode_str);
_rl_vi_ins_mode_strDescription
TRUEnever evaluated
FALSEnever evaluated
0
2172 _rl_vi_ins_mode_str = (char *)xmalloc (2 * strlen (value) + 1);-
2173 rl_translate_keyseq (value, _rl_vi_ins_mode_str, &_rl_vi_ins_modestr_len);-
2174 _rl_vi_ins_mode_str[_rl_vi_ins_modestr_len] = '\0';-
2175 return 0;
never executed: return 0;
0
2176 }-
2177 else if (value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
2178 {-
2179 FREE (_rl_vi_ins_mode_str);
never executed: free (_rl_vi_ins_mode_str);
_rl_vi_ins_mode_strDescription
TRUEnever evaluated
FALSEnever evaluated
0
2180 _rl_vi_ins_mode_str = (char *)xmalloc (1);-
2181 _rl_vi_ins_mode_str[_rl_vi_ins_modestr_len = 0] = '\0';-
2182 return 0;
never executed: return 0;
0
2183 }-
2184 else if (value == 0)
value == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2185 {-
2186 FREE (_rl_vi_ins_mode_str);
never executed: free (_rl_vi_ins_mode_str);
_rl_vi_ins_mode_strDescription
TRUEnever evaluated
FALSEnever evaluated
0
2187 _rl_vi_ins_mode_str = 0; /* prompt_modestr does the right thing */-
2188 _rl_vi_ins_modestr_len = 0;-
2189 return 0;
never executed: return 0;
0
2190 }-
2191 return 1;
never executed: return 1;
0
2192}-
2193-
2194static int-
2195sv_vicmd_modestr (const char *value)-
2196{-
2197 if (value && *value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
*valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
2198 {-
2199 FREE (_rl_vi_cmd_mode_str);
never executed: free (_rl_vi_cmd_mode_str);
_rl_vi_cmd_mode_strDescription
TRUEnever evaluated
FALSEnever evaluated
0
2200 _rl_vi_cmd_mode_str = (char *)xmalloc (2 * strlen (value) + 1);-
2201 rl_translate_keyseq (value, _rl_vi_cmd_mode_str, &_rl_vi_cmd_modestr_len);-
2202 _rl_vi_cmd_mode_str[_rl_vi_cmd_modestr_len] = '\0';-
2203 return 0;
never executed: return 0;
0
2204 }-
2205 else if (value)
valueDescription
TRUEnever evaluated
FALSEnever evaluated
0
2206 {-
2207 FREE (_rl_vi_cmd_mode_str);
never executed: free (_rl_vi_cmd_mode_str);
_rl_vi_cmd_mode_strDescription
TRUEnever evaluated
FALSEnever evaluated
0
2208 _rl_vi_cmd_mode_str = (char *)xmalloc (1);-
2209 _rl_vi_cmd_mode_str[_rl_vi_cmd_modestr_len = 0] = '\0';-
2210 return 0;
never executed: return 0;
0
2211 }-
2212 else if (value == 0)
value == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2213 {-
2214 FREE (_rl_vi_cmd_mode_str);
never executed: free (_rl_vi_cmd_mode_str);
_rl_vi_cmd_mode_strDescription
TRUEnever evaluated
FALSEnever evaluated
0
2215 _rl_vi_cmd_mode_str = 0; /* prompt_modestr does the right thing */-
2216 _rl_vi_cmd_modestr_len = 0;-
2217 return 0;
never executed: return 0;
0
2218 }-
2219 return 1;
never executed: return 1;
0
2220}-
2221-
2222/* Return the character which matches NAME.-
2223 For example, `Space' returns ' '. */-
2224-
2225typedef struct {-
2226 const char * const name;-
2227 int value;-
2228} assoc_list;-
2229-
2230static const assoc_list name_key_alist[] = {-
2231 { "DEL", 0x7f },-
2232 { "ESC", '\033' },-
2233 { "Escape", '\033' },-
2234 { "LFD", '\n' },-
2235 { "Newline", '\n' },-
2236 { "RET", '\r' },-
2237 { "Return", '\r' },-
2238 { "Rubout", 0x7f },-
2239 { "SPC", ' ' },-
2240 { "Space", ' ' },-
2241 { "Tab", 0x09 },-
2242 { (char *)0x0, 0 }-
2243};-
2244-
2245static int-
2246glean_key_from_name (char *name)-
2247{-
2248 register int i;-
2249-
2250 for (i = 0; name_key_alist[i].name; i++)
name_key_alist[i].nameDescription
TRUEnever evaluated
FALSEnever evaluated
0
2251 if (_rl_stricmp (name, name_key_alist[i].name) == 0)
strcasecmp (na...[i].name) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2252 return (name_key_alist[i].value);
never executed: return (name_key_alist[i].value);
0
2253-
2254 return (*(unsigned char *)name); /* XXX was return (*name) */
never executed: return (*(unsigned char *)name);
0
2255}-
2256-
2257/* Auxiliary functions to manage keymaps. */-
2258static const struct {-
2259 const char * const name;-
2260 Keymap map;-
2261} keymap_names[] = {-
2262 { "emacs", emacs_standard_keymap },-
2263 { "emacs-standard", emacs_standard_keymap },-
2264 { "emacs-meta", emacs_meta_keymap },-
2265 { "emacs-ctlx", emacs_ctlx_keymap },-
2266#if defined (VI_MODE)-
2267 { "vi", vi_movement_keymap },-
2268 { "vi-move", vi_movement_keymap },-
2269 { "vi-command", vi_movement_keymap },-
2270 { "vi-insert", vi_insertion_keymap },-
2271#endif /* VI_MODE */-
2272 { (char *)0x0, (Keymap)0x0 }-
2273};-
2274-
2275Keymap-
2276rl_get_keymap_by_name (const char *name)-
2277{-
2278 register int i;-
2279-
2280 for (i = 0; keymap_names[i].name; i++)
keymap_names[i].nameDescription
TRUEnever evaluated
FALSEnever evaluated
0
2281 if (_rl_stricmp (name, keymap_names[i].name) == 0)
strcasecmp (na...[i].name) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2282 return (keymap_names[i].map);
never executed: return (keymap_names[i].map);
0
2283 return ((Keymap) NULL);
never executed: return ((Keymap) ((void *)0) );
0
2284}-
2285-
2286char *-
2287rl_get_keymap_name (Keymap map)-
2288{-
2289 register int i;-
2290 for (i = 0; keymap_names[i].name; i++)
keymap_names[i].nameDescription
TRUEnever evaluated
FALSEnever evaluated
0
2291 if (map == keymap_names[i].map)
map == keymap_names[i].mapDescription
TRUEnever evaluated
FALSEnever evaluated
0
2292 return ((char *)keymap_names[i].name);
never executed: return ((char *)keymap_names[i].name);
0
2293 return ((char *)NULL);
never executed: return ((char *) ((void *)0) );
0
2294}-
2295 -
2296void-
2297rl_set_keymap (Keymap map)-
2298{-
2299 if (map)
mapDescription
TRUEnever evaluated
FALSEnever evaluated
0
2300 _rl_keymap = map;
never executed: _rl_keymap = map;
0
2301}
never executed: end of block
0
2302-
2303Keymap-
2304rl_get_keymap (void)-
2305{-
2306 return (_rl_keymap);
never executed: return (_rl_keymap);
0
2307}-
2308-
2309void-
2310rl_set_keymap_from_edit_mode (void)-
2311{-
2312 if (rl_editing_mode == emacs_mode)
rl_editing_mode == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
2313 _rl_keymap = emacs_standard_keymap;
never executed: _rl_keymap = emacs_standard_keymap;
0
2314#if defined (VI_MODE)-
2315 else if (rl_editing_mode == vi_mode)
rl_editing_mode == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2316 _rl_keymap = vi_insertion_keymap;
never executed: _rl_keymap = vi_insertion_keymap;
0
2317#endif /* VI_MODE */-
2318}
never executed: end of block
0
2319-
2320char *-
2321rl_get_keymap_name_from_edit_mode (void)-
2322{-
2323 if (rl_editing_mode == emacs_mode)
rl_editing_mode == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
2324 return "emacs";
never executed: return "emacs";
0
2325#if defined (VI_MODE)-
2326 else if (rl_editing_mode == vi_mode)
rl_editing_mode == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2327 return "vi";
never executed: return "vi";
0
2328#endif /* VI_MODE */-
2329 else-
2330 return "none";
never executed: return "none";
0
2331}-
2332-
2333/* **************************************************************** */-
2334/* */-
2335/* Key Binding and Function Information */-
2336/* */-
2337/* **************************************************************** */-
2338-
2339/* Each of the following functions produces information about the-
2340 state of keybindings and functions known to Readline. The info-
2341 is always printed to rl_outstream, and in such a way that it can-
2342 be read back in (i.e., passed to rl_parse_and_bind ()). */-
2343-
2344/* Print the names of functions known to Readline. */-
2345void-
2346rl_list_funmap_names (void)-
2347{-
2348 register int i;-
2349 const char **funmap_names;-
2350-
2351 funmap_names = rl_funmap_names ();-
2352-
2353 if (!funmap_names)
!funmap_namesDescription
TRUEnever evaluated
FALSEnever evaluated
0
2354 return;
never executed: return;
0
2355-
2356 for (i = 0; funmap_names[i]; i++)
funmap_names[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
2357 fprintf (rl_outstream, "%s\n", funmap_names[i]);
never executed: fprintf (rl_outstream, "%s\n", funmap_names[i]);
0
2358-
2359 xfree (funmap_names);-
2360}
never executed: end of block
0
2361-
2362static char *-
2363_rl_get_keyname (int key)-
2364{-
2365 char *keyname;-
2366 int i, c;-
2367-
2368 keyname = (char *)xmalloc (8);-
2369-
2370 c = key;-
2371 /* Since this is going to be used to write out keysequence-function-
2372 pairs for possible inclusion in an inputrc file, we don't want to-
2373 do any special meta processing on KEY. */-
2374-
2375#if 1-
2376 /* XXX - Experimental */-
2377 /* We might want to do this, but the old version of the code did not. */-
2378-
2379 /* If this is an escape character, we don't want to do any more processing.-
2380 Just add the special ESC key sequence and return. */-
2381 if (c == ESC)
c == (('[') & 0x1f)Description
TRUEnever evaluated
FALSEnever evaluated
0
2382 {-
2383 keyname[0] = '\\';-
2384 keyname[1] = 'e';-
2385 keyname[2] = '\0';-
2386 return keyname;
never executed: return keyname;
0
2387 }-
2388#endif-
2389-
2390 /* RUBOUT is translated directly into \C-? */-
2391 if (key == RUBOUT)
key == 0x7fDescription
TRUEnever evaluated
FALSEnever evaluated
0
2392 {-
2393 keyname[0] = '\\';-
2394 keyname[1] = 'C';-
2395 keyname[2] = '-';-
2396 keyname[3] = '?';-
2397 keyname[4] = '\0';-
2398 return keyname;
never executed: return keyname;
0
2399 }-
2400-
2401 i = 0;-
2402 /* Now add special prefixes needed for control characters. This can-
2403 potentially change C. */-
2404 if (CTRL_CHAR (c))
(c) < 0x020Description
TRUEnever evaluated
FALSEnever evaluated
(((c) & 0x80) == 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2405 {-
2406 keyname[i++] = '\\';-
2407 keyname[i++] = 'C';-
2408 keyname[i++] = '-';-
2409 c = _rl_to_lower (UNCTRL (c));
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: end of block
never executed: __res = tolower ( (unsigned char)((((unsigned char)(((c)|0x40)) == (((c)|0x40))) && (1 && ((*__ctype_b_loc ())[(int) (( (unsigned char)((c)|0x40) ))] & (unsigned short int) _ISlower) )) ? (__extension__ ({ int __res; if (sizeof ( (unsigned char)((c)|0x40)...d char)((c)|0x40) ); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper ( (unsigned char)((c)|0x40) ); } else __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )]; __res; })) : (((c)|0x40))) );
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
never executed: __res = (*__ctype_tolower_loc ())[(int) ( (unsigned char)((((unsigned char)(((c)|0x40)) == (((c)|0x40))) && (1 && ((*__ctype_b_loc ())[(int) (( (unsigned char)((c)|0x40) ))] & (unsigned short int) _ISlower) )) ? (__extension__ ({ int __res; if (sizeof ( (... char)((c)|0x40) ); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper ( (unsigned char)((c)|0x40) ); } else __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )]; __res; })) : (((c)|0x40))) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((c)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((c)|0x40) )];
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...|0x40))) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...((c)|0x40))) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...c)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...r)((c)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha...((c)|0x40)))))Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha... (((c)|0x40)))Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISlower)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISupper)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
((unsigned cha... (((c)|0x40)))Description
TRUEnever evaluated
FALSEnever evaluated
((*__ctype_b_l...int) _ISlower)Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
0
2410 }
never executed: end of block
0
2411-
2412 /* XXX experimental code. Turn the characters that are not ASCII or-
2413 ISO Latin 1 (128 - 159) into octal escape sequences (\200 - \237).-
2414 This changes C. */-
2415 if (c >= 128 && c <= 159)
c >= 128Description
TRUEnever evaluated
FALSEnever evaluated
c <= 159Description
TRUEnever evaluated
FALSEnever evaluated
0
2416 {-
2417 keyname[i++] = '\\';-
2418 keyname[i++] = '2';-
2419 c -= 128;-
2420 keyname[i++] = (c / 8) + '0';-
2421 c = (c % 8) + '0';-
2422 }
never executed: end of block
0
2423-
2424 /* Now, if the character needs to be quoted with a backslash, do that. */-
2425 if (c == '\\' || c == '"')
c == '\\'Description
TRUEnever evaluated
FALSEnever evaluated
c == '"'Description
TRUEnever evaluated
FALSEnever evaluated
0
2426 keyname[i++] = '\\';
never executed: keyname[i++] = '\\';
0
2427-
2428 /* Now add the key, terminate the string, and return it. */-
2429 keyname[i++] = (char) c;-
2430 keyname[i] = '\0';-
2431-
2432 return keyname;
never executed: return keyname;
0
2433}-
2434-
2435/* Return a NULL terminated array of strings which represent the key-
2436 sequences that are used to invoke FUNCTION in MAP. */-
2437char **-
2438rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)-
2439{-
2440 register int key;-
2441 char **result;-
2442 int result_index, result_size;-
2443-
2444 result = (char **)NULL;-
2445 result_index = result_size = 0;-
2446-
2447 for (key = 0; key < KEYMAP_SIZE; key++)
key < 257Description
TRUEnever evaluated
FALSEnever evaluated
0
2448 {-
2449 switch (map[key].type)-
2450 {-
2451 case ISMACR:
never executed: case 2:
0
2452 /* Macros match, if, and only if, the pointers are identical.-
2453 Thus, they are treated exactly like functions in here. */-
2454 case ISFUNC:
never executed: case 0:
0
2455 /* If the function in the keymap is the one we are looking for,-
2456 then add the current KEY to the list of invoking keys. */-
2457 if (map[key].function == function)
map[key].function == functionDescription
TRUEnever evaluated
FALSEnever evaluated
0
2458 {-
2459 char *keyname;-
2460-
2461 keyname = _rl_get_keyname (key);-
2462-
2463 if (result_index + 2 > result_size)
result_index + 2 > result_sizeDescription
TRUEnever evaluated
FALSEnever evaluated
0
2464 {-
2465 result_size += 10;-
2466 result = (char **)xrealloc (result, result_size * sizeof (char *));-
2467 }
never executed: end of block
0
2468-
2469 result[result_index++] = keyname;-
2470 result[result_index] = (char *)NULL;-
2471 }
never executed: end of block
0
2472 break;
never executed: break;
0
2473-
2474 case ISKMAP:
never executed: case 1:
0
2475 {-
2476 char **seqs;-
2477 register int i;-
2478-
2479 /* Find the list of keyseqs in this map which have FUNCTION as-
2480 their target. Add the key sequences found to RESULT. */-
2481 if (map[key].function)
map[key].functionDescription
TRUEnever evaluated
FALSEnever evaluated
0
2482 seqs =
never executed: seqs = rl_invoking_keyseqs_in_map (function, (Keymap)(map[key].function));
0
2483 rl_invoking_keyseqs_in_map (function, FUNCTION_TO_KEYMAP (map, key));
never executed: seqs = rl_invoking_keyseqs_in_map (function, (Keymap)(map[key].function));
0
2484 else-
2485 break;
never executed: break;
0
2486-
2487 if (seqs == 0)
seqs == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2488 break;
never executed: break;
0
2489-
2490 for (i = 0; seqs[i]; i++)
seqs[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
2491 {-
2492 char *keyname = (char *)xmalloc (6 + strlen (seqs[i]));-
2493-
2494 if (key == ESC)
key == (('[') & 0x1f)Description
TRUEnever evaluated
FALSEnever evaluated
0
2495 {-
2496 /* If ESC is the meta prefix and we're converting chars-
2497 with the eighth bit set to ESC-prefixed sequences, then-
2498 we can use \M-. Otherwise we need to use the sequence-
2499 for ESC. */-
2500 if (_rl_convert_meta_chars_to_ascii && map[ESC].type == ISKMAP)
_rl_convert_me...chars_to_asciiDescription
TRUEnever evaluated
FALSEnever evaluated
map[(('[') & 0x1f)].type == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
2501 sprintf (keyname, "\\M-");
never executed: sprintf (keyname, "\\M-");
0
2502 else-
2503 sprintf (keyname, "\\e");
never executed: sprintf (keyname, "\\e");
0
2504 }-
2505 else if (CTRL_CHAR (key))
(key) < 0x020Description
TRUEnever evaluated
FALSEnever evaluated
(((key) & 0x80) == 0)Description
TRUEnever evaluated
FALSEnever evaluated
0
2506 sprintf (keyname, "\\C-%c", _rl_to_lower (UNCTRL (key)));
never executed: sprintf (keyname, "\\C-%c", ((((unsigned char)(((((unsigned char)(((key)|0x40)) == (((key)|0x40))) && (1 && ((*__ctype_b_loc ())[(int) (( (unsigned char)((key)|0x40) ))] & (unsigned short int) _ISlower) )) ? (__extension__ ({ int __res; if (sizeof ( (unsi...key)|0x40) ); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper ( (unsigned char)((key)|0x40) ); } else __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((key)|0x40) )]; __res; })) : (((key)|0x40))))));
never executed: end of block
never executed: __res = toupper ( (unsigned char)((key)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((key)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((key)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((key)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((key)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((key)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((key)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((key)|0x40) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((key)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((key)|0x40) )];
never executed: end of block
never executed: __res = tolower ( (unsigned char)((((unsigned char)(((key)|0x40)) == (((key)|0x40))) && (1 && ((*__ctype_b_loc ())[(int) (( (unsigned char)((key)|0x40) ))] & (unsigned short int) _ISlower) )) ? (__extension__ ({ int __res; if (sizeof ( (unsigned char)((ke...(key)|0x40) ); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper ( (unsigned char)((key)|0x40) ); } else __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((key)|0x40) )]; __res; })) : (((key)|0x40))) );
never executed: end of block
never executed: __res = toupper ( (unsigned char)((key)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((key)|0x40) )];
never executed: __res = (*__ctype_tolower_loc ())[(int) ( (unsigned char)((((unsigned char)(((key)|0x40)) == (((key)|0x40))) && (1 && ((*__ctype_b_loc ())[(int) (( (unsigned char)((key)|0x40) ))] & (unsigned short int) _ISlower) )) ? (__extension__ ({ int __res; if (size...key)|0x40) ); __res = __c < -128 || __c > 255 ? __c : (*__ctype_toupper_loc ())[__c]; } else __res = toupper ( (unsigned char)((key)|0x40) ); } else __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((key)|0x40) )]; __res; })) : (((key)|0x40))) )];
never executed: end of block
never executed: __res = toupper ( (unsigned char)((key)|0x40) );
never executed: __res = (*__ctype_toupper_loc ())[(int) ( (unsigned char)((key)|0x40) )];
sizeof ( (unsi...y)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...((key)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...y)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...((key)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...|0x40))) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...y)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...((key)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...key)|0x40))) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...y)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...((key)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...y)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...((key)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...y)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...((key)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
sizeof ( (unsi...y)|0x40) ) > 1Description
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons...((key)|0x40) )Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
__c < -128Description
TRUEnever evaluated
FALSEnever evaluated
__c > 255Description
TRUEnever evaluated
FALSEnever evaluated
0
2507 else if (key == RUBOUT)
key == 0x7fDescription
TRUEnever evaluated
FALSEnever evaluated
0
2508 sprintf (keyname, "\\C-?");
never executed: sprintf (keyname, "\\C-?");
0
2509 else if (key == '\\' || key == '"')
key == '\\'Description
TRUEnever evaluated
FALSEnever evaluated
key == '"'Description
TRUEnever evaluated
FALSEnever evaluated
0
2510 {-
2511 keyname[0] = '\\';-
2512 keyname[1] = (char) key;-
2513 keyname[2] = '\0';-
2514 }
never executed: end of block
0
2515 else-
2516 {-
2517 keyname[0] = (char) key;-
2518 keyname[1] = '\0';-
2519 }
never executed: end of block
0
2520 -
2521 strcat (keyname, seqs[i]);-
2522 xfree (seqs[i]);-
2523-
2524 if (result_index + 2 > result_size)
result_index + 2 > result_sizeDescription
TRUEnever evaluated
FALSEnever evaluated
0
2525 {-
2526 result_size += 10;-
2527 result = (char **)xrealloc (result, result_size * sizeof (char *));-
2528 }
never executed: end of block
0
2529-
2530 result[result_index++] = keyname;-
2531 result[result_index] = (char *)NULL;-
2532 }
never executed: end of block
0
2533-
2534 xfree (seqs);-
2535 }-
2536 break;
never executed: break;
0
2537 }-
2538 }
never executed: end of block
0
2539 return (result);
never executed: return (result);
0
2540}-
2541-
2542/* Return a NULL terminated array of strings which represent the key-
2543 sequences that can be used to invoke FUNCTION using the current keymap. */-
2544char **-
2545rl_invoking_keyseqs (rl_command_func_t *function)-
2546{-
2547 return (rl_invoking_keyseqs_in_map (function, _rl_keymap));
never executed: return (rl_invoking_keyseqs_in_map (function, _rl_keymap));
0
2548}-
2549-
2550/* Print all of the functions and their bindings to rl_outstream. If-
2551 PRINT_READABLY is non-zero, then print the output in such a way-
2552 that it can be read back in. */-
2553void-
2554rl_function_dumper (int print_readably)-
2555{-
2556 register int i;-
2557 const char **names;-
2558 const char *name;-
2559-
2560 names = rl_funmap_names ();-
2561-
2562 fprintf (rl_outstream, "\n");-
2563-
2564 for (i = 0; name = names[i]; i++)
name = names[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
2565 {-
2566 rl_command_func_t *function;-
2567 char **invokers;-
2568-
2569 function = rl_named_function (name);-
2570 invokers = rl_invoking_keyseqs_in_map (function, _rl_keymap);-
2571-
2572 if (print_readably)
print_readablyDescription
TRUEnever evaluated
FALSEnever evaluated
0
2573 {-
2574 if (!invokers)
!invokersDescription
TRUEnever evaluated
FALSEnever evaluated
0
2575 fprintf (rl_outstream, "# %s (not bound)\n", name);
never executed: fprintf (rl_outstream, "# %s (not bound)\n", name);
0
2576 else-
2577 {-
2578 register int j;-
2579-
2580 for (j = 0; invokers[j]; j++)
invokers[j]Description
TRUEnever evaluated
FALSEnever evaluated
0
2581 {-
2582 fprintf (rl_outstream, "\"%s\": %s\n",-
2583 invokers[j], name);-
2584 xfree (invokers[j]);-
2585 }
never executed: end of block
0
2586-
2587 xfree (invokers);-
2588 }
never executed: end of block
0
2589 }-
2590 else-
2591 {-
2592 if (!invokers)
!invokersDescription
TRUEnever evaluated
FALSEnever evaluated
0
2593 fprintf (rl_outstream, "%s is not bound to any keys\n",
never executed: fprintf (rl_outstream, "%s is not bound to any keys\n", name);
0
2594 name);
never executed: fprintf (rl_outstream, "%s is not bound to any keys\n", name);
0
2595 else-
2596 {-
2597 register int j;-
2598-
2599 fprintf (rl_outstream, "%s can be found on ", name);-
2600-
2601 for (j = 0; invokers[j] && j < 5; j++)
invokers[j]Description
TRUEnever evaluated
FALSEnever evaluated
j < 5Description
TRUEnever evaluated
FALSEnever evaluated
0
2602 {-
2603 fprintf (rl_outstream, "\"%s\"%s", invokers[j],-
2604 invokers[j + 1] ? ", " : ".\n");-
2605 }
never executed: end of block
0
2606-
2607 if (j == 5 && invokers[j])
j == 5Description
TRUEnever evaluated
FALSEnever evaluated
invokers[j]Description
TRUEnever evaluated
FALSEnever evaluated
0
2608 fprintf (rl_outstream, "...\n");
never executed: fprintf (rl_outstream, "...\n");
0
2609-
2610 for (j = 0; invokers[j]; j++)
invokers[j]Description
TRUEnever evaluated
FALSEnever evaluated
0
2611 xfree (invokers[j]);
never executed: xfree (invokers[j]);
0
2612-
2613 xfree (invokers);-
2614 }
never executed: end of block
0
2615 }-
2616 }-
2617-
2618 xfree (names);-
2619}
never executed: end of block
0
2620-
2621/* Print all of the current functions and their bindings to-
2622 rl_outstream. If an explicit argument is given, then print-
2623 the output in such a way that it can be read back in. */-
2624int-
2625rl_dump_functions (int count, int key)-
2626{-
2627 if (rl_dispatching)
rl_dispatchingDescription
TRUEnever evaluated
FALSEnever evaluated
0
2628 fprintf (rl_outstream, "\r\n");
never executed: fprintf (rl_outstream, "\r\n");
0
2629 rl_function_dumper (rl_explicit_arg);-
2630 rl_on_new_line ();-
2631 return (0);
never executed: return (0);
0
2632}-
2633-
2634static void-
2635_rl_macro_dumper_internal (int print_readably, Keymap map, char *prefix)-
2636{-
2637 register int key;-
2638 char *keyname, *out;-
2639 int prefix_len;-
2640-
2641 for (key = 0; key < KEYMAP_SIZE; key++)
key < 257Description
TRUEnever evaluated
FALSEnever evaluated
0
2642 {-
2643 switch (map[key].type)-
2644 {-
2645 case ISMACR:
never executed: case 2:
0
2646 keyname = _rl_get_keyname (key);-
2647 out = _rl_untranslate_macro_value ((char *)map[key].function, 0);-
2648-
2649 if (print_readably)
print_readablyDescription
TRUEnever evaluated
FALSEnever evaluated
0
2650 fprintf (rl_outstream, "\"%s%s\": \"%s\"\n", prefix ? prefix : "",
never executed: fprintf (rl_outstream, "\"%s%s\": \"%s\"\n", prefix ? prefix : "", keyname, out ? out : "");
0
2651 keyname,
never executed: fprintf (rl_outstream, "\"%s%s\": \"%s\"\n", prefix ? prefix : "", keyname, out ? out : "");
0
2652 out ? out : "");
never executed: fprintf (rl_outstream, "\"%s%s\": \"%s\"\n", prefix ? prefix : "", keyname, out ? out : "");
0
2653 else-
2654 fprintf (rl_outstream, "%s%s outputs %s\n", prefix ? prefix : "",
never executed: fprintf (rl_outstream, "%s%s outputs %s\n", prefix ? prefix : "", keyname, out ? out : "");
0
2655 keyname,
never executed: fprintf (rl_outstream, "%s%s outputs %s\n", prefix ? prefix : "", keyname, out ? out : "");
0
2656 out ? out : "");
never executed: fprintf (rl_outstream, "%s%s outputs %s\n", prefix ? prefix : "", keyname, out ? out : "");
0
2657 xfree (keyname);-
2658 xfree (out);-
2659 break;
never executed: break;
0
2660 case ISFUNC:
never executed: case 0:
0
2661 break;
never executed: break;
0
2662 case ISKMAP:
never executed: case 1:
0
2663 prefix_len = prefix ? strlen (prefix) : 0;
prefixDescription
TRUEnever evaluated
FALSEnever evaluated
0
2664 if (key == ESC)
key == (('[') & 0x1f)Description
TRUEnever evaluated
FALSEnever evaluated
0
2665 {-
2666 keyname = (char *)xmalloc (3 + prefix_len);-
2667 if (prefix)
prefixDescription
TRUEnever evaluated
FALSEnever evaluated
0
2668 strcpy (keyname, prefix);
never executed: strcpy (keyname, prefix);
0
2669 keyname[prefix_len] = '\\';-
2670 keyname[prefix_len + 1] = 'e';-
2671 keyname[prefix_len + 2] = '\0';-
2672 }
never executed: end of block
0
2673 else-
2674 {-
2675 keyname = _rl_get_keyname (key);-
2676 if (prefix)
prefixDescription
TRUEnever evaluated
FALSEnever evaluated
0
2677 {-
2678 out = (char *)xmalloc (strlen (keyname) + prefix_len + 1);-
2679 strcpy (out, prefix);-
2680 strcpy (out + prefix_len, keyname);-
2681 xfree (keyname);-
2682 keyname = out;-
2683 }
never executed: end of block
0
2684 }
never executed: end of block
0
2685-
2686 _rl_macro_dumper_internal (print_readably, FUNCTION_TO_KEYMAP (map, key), keyname);-
2687 xfree (keyname);-
2688 break;
never executed: break;
0
2689 }-
2690 }
never executed: end of block
0
2691}
never executed: end of block
0
2692-
2693void-
2694rl_macro_dumper (int print_readably)-
2695{-
2696 _rl_macro_dumper_internal (print_readably, _rl_keymap, (char *)NULL);-
2697}
never executed: end of block
0
2698-
2699int-
2700rl_dump_macros (int count, int key)-
2701{-
2702 if (rl_dispatching)
rl_dispatchingDescription
TRUEnever evaluated
FALSEnever evaluated
0
2703 fprintf (rl_outstream, "\r\n");
never executed: fprintf (rl_outstream, "\r\n");
0
2704 rl_macro_dumper (rl_explicit_arg);-
2705 rl_on_new_line ();-
2706 return (0);
never executed: return (0);
0
2707}-
2708-
2709static char *-
2710_rl_get_string_variable_value (const char *name)-
2711{-
2712 static char numbuf[32];-
2713 char *ret;-
2714-
2715 if (_rl_stricmp (name, "bell-style") == 0)
strcasecmp (na...l-style") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2716 {-
2717 switch (_rl_bell_preference)-
2718 {-
2719 case NO_BELL:
never executed: case 0:
0
2720 return "none";
never executed: return "none";
0
2721 case VISIBLE_BELL:
never executed: case 2:
0
2722 return "visible";
never executed: return "visible";
0
2723 case AUDIBLE_BELL:
never executed: case 1:
0
2724 default:
never executed: default:
0
2725 return "audible";
never executed: return "audible";
0
2726 }-
2727 }-
2728 else if (_rl_stricmp (name, "comment-begin") == 0)
strcasecmp (na...t-begin") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2729 return (_rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT);
never executed: return (_rl_comment_begin ? _rl_comment_begin : "#");
0
2730 else if (_rl_stricmp (name, "completion-display-width") == 0)
strcasecmp (na...y-width") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2731 {-
2732 sprintf (numbuf, "%d", _rl_completion_columns);-
2733 return (numbuf);
never executed: return (numbuf);
0
2734 }-
2735 else if (_rl_stricmp (name, "completion-prefix-display-length") == 0)
strcasecmp (na...-length") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2736 {-
2737 sprintf (numbuf, "%d", _rl_completion_prefix_display_length);-
2738 return (numbuf);
never executed: return (numbuf);
0
2739 }-
2740 else if (_rl_stricmp (name, "completion-query-items") == 0)
strcasecmp (na...y-items") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2741 {-
2742 sprintf (numbuf, "%d", rl_completion_query_items);-
2743 return (numbuf);
never executed: return (numbuf);
0
2744 }-
2745 else if (_rl_stricmp (name, "editing-mode") == 0)
strcasecmp (na...ng-mode") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2746 return (rl_get_keymap_name_from_edit_mode ());
never executed: return (rl_get_keymap_name_from_edit_mode ());
0
2747 else if (_rl_stricmp (name, "history-size") == 0)
strcasecmp (na...ry-size") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2748 {-
2749 sprintf (numbuf, "%d", history_is_stifled() ? history_max_entries : 0);-
2750 return (numbuf);
never executed: return (numbuf);
0
2751 }-
2752 else if (_rl_stricmp (name, "isearch-terminators") == 0)
strcasecmp (na...inators") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2753 {-
2754 if (_rl_isearch_terminators == 0)
_rl_isearch_terminators == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2755 return 0;
never executed: return 0;
0
2756 ret = _rl_untranslate_macro_value (_rl_isearch_terminators, 0);-
2757 if (ret)
retDescription
TRUEnever evaluated
FALSEnever evaluated
0
2758 {-
2759 strncpy (numbuf, ret, sizeof (numbuf) - 1);-
2760 xfree (ret);-
2761 numbuf[sizeof(numbuf) - 1] = '\0';-
2762 }
never executed: end of block
0
2763 else-
2764 numbuf[0] = '\0';
never executed: numbuf[0] = '\0';
0
2765 return numbuf;
never executed: return numbuf;
0
2766 }-
2767 else if (_rl_stricmp (name, "keymap") == 0)
strcasecmp (na..."keymap") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2768 {-
2769 ret = rl_get_keymap_name (_rl_keymap);-
2770 if (ret == 0)
ret == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2771 ret = rl_get_keymap_name_from_edit_mode ();
never executed: ret = rl_get_keymap_name_from_edit_mode ();
0
2772 return (ret ? ret : "none");
never executed: return (ret ? ret : "none");
0
2773 }-
2774 else if (_rl_stricmp (name, "keyseq-timeout") == 0)
strcasecmp (na...timeout") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2775 {-
2776 sprintf (numbuf, "%d", _rl_keyseq_timeout); -
2777 return (numbuf);
never executed: return (numbuf);
0
2778 }-
2779 else if (_rl_stricmp (name, "emacs-mode-string") == 0)
strcasecmp (na...-string") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2780 return (_rl_emacs_mode_str ? _rl_emacs_mode_str : RL_EMACS_MODESTR_DEFAULT);
never executed: return (_rl_emacs_mode_str ? _rl_emacs_mode_str : "@");
0
2781 else if (_rl_stricmp (name, "vi-cmd-mode-string") == 0)
strcasecmp (na...-string") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2782 return (_rl_vi_cmd_mode_str ? _rl_vi_cmd_mode_str : RL_VI_CMD_MODESTR_DEFAULT);
never executed: return (_rl_vi_cmd_mode_str ? _rl_vi_cmd_mode_str : "(cmd)");
0
2783 else if (_rl_stricmp (name, "vi-ins-mode-string") == 0)
strcasecmp (na...-string") == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2784 return (_rl_vi_ins_mode_str ? _rl_vi_ins_mode_str : RL_VI_INS_MODESTR_DEFAULT);
never executed: return (_rl_vi_ins_mode_str ? _rl_vi_ins_mode_str : "(ins)");
0
2785 else-
2786 return (0);
never executed: return (0);
0
2787}-
2788-
2789void-
2790rl_variable_dumper (int print_readably)-
2791{-
2792 int i;-
2793 char *v;-
2794-
2795 for (i = 0; boolean_varlist[i].name; i++)
boolean_varlist[i].nameDescription
TRUEnever evaluated
FALSEnever evaluated
0
2796 {-
2797 if (print_readably)
print_readablyDescription
TRUEnever evaluated
FALSEnever evaluated
0
2798 fprintf (rl_outstream, "set %s %s\n", boolean_varlist[i].name,
never executed: fprintf (rl_outstream, "set %s %s\n", boolean_varlist[i].name, *boolean_varlist[i].value ? "on" : "off");
0
2799 *boolean_varlist[i].value ? "on" : "off");
never executed: fprintf (rl_outstream, "set %s %s\n", boolean_varlist[i].name, *boolean_varlist[i].value ? "on" : "off");
0
2800 else-
2801 fprintf (rl_outstream, "%s is set to `%s'\n", boolean_varlist[i].name,
never executed: fprintf (rl_outstream, "%s is set to `%s'\n", boolean_varlist[i].name, *boolean_varlist[i].value ? "on" : "off");
0
2802 *boolean_varlist[i].value ? "on" : "off");
never executed: fprintf (rl_outstream, "%s is set to `%s'\n", boolean_varlist[i].name, *boolean_varlist[i].value ? "on" : "off");
0
2803 }-
2804-
2805 for (i = 0; string_varlist[i].name; i++)
string_varlist[i].nameDescription
TRUEnever evaluated
FALSEnever evaluated
0
2806 {-
2807 v = _rl_get_string_variable_value (string_varlist[i].name);-
2808 if (v == 0) /* _rl_isearch_terminators can be NULL */
v == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2809 continue;
never executed: continue;
0
2810 if (print_readably)
print_readablyDescription
TRUEnever evaluated
FALSEnever evaluated
0
2811 fprintf (rl_outstream, "set %s %s\n", string_varlist[i].name, v);
never executed: fprintf (rl_outstream, "set %s %s\n", string_varlist[i].name, v);
0
2812 else-
2813 fprintf (rl_outstream, "%s is set to `%s'\n", string_varlist[i].name, v);
never executed: fprintf (rl_outstream, "%s is set to `%s'\n", string_varlist[i].name, v);
0
2814 }-
2815}
never executed: end of block
0
2816-
2817/* Print all of the current variables and their values to-
2818 rl_outstream. If an explicit argument is given, then print-
2819 the output in such a way that it can be read back in. */-
2820int-
2821rl_dump_variables (int count, int key)-
2822{-
2823 if (rl_dispatching)
rl_dispatchingDescription
TRUEnever evaluated
FALSEnever evaluated
0
2824 fprintf (rl_outstream, "\r\n");
never executed: fprintf (rl_outstream, "\r\n");
0
2825 rl_variable_dumper (rl_explicit_arg);-
2826 rl_on_new_line ();-
2827 return (0);
never executed: return (0);
0
2828}-
2829-
2830/* Return non-zero if any members of ARRAY are a substring in STRING. */-
2831static int-
2832substring_member_of_array (const char *string, const char * const *array)-
2833{-
2834 while (*array)
*arrayDescription
TRUEnever evaluated
FALSEnever evaluated
0
2835 {-
2836 if (_rl_strindex (string, *array))
_rl_strindex (string, *array)Description
TRUEnever evaluated
FALSEnever evaluated
0
2837 return (1);
never executed: return (1);
0
2838 array++;-
2839 }
never executed: end of block
0
2840 return (0);
never executed: return (0);
0
2841}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2