X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Foutput.c;h=9527c46f210e5994624964c4f7cdc2cc9318463f;hb=9aff19b717bcc242e16d04c34f348fd79ebdd685;hp=dea3e4ad243a5359499adfa55ecb5deb21c5db63;hpb=43b1296aafe7582e7dbe6c2b6a8b478d7d9b0fcf;p=pspp-builds.git diff --git a/src/output/output.c b/src/output/output.c index dea3e4ad..9527c46f 100644 --- a/src/output/output.c +++ b/src/output/output.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2007 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -82,7 +82,6 @@ char *outp_subtitle; static int disabled_devices; static void destroy_driver (struct outp_driver *); -static void configure_driver_line (struct substring); static void configure_driver (const struct substring, const struct substring, const struct substring, const struct substring); @@ -150,8 +149,8 @@ add_name (char *bp, char *ep, int source) outp_configure_vec = n; } -/* Checks that outp_configure_vec is empty, bitches & clears it if it - isn't. */ +/* Checks that outp_configure_vec is empty, complains and clears + it if it isn't. */ static void check_configure_vec (void) { @@ -318,7 +317,7 @@ outp_read_devices (void) struct outp_names *n = search_names (cp, ep); if (n) { - configure_driver_line (ds_ss (&line)); + outp_configure_driver_line (ds_ss (&line)); delete_name (n); } } @@ -562,7 +561,7 @@ get_option_token (struct substring *s, const char *driver_name, case '7': out = c - '0'; while (ss_first (*s) >= '0' && ss_first (*s) <= '7') - out = c * 8 + (ss_get_char (s) - '0'); + out = out * 8 + (ss_get_char (s) - '0'); break; case 'x': case 'X': @@ -701,7 +700,7 @@ configure_driver (struct substring driver_name, struct substring class_name, d->class = c->class; d->name = ss_xstrdup (driver_name); d->page_open = false; - d->device = OUTP_DEV_NONE; + d->device = device; d->cp_x = d->cp_y = 0; d->ext = NULL; d->prc = NULL; @@ -733,8 +732,8 @@ configure_driver (struct substring driver_name, struct substring class_name, DRIVERNAME:CLASSNAME:DEVICETYPE:OPTIONS Adds a driver to outp_driver_list pursuant to the specification provided. */ -static void -configure_driver_line (struct substring line_) +void +outp_configure_driver_line (struct substring line_) { struct string line = DS_EMPTY_INITIALIZER; struct substring tokens[4]; @@ -1096,10 +1095,10 @@ outp_drivers (struct outp_driver *d) return d; } -/* Enables (if ENABLE is nonzero) or disables (if ENABLE is zero) the +/* Enables (if ENABLE is true) or disables (if ENABLE is false) the device(s) given in mask DEVICE. */ void -outp_enable_device (int enable, int device) +outp_enable_device (bool enable, int device) { if (enable) disabled_devices &= ~device; @@ -1143,6 +1142,18 @@ outp_eject_page (struct outp_driver *d) outp_open_page (d); } +/* Flushes output to screen devices, so that the user can see + output that doesn't fill up an entire page. */ +void +outp_flush (struct outp_driver *d) +{ + if (d->device & OUTP_DEV_SCREEN && d->class->flush != NULL) + { + outp_close_page (d); + d->class->flush (d); + } +} + /* Returns the width of string S, in device units, when output on device D. */ int