home *** CD-ROM | disk | FTP | other *** search
- From: allbery@ncoast.UUCP (Brandon S. Allbery)
- Newsgroups: comp.sources.misc
- Subject: v02i034: UNIFY(r) Screens with Curses, Part 2 of 4
- Message-ID: <7161@ncoast.UUCP>
- Date: 31 Jan 88 04:11:32 GMT
- Approved: allbery@ncoast.UUCP
-
- Comp.sources.misc: Volume 2, Issue 34
- Suvbmitted-By: The Moderator<allbery@ncoast.UUCP>
- Archive-Name: usc/Part2
-
- I've received so many requests for my Unify(r) screen routines that I am
- posting them. The USC library is in four parts; unshar them and type "make".
- The curses used is System V; BSDers will want to tweak the usual stuff, such
- as beep() and cbreak().
-
- I also have a simple screen program using this; if demand warrants, I will
- post it -- but in terms of features, you're probably better off with ENTER.
-
- #--------------------------------CUT HERE-------------------------------------
- #! /bin/sh
- #
- # This is a shell archive. Save this into a file, edit it
- # and delete all lines above this comment. Then give this
- # file to sh by executing the command "sh file". The files
- # will be extracted into the current directory owned by
- # you with default permissions.
- #
- # The files contained herein are:
- #
- # -r--r--r-- 1 allbery users 2117 Jan 30 18:01 inbuf.c
- # -r--r--r-- 1 allbery users 1919 Jan 30 18:01 inc.c
- # -r--r--r-- 1 allbery users 2521 Jan 30 18:01 incs.c
- # -r--r--r-- 1 allbery users 5846 Jan 30 18:01 inl.c
- # -r--r--r-- 1 allbery users 1155 Jan 30 18:01 input.c
- # -r--r--r-- 1 allbery users 2604 Jan 30 18:01 inscrf.c
- # -r--r--r-- 1 allbery users 1735 Jan 30 18:01 ishort.c
- # -r--r--r-- 1 allbery users 667 Jan 30 18:01 istr.c
- # -r--r--r-- 1 allbery users 2009 Jan 30 18:01 itime.c
- # -r--r--r-- 1 allbery users 800 Jan 30 18:01 keybrd.c
- # -r--r--r-- 1 allbery users 4049 Jan 30 18:01 loadscr.c
- # -r--r--r-- 1 allbery users 953 Jan 30 18:01 mv_cur.c
- # -r--r--r-- 1 allbery users 1160 Jan 30 18:01 outbuf.c
- # -r--r--r-- 1 allbery users 1371 Jan 30 18:01 output.c
- # -r--r--r-- 1 allbery users 1516 Jan 30 18:01 outscrf.c
- # -r--r--r-- 1 allbery users 2679 Jan 30 18:01 pageout.c
- # -r--r--r-- 1 allbery users 659 Jan 30 18:01 pamt.c
- # -r--r--r-- 1 allbery users 894 Jan 30 18:01 pdata.c
- # -r--r--r-- 1 allbery users 1018 Jan 30 18:01 pdate.c
- # -r--r--r-- 1 allbery users 1382 Jan 30 18:01 pflt.c
- # -r--r--r-- 1 allbery users 608 Jan 30 18:01 pflush.c
- # -r--r--r-- 1 allbery users 619 Jan 30 18:01 phamt.c
- # -r--r--r-- 1 allbery users 610 Jan 30 18:01 plong.c
- # -r--r--r-- 1 allbery users 2557 Jan 30 18:01 priamd.c
- # -r--r--r-- 1 allbery users 668 Jan 30 18:01 prmp.c
- # -r--r--r-- 1 allbery users 807 Jan 30 18:01 prmpf.c
- # -r--r--r-- 1 allbery users 667 Jan 30 18:01 prmprv.c
- # -r--r--r-- 1 allbery users 976 Jan 30 18:01 prtmsg.c
- # -r--r--r-- 1 allbery users 612 Jan 30 18:01 pshort.c
- # -r--r--r-- 1 allbery users 1018 Jan 30 18:01 pstr.c
- # -r--r--r-- 1 allbery users 735 Jan 30 18:01 ptct_crt.c
- #
- echo 'x - inbuf.c'
- if test -f inbuf.c; then echo 'shar: not overwriting inbuf.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > inbuf.c
- X/*
- X * $Header: inbuf.c,v 1.5 87/04/29 14:19:12 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: inbuf.c,v $
- X * Revision 1.5 87/04/29 14:19:12 brandon
- X * FLT display length is sfield length / 10
- X *
- X * Revision 1.4 87/04/29 13:17:22 brandon
- X * The code to convert internal to display lengths was in gtube(); it belonged
- X * in here, so here it is.
- X *
- X * Revision 1.3 87/04/29 11:40:50 brandon
- X * Added ability to OR an upshift flag with a screen field type to get auto
- X * upshifting on certain screen fields. See also gdata.c.
- X *
- X * Revision 1.2 87/04/29 11:30:40 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: inbuf() -- Input from a screen field to a buffer
- X *
- X * DIFFERENCE FROM UNIFY: See inscrf(). The stuff about NULLDATEs on -3
- X * returns from gtube() is done, iff -DCOMPATIBILITY is given. (There's no
- X * real need for it, and this implementation doesn't *have* that side effect
- X * unless extra code is added to force the issue.)
- X */
- X
- Xinbuf(sfld, buf)
- Xchar *buf; {
- X int rc, oucf, len;
- X
- X setraw();
- X if (sfld < 0 || sfld > __nsf)
- X xerror(-1, "inbuf", "Invalid screen field %d", sfld);
- X oucf = _sh_up;
- X _sh_up = __scf[sfld].q_type & _UCF;
- X /* This code was in gtube(), because I screwed up! */
- X len = __scf[sfld].q_len;
- X switch (__scf[sfld].q_type) {
- X case INT:
- X case LONG:
- X case STRNG:
- X break;
- X case AMT:
- X case HAMT:
- X len += 3;
- X break;
- X case DATE:
- X len = 8;
- X break;
- X case HR:
- X len = 5;
- X break;
- X case FLT:
- X len /= 10;
- X break;
- X case COMB:
- X xerror(-2, "inbuf", "COMB field %d illegal", sfld);
- X }
- X if (__scf[sfld].q_fld != 0)
- X rc = gtube(__scf[sfld].q_fx, __scf[sfld].q_fy, __scf[sfld].q_fld, buf);
- X else
- X rc = inscrf(__scf[sfld].q_fx, __scf[sfld].q_fy, __scf[sfld].q_type & ~_UCF, len, buf);
- X#ifdef COMPATIBILITY
- X if (rc == FWD && __scf[sfld].q_type == DATE)
- X (short *) buf = NULLDATE;
- X#endif
- X _sh_up = oucf;
- X return rc;
- X}
- ________This_Is_The_END________
- if test `wc -l < inbuf.c` -ne 82; then
- echo 'shar: inbuf.c was damaged during transit (should have been 82 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - inc.c'
- if test -f inc.c; then echo 'shar: not overwriting inc.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > inc.c
- X/*
- X * $Header: inc.c,v 1.1 87/06/02 11:01:55 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: inc.c,v $
- X * Revision 1.1 87/06/02 11:01:55 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Input primitive. Get a single input character. If _sh_up is nonzero, shift
- X * to uppercase. Underline is used (when available) in place of foreground/
- X * background stuff that curses doesn't grok anyway.
- X *
- X * The `clrf' flag specifies whether the buffer is cleared or not prior to
- X * input. This is of doubtful utility, but....
- X */
- X
- Xint inc(buf, clrf)
- Xchar *buf;
- Xint clrf; {
- X setraw();
- X (void) attron(A_UNDERLINE);
- X if (clrf)
- X *buf = ' ';
- X for (;;) {
- X (void) printw("%c\b", *buf);
- X (void) refresh();
- X *buf = getchar() & 0x7f;
- X switch (*buf) {
- X case '\033':
- X case '\005':
- X (void) attroff(A_UNDERLINE);
- X return GO;
- X case '\t':
- X case '\025':
- X (void) attroff(A_UNDERLINE);
- X return BACK;
- X case '\n':
- X case '\r':
- X case ' ':
- X (void) attroff(A_UNDERLINE);
- X return (!clrf || *buf == ' '? FWD: FWD_OK);
- X case '\b':
- X (void) attroff(A_UNDERLINE);
- X return BKSP;
- X case '\006':
- X (void) attroff(A_UNDERLINE);
- X return CFWD;
- X case '\002':
- X (void) attroff(A_UNDERLINE);
- X return CBACK;
- X case '\026':
- X (void) attroff(A_UNDERLINE);
- X return LOOK;
- X case '\030':
- X (void) move(LINES - 1, 0);
- X (void) clrtoeol();
- X (void) refresh();
- X (void) endwin();
- X exit(0);
- X case '\020':
- X _inlsusp();
- X break;
- X case '\f':
- X case '\022':
- X (void) clearok(curscr);
- X (void) wrefresh(curscr);
- X break;
- X default:
- X if (*buf < ' ' || *buf == '\177') {
- X (void) beep();
- X break;
- X }
- X if (_sh_up && islower(*buf))
- X *buf = toupper(*buf);
- X return FWD_OK;
- X }
- X }
- X}
- ________This_Is_The_END________
- if test `wc -l < inc.c` -ne 90; then
- echo 'shar: inc.c was damaged during transit (should have been 90 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - incs.c'
- if test -f incs.c; then echo 'shar: not overwriting incs.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > incs.c
- X/*
- X * $Header: incs.c,v 1.5 87/06/03 11:39:50 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: incs.c,v $
- X * Revision 1.5 87/06/03 11:39:50 brandon
- X * Added XRC_NOFLSH so incs() can be used by functions which build temporary
- X * windows; otherwise, the main window might be refresh()ed over the temp
- X * window, destroying it.
- X *
- X * Revision 1.4 87/06/02 18:40:09 brandon
- X * Added XRC_FWDGO: RETURN normally is interpreted as FWD, if XRC_FWDGO then
- X * RETURN is interpreted as GO.
- X *
- X * Revision 1.3 87/06/02 14:22:37 brandon
- X * Added XRC_CHAR to return normal characters; this contradicts the original
- X * reason for incs(), but makes it more useful. This effectively renders
- X * inc() unused; it is retained as a character-input-with-echo primitive.
- X *
- X * Revision 1.2 87/06/02 12:16:24 brandon
- X * Forgot to change shellout() to _inlsusp().
- X *
- X * Revision 1.1 87/06/01 16:48:39 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Input primitive. Get a single input character, accepting status returns
- X * only. This is used when only the control characters are wanted, not any
- X * real input. The argument is an XRC flag, valid only for the duration of
- X * the function.
- X */
- X
- Xint incs(xrc)
- Xint xrc; {
- X int ch;
- X
- X setraw();
- X if ((xrc & XRC_NOFLSH) == 0)
- X (void) refresh();
- X for (;;) {
- X ch = getchar() & 0x7f;
- X switch (ch) {
- X case '\033':
- X case '\005':
- X if (xrc & XRC_GO)
- X return GO;
- X (void) beep();
- X break;
- X case '\t':
- X case '\025':
- X return BACK;
- X case '\n':
- X case '\r':
- X if (xrc & XRC_FWDGO)
- X return GO;
- X /*FALLTHROUGH*/
- X case ' ':
- X return FWD;
- X case '\b':
- X if (xrc & XRC_BKSP)
- X return BKSP;
- X (void) beep();
- X break;
- X case '\006':
- X if (xrc & XRC_CFB)
- X return CFWD;
- X (void) beep();
- X break;
- X case '\002':
- X if (xrc & XRC_CFB)
- X return CBACK;
- X (void) beep();
- X break;
- X case '\026':
- X if (xrc & XRC_LOOK)
- X return LOOK;
- X (void) beep();
- X break;
- X case '\030':
- X (void) move(LINES - 1, 0);
- X (void) clrtoeol();
- X (void) refresh();
- X (void) endwin();
- X exit(0);
- X case '\020':
- X _inlsusp();
- X break;
- X case '\f':
- X case '\022':
- X (void) clearok(curscr);
- X (void) wrefresh(curscr);
- X break;
- X default:
- X if ((xrc & XRC_CHAR) && ch > '!' && ch < '\177')
- X return ch;
- X (void) beep();
- X break;
- X }
- X }
- X}
- ________This_Is_The_END________
- if test `wc -l < incs.c` -ne 111; then
- echo 'shar: incs.c was damaged during transit (should have been 111 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - inl.c'
- if test -f inl.c; then echo 'shar: not overwriting inl.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > inl.c
- X/*
- X * $Header: inl.c,v 1.15 87/06/09 11:37:10 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: inl.c,v $
- X * Revision 1.15 87/06/09 11:37:10 brandon
- X * New interpretation of clrf flag: val 0 = clear if first char typed is text,
- X * val 1 == clear on entry, val 2 = clear never.
- X *
- X * Revision 1.14 87/06/01 16:29:24 brandon
- X * Moved shellout() to shellout.c with a new name, so as not to duplicate code
- X * in inc.c.
- X *
- X * Revision 1.13 87/06/01 15:57:34 brandon
- X * Cleaned up ^X; added underline-disable to ^V.
- X *
- X * Revision 1.12 87/06/01 08:30:14 brandon
- X * Added ^V (view) capability for related records.
- X *
- X * Revision 1.11 87/05/28 14:03:17 brandon
- X * Added ^V (view aka LOOK) for automatic explicit relationship chaining.
- X *
- X * Revision 1.10 87/05/28 13:36:13 brandon
- X * Logic of new-vs.-update and ^M input was wrong.
- X *
- X * Revision 1.9 87/05/26 14:28:44 brandon
- X * Added (void) casts for tty mode changes.
- X *
- X * Revision 1.8 87/05/26 13:31:55 brandon
- X * Added flag so that all updates return action code (*_OK).
- X *
- X * Revision 1.7 87/05/26 11:18:59 brandon
- X * Added clrf flag for update functions.
- X *
- X * Revision 1.6 87/05/12 14:27:04 brandon
- X * fixed final (!) insert bug
- X *
- X * Revision 1.5 87/05/12 11:53:23 brandon
- X * Now keeps original screen contents until the first modifying character is
- X * typed, so the screen result of an initial BACK makes sense.
- X * Changed code to determine whether a key is an action or an entry action
- X * based on whether the buffer is empty or not AND the current cursor position;
- X * this is now roughly compatible with ENTER.
- X *
- X * Revision 1.4 87/05/12 11:38:24 brandon
- X * Fixed job-control terminal settings.
- X * Fixed "open" bug.
- X *
- X * Revision 1.3 87/05/12 11:27:31 brandon
- X * The "insert" and "delete" keys were swapped (!)
- X * The shellout wasn't restoring line mode. (It still doesn't, for job control
- X * shells.)
- X *
- X * Revision 1.2 87/04/29 11:30:42 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X#include <signal.h>
- X
- X/* setxrc() changes this, if nonzero then extended returns are enabled */
- Xint __ext_rcodes = 0;
- X
- X/*
- X * Move to a specified location. Wrap to the next line if necessary.
- X */
- X
- Xstatic void moveto(y, x) {
- X while (x >= COLS) {
- X x -= COLS;
- X if (++y == LINES)
- X y--;
- X }
- X (void) move(y, x);
- X}
- X
- X/*
- X * Check to see if the input buffer is all spaces. If so and the cursor is
- X * at position zero, the action is a no-check (FWD, BACK, or GO) and the
- X * returned buffer will not be processed.
- X */
- X
- Xstatic int allspace(b, l)
- Xregister char *b;
- Xregister int l; {
- X while (l-- > 0)
- X if (*b++ != ' ')
- X return 0;
- X return 1;
- X}
- X
- X/*
- X * Input primitive. Get a line of input. If _sh_up is nonzero, shift to
- X * uppercase. Underline is used (when available) in place of foreground/
- X * background stuff that curses doesn't grok anyway.
- X *
- X * Note that this is FAR smarter than the UNIFY version, including line editing
- X * commands (insert/delete character, cursor motion, etc.). This falls into
- X * the category of ``why curses is better''.
- X *
- X * The `clrf' flag specifies whether the buffer is cleared or not prior to
- X * input. This is used by the USC-specific u* functions (update buffer).
- X * If it is a value of 2, the buffer is never cleared except by ^K; otherwise
- X * if it is 0, it is cleared if the first character typed is a text character.
- X * If it is 1, the buffer is always cleared on entry.
- X */
- X
- Xint inl(buf, len, clrf)
- Xchar *buf;
- Xint len, clrf; {
- X int y, x, cnt, ch, tmp, firsttime;
- X
- X setraw();
- X (void) attron(A_UNDERLINE);
- X if (clrf == 1)
- X cfill(' ', buf, len);
- X getyx(stdscr, y, x);
- X cnt = 0;
- X firsttime = 1;
- X for (;;) {
- X (void) move(y, x);
- X if (!firsttime || clrf != 1) {
- X (void) printw("%.*s", len, buf);
- X moveto(y, x + cnt);
- X }
- X (void) refresh();
- X ch = getchar() & 0x7f;
- X switch (ch) {
- X case '\033':
- X case '\005':
- X if (!(__ext_rcodes & XRC_GO)) {
- X (void) beep();
- X break;
- X }
- X (void) attroff(A_UNDERLINE);
- X return ((__ext_rcodes & XRC_XOK) && (clrf != 1 || !allspace(buf, len) || cnt != 0)? GO_OK: GO);
- X case '\t':
- X case '\025':
- X (void) attroff(A_UNDERLINE);
- X return ((__ext_rcodes & XRC_XOK) && (clrf != 1 || !allspace(buf, len) || cnt != 0)? BACK_OK: BACK);
- X case '\n':
- X case '\r':
- X (void) attroff(A_UNDERLINE);
- X return (clrf == 1 && (allspace(buf, len) && cnt == 0)? FWD: FWD_OK);
- X case '\b':
- X if (cnt == 0)
- X (void) beep();
- X else {
- X for (tmp = --cnt; tmp < len - 1; tmp++)
- X buf[tmp] = buf[tmp + 1];
- X buf[len - 1] = ' ';
- X }
- X break;
- X case '\006':
- X if (++cnt > len)
- X cnt = 0;
- X break;
- X case '\002':
- X if (--cnt < 0)
- X cnt = len;
- X break;
- X case '\001':
- X cnt = 0;
- X break;
- X case '\016':
- X cnt = len;
- X break;
- X case '\017':
- X for (tmp = len - 1; tmp > cnt; tmp--)
- X buf[tmp] = buf[tmp - 1];
- X buf[cnt] = ' ';
- X break;
- X case '\004':
- X for (tmp = cnt; tmp < len - 1; tmp++)
- X buf[tmp] = buf[tmp + 1];
- X buf[len - 1] = ' ';
- X break;
- X case '\026':
- X if (__ext_rcodes & XRC_LOOK) {
- X (void) attroff(A_UNDERLINE);
- X return LOOK;
- X }
- X (void) beep();
- X break;
- X case '\030':
- X (void) move(LINES - 1, 0);
- X (void) clrtoeol();
- X (void) refresh();
- X (void) endwin();
- X exit(0);
- X case '\013':
- X cfill(' ', buf + cnt, len - cnt);
- X break;
- X case '\020':
- X _inlsusp();
- X break;
- X case '\f':
- X case '\022':
- X (void) clearok(curscr);
- X (void) wrefresh(curscr);
- X break;
- X default:
- X if (cnt == len || ch < ' ' || ch == '\177') {
- X (void) beep();
- X break;
- X }
- X if (firsttime && clrf == 0)
- X cfill(' ', buf, len);
- X buf[cnt++] = (_sh_up? toupper(ch): ch);
- X }
- X firsttime = 0;
- X }
- X}
- ________This_Is_The_END________
- if test `wc -l < inl.c` -ne 221; then
- echo 'shar: inl.c was damaged during transit (should have been 221 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - input.c'
- if test -f input.c; then echo 'shar: not overwriting input.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > input.c
- X/*
- X * $Header: input.c,v 1.3 87/04/29 11:44:40 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: input.c,v $
- X * Revision 1.3 87/04/29 11:44:40 brandon
- X * Added _UCF upshifting. See also inbuf.c, xsfldesc.c. (The comment in
- X * inbuf.c is WRONG!)
- X * Also caused error on screen field w/o database field.
- X *
- X * Revision 1.2 87/04/29 11:30:44 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: input() -- Get data from a screen field and store it in
- X * the database.
- X *
- X * DIFFERENCE FROM UNIFY: See gdata().
- X */
- X
- Xinput(sfld) {
- X int rc, ousf;
- X
- X if (sfld < 0 || sfld >= __nsf)
- X xerror(-1, "input", "Invalid screen field %d", sfld);
- X if (__scf[sfld].q_fld == 0)
- X xerror(-2, "input", "Screen field %d has no associated database field", sfld);
- X ousf = _sh_up;
- X _sh_up = __scf[sfld].q_type & _UCF;
- X rc = gdata(__scf[sfld].q_fx, __scf[sfld].q_fy, __scf[sfld].q_fld);
- X _sh_up = ousf;
- X return rc;
- X}
- ________This_Is_The_END________
- if test `wc -l < input.c` -ne 44; then
- echo 'shar: input.c was damaged during transit (should have been 44 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - inscrf.c'
- if test -f inscrf.c; then echo 'shar: not overwriting inscrf.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > inscrf.c
- X/*
- X * $Header: inscrf.c,v 1.7 87/06/01 10:55:37 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: inscrf.c,v $
- X * Revision 1.7 87/06/01 10:55:37 brandon
- X * _sh_up only forced up; left as is if type doesn't have _UCF.
- X *
- X * Revision 1.6 87/06/01 08:30:20 brandon
- X * Added ^V (view) capability for related records.
- X *
- X * Revision 1.5 87/05/22 15:39:06 brandon
- X * whoops! It doesn't help to leave off the "break"'s in a switch().
- X *
- X * Revision 1.4 87/05/12 17:19:19 brandon
- X * Forgot to get rid of _UCF temporarily during type check
- X *
- X * Revision 1.3 87/05/12 17:00:28 brandon
- X * Enabled _UCF flag for type.
- X *
- X * Revision 1.2 87/04/29 11:30:46 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: inscrf() -- Take a type and (character) length, and call the
- X * correct input routine for the type.
- X *
- X * DIFFERENCE FROM UNIFY: In addition to the standard return codes, there are
- X * a number of new ones. If you want to use them, call setxrc() with a non-
- X * zero argument. The new codes are:
- X *
- X * -5 ESC or ^E
- X * -6 ESC or ^E, returns buffer
- X * -7 ^U or TAB, returns buffer
- X *
- X * Also, the following line-editing characters are supported:
- X *
- X * ^H delete last charater
- X * ^F move forward (wraps to beginning)
- X * ^B move backward (wraps to end)
- X * ^A move to start of field
- X * ^N move to end of field
- X * ^O insert a space
- X * ^D delete a character
- X * ^K clear to end of field
- X * ^X exit program
- X * ^R, ^L redraw screen
- X * ^P shell out
- X * ^V view related records
- X *
- X * I would have used ^Z for end-of-field, but I see no reason to get the
- X * people with job control or sxt's upset at me...
- X */
- X
- Xint inscrf(x, y, type, len, buf)
- Xchar *buf; {
- X int rc, oucf;
- X
- X setraw();
- X mv_cur(1, x, y);
- X oucf = _sh_up;
- X if (type & _UCF)
- X _sh_up = type & _UCF;
- X type &= ~_UCF;
- X switch (type) {
- X case INT:
- X rc = ishort(len, (short *) buf);
- X break;
- X case LONG:
- X rc = ilong(len, (long *) buf);
- X break;
- X case AMT:
- X rc = iamt(len, (long *) buf);
- X break;
- X case HAMT:
- X rc = ihamt(len, (double *) buf);
- X break;
- X case STRNG:
- X rc = istr(len, buf);
- X break;
- X case DATE:
- X rc = idate((short *) buf);
- X break;
- X case HR:
- X rc = itime((short *) buf);
- X break;
- X case FLT:
- X rc = iflt(len, (double *) buf);
- X break;
- X default:
- X xerror(-1, "inscrf", "Unknown type %d", type);
- X /*NOTREACHED*/
- X }
- X _sh_up = oucf;
- X return rc;
- X}
- ________This_Is_The_END________
- if test `wc -l < inscrf.c` -ne 107; then
- echo 'shar: inscrf.c was damaged during transit (should have been 107 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - ishort.c'
- if test -f ishort.c; then echo 'shar: not overwriting ishort.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > ishort.c
- X/*
- X * $Header: ishort.c,v 1.6 87/06/09 11:45:35 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: ishort.c,v $
- X * Revision 1.6 87/06/09 11:45:35 brandon
- X * Added code to relocate cursor after conversion error message.
- X *
- X * Revision 1.5 87/06/01 08:30:29 brandon
- X * Added ^V (view) capability for related records.
- X *
- X * Revision 1.4 87/05/26 13:32:29 brandon
- X * Changed for new inl() (forces no-update mode).
- X *
- X * Revision 1.3 87/05/12 12:03:40 brandon
- X * Changed to pass FWD, BACK, GO without checking the data buffer
- X *
- X * Revision 1.2 87/04/29 11:30:48 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Input an item of type (short).
- X */
- X
- Xint ishort(len, buf)
- Xshort *buf; {
- X char ibuf[4];
- X int rc, cnt, sign, y, x;
- X
- X setraw();
- X if (len > 4)
- X len = 4; /* (short)'s are max len = 4 */
- X getyx(stdscr, y, x);
- X for (;;) {
- X (void) move(y, x);
- X if ((rc = inl(ibuf, len, 1)) == BACK || rc == FWD || rc == GO || rc == LOOK)
- X return rc;
- X for (cnt = 0; cnt < len && ibuf[cnt] == ' '; cnt++)
- X ;
- X if (cnt == len) {
- X prtmsg(1, 23, "Invalid number");
- X continue;
- X }
- X *buf = 0;
- X sign = 0;
- X if (ibuf[cnt] == '-') {
- X sign = 1;
- X if (++cnt == len) {
- X prtmsg(1, 23, "Invalid number");
- X continue;
- X }
- X }
- X for (; cnt < len && isdigit(ibuf[cnt]); cnt++) {
- X *buf *= 10;
- X *buf += ibuf[cnt] - '0';
- X }
- X for (; cnt < len && ibuf[cnt] == ' '; cnt++)
- X ;
- X if (cnt == len)
- X break;
- X prtmsg(1, 23, "Invalid number");
- X }
- X if (sign)
- X *buf = - *buf;
- X return rc;
- X}
- ________This_Is_The_END________
- if test `wc -l < ishort.c` -ne 77; then
- echo 'shar: ishort.c was damaged during transit (should have been 77 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - istr.c'
- if test -f istr.c; then echo 'shar: not overwriting istr.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > istr.c
- X/*
- X * $Header: istr.c,v 1.3 87/05/26 13:32:49 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: istr.c,v $
- X * Revision 1.3 87/05/26 13:32:49 brandon
- X * Changed for new inl() (forces no-update mode).
- X *
- X * Revision 1.2 87/04/29 11:30:50 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Get a string. Very easy, since no checking is needed.
- X */
- X
- Xint istr(len, buf)
- Xchar *buf; {
- X setraw();
- X return inl(buf, len, 1);
- X}
- ________This_Is_The_END________
- if test `wc -l < istr.c` -ne 31; then
- echo 'shar: istr.c was damaged during transit (should have been 31 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - itime.c'
- if test -f itime.c; then echo 'shar: not overwriting itime.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > itime.c
- X/*
- X * $Header: itime.c,v 1.7 87/06/09 11:45:37 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: itime.c,v $
- X * Revision 1.7 87/06/09 11:45:37 brandon
- X * Added code to relocate cursor after conversion error message.
- X *
- X * Revision 1.6 87/06/01 08:30:44 brandon
- X * Added ^V (view) capability for related records.
- X *
- X * Revision 1.5 87/05/26 13:32:53 brandon
- X * Changed for new inl() (forces no-update mode).
- X *
- X * Revision 1.4 87/05/12 13:26:31 brandon
- X * Dumb bug in : parsing.
- X *
- X * Revision 1.3 87/05/12 12:04:10 brandon
- X * Changed to pass FWD, BACK, GO without checking the data buffer
- X *
- X * Revision 1.2 87/04/29 11:30:53 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Get a time. H:M only.
- X */
- X
- Xint itime(buf)
- Xshort *buf; {
- X int cnt, rc, hr, min, y, x;
- X char ibuf[5];
- X
- X setraw();
- X getyx(stdscr, y, x);
- X for (;;) {
- X (void) move(y, x);
- X if ((rc = inl(ibuf, 5, 1)) == BACK || rc == FWD || rc == GO || rc == LOOK)
- X return rc;
- X for (cnt = 0; cnt < 5 && ibuf[cnt] == ' '; cnt++)
- X ;
- X if (cnt == 5) {
- X prtmsg(1, 23, "Invalid time");
- X continue;
- X }
- X if (!isdigit(cnt)) {
- X prtmsg(1, 23, "Invalid time");
- X continue;
- X }
- X hr = 0;
- X min = 0;
- X while (cnt < 5 && isdigit(ibuf[cnt])) {
- X hr *= 10;
- X hr += ibuf[cnt++] - '0';
- X }
- X if (cnt > 2 || ibuf[cnt++] != ':') {
- X prtmsg(1, 23, "Invalid time");
- X continue;
- X }
- X if (!isdigit(ibuf[cnt])) {
- X prtmsg(1, 23, "Invalid time");
- X continue;
- X }
- X min = 10 * (ibuf[cnt++] - '0');
- X if (!isdigit(ibuf[cnt])) {
- X prtmsg(1, 23, "Invalid time");
- X continue;
- X }
- X min += ibuf[cnt++] - '0';
- X while (cnt < 5)
- X if (ibuf[cnt++] != ' ') {
- X prtmsg(1, 23, "Invalid time");
- X continue;
- X }
- X if (hr < 23 && min < 59)
- X break;
- X prtmsg(1, 23, "Invalid time");
- X }
- X return rc;
- X}
- ________This_Is_The_END________
- if test `wc -l < itime.c` -ne 90; then
- echo 'shar: itime.c was damaged during transit (should have been 90 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - keybrd.c'
- if test -f keybrd.c; then echo 'shar: not overwriting keybrd.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > keybrd.c
- X/*
- X * $Header: keybrd.c,v 1.2 87/04/29 11:30:55 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: keybrd.c,v $
- X * Revision 1.2 87/04/29 11:30:55 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: keybrd() -- lock or unlock the terminal keyboard
- X *
- X * DIFFERENCE FROM UNIFY: I don't know if UNIFY uses this (it doesn't mention
- X * termcap support for it), but here it's a no-op except for checking fd = 1
- X * as usual.
- X */
- X
- Xvoid keybrd(fd, flg) {
- X if (fd != 1)
- X xerror(-1, "eras_ln", "Multi-terminal operation on fd %d not supported", fd);
- X}
- ________This_Is_The_END________
- if test `wc -l < keybrd.c` -ne 31; then
- echo 'shar: keybrd.c was damaged during transit (should have been 31 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - loadscr.c'
- if test -f loadscr.c; then echo 'shar: not overwriting loadscr.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > loadscr.c
- X/*
- X * $Header: loadscr.c,v 1.8 87/06/11 15:21:36 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: loadscr.c,v $
- X * Revision 1.8 87/06/11 15:21:36 brandon
- X * Wasn't checking the display length against the actual length of fields.
- X *
- X * Revision 1.7 87/05/12 11:22:52 brandon
- X * Forgot to move to the screen field position before underlining!
- X *
- X * Revision 1.6 87/05/11 17:01:36 brandon
- X * dumb bug (sf_type???)
- X *
- X * Revision 1.5 87/05/11 16:54:57 brandon
- X * added code to underline screen fields initially
- X *
- X * Revision 1.4 87/05/11 15:30:09 brandon
- X * chekcs removed, loadscr() works
- X *
- X * Revision 1.3 87/05/11 15:26:34 brandon
- X * added a hook to find a bug in sfield handling
- X *
- X * Revision 1.2 87/04/29 11:30:57 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- Xstruct q *__scf = (struct q *) 0;
- Xint __nsf = 0;
- Xint _sh_up = 0;
- X
- X/*
- X * Display a string, handling ~-escapes and null-terminating.
- X */
- X
- Xstatic void mvspit(y, x, s, l)
- Xchar *s; {
- X int c;
- X
- X#ifdef UNIFY32
- X _sdbrt(); /* get bracket & date information */
- X#endif
- X for (c = l - 1; s[c] == ' '; c--)
- X if (c == 0)
- X return;
- X s[++c] = '\0';
- X (void) move(y, x);
- X for (c = 0; s[c] != '\0'; c++)
- X if (s[c] != '~') {
- X#ifdef UNIFY32
- X if (_ldbrt & UNITED_STATES)
- X (void) addch(s[c]);
- X else
- X switch (s[c]) {
- X case '[':
- X (void) addch('(');
- X break;
- X case '(':
- X (void) addch('[');
- X break;
- X case ')':
- X (void) addch(']');
- X break;
- X case ']':
- X (void) addch(')');
- X break;
- X default:
- X (void) addch(s[c]);
- X }
- X#else
- X (void) addch(s[c]);
- X#endif
- X } else
- X switch (s[++c]) {
- X case 'r':
- X (void) attron(A_REVERSE);
- X break;
- X case 's':
- X (void) attroff(A_REVERSE);
- X break;
- X case 'u':
- X (void) attron(A_UNDERLINE);
- X break;
- X case 'v':
- X (void) attroff(A_UNDERLINE);
- X break;
- X case 'w':
- X (void) attron(A_REVERSE|A_UNDERLINE);
- X break;
- X case 'x':
- X (void) attroff(A_REVERSE|A_UNDERLINE);
- X break;
- X case '\0':
- X c--;
- X break;
- X default:
- X break;
- X }
- X}
- X
- X/*
- X * ENTRY POINT: loadscr() -- Load and display a screen .q file.
- X *
- X * DIFFERENCE FROM UNIFY: None.
- X */
- X
- Xvoid loadscr(s)
- Xchar *s; {
- X FLDESC fd;
- X FILE *fp;
- X char *sf;
- X int cnt;
- X
- X setraw();
- X if (__scf != (struct q *) 0)
- X free((char *) __scf);
- X __nsf = 0;
- X if ((sf = dbfile(s, "q")) == (char *) 0)
- X xerror(-1, "loadscr", "Cannot find screen %s", s);
- X if ((fp = fopen(sf, "r")) == (FILE *) 0)
- X xerror(-2, "loadscr", "Cannot open screen %s", s);
- X (void) fseek(fp, 0L, 2);
- X if (ftell(fp) == 0L)
- X return; /* empty??? */
- X if ((__scf = (struct q *) malloc((unsigned int) (__nsf = (int) ftell(fp)))) == (struct q *) 0)
- X xerror(-3, "loadscr", "Out of memory");
- X rewind(fp);
- X __nsf /= sizeof *__scf;
- X if (fread((char *) __scf, (int) sizeof *__scf, __nsf, fp) != __nsf)
- X xerror(-4, "loadscr", "Read error on screen %s", s);
- X for (cnt = 0; cnt < __nsf; cnt++) {
- X if (__scf[cnt].q_fld == 0)
- X continue;
- X if (!fldesc(__scf[cnt].q_fld, &fd))
- X xerror(-5, "loadscr", "Invalid database field %.*s", sizeof __scf[cnt].q_dbfld, __scf[cnt].q_dbfld);
- X if (fd.f_typ != __scf[cnt].q_type)
- X xerror(-6, "loadscr", "Database field %.*s type has changed -- recompile screen", sizeof __scf[cnt].q_dbfld, __scf[cnt].q_dbfld);
- X if (fd.f_len != xsize(__scf[cnt].q_type, __scf[cnt].q_len))
- X xerror(-7, "loadscr", "Database field %.*s length has changed -- recompile screen", sizeof __scf[cnt].q_dbfld, __scf[cnt].q_dbfld);
- X }
- X (void) erase();
- X for (cnt = 0; cnt < __nsf; cnt++) {
- X mvspit(__scf[cnt].q_py, __scf[cnt].q_px, __scf[cnt].q_prmp, sizeof __scf[cnt].q_prmp);
- X if (__scf[cnt].q_type != 0) {
- X (void) move(__scf[cnt].q_fy, __scf[cnt].q_fx);
- X (void) attron(A_UNDERLINE);
- X (void) printw("%*s", xsize(__scf[cnt].q_type, __scf[cnt].q_len), "");
- X (void) attroff(A_UNDERLINE);
- X }
- X }
- X}
- ________This_Is_The_END________
- if test `wc -l < loadscr.c` -ne 161; then
- echo 'shar: loadscr.c was damaged during transit (should have been 161 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - mv_cur.c'
- if test -f mv_cur.c; then echo 'shar: not overwriting mv_cur.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > mv_cur.c
- X/*
- X * $Header: mv_cur.c,v 1.2 87/04/29 11:31:01 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: mv_cur.c,v $
- X * Revision 1.2 87/04/29 11:31:01 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: mv_cur() -- move cursor on a given fd
- X *
- X * DIFFERENCE FROM UNIFY: If fd isn't 1, you get a run-time error; use the
- X * old library if you want funny terminal stuff, or else hook into terminfo-
- X * based curses and call newterm(). I daresay nobody uses the fd hook anyway.
- X */
- X
- Xvoid mv_cur(fd, x, y) {
- X if (fd != 1)
- X xerror(-1, "eras_ln", "Multi-terminal operation on fd %d not supported", fd);
- X if (move(y, x) == ERR)
- X xerror(-1, "mv_cur", "(%d, %d) cursor position is off the screen", x, y);
- X}
- ________This_Is_The_END________
- if test `wc -l < mv_cur.c` -ne 33; then
- echo 'shar: mv_cur.c was damaged during transit (should have been 33 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - outbuf.c'
- if test -f outbuf.c; then echo 'shar: not overwriting outbuf.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > outbuf.c
- X/*
- X * $Header: outbuf.c,v 1.1 87/04/29 14:17:40 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: outbuf.c,v $
- X * Revision 1.1 87/04/29 14:17:40 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: outbuf() -- Display data from a buffer to a screen field.
- X *
- X * DIFFERENCE FROM UNIFY: None, since screen fields retain decimal info.
- X */
- X
- Xvoid outbuf(sfld, buf)
- Xchar *buf; {
- X int len;
- X
- X if (sfld < 0 || sfld >= __nsf)
- X xerror(-1, "outbuf", "Unknown screen field %d", sfld);
- X len = __scf[sfld].q_len;
- X switch (__scf[sfld].q_type) {
- X case INT:
- X case LONG:
- X case STRNG:
- X break;
- X case AMT:
- X case HAMT:
- X len += 3;
- X break;
- X case DATE:
- X len = 8;
- X break;
- X case HR:
- X len = 5;
- X break;
- X case FLT:
- X (void) move(__scf[sfld].q_fy, __scf[sfld].q_fx);
- X pflt(__scf[sfld].q_len / 10, (double *) buf, __scf[sfld].q_len % 10);
- X return;
- X }
- X outscrf(__scf[sfld].q_fx, __scf[sfld].q_fy, __scf[sfld].q_type & ~_UCF, len, buf);
- X}
- ________This_Is_The_END________
- if test `wc -l < outbuf.c` -ne 54; then
- echo 'shar: outbuf.c was damaged during transit (should have been 54 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - output.c'
- if test -f output.c; then echo 'shar: not overwriting output.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > output.c
- X/*
- X * $Header: output.c,v 1.1 87/04/29 14:23:38 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: output.c,v $
- X * Revision 1.1 87/04/29 14:23:38 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: output() -- Output data from the database to a screen field
- X *
- X * DIFFERENCE FROM UNIFY: See outbuf() and pflt().
- X */
- X
- Xvoid output(sfld) {
- X int len;
- X char buf[256];
- X
- X if (sfld < 0 || sfld >= __nsf)
- X xerror(-1, "output", "Unknown screen field %d", sfld);
- X if (__scf[sfld].q_fld == 0)
- X xerror(-2, "output", "Screen field %d has no associated database field", sfld);
- X if (gfield(__scf[sfld].q_fld, buf) != 0)
- X xerror(-3, "output", "Read access for field %d denied", __scf[sfld].q_fld);
- X len = __scf[sfld].q_len;
- X switch (__scf[sfld].q_type) {
- X case INT:
- X case LONG:
- X case STRNG:
- X break;
- X case AMT:
- X case HAMT:
- X len += 3;
- X break;
- X case DATE:
- X len = 8;
- X break;
- X case HR:
- X len = 5;
- X break;
- X case FLT:
- X (void) move(__scf[sfld].q_fy, __scf[sfld].q_fx);
- X pflt(__scf[sfld].q_len / 10, (double *) buf, __scf[sfld].q_len % 10);
- X return;
- X }
- X outscrf(__scf[sfld].q_fx, __scf[sfld].q_fy, __scf[sfld].q_type & ~_UCF, len, buf);
- X}
- ________This_Is_The_END________
- if test `wc -l < output.c` -ne 58; then
- echo 'shar: output.c was damaged during transit (should have been 58 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - outscrf.c'
- if test -f outscrf.c; then echo 'shar: not overwriting outscrf.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > outscrf.c
- X/*
- X * $Header: outscrf.c,v 1.4 87/05/22 18:01:22 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: outscrf.c,v $
- X * Revision 1.4 87/05/22 18:01:22 brandon
- X * another dumb bug (`(vid)'?)
- X *
- X * Revision 1.3 87/05/22 17:58:48 brandon
- X * Forgot to move() to the right place before doing output! :-(
- X *
- X * Revision 1.2 87/04/29 14:43:24 brandon
- X * Added cast to (double *) for pflt() call
- X *
- X * Revision 1.1 87/04/29 13:18:44 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: outscrf() -- Display a value on the screen
- X *
- X * DIFFERENCE FROM UNIFY: Screen fields with type FLT are handled specially.
- X * See pflt.c for the reason; quick summary is that Unify Corp. blew it.
- X */
- X
- Xvoid outscrf(x, y, type, len, buf)
- Xchar *buf; {
- X (void) setraw();
- X (void) move(y, x);
- X switch (type) {
- X case INT:
- X pshort(len, (short *) buf);
- X break;
- X case LONG:
- X plong(len, (long *) buf);
- X break;
- X case AMT:
- X pamt(len, (long *) buf);
- X break;
- X case HAMT:
- X phamt(len, (double *) buf);
- X break;
- X case STRNG:
- X pstr(len, buf);
- X break;
- X case DATE:
- X pdate((short *) buf);
- X break;
- X case HR:
- X ptime((short *) buf);
- X break;
- X case FLT:
- X pflt(len, (double *) buf, -1); /* use %g, we don't know the #dec */
- X break;
- X default:
- X xerror(-1, "outscrf", "Unknown type %d", type);
- X }
- X}
- ________This_Is_The_END________
- if test `wc -l < outscrf.c` -ne 68; then
- echo 'shar: outscrf.c was damaged during transit (should have been 68 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - pageout.c'
- if test -f pageout.c; then echo 'shar: not overwriting pageout.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > pageout.c
- X/*
- X * $Header: pageout.c,v 1.1 87/04/29 17:04:47 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: pageout.c,v $
- X * Revision 1.1 87/04/29 17:04:47 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * A simple pager, along the lines of that built in to SSQL and the menu
- X * manager.
- X */
- X
- Xvoid pageout(fp, title)
- XFILE *fp;
- Xchar *title; {
- X int ch, col, line;
- X
- X (void) move(2, 0);
- X (void) attron(A_REVERSE);
- X (void) addstr(title);
- X (void) attroff(A_REVERSE);
- X (void) addch('\n');
- X line = 3;
- X col = 0;
- X while ((ch = getc(fp)) != EOF) {
- X (void) move(line, col);
- X switch (ch) {
- X case '\n':
- X (void) attroff(A_UNDERLINE);
- X (void) addch('\n');
- X if (++line == LINES - 1) {
- X (void) attron(A_REVERSE);
- X (void) addstr(" More? Press any key to continue or Q to quit. ");
- X (void) attroff(A_REVERSE);
- X (void) refresh();
- X switch (getchar() & 0x7f) {
- X case 'q':
- X case 'Q':
- X line = -1;
- X break;
- X default:
- X line = 3;
- X break;
- X }
- X (void) addch('\r');
- X (void) clrtoeol();
- X }
- X break;
- X case '\b':
- X (void) addch('\b');
- X (void) attron(A_UNDERLINE);
- X if (col > 0)
- X col--;
- X continue;
- X case '\t':
- X do {
- X (void) addch(' ');
- X (void) attroff(A_UNDERLINE);
- X if (++col == COLS) {
- X col = 0;
- X ++line;
- X break;
- X }
- X } while (col % 8 != 0);
- X if (line == LINES - 1) {
- X (void) attron(A_REVERSE);
- X (void) addstr(" More? Press any key to continue or Q to quit. ");
- X (void) attroff(A_REVERSE);
- X (void) refresh();
- X switch (getchar() & 0x7f) {
- X case 'q':
- X case 'Q':
- X line = -1;
- X break;
- X default:
- X line = 3;
- X break;
- X }
- X (void) addch('\r');
- X (void) clrtoeol();
- X }
- X break;
- X case '\r':
- X col = 0;
- X (void) addch('\r');
- X (void) attroff(A_UNDERLINE);
- X break;
- X default:
- X if (ch < ' ' || ch > '~')
- X ch = ' ';
- X (void) addch(ch);
- X (void) attroff(A_UNDERLINE);
- X if (++col < COLS)
- X break;
- X col = 0;
- X if (++line == LINES - 1) {
- X (void) attron(A_REVERSE);
- X (void) addstr(" More? Press any key to continue or Q to quit. ");
- X (void) attroff(A_REVERSE);
- X (void) refresh();
- X switch (getchar() & 0x7f) {
- X case 'q':
- X case 'Q':
- X line = -1;
- X break;
- X default:
- X line = 3;
- X break;
- X }
- X (void) addch('\r');
- X (void) clrtoeol();
- X }
- X break;
- X }
- X if (line == -1)
- X break;
- X }
- X if (line == -1 || (line == 3 && col == 0))
- X return;
- X prtmsg(1, 23, "Completed. Press RETURN to continue");
- X}
- ________This_Is_The_END________
- if test `wc -l < pageout.c` -ne 133; then
- echo 'shar: pageout.c was damaged during transit (should have been 133 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - pamt.c'
- if test -f pamt.c; then echo 'shar: not overwriting pamt.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > pamt.c
- X/*
- X * $Header: pamt.c,v 1.1 87/04/29 12:18:40 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: pamt.c,v $
- X * Revision 1.1 87/04/29 12:18:40 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Display a value of type AMT.
- X */
- X
- Xvoid pamt(len, buf)
- Xlong *buf; {
- X (void) setraw();
- X if (len < 4)
- X return;
- X (void) attron(A_UNDERLINE);
- X (void) printw("%*ld.%02d", len - 3, *buf / 100L, *buf % 100L);
- X (void) attroff(A_UNDERLINE);
- X}
- ________This_Is_The_END________
- if test `wc -l < pamt.c` -ne 32; then
- echo 'shar: pamt.c was damaged during transit (should have been 32 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - pdata.c'
- if test -f pdata.c; then echo 'shar: not overwriting pdata.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > pdata.c
- X/*
- X * $Header: pdata.c,v 1.1 87/04/29 13:51:45 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: pdata.c,v $
- X * Revision 1.1 87/04/29 13:51:45 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: pdata() -- Display data from database fields
- X *
- X * DIFFERENCE FROM UNIFY: FLT is FUBAR; see pflt.c.
- X */
- X
- Xvoid pdata(x, y, fld) {
- X char fbuf[256];
- X FLDESC fd;
- X
- X if (!fldesc(fld, &fd))
- X xerror(-1, "pdata", "Unknown database field %d", fld);
- X if (fd.f_typ == COMB)
- X xerror(-2, "pdata", "COMB field %d illegal", fld);
- X if (gfield(fld, fbuf) != 0)
- X xerror(-3, "pdata", "Read access for field %d denied", fld);
- X outscrf(x, y, fd.f_typ, fd.f_len, fbuf);
- X}
- ________This_Is_The_END________
- if test `wc -l < pdata.c` -ne 37; then
- echo 'shar: pdata.c was damaged during transit (should have been 37 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - pdate.c'
- if test -f pdate.c; then echo 'shar: not overwriting pdate.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > pdate.c
- X/*
- X * $Header: pdate.c,v 1.1 87/04/29 12:18:30 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: pdate.c,v $
- X * Revision 1.1 87/04/29 12:18:30 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Display a value of type DATE. Under UNIFY 3.2, this is easier...
- X */
- X
- X#ifdef UNIFY32
- X
- Xvoid pdate(buf)
- Xshort *buf; {
- X char dbuf[8];
- X
- X (void) setraw();
- X (void) attron(A_UNDERLINE);
- X (void) dspdt(*buf, dbuf); /* handles DATETP automatically */
- X (void) printw("%.8s", dbuf);
- X (void) attroff(A_UNDERLINE);
- X}
- X
- X#else
- X
- Xvoid pdate(buf)
- Xshort *buf; {
- X int date[3];
- X
- X (void) setraw();
- X (void) attron(A_UNDERLINE);
- X if (*buf == NULLDATE)
- X (void) addstr("**/**/**");
- X else {
- X kdate(*buf, date);
- X (void) printw("%02d/%02d/%02d", date[MONTH], date[DAY], date[YEAR]);
- X }
- X (void) attroff(A_UNDERLINE);
- X}
- ________This_Is_The_END________
- if test `wc -l < pdate.c` -ne 52; then
- echo 'shar: pdate.c was damaged during transit (should have been 52 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - pflt.c'
- if test -f pflt.c; then echo 'shar: not overwriting pflt.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > pflt.c
- X/*
- X * $Header: pflt.c,v 1.2 87/04/29 14:41:32 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: pflt.c,v $
- X * Revision 1.2 87/04/29 14:41:32 brandon
- X * Forgot to declare pflt() as (void)!
- X *
- X * Revision 1.1 87/04/29 12:36:23 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Display a value of type FLT. Note that there is a problem here -- screen
- X * fields come with # of decimals, database fields and outscrf() specs do not.
- X * This problem persists and I don't know what, really, to do about it in the
- X * case of database fields. Screen fields get their specified decimals,
- X * however, and outscrf() uses %g to avoid the issue entirely. So dbfields
- X * use outscrf() and you have to accept the loss.
- X *
- X * This is a botch. UNIFY Corporation, PLEASE FIX THIS!!! I don't like the
- X * loss of this data and I don't like violating license agreements to dig it
- X * out of the guts of UNITRIEVE!
- X */
- X
- Xvoid pflt(len, buf, ndec)
- Xdouble *buf; {
- X (void) setraw();
- X (void) attron(A_UNDERLINE);
- X if (ndec == -1) /* unknown decimals */
- X (void) printw("%*g", len, *buf);
- X else
- X (void) printw("%*.*f", len, ndec, *buf);
- X (void) attroff(A_UNDERLINE);
- X}
- ________This_Is_The_END________
- if test `wc -l < pflt.c` -ne 45; then
- echo 'shar: pflt.c was damaged during transit (should have been 45 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - pflush.c'
- if test -f pflush.c; then echo 'shar: not overwriting pflush.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > pflush.c
- X/*
- X * $Header: pflush.c,v 1.1 87/06/01 15:32:07 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: pflush.c,v $
- X * Revision 1.1 87/06/01 15:32:07 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * The pflush() function does a refresh() without having to include the
- X * curses header file in a user program not otherwise using curses.
- X */
- X
- Xvoid pflush() {
- X (void) refresh();
- X}
- ________This_Is_The_END________
- if test `wc -l < pflush.c` -ne 27; then
- echo 'shar: pflush.c was damaged during transit (should have been 27 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - phamt.c'
- if test -f phamt.c; then echo 'shar: not overwriting phamt.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > phamt.c
- X/*
- X * $Header: phamt.c,v 1.1 87/04/29 12:35:58 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: phamt.c,v $
- X * Revision 1.1 87/04/29 12:35:58 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Print a value of type HAMT.
- X */
- X
- Xvoid phamt(len, buf)
- Xdouble *buf; {
- X (void) setraw();
- X (void) attron(A_UNDERLINE);
- X (void) printw("%*.2f", len, *buf / 100.0);
- X (void) attroff(A_UNDERLINE);
- X}
- ________This_Is_The_END________
- if test `wc -l < phamt.c` -ne 30; then
- echo 'shar: phamt.c was damaged during transit (should have been 30 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - plong.c'
- if test -f plong.c; then echo 'shar: not overwriting plong.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > plong.c
- X/*
- X * $Header: plong.c,v 1.1 87/04/29 12:47:21 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: plong.c,v $
- X * Revision 1.1 87/04/29 12:47:21 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Display a value of type LONG.
- X */
- X
- Xvoid plong(len, buf)
- Xlong *buf; {
- X (void) setraw();
- X (void) attron(A_UNDERLINE);
- X (void) printw("%*ld", len, *buf);
- X (void) attroff(A_UNDERLINE);
- X}
- ________This_Is_The_END________
- if test `wc -l < plong.c` -ne 30; then
- echo 'shar: plong.c was damaged during transit (should have been 30 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - priamd.c'
- if test -f priamd.c; then echo 'shar: not overwriting priamd.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > priamd.c
- X/*
- X * $Header: priamd.c,v 1.4 87/04/29 16:02:38 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: priamd.c,v $
- X * Revision 1.4 87/04/29 16:02:38 brandon
- X * Added a (void) cast to mvaddstr().
- X *
- X * Revision 1.3 87/04/29 15:56:10 brandon
- X * Added $UUACL handler
- X *
- X * Revision 1.2 87/04/29 11:31:08 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X#include <ctype.h>
- X
- Xextern int logacl; /* access level, set from sysrecev */
- X
- X/*
- X * ENTRY POINT: priamd() -- prompt for operational mode
- X *
- X * DIFFERENCE FROM UNIFY: We no longer wait for a newline. Also, the blocky
- X * bleechy "[I]NQUIRE" type stuff is now "Inquire" which looks much nicer.
- X */
- X
- Xpriamd(line) {
- X char cmdline[80], cmd[6];
- X char ch;
- X static int uuacl = -1;
- X
- X (void) mvaddstr(line, 1, " ");
- X if (uuacl == -1) {
- X char *ep;
- X
- X if (logacl < 0 || logacl > 15)
- X logacl = INQUIRE;
- X if ((ep = getenv("UUACL")) == (char *) 0)
- X uuacl = logacl;
- X else if ((uuacl = atoi(ep)) <= 0 || uuacl > 15)
- X uuacl = logacl;
- X logacl = uuacl;
- X }
- X if (logacl == 0)
- X return BACK;
- X cmdline[0] = '\0';
- X cmd[0] = '\0';
- X if (logacl & INQUIRE) {
- X (void) strcat(cmdline, "Inquire");
- X (void) strcat(cmd, "I");
- X }
- X if (logacl & ADD) {
- X if (cmdline[0] != '\0')
- X (void) strcat(cmdline, ", ");
- X (void) strcat(cmdline, "Add");
- X (void) strcat(cmd, "A");
- X }
- X if (logacl & MODIFY) {
- X if (cmdline[0] != '\0')
- X (void) strcat(cmdline, ", ");
- X (void) strcat(cmdline, "Modify");
- X (void) strcat(cmd, "M");
- X }
- X if (logacl & DELETE) {
- X if (cmdline[0] != '\0')
- X (void) strcat(cmdline, ", ");
- X (void) strcat(cmdline, "Delete");
- X (void) strcat(cmd, "D");
- X }
- X (void) strcat(cmdline, "? ");
- X (void) mvaddstr(22, 1, cmdline);
- X for (;; (void) beep()) {
- X ch = toupper(getchar() & 0x7f);
- X if (ch == '\0')
- X continue;
- X if (ch == '\t' || ch == '\025') {
- X (void) addch('\r');
- X (void) clrtoeol();
- X return BACK;
- X }
- X if (strchr(cmd, ch) != (char *) 0)
- X break;
- X }
- X (void) addch('\r');
- X (void) clrtoeol();
- X switch (ch) {
- X case 'I':
- X (void) mvaddstr(line, 1, "Inquire mode");
- X return 0;
- X case 'A':
- X (void) mvaddstr(line, 1, "Add mode");
- X return 1;
- X case 'M':
- X (void) mvaddstr(line, 1, "Modify mode");
- X return 2;
- X case 'D':
- X (void) mvaddstr(line, 1, "Delete mode");
- X return 3;
- X }
- X xerror(-1, "priamd", "Illegal internal state %c", ch);
- X /*NOTREACHED*/
- X}
- ________This_Is_The_END________
- if test `wc -l < priamd.c` -ne 111; then
- echo 'shar: priamd.c was damaged during transit (should have been 111 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - prmp.c'
- if test -f prmp.c; then echo 'shar: not overwriting prmp.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > prmp.c
- X/*
- X * $Header: prmp.c,v 1.2 87/04/29 11:31:10 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: prmp.c,v $
- X * Revision 1.2 87/04/29 11:31:10 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: prmp() -- Display a string
- X *
- X * DIFFERENCE FROM UNIFY: Rather than dim/normal, uses regular output vs.
- X * data fields underlined (if supported).
- X */
- X
- Xvoid prmp(x, y, str)
- Xchar *str; {
- X (void) mvaddstr(y, x, str);
- X}
- ________This_Is_The_END________
- if test `wc -l < prmp.c` -ne 30; then
- echo 'shar: prmp.c was damaged during transit (should have been 30 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - prmpf.c'
- if test -f prmpf.c; then echo 'shar: not overwriting prmpf.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > prmpf.c
- X/*
- X * $Header: prmpf.c,v 1.2 87/04/29 11:31:12 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: prmpf.c,v $
- X * Revision 1.2 87/04/29 11:31:12 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: prmpf() -- Display a string in the foreground
- X *
- X * DIFFERENCE FROM UNIFY: Rather than dim/normal, uses regular output vs.
- X * data fields underlined (if supported). Note that cleancrt() won't undo
- X * these, unfortunately.
- X */
- X
- Xvoid prmpf(x, y, str)
- Xchar *str; {
- X (void) attron(A_UNDERLINE);
- X (void) mvaddstr(y, x, str);
- X (void) attroff(A_UNDERLINE);
- X}
- ________This_Is_The_END________
- if test `wc -l < prmpf.c` -ne 33; then
- echo 'shar: prmpf.c was damaged during transit (should have been 33 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - prmprv.c'
- if test -f prmprv.c; then echo 'shar: not overwriting prmprv.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > prmprv.c
- X/*
- X * $Header: prmprv.c,v 1.2 87/04/29 11:31:14 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: prmprv.c,v $
- X * Revision 1.2 87/04/29 11:31:14 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: prmprv() -- Display a string in reverse video
- X *
- X * DIFFERENCE FROM UNIFY: None (!)
- X */
- X
- Xvoid prmprv(x, y, str)
- Xchar *str; {
- X (void) attron(A_REVERSE);
- X (void) mvaddstr(y, x, str);
- X (void) attroff(A_REVERSE);
- X}
- ________This_Is_The_END________
- if test `wc -l < prmprv.c` -ne 31; then
- echo 'shar: prmprv.c was damaged during transit (should have been 31 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - prtmsg.c'
- if test -f prtmsg.c; then echo 'shar: not overwriting prtmsg.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > prtmsg.c
- X/*
- X * $Header: prtmsg.c,v 1.2 87/04/29 11:31:16 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: prtmsg.c,v $
- X * Revision 1.2 87/04/29 11:31:16 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: prtmsg() -- Spit out a message in reverse video and wait for
- X * a keypress.
- X *
- X * DIFFERENCE FROM UNIFY: Typeahead is discarded. This prevents the problems
- X * we have with people typing faster than they are thinking. :-)
- X */
- X
- Xvoid prtmsg(x, y, str)
- Xchar *str; {
- X setraw();
- X (void) flushinp();
- X (void) attrset(A_REVERSE);
- X (void) mvprintw(y, x, " %s -> -> ", str);
- X (void) attrset(0);
- X (void) refresh();
- X (void) getchar();
- X (void) move(y, x);
- X (void) clrtoeol();
- X (void) refresh(); /* so it disappears immediately */
- X}
- ________This_Is_The_END________
- if test `wc -l < prtmsg.c` -ne 40; then
- echo 'shar: prtmsg.c was damaged during transit (should have been 40 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - pshort.c'
- if test -f pshort.c; then echo 'shar: not overwriting pshort.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > pshort.c
- X/*
- X * $Header: pshort.c,v 1.1 87/04/29 12:47:33 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: pshort.c,v $
- X * Revision 1.1 87/04/29 12:47:33 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Display a value of type INT.
- X */
- X
- Xvoid pshort(len, buf)
- Xshort *buf; {
- X (void) setraw();
- X (void) attron(A_UNDERLINE);
- X (void) printw("%*d", len, *buf);
- X (void) attroff(A_UNDERLINE);
- X}
- ________This_Is_The_END________
- if test `wc -l < pshort.c` -ne 30; then
- echo 'shar: pshort.c was damaged during transit (should have been 30 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - pstr.c'
- if test -f pstr.c; then echo 'shar: not overwriting pstr.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > pstr.c
- X/*
- X * $Header: pstr.c,v 1.3 87/06/03 14:05:11 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: pstr.c,v $
- X * Revision 1.3 87/06/03 14:05:11 brandon
- X * TRY qmove(), DUMMY! :-)
- X *
- X * Revision 1.2 87/06/03 13:51:32 brandon
- X * Added workaround for UNITRIEVE nulls misfeature.
- X *
- X * Revision 1.1 87/04/29 12:47:40 brandon
- X * Initial revision
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * Display a value of type STRNG. This would be simple if not for the penchant
- X * of UNITRIEVE to initialize STRNG fields to nulls....
- X */
- X
- Xvoid pstr(len, buf)
- Xchar *buf; {
- X char nulls[256];
- X
- X cfill(0, nulls, len);
- X if (ivcmp(buf, nulls, len))
- X cfill(' ', nulls, len);
- X else
- X qmove(buf, nulls, len);
- X (void) setraw();
- X (void) attron(A_UNDERLINE);
- X (void) printw("%.*s", len, nulls);
- X (void) attroff(A_UNDERLINE);
- X}
- ________This_Is_The_END________
- if test `wc -l < pstr.c` -ne 44; then
- echo 'shar: pstr.c was damaged during transit (should have been 44 bytes)'
- fi
- fi ; : end of overwriting check
- echo 'x - ptct_crt.c'
- if test -f ptct_crt.c; then echo 'shar: not overwriting ptct_crt.c'; else
- sed 's/^X//' << '________This_Is_The_END________' > ptct_crt.c
- X/*
- X * $Header: ptct_crt.c,v 1.2 87/04/29 11:31:17 brandon Exp $
- X *
- X * ``USC'' -- UNIFY(r) Screens using Curses
- X * UNIFY(r) is a registered trademark of Unify Corporation.
- X *
- X * THIS PROGRAM IS NOT BASED ON COPYRIGHTED CODE OF UNIFY CORPORATION, AND
- X * IS HEREBY PLACED IN THE PUBLIC DOMAIN.
- X *
- X * $Log: ptct_crt.c,v $
- X * Revision 1.2 87/04/29 11:31:17 brandon
- X * Added RCS header information
- X *
- X */
- X
- X/*LINTLIBRARY*/
- X
- X#include "usc.h"
- X
- X/*
- X * ENTRY POINT: ptct_crt() -- turn on terminal write protection
- X *
- X * DIFFERENCE FROM UNIFY: All we do is check fd == 1, since curses handles the
- X * screen itself.
- X */
- X
- Xvoid ptct_crt(fd, flg) {
- X if (fd != 1)
- X xerror(-1, "ptct_crt", "Multi-terminal operation on fd %d not supported", fd);
- X}
- ________This_Is_The_END________
- if test `wc -l < ptct_crt.c` -ne 30; then
- echo 'shar: ptct_crt.c was damaged during transit (should have been 30 bytes)'
- fi
- fi ; : end of overwriting check
- exit 0
-