diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-09-11 22:48:28 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-09-11 22:48:28 -0700 |
commit | ce937a42102cf549662678cd91026f6aa1b0a7cd (patch) | |
tree | 390412cb207bcb3fec3f65eb5addc276de83b169 | |
parent | 67b7bc2d2aee78a9fefce12ed9fd252fbd7f1474 (diff) | |
download | txr-ce937a42102cf549662678cd91026f6aa1b0a7cd.tar.gz txr-ce937a42102cf549662678cd91026f6aa1b0a7cd.tar.bz2 txr-ce937a42102cf549662678cd91026f6aa1b0a7cd.zip |
Treat comment lines in repl, and plug memory leak.
* parser.c (repl): If we continue the loop due to detecting a
blank line, we must free that line, since we are outside of
the unwind block (and continue would violate that block if we
were). If a line contains nothing but a comment, then enter
that line into the history.
* txr.1: Documented treatment of commented lines.
-rw-r--r-- | parser.c | 16 | ||||
-rw-r--r-- | txr.1 | 12 |
2 files changed, 24 insertions, 4 deletions
@@ -581,8 +581,20 @@ val repl(val bindings, val in_stream, val out_stream) break; } - if (strspn(line_u8, " \t") == strlen(line_u8)) - continue; + { + size_t wsp = strspn(line_u8, " \t\n\r"); + + if (line_u8[wsp] == 0) { + free(line_u8); + continue; + } + + if (line_u8[wsp] == ';') { + lino_hist_add(ls, line_u8); + free(line_u8); + continue; + } + } counter = succ(counter); @@ -33259,8 +33259,16 @@ intercepts the exception and prints information about it preceded by two asterisks and a space. These asterisks distinguish an exception from a result value. -If an empty line is entered, or a line containing only spaces and tabs, -the prompt is repeated without incrementing the number. +If an empty line is entered, or a line containing only spaces, tabs +or embedded carriage returns or linefeeds, the prompt is repeated without +incrementing the number. Such a line is not entered into the history. + +A line which only contains a \*(TL comment (optional spaces, tabs or embedded +carriage returns or linefeeds, followed by a semicolon), also causes +the prompt to be repeated without incrementing the number. However, +such a line +.B is +entered into the history. .SS* Ways to Quit |