(expect-strings): use peek-char to get the next char. this has
the advantage of getting the handling of $ "correct", but the
disadvantage of needing to get (and maybe block for) an extra character
from the port when it may not be needed. hence:
* (expect-strings-exec-flags): new variable/parameter, supplies
flags for regexp-exec. if this includes regexp/noteol, then
automatic regexp/noteol handling (requiring an extra peeked char)
is enabled. default is regexp/noteol.
* (expect-strings-compile-flags): new variable/parameter, supplies
flags for make-regexp. default is regexp/newline.
* * expect.scm (expect): call the match proc with an extra char,
peeked from the stream.
(expect-strings): build a match proc which takes the extra char.
(expect-regexec): take an extra arg "eof-next?" and use it
to decide whether the regexp/noteol flag should be added.
(error-catching-loop): likewise.
* boot-9.scm (scm-style-repl): -read: don't call
consume-trailing-whitespace if val is eof object. Allows
exiting repl with single control-D.
* boot-9.scm (error-catching-loop): don't force output within
error catching loop after quit received.
(top-repl): flush all ports when the repl terminates.
* boot-9.scm (error-catching-loop): flush all ports before
primitive exit if non-interactive.
force-output on current-error-port if interactive.
* boot-9.scm (reopen-file): deleted.
* popen.scm (open-output-pipe, open-input-pipe): moved from
boot-9.scm.
* popen.scm: new file.
bucket if you use the test suite functions without a driver script.
(default-reporter): New variable.
(report): Send results to default-reporter if there are no registered
reporters.
(full-reporter): New function.
(user-reporter): Re-implemented in terms of full-reporter.
error messages, not the uninitialized string `str'. Love that
typechecking.
* strop.c (scm_substring_move_x): New function, which can handle
arbitrary overlapping substrings.
(substring-move-left!, substring-move-right!): These are
now just synonyms for substring-move!.
* strop.h (scm_substring_move_x): New prototype.
(scm_substring_move_left_x, scm_substring_move_right_x):
#define these as synonyms for scm_substring_move_x.
(which could be dynamically linked in the future anyway).
* Makefile.am (ice9_sources): Don't list string-case.scm.
* Makefile.in: Regenerated.
* format.scm: Don't bother importing (ice-9 string-case).
functions; capitalize the first letter of each word in the
argument string, and downcase the rest.
(scm_string_ci_to_symbol): string->symbol, such that the same
symbol is returned for any argument where the only difference
between strings is in capitalization.
(scm_string_upcase, scm_string_downcase): non-destructive
versions.
* strop.c (scm_substring_move_left_x, scm_substring_move_right_x):
changed to use memmove.
* strop.c (scm_i_index): removed the pos arguments (it's only
called twice, and each time it's SCM_ARG1, SCM_ARG2, SCM_ARG3,
SCM_ARG4).
* strop.h: fixed prototypes.
* * strop.c (scm_substring_move_left_x, scm_substring_move_right_x):
changed to have 5 required args, rather than 2 required, and 3 required
rest args. Also modified to allow str1 & str2 to overlap.
(scm_substring_fill_x): changed to 4 args, rather than 2 args and
2 required rest args.
changes:
(format:format): If the first argument is the format string, stick
a #f on the front of it, so it is now a valid CL format argument
list. This is easier than changing everyplace else (like the
error formatter) that expects it to be in CL form. The other
clause which explicitly tests for this case is now dead code.
(format:format-work): Allow `@' and `:' in either order, as per
modern CL behavior.
(format:num->cardinal): Don't assume that an elseless if returns
'() when the condition is false.