Fix lack of ->name and ->location in DO REPEAT's getl_interface.
[pspp-builds.git] / src / language / control / ChangeLog
index 17d3b510824d889bc24501fce5a453e88f6518a9..ef5f63a4f1606eb8bbe2484e7d67fe27afa14a1e 100644 (file)
@@ -1,3 +1,54 @@
+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