Skip to content

n-t-roff/sc

Repository files navigation

sc Spreadsheet Calculator

sc is a free curses-based spreadsheet program that uses key bindings similar to vi and less. For more information on sc please see the README file. This is a fork of the latest source code version 7.16 from September 2002 which can be found at http://www.ibiblio.org/pub/Linux/apps/financial/spreadsheet/sc-7.16.tar.gz. The following changes had been made:

  • Many bugs had been found, all of them are fixed now. (For reporting bugs please use the issue list.)
  • All gcc and most clang -Wall and -Werror compiler warnings fixed.
  • Made UBSAN and ASAN clean.
  • All sprintf, strcpy, and strcat replaced with snprintf, strlcpy, and strlcat.
  • ./configure script added and tested on BSD, Linux, and Solaris.

Functional extensions:

  • By default sc made a backup of the database file before overwriting it. This could only be changed at compile time. There are now options backup and !backup to control this.

  • Configured at compile time, sc always did update the history file ~/.sc_history. It is now possible to change this filename with the .scrc command histfile or save no history at all with an empty command argument.

  • Command set mouse (e.g. in .scrc) enables

    • Selecting cells with the left mouse button
    • Vertical scrolling with the mouse wheel
    • Selecting the edit line position with the left mouse button

    (In this case the shift key needs to be pressed for ‘cut and paste’. All sc functions work well with NetBSD and Solaris curses but using the mouse requires ncurses. Using the mouse wheel additionally requires ncurses version ≥ 6.)

Documentation

Documentation is provided in short form integrated in sc accessible with the ? key. A complete documentation is available as a manual page. For better navigation HTML and PDF versions with table of contents and hyperlinks had been created (using the -man macros of Heirloom troff).

Getting the source

The source can be cloned with

git clone https://github.com/n-t-roff/sc.git

and updated later with

git pull

Compiling and Installation

Defaults for compiling and installation are set in the Makefile.in. A system dependent makefile is generated with

./configure

If you'd like to do an out-of-source build, and your version of make supports VPATH (eg GNU make) then you can do the following:

cd /path/to/obj
/path/to/source/configure # (full or relative path)

The source is compiled with

make

(the curses or ncurses header files need to be installed, else make failes).

If make failes it may be possible that ./configure did not work correctly with the installed /bin/sh. If ksh is installed in such cases using

make distclean
ksh configure
make

can solve the problem. (Alternatively sh in configures first line can be changed to ksh.)

The result is installed with

make install

to the base directory /usr/local. This path can be changed in the Makefile.in. All generated files are removed with

make distclean

A new target, clobber, has been added, which removes all make generated targets (not the Makefile nor other configure output)

make clobber

The package can be uninstalled with

make uninstall