[comp.sources.d] Added feature for 'sc' spreadsheet

pjbk@cs.hw.ac.uk (Peter King) (03/28/89)

The following is a small patch to the recently posted `sc' spreadsheet
package to overcome a small problem that arises when incorporating
some new data, prepared by `psc' in a spreadsheet.  Without this
patch, the column widths that `psc' calculates override the ones
calculated in the already loaded spreadsheet.  This may upset
carefully laid out screens and printouts.  The solution is to add a
flag to `psc' which suppresses the inclusion of the column widths in
the generated spreadsheet.  Its a trivial modification and has been in
use here for about 6 months.  Bob Bond has a copy, so I expect it will
appear in the next version of `sc'.

What follows after the +++ line is a context diff.  Either feed it to
patch, or apply it by hand. 

Peter King, Computer Science Department	JANET:	pjbk@uk.ac.hw.cs
  Heriot-Watt University		ARPA:	pjbk@cs.hw.ac.uk
  79 Grassmarket, Edinburgh EH1 2HJ	or	pjbk%cs.hw.ac.uk@ucl-cs
Phone: (+44) 31 225 6465 Ext. 555	UUCP:	..!ukc!cs.hw.ac.uk!pjbk


+++++++++++++++++++++++++++++++++++++++++++++++
diff -c sc/psc.c /usr/src/local/vc/psc.c
*** sc/psc.c	Thu Mar 23 16:55:48 1989
--- /usr/src/local/vc/psc.c	Thu Nov 10 10:11:26 1988
***************
*** 10,15
   *   -s v	Top left location in the spreadsheet should be v; eg, k5
   *   -d c       Use c as the delimiter between the fields.
   *   -k         Keep all delimiters - Default is strip multiple delimiters to 1.
   *   
   *  Author: Robert Bond
   *		$Revision: 6.1 $

--- 10,16 -----
   *   -s v	Top left location in the spreadsheet should be v; eg, k5
   *   -d c       Use c as the delimiter between the fields.
   *   -k         Keep all delimiters - Default is strip multiple delimiters to 1.
+  *   -f         suppress 'format' lines in output
   *   
   *  Author: Robert Bond
   *		$Revision: 6.1 $
***************
*** 46,51
  char delim1 = ' ';
  char delim2 = '\t';
  int strip_delim = 1;
  int fwidth[MAXCOLS];
  int precision[MAXCOLS];
  

--- 47,53 -----
  char delim1 = ' ';
  char delim2 = '\t';
  int strip_delim = 1;
+ int drop_format = 0;
  int fwidth[MAXCOLS];
  int precision[MAXCOLS];
  
***************
*** 65,71
      register char *p;
  
      progname = argv[0];
!     while ((c = getopt(argc, argv, "rLks:R:C:n:d:")) != EOF) {
  	switch(c) {
  	case 'r':
  	    colfirst = 1;

--- 67,73 -----
      register char *p;
  
      progname = argv[0];
!     while ((c = getopt(argc, argv, "rfLks:R:C:n:d:")) != EOF) {
  	switch(c) {
  	case 'r':
  	    colfirst = 1;
***************
*** 93,98
  	case 'k':
  	    strip_delim = 0;
  	    break;
  	default:
  	    (void) fprintf(stderr,"Usage: %s [-rkL] [-s v] [-R i] [-C i] [-n i] [-d c]\n", progname);
  	    exit(1);

--- 95,103 -----
  	case 'k':
  	    strip_delim = 0;
  	    break;
+ 	case 'f':
+ 	    drop_format = 1;
+ 	    break;
  	default:
  	    (void) fprintf(stderr,"Usage: %s [-rkfL] [-s v] [-R i] [-C i] [-n i] [-d c]\n", progname);
  	    exit(1);
***************
*** 94,100
  	    strip_delim = 0;
  	    break;
  	default:
! 	    (void) fprintf(stderr,"Usage: %s [-rkL] [-s v] [-R i] [-C i] [-n i] [-d c]\n", progname);
  	    exit(1);
          }
      }

--- 99,105 -----
  	    drop_format = 1;
  	    break;
  	default:
! 	    (void) fprintf(stderr,"Usage: %s [-rkfL] [-s v] [-R i] [-C i] [-n i] [-d c]\n", progname);
  	    exit(1);
          }
      }
***************
*** 116,121
  
  	switch(scan()) {
  	case END:
  	    for (i = 0; i<MAXCOLS; i++) {
  		if (precision[i])
  		    (void) printf("format %s %d %d\n", coltoa(i), precision[i]+1,

--- 121,127 -----
  
  	switch(scan()) {
  	case END:
+ 	    if(drop_format) exit(0);
  	    for (i = 0; i<MAXCOLS; i++) {
  		if (precision[i])
  		    (void) printf("format %s %d %d\n", coltoa(i), precision[i]+1,
diff -c sc/psc.doc /usr/src/local/vc/psc.doc
*** sc/psc.doc	Thu Mar 23 16:53:18 1989
--- /usr/src/local/vc/psc.doc	Thu Nov 10 10:12:43 1988
***************
*** 5,11
  .SH SYNOPSIS
  .B ppname
  [
! .I -Lkr
  ]
  [
  .I -s cell

--- 5,11 -----
  .SH SYNOPSIS
  .B ppname
  [
! .I -fLkr
  ]
  [
  .I -s cell
***************
*** 41,46
  in the column.
  
  Options:
  
  .IP "\-L"
  Left justify strings.

--- 41,53 -----
  in the column.
  
  Options:
+ 
+ .IP "\-f"
+ Omit column width calculations.  This option is for preparing
+ data to be merged with an existing spreadsheet.  If the option is not
+ specified, the column widths calculated for the data read by
+ .I ppname
+ will override those already set in the existing spreadsheet.
  
  .IP "\-L"
  Left justify strings.
-- 
Peter King, Computer Science Department	JANET:	pjbk@uk.ac.hw.cs
  Heriot-Watt University		ARPA:	pjbk@cs.hw.ac.uk
  79 Grassmarket, Edinburgh EH1 2HJ	or	pjbk%cs.hw.ac.uk@ucl-cs
Phone: (+44) 31 225 6465 Ext. 555	UUCP:	..!ukc!cs.hw.ac.uk!pjbk