+2008-05-15 Ben Pfaff <blp@gnu.org>
+
+ Patch #6512.
+
+ * loop.c (loop_trns_proc): Use gsl_finite instead of finite, , as
+ a stopgap measure for portability until appropriate gnulib modules
+ are available.
+
+2007-09-23 Ben Pfaff <blp@gnu.org>
+
+ Bug #21111. Reviewed by John Darrington.
+
+ * do-if.c: Fix ELSE and ELSE IF clauses.
+ (add_clause): Drop TARGET_INDEX argument and figure out the target
+ of the jump on our own. The caller couldn't compensate for the
+ inserted BREAK transformation. Updated all callers.
+
+Fri Feb 2 22:41:43 WST 2007 John Darrington <john@darrington.wattle.id.au>
+
+ * repeat.c (parse_numbers): Fixed bug parseing ranges vs. lists.
+ Ensured that floats are accepted in lists, but not in ranges.
+
+Tue Dec 19 08:12:46 2006 Ben Pfaff <blp@gnu.org>
+
+ Fix LOOP. Thanks to Daniel Williams
+ <Daniel.E.Williams@state.or.us> for reporting one of the bugs
+ fixed here.
+
+ * loop.c (cmd_loop): Keep track of whether we created the index
+ variable and delete it if parsing fails, instead of creating it
+ after parsing the IF clause. This allows the index variable to be
+ used in the IF clause. This incidentally fixes a segfault when no
+ index variable was used. Also, return CMD_CASCADING_FAILURE if we
+ fail.
+ (parse_if_clause): Don't allow more than one IF clause.
+ (parse_index_clause): Don't allow more than one index clause.
+ Create the index variable if it doesn't exist.
+ (end_loop_trns_proc): Invert the sense of END LOOP's IF clause.
+
+Sat Dec 9 20:12:34 2006 Ben Pfaff <blp@gnu.org>
+
+ * repeat.c (parse_lines): Issue an error when attempting to nest
+ DO REPEAT in compatibility mode.
+
+Sat Dec 2 17:01:59 2006 Ben Pfaff <blp@gnu.org>
+
+ Significant cleanup to DO REPEAT.
+
+ * repeat.c: (struct line_list) Rename struct repeat_line. Use
+ struct ll instead of explicit "next" pointer. Make "file_name"
+ const. Change "const char *line" to "struct substring text". Add
+ `syntax' member. Update all references.
+ (enum repeat_entry_type) Rename repeat_macro_type, update all
+ references.
+ (struct repeat_entry) Rename struct repeat_macro. Use struct ll
+ instead of explicit "next" pointer. Change "char[] id" to "struct
+ substring name". Change "char **replacement" to "struct substring
+ *replacements". Update all references.
+ (struct repeat_block) Use struct ll_list for lists of lines,
+ macros. Change "cur_line" to struct ll *.
+ (cmd_do_repeat) Don't bother adding an empty getl source at all.
+ This saves special-casing an empty source in repeat_read.
+ (parse_specification) Use new find_macro function.
+ (find_macro) New function.
+ (skip_indentor) Removed.
+ (recognize_keyword) Change interface, update callers.
+ (recognize_do_repeat) Ditto.
+ (recognize_end_repeat) Ditto.
+ (parse_lines) Use lex_preprocess_line to preprocess the input line
+ to check for DO REPEAT and END REPEAT, instead of coding it
+ inline.
+ (parse_ids) Need to make a copy of the array parsed by
+ parse_mixed_vars_pool, instead of using it verbatim, because we're
+ using struct substring now.
+ (add_replacement) Use struct substring in interface, instead of
+ const char *, and update all callers.
+ (find_substitution) Rewrite using substring, in terms of
+ find_macro.
+ (do_repeat_filter) Use struct substring to simplify code.
+ (current_line) New function.
+
+Sat Dec 2 16:40:12 2006 Ben Pfaff <blp@gnu.org>
+
+ Fix lack of ->name and ->location in DO REPEAT's getl_interface.
+ See bug #15702.
+
+ * repeat.c: (cmd_do_repeat) Initialize name, location in
+ getl_interface.
+ (do_repeat_read) Adjust semantics of cur_line so that, after the
+ call, it points to the line just returned, instead of to the next
+ line to be returned. Thus, do_repeat_name and do_repeat_location
+ can use cur_line to obtain the info they need.
+ (do_repeat_name) New function.
+ (do_repeat_location) New function.
+
Thu Nov 30 22:01:27 2006 Ben Pfaff <blp@gnu.org>
* repeat.c (do_repeat_read): Properly handle empty DO REPEAT...END