home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #3 / Amiga Plus CD - 2002 - No. 03.iso / AmigaPlus / Tools / Development / envCPP31 / c++ / tools / gnu-indent / docs / ChangeLog-1998 < prev    next >
Encoding:
Text File  |  1999-05-29  |  49.9 KB  |  1,361 lines

  1. 1998-12-02    <jla@void.arceneaux.com>
  2.  
  3.     * indent.c (need_chars): Changed this #define to an inline
  4.     function.  Also, increase size of buffer by at least `needed'.
  5.  
  6. 1998-11-25    <jla@void.arceneaux.com>
  7.  
  8.     * lexi.c (lexi): New case lable for 'L' in switch (*token) to
  9.     handle wide strings.
  10.     In the if statement for alphanums, fail the test if we are looking
  11.     at L" or L'.
  12.     * regression/TEST: added new test case wide.c to EXAMPLES.
  13.  
  14. 1998-11-24    <jla@void.arceneaux.com>
  15.  
  16.     * indent.texinfo (Common styles): Corrected description of canned
  17.     styles to correspond with args.c
  18.  
  19.     * makefile.in (TARFILES): Removed indent.1 from the list.
  20.  
  21. 1998-11-23    <jla@void.arceneaux.com>
  22.  
  23.     * backup.c (make_backup): Removed #ifdef __MSDOS__, just declare
  24.     size unsigned int in all cases.
  25.  
  26. 1998-11-22    <jla@void.arceneaux.com>
  27.  
  28.     * All code now passes through gcc -Wall.
  29.  
  30.     * args.c: Removed unused variable `exp_troff'.
  31.  
  32.     * comments.c (print_comment): Removed unused label comment_exit.
  33.  
  34.     * io.c (dump_line): Removed unused label inhibit_newline.
  35.  
  36.     * makefile.in (indent.html): New target.
  37.  
  38.     * sys.h: Removed conditionals around `memcpy' function and define
  39.     of `bcopy' to `memcpy'.  I will assume that memcpy is available,
  40.     and see if it's problematic.
  41.     * memcpy.c: Changed #ifdef USG to #ifndef HAVE_MEMCPY.
  42.  
  43.     * regression/TEST: added new test files bbb-test.c and
  44.     class-func.cc.
  45.     
  46.     * comments.c (print_comment): Use new variable
  47.     `comment_lines_count' to count lines in a boxed comment.  When
  48.     printing a boxed comment, set `parser_state_tos->com_col' to
  49.     `found_col' when returning from a single line boxed comment.
  50.  
  51. 1998-11-21    <jla@void.arceneaux.com>
  52.  
  53.     * indent.h (struct buf): New `len' and `column' elements added to
  54.     struc buf.
  55.     * indent.c (indent): Update `save_com.len' where appropriate.  Set
  56.     `save_com.column' where appropriate.
  57.     * io.c (current_column): Use `len' element of save_com to detect
  58.     if `buf_ptr' is using the save_com buffer, rather than the `end'
  59.     element, because that could point to the `ptr' (beginning)
  60.     element.
  61.  
  62.     * indent.c (indent): Null-terminate the `save_com' buffer.
  63.  
  64. 1998-11-20    <jla@void.arceneaux.com>
  65.  
  66.     * indent.c (indent): Include parser_state_tos->classname != '\0'
  67.     in determining whether to set `is_procname_definition'.
  68.  
  69.     * indent.h (struct parser_state): New elements `classname_' and
  70.     `classname_end'.
  71.     * lexi.c (lexi): If we detect "::" after an indent, set `classname_' and
  72.     `classname_end'.
  73.     * parse.c (reset_parser): Initialize `classname_' and `classname_end'.
  74.  
  75.     * indent.c (indent): Don't break the line if we had an identifier
  76.     and `parser_state_tos->last_token' is doublecolon.
  77.  
  78.     * indent.h (codes): Changed enum value `operator' to
  79.     `cpp_operator', since "operator" is a C++ keyword.
  80.     indent.c: Likewise.
  81.     lexi.c: Likewise.
  82.  
  83. 1998-10-20    <jla@void.arceneaux.com>
  84.  
  85.     * indent.c (indent): In the while (parser_state_tos->search_brace)
  86.     loop, notice if we see a newline and make sure it's output by
  87.     using new local variable `just_saw_nl'.
  88.  
  89. 1998-10-01    <jla@void.arceneaux.com>
  90.  
  91.     * io.c (dump_line): If we're resetting the indentation level
  92.     because a break is just before an lparen, check that
  93.     parser_state_tos->paren_level >= 2 before doing this.
  94.  
  95. Thu Aug 27 10:19:24 1998    <jla@void.arceneaux.com>
  96.  
  97.     * indent.c (main): Removed type of `main'.
  98.  
  99. 1998-08-25    <jla@void.arceneaux.com>
  100.  
  101.     * args.c (pro): Changed the "-nps" member of the "gnu" options
  102.     settings to "-npsl" as the nps option does not exist.
  103.  
  104. 1998-08-23    <jla@void.arceneaux.com>
  105.  
  106.     * comments.c (print_comment): If the comment begins in the very
  107.     first column and user specified -fc1, indent it to the code.
  108.     Don't touch the comment at all if -fc1 was not specified.
  109.  
  110. 1998-08-22    <jla@void.arceneaux.com>
  111.  
  112.     * io.c (dump_line): If `break_line' is set, there is no comment on
  113.     the line, and `buf_break' is properly set, break the line at
  114.     `buf_break' and fill s_code with the un-output portion of the
  115.     line.  Use new variable `not_truncated' to indicate whether the
  116.     line was broken or not.
  117.     Only reset `e_code' to `s_code' if we didn't break the line.
  118.     If we broke the line, the the next line will begin with a lparen,
  119.     then reset `parser_state_tos->paren_indents' to the level for the
  120.     *previous* lparen - otherwise, the line will get indent to where
  121.     the paren was on the original line.
  122.  
  123.     * indent.c (indent): If we plan to break the line, set
  124.     `break_line' and `force_nl'.
  125.     Whereever we append a blank to the output line, set `buf_break' to
  126.     that point.  Also, NULL-terminate the line.
  127.  
  128.     * indent.c, args.c, io.c:  All troff-related code removed.
  129.  
  130. 1998-08-17    <jla@void.arceneaux.com>
  131.  
  132.     * indent.c (indent): Initialize `buf_break' to 0.
  133.     If it seems like we need to break the line, set `buf_break' to
  134.     `buf_ptr'.
  135.  
  136.     * indent.h: New variable `buf_break' for keeping track of the last
  137.     place we can break a line.
  138.  
  139. 1998-07-22  Joseph Arceneaux  <jla@emptiness.arceneaux.com>
  140.  
  141.     * io.c (dump_line): Remove any trailing spaces before outputting
  142.     code.
  143.  
  144. Fri Jun 27 12:29:11 1997  Joseph Arceneaux  <jla@emptiness.arceneaux.com>
  145.  
  146.     * indent.h: Removed broken declaration of lexi ().
  147.  
  148. Thu May 15 15:52:25 1997  Joseph Arceneaux  <jla@emptiness.arceneaux.com>
  149.  
  150.     * indent.c (indent): Handle new codes elements `operator' and
  151.     `overloaded'.
  152.  
  153.     * indent.h (rwcodes): New rwcodes element `operator'.
  154.     (codes): New elements `overloaded' and `operator'.
  155.  
  156.     * lexi.c (lexi): When a keyword is found, check for new rwcodes
  157.     element rw_operator and if found return `operator'.
  158.     In default case, return `overloaded' if last token was `operator'.
  159.     
  160. Fri Apr 11 12:25:08 1997  Joseph Arceneaux  <jla@emptiness.arceneaux.com>
  161.  
  162.     * indent.h (codes): New code `doublecolon'.
  163.     * lexi.c (lexi): Recognize "::" as new code doublecolon.
  164.     * indent.c (indent): Handle new code `doublecolon'.
  165.  
  166.     * backup.c (make_backup): Use new variable `size' to handle MSDOS
  167.     16 bit values for amount written to file.
  168.  
  169.     * io.c (dump_line): Cast (e_lab - s_lab) to an int for the "%.*s"
  170.     width specifier ('*' means use the first argumen to the string as
  171.     the width).
  172.     (read_file): Cast size arguments to `xrealloc' and `xmalloc' to
  173.     unsigned.
  174.     (read_file): Use unsigned int for `size' on MSDOS, so that we can
  175.     read slightly larger sizes.  Ugh!
  176.  
  177. Thu Dec 12 10:13:22 1996  Joseph Arceneaux  <jla@emptiness.arceneaux.com>
  178.  
  179.     * indent.c (main): Make certain that `in_name' is initialized
  180.     before reading file contents;  reading a zero-length file results
  181.     in a call to ERROR, which expects `in_name' to be set.
  182.  
  183. Thu Jan  4 11:39:39 1996  Joseph Arceneaux  <jla@emptiness.samsara.com>
  184.  
  185.     * parse.c (parse): Don't use variable `case_ind' any more;  do it
  186.     all on the `cstk' parser stack element.
  187.     (inc_pstack): Copy the case indentation value from the lower stack
  188.     frame to the new, top frame.
  189.     (parse): In main switch, case lbrace, if `swstmt' is on top of
  190.     stack and `case_indent' is non-zero, add it to
  191.     `parser_state_tos->i_l_follow'.
  192.     (parse): In main swtich, case `swstmt', just increment
  193.     `parser_state_tos->i_l_follow' by `ind_size', not `case_indent'.
  194.  
  195. Sat Dec 30 09:51:52 1995  Joseph Arceneaux  <jla@emptiness.samsara.com>
  196.  
  197.     * indent.texinfo (Invoking indent): Described format of
  198.     .indent.pro, including comments.
  199.  
  200.     * args.c (scan_profile): Added handling of comments, both C++ and
  201.     C, in the indent profile.  Also added check for end of buffers.
  202.  
  203. Fri Dec 29 13:42:30 1995  Joseph Arceneaux  <jla@emptiness.samsara.com>
  204.  
  205.     * regression/TEST: New test file right-margin-comment.c.
  206.  
  207.     * comments.c (print_comment): After the main switch statment, if
  208.     formatting and the line break is after any text, then skip any
  209.     white space.  For C++ comments, if that white space includes a
  210.     newline, then end the comment by jumping to new label
  211.     `cplus_exit'.
  212.     New label `comment_exit', for terminating C comment.  Not
  213.     currently used.
  214.  
  215. Thu Dec 28 16:48:50 1995  Joseph Arceneaux  <jla@emptiness.samsara.com>
  216.  
  217.     * makefile.in: Added new variable `NTFILES', set to "indent.mak".
  218.     Include ${NTFILES} in TARFILES.
  219.     * indent.mak: New file for building under NT.  Contributed by
  220.     beverly@datacube.com (Beverly Brown).
  221.  
  222.     * indent.h (fstate): Changed member `allcaps' from 1-bit int to
  223.     unsigned char.
  224.  
  225. Wed Dec 27 14:33:36 1995  Joseph Arceneaux  <jla@emptiness.samsara.com>
  226.  
  227.     * regression/TEST: New test files first-in-block.c and two-on-line.c.
  228.  
  229.     * comments.c (print_comment): For lower-level comments which begin
  230.     lines, don't set `start_column' dependent on if the comment began
  231.     in column 1 or not;  always set it to the indent level minus
  232.     whatever unindent was specified.  Do continue to set `format'
  233.     depending on that condition, however.
  234.     case EOL in main loop, if it's a c++ comment, just pop the stack
  235.     and return.  Let the main token handling loop deal with the
  236.     newline and calling `dump_line'.
  237.  
  238.     (print_comment): New variable `two_contigous_comments', for
  239.     handling cases of lines consisting of two or more comments, but no
  240.     code, on a single line.  All updates of
  241.     `parser_state_tos->com_col' now consider this variable.
  242.     Also, set `parser_state_tos->box_com' to `boxed_comment' whereever
  243.     `parser_state_tos->com_col' is set.
  244.  
  245.     (print_comment): Subsequent to the first handling of boxed
  246.     comments, removed all initialization of stuff conditional on
  247.     `boxed_comment', since that is 0.  Note that this is before the
  248.     main loop, where this could get set.
  249.  
  250. Mon Oct 30 13:02:07 1995  Joseph Arceneaux  <jla@emptiness.samsara.com>
  251.  
  252.     * regression/TEST: New test file "kr-proc-decls.c"
  253.  
  254.     * indent.c (indent): `is_procname' renamed to
  255.      `is_procname_definition' and set only if
  256.      `parser_state_tos->in_parameter_declaration' is also set (besides
  257.      just `parser_state_tos->procname[0]' not being null).
  258.  
  259.     * args.c: New variable `space_after_pointer_type'.
  260.     * indent.h: Declared here.
  261.  
  262.     * indent.h (codes): New element `start_token'.
  263.     * parse.c (reset_parser): Used to initialize
  264.     `parser_state_tos->last_token'.
  265.     * lexi.c (lexi): When examining an alphanumeric, in the hack for
  266.     guessing if the token is a typedef'd declaration keyword,
  267.     add an if sub-clause "parser_state_tos->last_token == start_token".
  268.  
  269.     * indent.c (indent): In case newline, try to detect the case of
  270.     breaking the line between a type and a procedure name, and if user
  271.     has specified that procnames don't start lines (e.g., K&R style),
  272.     don't break the line.
  273.     Also, if the type seems to have been a pointer type and the new
  274.     variable `space_after_pointer_type' is set, then request a space.
  275.  
  276. Sun Oct 29 10:43:09 1995  Joseph Arceneaux  <jla@emptiness.samsara.com>
  277.  
  278.     * parse.c (reset_parser): Initialize the first element of
  279.     `parser_state_tos->il', `parser_state_tos->cstk', and
  280.     `parser_state_tos->paren_indents'.
  281.  
  282. Sat Oct 28 09:00:29 1995  Joseph Arceneaux  <jla@emptiness.samsara.com>
  283.  
  284.     * indent.c (indent): When searching for brace, in the `default'
  285.     case, don't put the token into the save buffer.  Rather, back up
  286.     `buf_ptr' by setting it to token.  Since this is the place where
  287.     we much with the other input buffer, I'm hoping this action won't
  288.     conflict with anythin.
  289.  
  290.     * lexi.c (lexi): Don't set `token_end' at the end of this loop.
  291.     Set it instead in the switch statement where `buf_ptr' is
  292.     advanced.  Otherwise, it may wind up pointing into a different
  293.     buffer than `token', because a call to `fill_buffer ()' switched
  294.     the buffers.  Who is the complete loser who designed this program?
  295.  
  296.     * indent.c (indent): Under the `sw_buffer' label, don't add
  297.     useless extra space to the end of the `save_com' buffer.
  298.  
  299.     * lexi.c (lexi): In case case '#', if `leave_preproc_space' is
  300.     set, append any blanks following '#' to the token.
  301.     * indent.c (indent): In case preesc, just stick the whole token
  302.     onto the output stream.
  303.  
  304.     * regression/TEST: Added new test case, no-newline2.c
  305.  
  306.     * indent.c (indent): In main switch statement, case preesc while
  307.     loop looking for end of line now also checks `had_eof'.
  308.  
  309.     * indent.texinfo (Option Summary): Doc fix in summary for "-l".
  310.  
  311.     * comments.c (print_comment): Initialized `save_length'.  Reset
  312.     `save_length' to 0 when we reset `save_ptr' (changes nothing, but
  313.     makes gcc -Wall -O happy).
  314.  
  315.     * indent.h: Declare `inc_pstack ()'.
  316.  
  317.     * version.h: Changed version to 2.0.
  318.  
  319.     * makefile.in (indent.info): Don't depend on ${MAN}
  320.  
  321.     * indent.texinfo (Comments): Removed discussion of "-l" option
  322.     here.
  323.     (Changed indent version number to 2.0, manual number to 1.4)
  324.  
  325.     * args.c (set_defaults): Made INLINE.
  326.     (option_prefix): Ditto.
  327.     (eqin): Ditto.
  328.  
  329. Thu Oct 26 11:05:38 1995  Joseph Arceneaux  <jla@emptiness.samsara.com>
  330.  
  331.     * indent.c (output_line_length): New function to calculate the
  332.     apparent length of the current output line.
  333.     (indent): A the beginning and end of the main loop, check to see
  334.     if we have surpassed any line length restrictions (specified by
  335.     `max_col'), and if so, set `force_nl'.
  336.     (indent): In main switch statment cases `comma', and `newline',
  337.     remove ancient check for surpassed line length.
  338.  
  339.     * indent.c (indent): No longer sets `comment_max_col' to `max_col'
  340.     if the former is 0.  These now both default to non-zero values.
  341.  
  342.     * regression/TEST: Added "-lc 50" to a bunch of lines, to make the
  343.     comment margin be the same as the line margin, now that I've
  344.     changed the behaviour of this code in `indent'.
  345.  
  346.     * indent.h (DEFAULT_RIGHT_COMMENT_MARGIN): New #define to 78,
  347.     which is what `comment_max_col' wound up defaulted to before.
  348.     (DEFAULT_RIGHT_MARGIN): New #define to 78.  This will break
  349.     some of the earlier behaviour.
  350.  
  351.     * args.c (pro): Removed the "-nps" and "-ps" options.
  352.  
  353.     * indent.h (codes): Changed `period' to `struct_delim', handling
  354.     both '.' and "->".
  355.     * lexi.c (lexi): For case of "->", simply return code
  356.     `struct_delim'.  For case of '.', also return code
  357.     `struct_delim'.
  358.     * indent.c (indent): Replaced all instances of `period' with
  359.     `struct_delim'.
  360.  
  361.     * io.c (count_columns): New parameter `stop_char', which can stop
  362.     the count before a null char.
  363.     (dump_line, compute_code_target): Calls to `count_columns' changed
  364.     appropriately.
  365.     * comments.c (print_comment): Likewise.
  366.  
  367.     * sys.h (NULL_CHAR): New #define.
  368.  
  369. Mon Oct  2 17:25:35 1995  Joseph Arceneaux  <jla@emptiness.samsara.com>
  370.  
  371.     * globs.c (fatal): Don't return `system_error', just `indent_fatal'.
  372.  
  373.     * indent.h: Removed `system_error' exit value.  This is handled by
  374.     `indent_fatal'.
  375.  
  376. Tue Aug  9 20:46:53 1994  Joseph Arceneaux  <jla@albert.gnu.ai.mit.edu>
  377.  
  378.     * indent.c (PARSE): New macro for calling the parser.  Sets
  379.     `file_exit_value' to `indent_error' if an error happened.
  380.  
  381. Fri May  6 18:58:04 1994  Joseph Arceneaux  (jla@albert.gnu.ai.mit.edu)
  382.  
  383.     * vaxc-make.com: Changed PR_COMMENT.C to COMMENTS.C.
  384.  
  385. Tue Apr  5 21:40:22 1994  Joseph Arceneaux  (jla@albert.gnu.ai.mit.edu)
  386.  
  387.     * comments.c (print_comment): In `while' loop handling boxed
  388.     comments, make sure to check if we need to call `fill_buffer' at
  389.     every place `buf_ptr' gets advanced.
  390.  
  391. Sun Feb 27 01:21:44 1994  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  392.  
  393.     * globs.c (fatal): New function which replaces "sys_error".  All
  394.     affected files changed accordingly.
  395.  
  396.     * indent.h (WARNING): New define using `message'.
  397.     (ERROR): Likewise.
  398.     Many global things now declared extern here.
  399.  
  400.     * sys.h: Several system functions declared extern here.
  401.  
  402.     * globs.c (sys_error): #ifdef DEBUG, call `abort'.
  403.     (message): New function to replace `diag'.
  404.  
  405. Sat Feb 26 22:41:27 1994  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  406.  
  407.     * io.c: Variable `found_err' removed.
  408.     indent.h: Ditto.
  409.  
  410.     * indent.c (indent): Added a default case to the big switch
  411.     statement.
  412.  
  413. Mon Feb 21 16:55:43 1994  Joseph Arceneaux  (jla@geech.gnu.ai.mit.edu)
  414.  
  415.     * backup.c (make_backup): If error, exit with `system_error'.
  416.  
  417.     * io.c (parsefont): Exit with `invocation_error'.
  418.  
  419.     * backup.c:
  420.     * globs.c: #include "indent.h"
  421.     * makefile.in: Note these new dependencies.
  422.  
  423.     * args.c (set_option): In case PRO_PRSTRING, exit with
  424.     `invocation_error' rather than 0.
  425.     Changed all calls to `exit' to use type 'enum exit_value`.
  426.  
  427.     * indent.c (indent): Return value now of type `enum exit_value'.
  428.     New variable `file_exit_value' used to return this value.
  429.     Calls to `exit' changed to `return' statements.
  430.     (main): New variable `exit_status' used to return final exit
  431.     value.
  432.     New variable `status' in for loop for checking return value of
  433.     `indent'.    
  434.     All calls to `exit' changed to use new enum values.
  435.  
  436. Sun Feb 20 18:16:56 1994  Joseph Arceneaux  (jla@albert.gnu.ai.mit.edu)
  437.  
  438.     * globs.c (xmalloc): Changed value of `exit' to 2.
  439.     (sys_error): Moved here from io.c.
  440.  
  441.     * backup.c (make_backup): Changed value of `exit' to 2.
  442.  
  443.     * indent.h: New type `enum exit_value'.
  444.  
  445.     * comments.c (print_comment): When processing a boxed comment and
  446.     we have reached the end, increment `buf_ptr' before checking
  447.     limits and calling `fill_buffer'.
  448.  
  449. Sat Feb 19 18:29:20 1994  Joseph Arceneaux  (jla@albert.gnu.ai.mit.edu)
  450.  
  451.     * lexi.c (lexi): Understand complex suffixes (GNU C extensions)
  452.     'i' and 'j'.
  453.  
  454. Thu Feb 10 15:51:35 1994  Joseph Arceneaux  (jla@albert.gnu.ai.mit.edu)
  455.  
  456.     * comments.c (print_comment): Call `CHECK_COM_SIZE' when
  457.     processing boxed comments.
  458.  
  459. Wed Feb  9 09:39:14 1994  Joseph Arceneaux  (jla@albert.gnu.ai.mit.edu)
  460.  
  461.     * backup.c (make_backup): Removed unused variables `p' and
  462.     `new_version'.
  463.  
  464. Fri Feb  4 01:34:59 1994  Joseph Arceneaux  (jla@geech.gnu.ai.mit.edu)
  465.  
  466.     * gnuc-make.com: Changed `pr_comments.c' to comments.c.
  467.  
  468.     * comments.c: Initialize `parser_state_tos->box_com' to 1 in boxed
  469.     comment section.
  470.  
  471. Tue Feb  1 01:03:50 1994  Joseph Arceneaux  (jla@geech.gnu.ai.mit.edu)
  472.  
  473.     * args.c (set_option): Handle new enum `PRO_FUNCTION' by calling
  474.     p->p_obj as a function.
  475.  
  476.     * indent.texinfo: Updated version info, copyright.  Whoops!
  477.     Ignore all references to "-nbbb" and "-bbb".
  478.  
  479. Sat Jan 29 18:15:42 1994  Joseph Arceneaux  (jla@geech.gnu.ai.mit.edu)
  480.  
  481.     * Version 1.9 released.
  482.  
  483.     * indent.texinfo (Option Summary): Describe new option "-lc".
  484.  
  485.     * args.c, indent.c:  `block_comment_max_col' renamed to
  486.     comment_max_col.
  487.     * comments.c: `right_margin' set to `block_comment_max_col'.
  488.     Documentation of `print_comment' changed.
  489.  
  490.     * makefile.in (NOTES): Changed to include COPYING.
  491.     * COPYING: Upgraded to version 2 of the GNU license.
  492.  
  493.     * NEWS, README, VMS.README: Updated for version 1.9.
  494.  
  495. Wed Jan 19 17:54:32 1994  Joe Arceneaux  (jla at sparky)
  496.  
  497.     * comments.c (print_comment): Handling of standard box comments
  498.     rewritten;  now it all happens in its own little loop as soon as
  499.     the thing is detected.
  500.  
  501. Thu Jan 13 10:37:31 1994  Joe Arceneaux  (jla at sparky)
  502.  
  503.     * comments.c (print_comment): Change of Fri Jun  4 18:10:54 1993
  504.     reinstalled.  How this ever got uninstalled is a mystery to me,
  505.     and makes me wonder about keeping the main source directory on a
  506.     GNU machine.
  507.  
  508. Wed Jan 12 15:08:48 1994  Joe Arceneaux  (jla at sparky)
  509.  
  510.     * comments.c (print_comment): Handle better the cases of formatted
  511.     comments with no contents.
  512.     Make main loops conditional on (! had_eof).  Pop stack and reset
  513.     parser_state_tos->com_col after main loop before returning.
  514.  
  515. Sun Jan  9 23:35:28 1994  Joe Arceneaux  (jla at sparky)
  516.  
  517.     * io.c (fill_buffer): Rewrite main loop.
  518.  
  519. Fri Jan  7 15:10:23 1994  Joe Arceneaux  (jla at sparky)
  520.  
  521.     * io.c (read_file): Complain if file is zero-length.
  522.  
  523. Thu Jan  6 17:10:44 1994  Joe Arceneaux  (jla at sparky)
  524.  
  525.     * indent.c (indent): Removed several calls to `fill_buffer' which
  526.     were superfluous because we know the char just read was not EOL or
  527.     NULL.
  528.  
  529.     * io.c (sys_error): Cleanup realloc buisiness and moved former
  530.     static `errbuf' into this function.  It never returns, so no worry
  531.     about reallocing.
  532.  
  533.     * io.c: Cleaned up several #if 0.
  534.  
  535. Tue Jan  4 20:06:17 1994  Joe Arceneaux  (jla at sparky)
  536.  
  537.     * comments.c (print_comment): In the conditional `if
  538.     (blankline_delims)' removed while clause `(p < buf_end)'.
  539.  
  540. Wed Dec 29 17:21:29 1993  Joe Arceneaux  (jla at sparky)
  541.  
  542.     * makefile.in:  Renamed file `pr_comment.c' to `comments.c'.
  543.  
  544.     * io.c (read_file): Call `xrealloc' on fileptr.data and
  545.     fileptr.name if there is already stuff there.
  546.  
  547. Wed Dec 22 14:11:24 1993  Joe Arceneaux  (jla at sparky)
  548.  
  549.     * indent.c (indent): In case newline, once again modified
  550.     conditional for calling `dump_line':  Added sub-clause of not
  551.     being `parser_state_tos->in_decl'.
  552.  
  553. Mon Jun 28 20:41:52 1993  Joseph Arceneaux  (jla@wookumz.gnu.ai.mit.edu)
  554.  
  555.     * sys.h: For MSDOS, only define USG if not using GCC.  This breaks
  556.     `memcpy' and stuff from ctypes.h, apparently.
  557.  
  558.     * makefile.in (distclean): Remove config.status.
  559.     * (.c.o): Put ${DEFS} first, and ${CFLAGS} last.
  560.     * RELEASE-NOTES renamed to NEWS globally.
  561.  
  562. Mon Jun 21 17:43:26 1993  Joseph Arceneaux  (jla@wookumz.gnu.ai.mit.edu)
  563.  
  564.     * indent.c (indent): Check that `code_lines' and `com_lines' are
  565.     both greater than zero before printing out their ratio.
  566.  
  567. Fri Jun 18 17:46:09 1993  Joseph Arceneaux  (jla@wookumz.gnu.ai.mit.edu)
  568.  
  569.     * version.h: `VERSION_STRING' inc'd to version 1.9.
  570.  
  571.     * backup.c: Removed all instances of old define `SYS_BACKUP_SUFFIX'.
  572.  
  573.     * io.c (vms_read): Fixed while loop to be more correct, and return
  574.     bufp - buffer rather than nread, which may be incorrect value.
  575.  
  576. Thu Jun 17 21:08:14 1993  Joseph Arceneaux  (jla@wookumz.gnu.ai.mit.edu)
  577.  
  578.     * makefile.in: Changed `CFLAGS' to just "-O".
  579.  
  580. Wed Jun 16 15:32:36 1993  Joseph Arceneaux  (jla@wookumz.gnu.ai.mit.edu)
  581.  
  582.     * Version 1.8 released.
  583.  
  584.     * makefile.in: New variable VMSFILES describing the files needed
  585.     for indent under VMS.
  586.         Removed comments.texinfo from list of files to tar.
  587.     Use `gzip' utility for compression, rather than tar -z.
  588.     * configure-6-93:
  589.     * configure.in-693: Copies of the configure script and its input
  590.     file from the autoconf directory.  The reliability of the ones in
  591.     the autoconf directory is questionable.  `configure' and
  592.     `configure.in' are now links to these files.
  593.  
  594.     * version.h: Comments rewritten.
  595.  
  596. Tue Jun 15 10:14:47 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  597.  
  598.     * Thanks to MEHRDAD@glum.dev.cf.ac.uk for the VMS patches.
  599.     * io.c (read_file): Use SYS_READ, conditional expansion, instead
  600.     of read.
  601.     (vms_read): Substitute for `read' under VMS.
  602.  
  603.     * backup.c: Set `simple_backup_suffix' from new define
  604.     BACKUP_SUFFIX_STR.  Define this (to "~") if undefined.
  605.     Likewise, BACKUP_SUFFIX_CHAR and BACKUP_SUFFIX_FORMAT.
  606.     * sys.h: Conditional defines for VMS added.
  607.     * args.c (set_profile): Use new define PROFILE_FORMAT for
  608.     formatting homedir/profile path.
  609.  
  610. Mon Jun 14 11:37:14 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  611.  
  612.     * indent.texinfo (Comments): Section completely rewritten.  Old
  613.      text in file old-comments.texinfo.
  614.  
  615.     * indent.texinfo (Statements): Explained how -bl and -br affect
  616.     struct declarations.
  617.  
  618.     * indent.c (indent): In case newline, modified conditional
  619.     determining whether or not to call `dump_line' to avoid doing so
  620.     after a right brace if user has specified `btype_2'.  This makes
  621.     enums and structs more consistent -- in default mode, the name of
  622.     the struct goes on a separate line from the rbrace and on the same
  623.     line in K&R mode, and does so consistently whether in or outside a
  624.     procedure block.
  625.  
  626.     * sys.h: Added some defines for compilation under MS-DOS, under
  627.     #ifdef __MSDOS__.  Thanks to hnyman@lesti.hut.fi.
  628.  
  629.     * io.c (read_file):  Adjust `fileptr.size' to be what `read'
  630.     returned, if different from the results of `stat'.  This is
  631.     because the DOS `read' converts the CR-LF on disc to '\n' in
  632.     memory.
  633.  
  634. Fri Jun 11 12:39:38 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  635.  
  636.     * lexi.c (lexi): Accept LL and ULL as suffixes to numbers as well.
  637.     Suggested by rdh@key.amdahl.com.
  638.  
  639.     * indent.c (indent): In case `rbrace', when conditionally setting
  640.     `force_nl', extended the first clause of the if conditional to
  641.     make `rw_decl' equivalent to `rw_struct_like', and also depend on
  642.     `btype_2'.  This keeps the structure name on the same line when
  643.     running with -kr option.
  644.     * parse.c (parse): In case `lbrace', in conditional for adding
  645.     `brace_indent', also consider `btype_2'.
  646.  
  647. Thu Jun 10 17:21:54 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  648.  
  649.     * io.c (count_columns): Rewritten and renamed from `count_spaces'.
  650.  
  651. Wed Jun  9 12:45:07 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  652.  
  653.     * indent.texinfo (Disabling Formatting): New section describing
  654.     the new feature implemented below in io.c.
  655.  
  656.     * io.c (compute_code_target): Rewritten to be clearer.  Note that
  657.     the use of `max_col' is inconsistent with it's use elsewhere,
  658.     where it is primarily for use with comment formatting.
  659.     * (fill_buffer): Rewritten completely.  Now handles command
  660.     comments /* *INDENT-OFF* */ and /* *INDENT-ON* */.
  661.     `inhibit_formatting' is now a local variable;  the reference to it
  662.     in `dump_line' has been removed.  Control of formatting is handled
  663.     entirely within `fill_buffer'.
  664.  
  665. Tue Jun  8 19:03:22 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  666.  
  667.     * indent.c (indent): In case `lbrace', when resetting
  668.     ..->decl_on_line, also reset ->in_decl.  Not doing this had the
  669.     effect that the first statement after the opening '{' of a
  670.     procedure would not be properly continued if it was broken across
  671.     two lines.  There is probably a better place to do this.
  672.  
  673.     * io.c (dump_line): In the loop which outputs `s_code', removed
  674.     the stupid tab calculations, as well as the undocumented feature
  675.     for printing out the character '0200'.
  676.  
  677.     * parse.c (parse): In case `lbrace', if last reserved word was
  678.     `rw_struct_like', don't indent for struct if the last token was an
  679.     `rparen'.  This fixes a bug with a struct pointer parameter.
  680.  
  681.     * regression/TEST: Added new test struct_param.c.
  682.  
  683. Mon Jun  7 17:01:23 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  684.  
  685.     * indent.c (indent): When handling an embedded comment, if there
  686.     is code on the line, set `embedded_comment_on_line' to 2,
  687.     otherwise to 1, to communicate to dump_line () if the line starts
  688.     with code or comment text.
  689.     * io.c (dump_line): In section for code (s_code != e_code), if
  690.     `embedded_comment_on_line' is 1, then use comment indentation,
  691.     otherwise, use code indentation.
  692.  
  693. Fri Jun  4 18:10:54 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  694.  
  695.     * pr_comment.c (print_comment): When looking at a leading '*' to
  696.     decide if it begins the second line of a starred boxed comment (by
  697.     looking at what column it was in), compare that column to
  698.     `found_column' rather than `start_column'.
  699.  
  700.     * indent.c (indent): In case preesc, when handling stuff following
  701.     the '#', set `quote' when we encounter the quoting character the
  702.     first time.  Also merged cases '\'' and '"'.
  703.  
  704.     * regression directory:  Merged all the new comment code tests
  705.     into the standard regression tests.
  706.  
  707. Wed May 19 12:11:10 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  708.  
  709.     * pr_comment.c (print_comment): At `end_line:', don't compress
  710.     into newlines if it's the first line (because it has the starting
  711.     delimiter).
  712.  
  713.     * pr_comment.c (print_comment): Moved checks for `buf_ptr' past
  714.     end outside of while loops (only '\n' and '\0' end the buffer, and
  715.     changed "buf_ptr >= buf_end" to "buf_ptr == buf_end".
  716.  
  717.     * parse.c: `parser_state_tos' elements `comment_delta' and
  718.     `n_comment_delta' eliminated.
  719.     * indent.h: Ditto.
  720.     * pr_comment.c: Ditto.
  721.  
  722.     * io.c: Old comment code removed.
  723.  
  724.     * pr_comment.c (print_comment): New variable `visible_preamble'
  725.     set if the preamble is not whitespace.  Used to make sure lines
  726.     which only have whitespace on them become single newlines.
  727.     Don't use `postfix_blankline_requested' to add newlines.  This
  728.     screwed up the algorithm for dealing with paragraph breaks.
  729.     In the `end_line:' section, only advance `buf_ptr' if it wasn't a
  730.     paragraph break, because in that case we have scanned ahead a
  731.     character to detect "\n\n".
  732.  
  733. Tue May 11 17:26:18 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  734.  
  735.     * pr_comment.c (print_comment): For comment formatting, changed
  736.     comparison of `column' to `right_margin' from >= to >.
  737.  
  738. Tue Apr  6 17:51:41 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  739.  
  740.     * pr_comment.c (print_comment): Also consider the characters '='
  741.     and '_' to make up the top line of a boxed comment.
  742.     * comments.texinfo: Changed to reflect this.
  743.  
  744. Wed Feb 24 15:22:51 1993  Joseph Arceneaux  (jla@wookumz.gnu.ai.mit.edu)
  745.  
  746.     * makefile.in: Added "-O" to CFLAGS.
  747.  
  748. Thu Feb 11 15:54:10 1993  Joseph Arceneaux  (jla@wookumz.gnu.ai.mit.edu)
  749.  
  750.     * Version 1.7 released.
  751.  
  752.     * makefile.in: Renamed from zmakefile.in.
  753.     All "-f zmakefile" arguments to `MAKE' removed.  Dependencies on
  754.     "zmakefile.in" changed to "makefile.in".
  755.  
  756.     * Makefile: Changed references to "zmakefile" to "makefile".
  757.  
  758. Wed Feb 10 12:25:04 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  759.  
  760.     * indent.c (indent): In case preesc, when going through the line,
  761.     consider EOL as terminating a C++ comment.
  762.  
  763. Mon Feb  8 04:45:06 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  764.  
  765.     * memcpy.c: Function `memcpy' surrounded by #ifdef USG.  USG is
  766.     only defined if `configure' did not find `bcopy'.  memcpy.o should
  767.     only be loaded if `configure' did not find it.
  768.     * sys.h: If USG not defined, define memcpy to be bcopy.
  769.  
  770.     * makefile.in: Renamed from zmakefile.in.
  771.     * configure: Use "makefile" rather than zmakefile.  Explicitly
  772.     name `indent' in rule for same.
  773.  
  774.     * indent.texinfo: Updated copyright and version information.
  775.     Added new section Bugs.  Added "nlps" option.
  776.  
  777.     * io.c (pad_output): Rewritten.  If `tabsize' is less than one,
  778.     use spaces rather than tabs.
  779.  
  780.     * sys.h: #define TAB and EOL.
  781.     Changed type of element `size' in struct file_buffer to unsigned
  782.     long.
  783.  
  784.     * indent.h, io.c: Type of `in_prog_size' changed to unsigned long.
  785.  
  786.     * indent.c, parse.c, pr_comment.c, lexi.c, io.c: Use new macros
  787.     TAB and EOL instead of '\t' and '\n'.
  788.  
  789.     * args.c, indent.c, backup.c, io.c, parse.c: Cast integer
  790.     arguments to printf.
  791.  
  792.     * indent.c:
  793.     * lexi.c:
  794.     * parse.c: Added missing parameters to calls to `diag'.
  795.  
  796.     * args.c: Added new long option "remove-preprocessor-space".
  797.  
  798. Fri Feb  5 17:40:08 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  799.  
  800.     * indent.c (indent): In case semicolon, case lbrace, and case
  801.     rbrace, disabled code which checked paren levels (with
  802.     parser_state_tos->p_l_follow) to enable passing weird stuff to
  803.     macros.  See comments ending "-jla".
  804.     (indent): In case lparen, if in a declaration, don't indent out to
  805.     `dec_ind' if the paren was '['.
  806.     * Removed several global variables which were shadowed by locals
  807.     to function `indent'.
  808.  
  809.     * args.c: Turned off, by default, "lps" option.  Added "nlps"
  810.     option.
  811.  
  812.     * io.c (current_column): New function.
  813.  
  814.     * lexi.c: In case ':', set parser_state_tos->want_blank under
  815.     certain conditions.
  816.  
  817. Tue Feb  2 14:03:39 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  818.  
  819.     * indent.c (indent): Handle C++ comments, with special attention
  820.     to the code for case preesc.
  821.  
  822. Thu Jan 28 17:31:57 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  823.  
  824.     * parse.c (reset_parser): Initialize parser_state_tos->com_col to
  825.     0.
  826.  
  827. Wed Jan 27 13:45:16 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  828.  
  829.     * indent.c (indent): Handle new code type `cplus_comment'.
  830.  
  831.     * lexi.c (lexi): Handle C++ comments ("//").
  832.  
  833.     * indent.h: Macros CHECK_CODE_SIZE and CHECK_LAB_SIZE moved to
  834.     indent.c.  Macro CHECK_COM_SIZE moved to pr_comment.c.
  835.     New code, `cplus_comment'.
  836.  
  837.     * pr_comment.c (pr_comment): Removed variable `just_saw_decl' and
  838.     it's use.
  839.  
  840. Sat Jan 23 19:36:31 1993  Joseph Arceneaux  (jla@betty-blue.gnu-age.com)
  841.  
  842.     * indent.c (indent): Only reset `com_ind' if it's less than or
  843.     equal to 0.  Don't call parse (semicolon) initially.  Skip any
  844.     leading newlines, resetting col to 1. Don't set
  845.     `parser_state_tos->ind_level' and `parser_state_tos->i_l_follow'
  846.     if col > ind_size.
  847.  
  848.     * parse.c (reset_parser): If tabsize is 0, set it to 1.
  849.  
  850. Fri Oct  9 21:01:49 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  851.  
  852.     * indent.c (indent): Restuctured the conditional for setting
  853.     `force_nl' in case rbrace to be clearer.  Also, only check whether
  854.     to set `postfix_blankline_requested' we're not setting `force_nl'.
  855.  
  856. Wed Oct  7 16:15:25 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  857.  
  858.     * io.c (diag): Only one format of error message now.  Output it on
  859.     the standard error in any case.
  860.  
  861.     * indent.c (indent): In case decl, don't call "parse (decl)" if we
  862.     are in a "sizeof".
  863.  
  864.     * args.c: Make default value for `format_col1_comments' be false,
  865.     to correspond with the "-gnu" spec.
  866.  
  867. Fri Aug 28 19:15:50 1992  Joseph Arceneaux  (jla@wookumz.gnu.ai.mit.edu)
  868.  
  869.     * args.c (set_option): Added missing argument to call to
  870.     `set_option'.
  871.  
  872. Mon Aug 24 12:47:32 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  873.  
  874.     * sys.h (INLINE): Define this to "__inline__" if __GNUC__ is
  875.     defined, not "inline".  Good thing we have standards...
  876.  
  877.     * indent.c (indent): New variable `embedded_comment_on_line' set
  878.     if an embedded comment is found.
  879.     * io.c (dump_line): Increment `com_lines' in the case where the
  880.     comment buffer is empty, but `embedded_comment_on_line' is true.
  881.     Clear that variable in both cases.  This makes indent include
  882.     embedded comments in its count of total comment lines.
  883.  
  884.     * io.c (read_stdin): If the input buffer is realloc'd, update the
  885.     character pointer `p'.
  886.  
  887. Wed Aug 19 18:25:48 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  888.  
  889.     * Version 1.6 released.
  890.  
  891.     * indent.c (indent): In case comma, use `tabsize' rather than 8 to
  892.     determine if we're past max_col.
  893.     In case newline, also dump the line if we are past max_col.
  894.  
  895. Fri Aug 14 19:08:04 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  896.  
  897.     * io.c (dump_line): Test `swallow_optional_blanklines' separately
  898.     from (prefix_blankline_requested && not_first_line).  Makes "-sob"
  899.     work properly.
  900.  
  901.     * indent.c (indent): Intialize several local variables to 0.
  902.  
  903. Tue Aug 11 18:02:38 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  904.  
  905.     * indent.c (indent): In case rbrace, add clause to conditional for
  906.     setting `force_nl'.  The clause forces a newline after '}' in most
  907.     cases.
  908.     In case swstmt, set `parser_state_tos->in_decl' to false, since we
  909.     know we're not in a declaration if have just seen "switch" (of
  910.     course, who knows what indent might think about things).  This
  911.     corrects the indentation of a case label following the lbrace of
  912.     the switch.
  913.  
  914. Mon Aug 10 16:23:54 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  915.  
  916.     * indent.gperf: "return" generates `rw_return', not `rw_break'.
  917.     How did this happen?  I didn't make this change, and it was not
  918.     present in indent 1.4.  Doubtless this insidious program modifies
  919.     itself destructively...
  920.     * lexi.c (hash, is_reserved): regenerated from indent.gperf.
  921.  
  922.     * args.c: Make the -gnu setting specify "-bli2" rather than
  923.     "-bli4".
  924.  
  925.     * lexi.c (lexi): Accept 'F' suffixes on numeric constants.
  926.  
  927.     * sys.h Require "__GNUC__" to define INLINE, not "__STDC__".
  928.  
  929. Mon Aug  4 21:22:54 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  930.  
  931.     * Version 1.5 released.
  932.  
  933. Mon Aug  3 21:14:40 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  934.  
  935.     * indent.c (indent): In case rparen, removed the change of Jul 28.
  936.     This is now done if the case mask fails and
  937.     parser_state_tos->in_decl is true and ..->block_init is false.
  938.     The old change broke the "-ncs" feature.  Perhaps this could have
  939.     been done otherwise by using ..->last_u_d.
  940.     Also, decrement `parser_state_tos->paren_depth' immediatly.
  941.  
  942.     * All source files formatted with ./indent.
  943.  
  944.     * pr_comment.c (pr_comment): If `parser_state_tos->box_com' is set
  945.     (which means that the comment is presumed to be hand-formatted),
  946.     set `parser_state_tos->n_comment_delta' to
  947.     (1 - parser_state_tos->com_col), rather than using `count_spaces'
  948.     to calculate the space up to the comment column.  Not only is this
  949.     simpler, but the old code used `cur_line' to count those spaces,
  950.     which was pointing to the *NEXT* line in some cases (because some
  951.     code in indent () which ignored newlines (like in the case of
  952.     multi-line comments after #define statments) called fill_buffer ()).
  953.     Another example of just how brain damaged this code is.  For more
  954.     extreme self-abuse, look a the interaction between pr_comment ()
  955.     and dump_line ().
  956.  
  957. Sun Aug  2 02:10:32 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  958.  
  959.     * pr_comment.c (pr_comment): When computing
  960.     `parser_state_tos->com_col' for beyond the normal comment
  961.     position, use (tabsize - 1) instead of 7.
  962.  
  963. Wed Jul 29 22:50:45 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  964.  
  965.     * lexi.c (lexi): If `buf_ptr' == '(' after scanning an alphanum
  966.     which is not a keyword, add clause that paren_depth must be 0
  967.     before considering this as a possible function definition.
  968.  
  969. Tue Jul 28 17:17:08 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  970.  
  971.     * parse.c (parse): In case lbrace, handle state of being in a decl
  972.     specially: If this brace succedes a struct-like thing and it goes
  973.     on a line by itself (! btype_2), then add `brace_indent' to the
  974.     amount of indentation.  This make GNU-style indentation of
  975.     structures, etc. work properly.
  976.  
  977.     * indent.c (indent): In case rparen, if not the beginning of the
  978.     code, and in_decl, set `parser_state_tos->want_blank'.  This is to
  979.     handle ensure a space before the last rparen of cases like
  980.     "int (*fp ()) ()".
  981.  
  982. Fri Jul 24 18:53:15 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  983.  
  984.     * indent.c: Changes to handle spaces between options and their
  985.     values.  It would be better to use `getopt', but this change is
  986.     much simpler.
  987.     Declaration of `set_option' changed to return int.
  988.     (main): Increment `i' by the value of `set_option ()'; also, pass
  989.     argv[i + 1] as second parameter to `set_option'.
  990.     * args.c (set_option): Take new parameter `param'.
  991.     New label `arg_missing', just before label `found', to handle
  992.     missing option value error.
  993.     If `param_start' is 0, set it to `param'.
  994.     (scan_profile): Rewritten to look at two entries at once, and pass
  995.     both to `set_option'.
  996.  
  997. Wed Jul 22 15:55:56 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  998.  
  999.     * indent.c (indent): In case lbrace, set
  1000.     `parser_state_tos->want_blank' under certain conditions if not at
  1001.     beginning of line and `btype_2' was specified.
  1002.  
  1003.     * indent.c: Macro `need_chars' moved here from indent.h.
  1004.  
  1005.     * io.c (read_file, read_stdin): No longer appends " \n" to the end
  1006.     of the file, which is now simply delimited with '\0'.  xmalloc 2
  1007.     less bytes for the buffer.
  1008.     (fill_buffer): Stop and set `had_eof' when '\0' is
  1009.     encountered in the file text, then return immediately.
  1010.     * lexi.c (lexi): New case in main switch statement for '\0', which
  1011.     indicates eof.  Removed code to set this in case '\n'.
  1012.  
  1013. Fri Jul 10 14:45:25 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1014.  
  1015.     * lexi.c (): If keyword "struct" was found inside of parens
  1016.     (case rw_struct_like:) set parser_state_tos->cast_mask before
  1017.     breaking.
  1018.  
  1019. Wed Jul  8 21:11:01 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1020.  
  1021.     * lexi.c (lexi): Accept 'U' and "UL" suffixes on integer
  1022.     constants.
  1023.  
  1024. Fri Jul  3 16:05:45 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1025.  
  1026.     * indent.c (indent): For cases unare_op and comma, don't space out
  1027.     to decl_indent (dec_indent) if we are inside parens
  1028.     (parser_state_tos->paren_depth > 0).
  1029.  
  1030. Thu Jul  2 13:36:50 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1031.  
  1032.     * indent.c (indent): In case rparen, if paren starts the line,
  1033.     check that paren_level is greater than zero before using it to
  1034.     index `paren_indents'.
  1035.  
  1036.     * args.c: New variable `leave_preproc_space'.  Set by new option
  1037.     "-lps".
  1038.     * indent.h: Declare `leave_preproc_space'.
  1039.     * indent.c (indent): In case preesc, don't ignore blanks after '#'
  1040.     if `leave_preproc_space' is set.
  1041.     * indent.texinfo: Entries added for new option "-lps".
  1042.  
  1043.     * indent.c: At the end of case preesc, call dump_line() if this
  1044.     appears to be a case where it won't get called when processing the
  1045.     newline character.
  1046.  
  1047. Wed Jul  1 16:12:57 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1048.  
  1049.     * lexi.c (hash, is_reserved): Regenerated (from gperf) with new
  1050.     words "volatile" and "const".
  1051.  
  1052.     * args.c: Removed the trailing comma from the last element of enum
  1053.     profile.  This breaks some compilers.
  1054.  
  1055.     * Makefile: Changed to drive the configuration process.
  1056.     * zmakefile.in: Renamed from Makefile.in
  1057.     * CONF-README: Renamed from INSTALL
  1058.  
  1059. Tue Jun 30 21:34:16 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1060.  
  1061.     * globs.c (mymemcpy): Function deleted.
  1062.     * sys.h: Declarations and defines for mymemcpy, etc, removed.
  1063.     * indent_globs.h: All references to memcpy removed.
  1064.     * backup.c: `mymemcpy' changed to `memcpy'.
  1065.     * indent.c: Ditto.
  1066.     * io.c: Ditto.
  1067.  
  1068.     * Makefile.in:
  1069.     * INSTALL:
  1070.     * configure:
  1071.     * configure.in:
  1072.     * memcpy.c:     New files.
  1073.  
  1074. Sun Jun 14 13:38:12 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1075.  
  1076.     * Version 1.4 released.
  1077.  
  1078. Fri Jun 12 15:02:37 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1079.  
  1080.     * globs.c (mymemcpy): Now a void function.  Don't return anything.
  1081.  
  1082.     * io.c (dump_line): When printing label, use `tabsize' to
  1083.     increment target if `com_st' contains tabs.  Also use
  1084.     `tabsize' to calculate target when it's less than zero.
  1085.  
  1086. Thu Jun 11 20:27:48 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1087.  
  1088.     * indent.c (indent): When token_type is a binary_op, if
  1089.     parser_state_tos->want_blank is not true, but the preceding
  1090.     character is not a space, put one on the line.
  1091.  
  1092.     * Removed variable `sccsid' from all files.
  1093.  
  1094. Wed Jun 10 13:00:26 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1095.  
  1096.     * args.c: Added long option name "dont-space-special-semicolon"
  1097.     for -nss.
  1098.  
  1099. Tue Jun  9 13:01:21 1992  Joseph Arceneaux  (jla@geech.gnu.ai.mit.edu)
  1100.  
  1101.     * Makefile: Automatically make the files README and RELEASE-NOTES.
  1102.  
  1103.     * sys.h: Provide defines for using memcpy or bcopy.
  1104.  
  1105.     * globs.c: `mymemcpy ()' only defined #ifndef mymemcpy.
  1106.  
  1107.     * indent.c (main): Set `in_name' to the current input file name.
  1108.  
  1109.     * io.c (dumpline): Check parser_state_tos->paren_level before
  1110.     using it to index parser_state_tos->paren_indents.
  1111.  
  1112. Mon Jun  8 17:55:07 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1113.  
  1114.     * lexi.c (lexi): In conditional (paren_count == 0), add '=' to the
  1115.     characters (along with ';', ',', and '(') which constitute a
  1116.     function definition.  This was to cause an ugly declaration from
  1117.     libc ("int (*foo) __P ((int bar)) = bax;") to remain on one line.
  1118.     Note that this is not valid C.
  1119.  
  1120.     * indent.c (main): When indenting multiple output files, make sure
  1121.     to close each output file before continuing.
  1122.  
  1123. Fri Jun  5 13:56:54 1992  Joseph Arceneaux  (jla@churchy.gnu.ai.mit.edu)
  1124.  
  1125.     * io.c (read_file): Use mymemcpy() instead of bcopy();
  1126.  
  1127.     * backup.c (max_version):  Don't free dirname unless it was malloc'd.
  1128.  
  1129. Wed May  6 02:01:18 1992  Joseph Arceneaux  (jla@geech.gnu.ai.mit.edu)
  1130.  
  1131.     * Version 1.3 released.
  1132.  
  1133.     * indent.texinfo:  Reorganization of the "Invocation" part, and a
  1134.     new menu entry "Backup files", as well as corrections throughout.
  1135.     A new option "nip" added.
  1136.  
  1137.     * indent.c (main): New variable `using_stdin', used to indicate
  1138.     when `-' was specified on the command line.
  1139.  
  1140. Tue May  5 21:28:06 1992  Joseph Arceneaux  (jla@geech.gnu.ai.mit.edu)
  1141.  
  1142.     * args.c: Set default for `decl_com_ind' to 33.  If
  1143.     BERKELEY_DEFAULTS is defined, default `continuation_indent' to 4.
  1144.  
  1145. Sun May  3 00:43:10 1992  Joseph Arceneaux  (jla at hugo)
  1146.  
  1147.     * parse.c (reduce):  when reducing <stmt><dolit>,
  1148.     do set i_l_follow to il[parser_state_tos].  This was removed
  1149.     earlier after a new reduction was added, but this obviously fixes
  1150.     some bugs.  It will stay if indent passes all the old tests.
  1151.  
  1152.     * args.c (set_option):  When calling `addkey' to add a user
  1153.     identifier, make it type 'rw_decl' since these are supposed to be
  1154.     typedef identifiers.
  1155.     Removed "-d4" spec in "-orig" option settings.
  1156.     Made default for "-fca" be false.
  1157.  
  1158.     * args.c (set_profile): Only read one profile.  The one in the
  1159.     current directory has priority.  Return the path of the profile read.
  1160.     * indent.c (main): If `verbose' and we've read a profile, tell the
  1161.     user on the stderr.
  1162.  
  1163. Sat May  2 18:33:14 1992  Joseph Arceneaux  (jla at hugo)
  1164.  
  1165.     * args.c: `Bill_Shannon' replaced with `blank_after_sizeof'.
  1166.     indent.c: Likewise.
  1167.     indent.h: Likewise.
  1168.  
  1169.     * args.c: New variable, exp_nip, for new option "-nip", which is
  1170.     equivalent to "-ip0".  Long option name is
  1171.     "no-parameter-indentation".
  1172.  
  1173.     * config.sh: New shell script which generates "dirent_def.h", and
  1174.     include file with directory reading definitions.
  1175.     * Makefile:  Take "config.sh" and "dirent_def.h" into account.
  1176.  
  1177.     * backup.c: Make only simple backups if we can't read directories
  1178.     (NODIR is defined).  Functions for numbered backups conditionally
  1179.     defined.
  1180.     Documented all functions.
  1181.  
  1182.     * indent_globs.h:  Broken into two new files, indent.h and sys.h.
  1183.     All files changed accordingly, including the Makefile.
  1184.  
  1185. Thu Apr 30 14:53:33 1992  Joseph Arceneaux  (jla at hugo)
  1186.  
  1187.     * backup.c, backup.h: New files with backup routines.
  1188.     * io.c (make_backup): Moved into backup.c.
  1189.     * io.c (sys_error): No longer static, called from make_backup.
  1190.  
  1191. Wed Apr 29 14:56:10 1992  Joseph Arceneaux  (jla at hugo)
  1192.  
  1193.     * args.c: Make default value for `else_endif_col' 1, as in "-gnu"
  1194.     settings.
  1195.  
  1196. Tue Apr 28 23:18:07 1992  Joseph Arceneaux  (jla at hugo)
  1197.  
  1198.     * indent.c (main):  Only output to stdout if stdin is used and no
  1199.     output file is specified, or one input stream is used and -st is
  1200.     specified.
  1201.     * args.c: New variable `use_stdout' set with option "-st".
  1202.     * indent_globs.h: Declare `use_stdout'.
  1203.  
  1204. Sun Mar 22 14:59:35 1992  Joseph Arceneaux  (jla at hugo)
  1205.  
  1206.     * parse.c (init_parser, reset_parser):  Two new functions which
  1207.     respectively allocate the neccessary parser data structures, and
  1208.     initialize the parser state.
  1209.     * indent.c (indent): New function which does the actual indenting
  1210.     of it's input, which comes in the form of a file_buffer pointer.
  1211.     (main): Command line scan changed to use new option "-o" and read
  1212.     possibly multiple files into new variable `in_file_names'.
  1213.     Main body changed to use new `indent' function on possibly
  1214.     multiple files, and accomodate default standard io specification.
  1215.  
  1216.     * io.c (make_backup, read_file, read_stdin):  All file io routines
  1217.     rewritten (`make_backup' formerly `bakcopy').  read routines
  1218.     return pointer to new structure 'file_buffer'.
  1219.     `make_backup' only makes backup file, no longer sets up original
  1220.     file for writing.
  1221.     * indent_globs.h:  Declare struct file_buffer, and io routines.
  1222.  
  1223. Fri Mar 20 18:33:18 1992  Joseph Arceneaux  (jla at hugo)
  1224.  
  1225.     * args.c: Option "-st" and associated variable `use_stdinout'
  1226.     removed.  Option "-o" and associated variable `expect_output_file'
  1227.     added.
  1228.  
  1229. Mon Feb  3 20:22:04 1992  Joseph Arceneaux  (jla at churchy.gnu.ai.mit.edu)
  1230.  
  1231.     * args.c: If BERKELEY_DEFAULTS is defined, use the original
  1232.     defaults rather than GNU style.
  1233.  
  1234.     * Version 1.2 released.
  1235.  
  1236. Thu Jan 23 14:02:06 1992  Joseph Arceneaux  (jla at wombat.gnu.ai.mit.edu)
  1237.  
  1238.     * Makefile: info version of manual included in distribution.
  1239.  
  1240.     * args.c: New long options "berkeley-style", "berkeley" added
  1241.     which correspond to original style.
  1242.  
  1243.     * lexi.c ():  Added explicit parens in checks for alphanums.
  1244.     * indent.c (main):  On switch default when searching brace, added
  1245.     explicit parens to 2nd if statment.
  1246.     * indent_globs.h, io.c: Made variable `in_prog_size' unsigned.
  1247.          
  1248. Wed Jan 15 11:59:35 1992  Joseph Arceneaux  (jla at hugo)
  1249.  
  1250.     * args.c:  Accept "-gnu" option.
  1251.  
  1252.     * indent.c (main): In case rbrace, don't use ind_level and il[tos]
  1253.     as criteria for setting search_brace.  This allows "-ce" to work
  1254.     more strictly.
  1255.  
  1256.     * indent.c (main): In case lparen, let '(' after an ident which is
  1257.     rw_return begin casts.
  1258.     * lexi.c (lexi): If ident was a reserved word, save it in
  1259.     parser_state_tos->last_rw.
  1260.     Changed "return" from `rw_break' to new enum element `rw_return'.
  1261.     * indent_globs.h: Moved type "enum codes" to this file from
  1262.     lexi.c.  New element of parser state `last_rw'.
  1263.  
  1264. Sun Jan 12 01:40:23 1992  Joseph Arceneaux  (jla at hugo)
  1265.  
  1266.     * lexi.c (lexi): if in decl and looking at '(', additionally
  1267.     accept, after closing ')',  '(' as constituting a function
  1268.     declaration (along with ';' and ',').
  1269.  
  1270. Thu Jan  9 18:31:44 1992  Joseph Arceneaux  (jla at hugo)
  1271.  
  1272.     * io.c (dump_line):  When outputting nonblank lines, if
  1273.     n_real_blanklines is > 1 and swallow_optional_blanklines is set,
  1274.     make n_real_blanklines 1.
  1275.  
  1276. Wed Jan  8 10:06:43 1992  Joseph Arceneaux  (jla at hugo)
  1277.  
  1278.     * args.c (option_prefix):  New function to recognize option prefix
  1279.     from table.  Now handles both "+" and "--" for long option prefixes.
  1280.  
  1281. Mon Jan  6 01:15:29 1992  Joseph Arceneaux  (jla at hugo)
  1282.  
  1283.     * Makefile:  Made more compatible with GNU standards.  Unix man
  1284.     file removed from distribution.
  1285.  
  1286. Fri Dec 27 14:58:13 1991  Joseph Arceneaux  (jla at hugo)
  1287.  
  1288.     * parse.c:  Correctly handle "do ... while" statements, using new
  1289.     stack symbol DOSTMT.
  1290.     (parse):  For semicolon, if code DOSTMT is top of stack, replace it
  1291.     with STMT.
  1292.     (reduce):  New reduction <dohead><whilestmt> => <dostmt>.  Also,
  1293.     when reducing <stmt><dolit>, don't change indentation.
  1294.  
  1295.     * indent.c (main):  In case rbrace, after parse(rbrace), set
  1296.     force_nl if top of stack is dohead and ! btype_2.
  1297.     (main):  Initialize noncast_mask to 0.
  1298.  
  1299. Mon Dec 23 18:34:11 1991  Joseph Arceneaux  (jla at hugo)
  1300.  
  1301.     * args.c (set_option): Recognize long options, using new struct
  1302.     option_conversions, if option begins with POSIX_OPTION_PREFIX.
  1303.  
  1304.     * indent.c (main): Recognize "--no-profile" as well as "-npro".
  1305.  
  1306.     * indent.texinfo: Describe GNU style as default.  Section reworded.
  1307.  
  1308. Sat Dec 21 13:27:07 1991  Joseph Arceneaux  (jla at hugo)
  1309.  
  1310.     * indent.c (main):  In case preesc (~ line 1282), add !had_eof to
  1311.     second while clause to avoid hanging in weird text (like test file
  1312.     djm-torture-test/t11).
  1313.  
  1314.     * indent.c (main): In case rparen, (~ line 680) if cast mask was
  1315.     set and is reset to zero, then set parser_state_tos->want_blank if
  1316.     cast_space was set.  No longer do this (#if 0) in all cases where
  1317.     (!parser_state_tos->cast_mask || cast_space).
  1318.  
  1319. Wed Dec  4 16:41:13 1991  Joseph Arceneaux  (jla at hugo)
  1320.  
  1321.     * version.h:  Version changed to be simply 1.1.4.  Comments added.
  1322.  
  1323. Mon Nov 25 15:16:51 1991  Joseph Arceneaux  (jla at hugo)
  1324.  
  1325.     * indent.c (main):  When handling decl case, don't reset
  1326.     PREFIX_BLANKLINE_REQUESTED if we've just encountered the type of a
  1327.     procedure delcaration.  This fixes the -bap bug for procedures
  1328.     which begin with a line declaring their type, following the line with
  1329.     `}' from the last procedure.
  1330.  
  1331. Fri Nov 22 15:26:59 1991  Joseph Arceneaux  (jla at hugo)
  1332.  
  1333.     * args.c: Default is now GNU style.  Original obtained by new
  1334.     option "-orig".  New variable exp_orig.
  1335.  
  1336.     * indent.texinfo: Describe the new -ts option.  Removed the -ss
  1337.     option from GNU style.
  1338.  
  1339. Thu Nov 21 17:50:48 1991  Joseph Arceneaux  (jla at hugo)
  1340.  
  1341.     * args.c: New variables `tabsize' and `exp_ts'.
  1342.     * indent_globs.h: Declare `tabsize'.
  1343.     * io.c (pad_output, count_spaces): Use `tabsize' to calculate padding.
  1344.     * pr_comment.c (pr_comment): Use `tabsize' to compute column.
  1345.  
  1346.     * args.c: Removed the "-ss" option for GNU style.
  1347.  
  1348. Fri Sep 13 01:30:18 1991  Joseph Arceneaux  (jla at hugo)
  1349.  
  1350.     * indent_globs.c: New element to parser_state, `paren_depth',
  1351.     which counts global paren nesting.
  1352.     * indent.c: Use it in main loop to avoid setting `in_or_st' when
  1353.     doing ansii prototyping.
  1354.  
  1355. Thu Sep 12 15:53:54 1991  Joseph Arceneaux  (jla at hugo)
  1356.  
  1357.     * io.c (dump_line): Initialize target_column to 0.
  1358.  
  1359.     * parse.c: New variable debug to control debugging output.
  1360.  
  1361.