Bug #21128. Reviewed by John Darrington.
[pspp-builds.git] / src / output / ChangeLog
index 4f2d1810933999cb1362109a0a428b374dfb133c..adabbcde32e077796e704b26296eb68ac8332ff1 100644 (file)
@@ -1,3 +1,376 @@
+2007-09-22  Ben Pfaff  <blp@gnu.org>
+
+       Bug #21128.  Reviewed by John Darrington.
+
+       * output.c (TWO_CHARS macro): Removed.
+       (outp_evaluate_dimension): Changed interface, rewritten.  Updated
+       all callers.
+       (internal_get_paper_size): Removed.
+       (parse_unit): New function.
+       (parse_paper_size): New function.
+       (outp_get_paper_size): Tweaked interface, rewritten.
+       (get_standard_paper_size): New function.
+       (read_paper_conf): New function.
+       (get_default_paper_size): New function.
+
+       * postscript.c (ps_open_driver): Use system default paper size as
+       default paper, instead of hard-coding US letter.
+       (handle_option): Allow outp_evaluate_dimension to supply error
+       message instead of generating it here.
+
+2007-09-21  Ben Pfaff  <blp@gnu.org>
+
+       * ascii.c (struct ascii_driver_ext): New member reported_error.
+       (ascii_open_driver): Initialize reported_error.
+       (ascii_open_page): Initialize the rest of the ascii driver data
+       even if we fail to open the output file.  Fixes bug #21117.
+
+       * chart.c (chart_create): Initialize lp member.  Fixes crash if
+       chart initialization fails.
+
+       * html.c (html_open_driver): Don't free chart_file_name in error
+       case, since html_close_driver will do that.  Fixes crash if file
+       open fails.
+
+       * postscript.c (ps_close_driver): Don't try to write to file if
+       it's null.  Fixes crash if file open fails.
+
+2007-09-08  John Darrington <john@darrington.wattle.id.au>     
+
+       * postscript.c html.c: Remove #include "getline.h" to concurr with 
+       new gnulib arrangements.
+
+2007-08-23  Ben Pfaff  <blp@gnu.org>
+
+       Implement journaling.  Bug #17240.
+       
+       * automake.mk (output_sources): Add journal.c, journal.h.
+       
+       * journal.c: New file.
+       
+       * journal.h: New file.
+
+2007-08-16  Ben Pfaff  <blp@gnu.org>
+
+       * output.c output.h: export function outp_configure_driver_line.
+       * ascii.c: Added an "append" property.
+       
+2007-08-12  Ben Pfaff  <blp@gnu.org>
+
+       Add support for charts to ASCII driver.  Bug #16364.
+       Thanks to John Darrington for review.
+       
+       * ascii.c (struct ascii_driver_ext): Add chart_type,
+       chart_file_name, chart_cnt members.
+       (ascii_open_driver): Initialize new members.
+       (static array option_tab): Add new options, reorganize slightly.
+       (handle_option): Handle new options.
+       (ascii_submit): New function.
+       (ascii_chart_initialise): Implement.
+       (ascii_chart_finalise): Implement.
+
+       * chart.c (chart_init_separate): New function.
+       (chart_finalise_separate): New function.
+       
+       * dummy-chart.c (chart_init_separate): New function.
+       (chart_finalise_separate): New function.
+
+       * html.c (html_open_driver): Don't free chart_file_name.
+       (html_close_driver): Do free chart_file_name.
+       (handle_option): Only give an error for chart-files options that
+       don't contain "#".
+       (html_initialise_chart): Use new chart_init_separate.
+       (html_finalise_chart): Use new chart_finalise_separate.
+
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       Allow the user to specify an initialization string to write at the
+       beginning of an ASCII output file.
+       * ascii.c (struct ascii_driver_ext): New member `init'.
+       (ascii_open_driver): Initialize `init'.
+       (ascii_close_driver): Parse `init'.
+       (ascii_open_page): Write `init' to output file.
+
+       * output.c (get_option_token): Fix parsing of octal constants.
+
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       Make interactive output go to the terminal (bug #17213), by
+       causing the UI to flush output to the user when it prompts for a
+       command.
+
+       * ascii.c (ascii_open_driver): Move the file open into
+       ascii_open_page, so that we can re-open after a flush.
+       (ascii_close_driver): Close file using ascii_flush.
+       (ascii_open_page): Open the output file if it's not already open.
+       Use fn_open so that we can support pipes.
+       (ascii_close_page): Do nothing if output file not open.
+       (ascii_flush): New function.
+       (static var ascii_class): Add ascii_flush.
+
+       * manager.c (som_flush): New function.
+
+       * output.c (outp_flush): New function.
+
+Tue Feb 20 07:03:48 2007  Ben Pfaff  <blp@gnu.org>
+
+       * html.c: Don't need to include "getlogin_r.h" anymore, because
+       gnulib merged it into <unistd.h>.
+
+Sun Feb 18 11:20:35 2007  Ben Pfaff  <blp@gnu.org>
+
+       * postscript.c: Add missing _() around message.
+
+Sun Feb 11 17:59:30 2007  Ben Pfaff  <blp@gnu.org>
+
+       * html.c (html_initialise_chart): Mark `this' parameter UNUSED to
+       account for NO_CHARTS case.
+
+Sat Feb  3 21:56:46 2007  Ben Pfaff  <blp@gnu.org>
+
+       * table.c (tab_hline): Allow t->nr as y argument, so that we can
+       draw a line below the bottom row of the table.
+
+Wed Feb  7 21:38:12 2007  Ben Pfaff  <blp@gnu.org>
+
+       * afm.c: Add #include <limits.h>.  Thanks to John McCabe-Dansted
+       <gmatht@gmail.com> for pointing out the need.
+
+Sun Oct  8 07:09:34 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * table.c (tab_destroy): Freed title, since this is not allocated
+       from the pool.
+
+       * html.c (html_open_driver): Freed chart_file_name.
+
+Wed Jul 12 21:03:37 2006  Ben Pfaff  <blp@gnu.org>
+
+       * table.c (tab_natural_width): Get rid of warning on empty column,
+       which tended to just trigger false positives because we handle
+       joined cells so badly.  We need a real fix, and the warning is not
+       helpful.
+
+       * table.c (tab_offset): [DEBUGGING] Let row, col arguments be as
+       big as row or column count.
+       
+Wed Jul 12 20:58:19 2006  Ben Pfaff  <blp@gnu.org>
+
+       * output.c (outp_drivers): [DEBUGGING] Delete unused declaration.
+
+Sat Jul  1 17:20:03 2006  Ben Pfaff  <blp@gnu.org>
+
+       Make the destination for charts configurable in the HTML driver.
+       Fixes bug #15723, "HTML driver creates .png files insecurely".
+
+       * htmlP.h: (struct html_driver_ext) Add chart_file_name, chart_cnt
+       members.
+       
+       * html.c: (html_open_driver) Initialize new members.
+       (option_tab var) Add "chart-files" option.
+       (handle_option) Parse "chart-files" option.
+       (html_initialise_chart) Name file based on "chart-files" option.
+       
+Sat Jul  1 22:41:26 2006  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #16644: Output Driver crashes in DISPLAY VARIABLES.
+       
+       * table.c (tab_create): Don't allocate t->hrh, t->wrv yet, because
+       the table size might change before we're ready to use them.
+       (tabi_table) Allocate them here instead.
+
+Fri Jun  9 14:42:35 2006  Ben Pfaff  <blp@gnu.org>
+
+       Reform string library.
+       
+       * output.c (init_default_drivers): Update call to
+       configure_driver() to new interface.
+       (get_option_token) Use a modifiable substring in interface instead
+       of a separate position parameter.  Use ss_get_*() functions.
+       (configure_driver) Take and work with substrings.
+       (configure_driver_line) Update call to configure_driver() to new
+       interface.
+       (outp_get_paper_size) Use substrings.
+
+       * output.h (struct outp_class): Change open_driver interface to
+       use substring.  Update all implementations.
+
+       * table.c (text_format): Change to return substring.
+       (tab_title) Use xvasprintf().
+
+       * table.h (struct tab_table): Change title member to char *.
+
+Thu May 25 18:02:53 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * table.c: Removed redundant extern declaration.
+
+Sun May 14 14:03:56 2006  Ben Pfaff  <blp@gnu.org>
+
+       * output.c (outp_eject_page): Always make sure that a page is open
+       upon return.
+
+Sun May 14 13:54:58 2006  Ben Pfaff  <blp@gnu.org>
+
+       * postscript.c: (ps_chart_finalise) Fix format of %%EndDocument
+       comment, which screwed up gv's idea of where one page ended and
+       the next one began.  Thanks to John Darrington for pointing out
+       the bug.
+
+Sun Apr 16 11:48:25 2006  Ben Pfaff  <blp@gnu.org>
+
+       Start reforming error message support.  In this phase, we get rid
+       of "installation errors" and change all uses of msg() in the
+       output drivers to uses of error() or error_at_line().
+
+       * Removed all inclusion of <libpspp/message.h> in this directory.
+
+       * output.c: Changed all uses of msg() to error() or
+       error_at_line().
+       (outp_read_devices) Maintain line number in int variable instead
+       of "struct file_locator".
+       (tokener) Renamed get_option_token(), rewritten, changed interface.
+       (outp_parse_options) Change `options' argument to type const
+       struct string *.  Rewritten.
+       (configure_driver) Passes a struct string * to ->open_driver()
+       instead of char *.
+       (outp_get_paper_size) Maintain line number in int variable instead
+       of "struct file_locator".  Removed stupid cache.
+
+       * output.h: (struct outp_class) Change `open_driver' function to
+       take const struct string * instead of const char *.  Updated all
+       implementations.
+
+Mon Apr  3 11:14:38 2006  Ben Pfaff  <blp@gnu.org>
+
+       Rewrite a lot of the output drivers and infrastructure.
+       Started transitioning from msg() to error().
+       Vertical rules in tables now default to putting a small gap
+       between columns, instead of no gap or rule at all.
+       See NEWS for user-visible changes.
+
+       * automake.mk: (output_sources) Add afm.c, afm.h.  Remove font.h,
+       groff-font.c.
+       
+       * afm.c, afm.h: New files.
+
+       * font.h: Removed.
+
+       * groff-font.c: Removed.
+       
+       * ascii.c: Rewrote and simplified.
+
+       * html.c: Ditto.
+
+       * postscript.c: Ditto.
+
+       * output.c: (struct outp_driver_class_list) Move here from
+       output.h.  Remove ref_count member and all references to it.
+       (outp_init) Remove epsf_class references.
+       (init_default_drivers) Use new configure_driver_line() interface.
+       (parse_options) Renamed outp_parse_options(), changed interface.
+       (configure_driver) Changed args from `const char *'s to `const
+       struct string *'s.  Rewrote.  Don't call ->open_global().  Now
+       just calls ->open_driver() instead of ->preopen_driver(),
+       ->option(), ->postopen_driver().
+       (configure_driver_line) Adapt to new configure_driver() interface.
+       (destroy_driver) Don't call ->close_global().
+       (option_cmp) Removed.
+       (outp_match_keyword) Rewrite for simplicity.
+       (outp_open_page) New function.  Changed all equivalent
+       functionality to use this function instead.
+       (outp_close_page) Ditto.
+       (outp_eject_page) Use above functions.
+       (outp_string_width) Add font argument and change all callers to
+       pass one.
+
+       * output.h: (struct rect) Removed.
+       (OUTP_L_*) Name this enumeration "enum outp_line_style".
+       (OUTP_L_SPECIAL) Removed.
+       (struct color) Removed.
+       (OUTP_F_*) Removed.
+       (struct outp_styles) Removed.
+       (OUTP_T_*) Removed.
+       (enum outp_justification) New, containing OUTP_RIGHT, OUTP_LEFT,
+       OUTP_CENTER.
+       (enum outp_font) New, containing OUTP_FIXED, OUTP_PROPORTIONAL,
+       and OUTP_EMPHASIS.
+       (struct outp_text) Replaced `options' member by `font' and
+       `justification'.  Renamed `s' to `string'.  Removed `w', `l'.
+       Updated all usages.
+       (struct outp_class) Removed `magic', `open_global',
+       `close_global', `font_sizes', `preopen_driver', `option',
+       `postopen_driver', `line_horz', `line_vert', `line_intersection',
+       `box', `polyline_begin', `polyline_point', `polyline_end',
+       `text_set_font_by_name', `text_set_font_by_position',
+       `text_set_font_family', `text_get_font_name',
+       `text_get_font_family', `text_set_Size', and `text_get_size'
+       members.  Added `open_driver', `close_driver', `line' members.
+       Changed interface of `open_page', `close_page', `text_metrics',
+       `text_draw' members.  Updated all usages.
+       (struct outp_driver) Rearranged members.  Removed `driver_open',
+       `res', `horiz', `vert', `horiz_line_spacing', `vert_line_spacing'
+       members.
+       (struct outp_option_info) Removed.
+       (struct outp_driver_class_list) Removed.
+       (outp_match_keyword) Changed interface.
+
+       * table.c: (tab_create) Now ignores reallocable argument: tables
+       can always be reallocated.  Use pool_create_container().
+       Initialize vertical rules to UCHAR_MAX.
+       (options_to_font) New function.
+       (tab_destroy) Remove futile assignment.
+       (tab_realloc) Initialize vertical rules to UCHAR_MAX.
+       (text_format) Use xvasprintf() instead of local_alloc().
+       (tab_title) Always format the argument, and drop the option
+       argument.  Change all callers to agree.
+       (tab_natural_width) Adapt to new ->text_metrics() interface.
+       (tab_natural_height) Ditto.
+       (tab_joint_text) Clear rules within the joined cell.  Now
+       necessary because of the default to put spacing between cells.
+       (tab_output_text) Use xvasprintf() instead of local_alloc().
+       Remove special cases for fixed-width font.
+       (rule_to_spacing_type) New function.
+       (tabi_driver) Calculate rule widths manually now that we don't
+       have ->trh or ->trv.  Implement new default for vertical rules.
+       (render_rows) New function.
+       (tabi_render) Rewrite in terms of render_rows() for clarity.
+       (translate_justification) New function.
+       (rule_to_draw_type) New function.
+       (get_hrule) New function.
+       (get_vrule) New function.
+       (render_horz_rule) New function.
+       (render_vert_rule) New function.
+       (render_rule_intersection) New function.
+       (strip_width) New function.
+       (strip_height) New function.
+       (render_cell) New function.
+       (render_strip) Rewrite in terms of new functions.
+
+       * table.h: (TAB_EMPH) New flag.
+       (TAB_FIX) New flag.
+       (TAL_3) Removed.
+       (TAL_GAP) Added.
+       (TAL_SPACING) Removed.
+       (struct tab_table) Members `trh', `hrv', `hr_tot', `vr_tot'
+       removed.
+       [DEBUGGING] (reallocable) Removed.
+       (TAT_FIX) Removed.  All references replaced by TAB_FIX.
+       (TAT_TITLE) Now implies TAB_EMPH.
+               
+Thu Mar 30 16:26:56 2006  Ben Pfaff  <blp@gnu.org>
+
+       * output.c: (colon_tokenize) Removed.
+       (configure_driver_line) Rewrote to use ds_separate().  Fixed leak.
+
+Tue Mar 28 13:50:53 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+       * html.c, postscript.c, output.c:  Changed to fit the new signature 
+       of fn_interp_vars
+       
+Sun Mar  5 13:19:32 2006  Ben Pfaff  <blp@gnu.org>
+
+       * postscript.c: (postopen) Fix segfault when the active file has
+       no title.
+
 Sat Mar  4 13:48:16 2006  Ben Pfaff  <blp@gnu.org>
 
        We didn't provide a way to define these macros, so obviously