home *** CD-ROM | disk | FTP | other *** search
- From: pjc@pcbox.UUCP (Paul J. Condie)
- Newsgroups: alt.sources
- Subject: menu(1) part 14 of 14
- Message-ID: <448@pcbox.UUCP>
- Date: 26 Dec 90 20:17:44 GMT
-
-
- #!/bin/sh
- # this is part 14 of a multipart archive
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file utilities.d/msgbox.d/msgbox.c continued
- #
- CurArch=14
- if test ! -r s2_seq_.tmp
- then echo "Please unpack part 1 first!"
- exit 1; fi
- ( read Scheck
- if test "$Scheck" != $CurArch
- then echo "Please unpack part $Scheck next!"
- exit 1;
- else exit 0; fi
- ) < s2_seq_.tmp || exit 1
- echo "x - Continuing file utilities.d/msgbox.d/msgbox.c"
- sed 's/^X//' << 'SHAR_EOF' >> utilities.d/msgbox.d/msgbox.c
- X#define ARG_COUNT_ERR 1 /* improper argc value in main */
- X#define MSG_LEN_ERR 2 /* argv[2] message is out of range (1 - 78 chars) */
- X#define STANDOUT 2 /* drawbox() needs this for border attribute. */
- X
- X
- Xmain(argc, argv)
- Xint argc;
- Xchar *argv[];
- X{
- X char msg[78]; /* a message gotten from argv[2] or error msg */
- X
- X int BoxColumns, /* total columns in box, calculated */
- X BoxStartCol, /* starting left most column of box, calculated */
- X BoxTop, /* starting top most row of box, from argv[1] */
- X ErrStatus; /* values: NO_ERR, ARG_COUNT_ERR, MSG_LEN_ERR */
- X
- X WINDOW *MsgWind; /* The mesage box itself */
- X
- X /* derive the box's top row value from argv[1] via atoi() */
- X BoxTop = atoi(argv[2]);
- X
- X /* if error in argv[2], use 0 as BoxTop value */
- X if (BoxTop > MAX_ROW || BoxTop < 1) {
- X BoxTop=0;
- X }
- X
- X /* check for proper arg count and proper msg length; If in error, form msg
- X * as an error message; if no error, use argv[2] as msg.
- X */
- X if (argc < 2 || argc > 3) {
- X ErrStatus=ARG_COUNT_ERR;
- X } else {
- X /* check the string length of the message */
- X if (strlen(argv[1]) && strlen(argv[1]) < 79 ) {
- X ErrStatus=NO_ERR;
- X } else {
- X ErrStatus=MSG_LEN_ERR;
- X }
- X }
- X
- X
- X /* if no errors were found, use argv[2] as msg, else use a USEAGE message */
- X if (ErrStatus == NO_ERR) {
- X strcpy(msg, argv[1]);
- X } else {
- X sprintf(msg,
- X " USAGE: %s \"Quote mark delimited message (1-78 chars)\" [TopRow] ",
- X argv[0]);
- X }
- X
- X BoxColumns=strlen(msg) + 2; /* size box on msg */
- X BoxStartCol=(80 - BoxColumns)/2; /* center window horizontally */
- X
- X
- X initscr();
- X
- X
- X /* Create a new window to display a message to the user */
- X MsgWind=newwin(BOX_ROWS, BoxColumns, BoxTop, BoxStartCol);
- X drawbox(MsgWind, 1, 1, BOX_ROWS, BoxColumns, STANDOUT, STANDOUT, 0, 0);
- X mvwaddstr(MsgWind, 2, 1, msg);
- X wrefresh(MsgWind);
- X
- X endwin();
- X
- X /* give humans time to view usage error message */
- X if (ErrStatus != NO_ERR)
- X sleep(5);
- X
- X exit(ErrStatus);
- X
- X} /* end main */
- SHAR_EOF
- echo "File utilities.d/msgbox.d/msgbox.c is complete"
- chmod 0644 utilities.d/msgbox.d/msgbox.c || echo "restore of utilities.d/msgbox.d/msgbox.c fails"
- echo "x - extracting utilities.d/MenuMsg.d/MenuMsg.1 (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/MenuMsg.d/MenuMsg.1 &&
- X. \ %W% DeltaDate %G% ExtrDate %H%
- X.po 6
- X.TH MENUMSG 1 "" "Menu Utility"
- X
- X.SH \s9NAME\s0
- XMenuMsg -\ writes a message to a menu screen
- X
- X.SH SYNOPSIS
- X.B MenuMsg [ DONT_CLEAR ] row col message
- X
- X.SH DESCRIPTION
- X.B MenuMsg
- Xis designed to be a utility program to be used in conjunction with the menu(1)
- Xprogram. This can be used to display a message to a menu screen without
- Xmessing up the screen. The [ DONT_CLEAR ] option causes MenuMsg not to
- Xclear the line before displaying the message.
- X
- X
- X.SH EXAMPLE
- XTo print a message to the message row:
- X.nf
- X
- X MenuMsg `tput lines` 0 "This is a message."
- X.fi
- X
- X.SH AUTHOR
- XPaul J. Condie 7/90
- X.br
- X{att,bellcore,sun,ames,pyramid}!pacbell!pcbox!pjc
- X
- X.SH SEE ALSO
- Xmenu(1).
- SHAR_EOF
- chmod 0644 utilities.d/MenuMsg.d/MenuMsg.1 || echo "restore of utilities.d/MenuMsg.d/MenuMsg.1 fails"
- echo "x - extracting utilities.d/MenuMsg.d/MenuMsg.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/MenuMsg.d/MenuMsg.c &&
- X/*
- X** MenuMsg(1)
- X** Display text to a menu(1) screen without trashing the screen.
- X** ARGS
- X** row and col to dispaly text to
- X*/
- X
- X#include <curses.h>
- X#include <term.h>
- X
- Xmain (argc, argv)
- X int argc;
- X char *argv[];
- X{
- X FILE *fopen(), *fp;
- X char *tparm();
- X char *getenv();
- X char *tparm();
- X int _outch();
- X char *term;
- X int status;
- X char *str;
- X int row;
- X int col;
- X
- X if ((fp = fopen ("/dev/tty", "w")) == (FILE *)NULL)/* reopen terminal */
- X exit (1);
- X if ((term = getenv ("TERM")) == (char *)NULL)
- X exit (1);
- X setupterm (term, 1, &status); /* set-up terminal */
- X if (status != 1)
- X exit (1);
- X if (cursor_address == NULL) /* we need cursor movement */
- X exit (1);
- X if (strcmp (argv[1], "DONT_CLEAR") == 0)
- X {
- X sscanf (argv[2], "%d", &row);
- X sscanf (argv[3], "%d", &col);
- X fprintf (fp, "%s%s", tparm (cursor_address, row, col), argv[4]);
- X }
- X else
- X {
- X sscanf (argv[1], "%d", &row);
- X sscanf (argv[2], "%d", &col);
- X fprintf (fp, "%s", tparm (cursor_address, row, col));
- X fprintf (fp, "%s", tparm (clr_eol));
- X fprintf (fp, "%s%s", tparm (cursor_address, row, col), argv[3]);
- X }
- X /*
- X tputs (tparm (cursor_address, row, col), 1, _outch);
- X fprintf (fp, "%s", argv[3]);
- X */
- X fclose (fp);
- X}
- X/* Paul J. Condie 7-90 */
- SHAR_EOF
- chmod 0644 utilities.d/MenuMsg.d/MenuMsg.c || echo "restore of utilities.d/MenuMsg.d/MenuMsg.c fails"
- echo "x - extracting utilities.d/MenuMsg.d/MenuPrompt.1 (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/MenuMsg.d/MenuPrompt.1 &&
- X. \ %W% DeltaDate %G% ExtrDate %H%
- X.po 6
- X.TH MENUPROMPT 1 "" "Menu Utility"
- X
- X.SH \s9NAME\s0
- XMenuPrompt -\ writes a prompt message to a menu screen then prompts for a reply
- X
- X.SH SYNOPSIS
- X.B MenuPrompt [ DONT_CLEAR ] row col message
- X
- X.SH DESCRIPTION
- X.B MenuPrompt
- Xis designed to be a utility program to be used in conjunction with the menu(1)
- Xprogram. This can be used to prompt for a reply from the user within a
- Xmenu screen.
- X
- X
- X.SH EXAMPLE
- XTo prompt the user:
- X.nf
- X
- X reply=`MenuPrompt \\`tput lines\\` 0 "Do you want to continue (y/n) ? "`
- X.fi
- X
- X.SH AUTHOR
- XPaul J. Condie 7/90
- X.br
- X{att,bellcore,sun,ames,pyramid}!pacbell!pcbox!pjc
- X
- X.SH SEE ALSO
- Xmenu(1).
- SHAR_EOF
- chmod 0644 utilities.d/MenuMsg.d/MenuPrompt.1 || echo "restore of utilities.d/MenuMsg.d/MenuPrompt.1 fails"
- echo "x - extracting utilities.d/MenuMsg.d/MenuPrompt.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/MenuMsg.d/MenuPrompt.c &&
- X/*
- X** MenuPrompt(1)
- X** ARGS
- X** row and col to dispaly text to
- X*/
- X
- X#include <curses.h>
- X#include <term.h>
- X
- Xmain (argc, argv)
- X int argc;
- X char *argv[];
- X{
- X FILE *fopen(), *fpout, *fpin;
- X char *tparm();
- X char *getenv();
- X char *tparm();
- X int _outch();
- X char *term;
- X int status;
- X char *strp;
- X int row;
- X int col;
- X char buf[BUFSIZ];
- X int ch;
- X
- X if ((fpout = fopen ("/dev/tty", "w")) == (FILE *)NULL)
- X exit (1);
- X if ((fpin = fopen ("/dev/tty", "r")) == (FILE *)NULL)
- X exit (1);
- X if ((term = getenv ("TERM")) == (char *)NULL)
- X exit (1);
- X setupterm (term, 1, &status); /* set-up terminal */
- X if (status != 1)
- X exit (1);
- X if (cursor_address == NULL) /* we need cursor movement */
- X exit (1);
- X if (strcmp (argv[1], "DONT_CLEAR") == 0)
- X {
- X sscanf (argv[2], "%d", &row);
- X sscanf (argv[3], "%d", &col);
- X fprintf (fpout, "%s%s", tparm (cursor_address, row, col),
- X argv[4]);
- X }
- X else
- X {
- X sscanf (argv[1], "%d", &row);
- X sscanf (argv[2], "%d", &col);
- X fprintf (fpout, "%s", tparm (cursor_address, row, col));
- X fprintf (fpout, "%s", tparm (clr_eol));
- X fprintf (fpout, "%s%s", tparm (cursor_address, row, col),
- X argv[3]);
- X }
- X
- X strp = buf;
- X while (1)
- X {
- X ch = fgetc (fpin);
- X if ((char)ch == '\n' || (char)ch == '\r')
- X break;
- X *strp = (char)ch;
- X fprintf (fpout, "%c", *strp); fflush (stdout);
- X strp++;
- X }
- X *strp = '\0';
- X printf ("%s", buf);
- X
- X fclose (fpin);
- X fclose (fpout);
- X}
- X/* Paul J. Condie 7-90 */
- SHAR_EOF
- chmod 0644 utilities.d/MenuMsg.d/MenuPrompt.c || echo "restore of utilities.d/MenuMsg.d/MenuPrompt.c fails"
- echo "x - extracting utilities.d/MenuMsg.d/makefile (Text)"
- sed 's/^X//' << 'SHAR_EOF' > utilities.d/MenuMsg.d/makefile &&
- Xall: MenuMsg MenuPrompt
- X
- XMenuMsg: MenuMsg.o
- X $(CC) -O MenuMsg.c -lcurses -o MenuMsg
- X
- XMenuPrompt: MenuPrompt.o
- X $(CC) -O MenuPrompt.c -lcurses -o MenuPrompt
- SHAR_EOF
- chmod 0644 utilities.d/MenuMsg.d/makefile || echo "restore of utilities.d/MenuMsg.d/makefile fails"
- rm -f s2_seq_.tmp
- echo "You have unpacked the last part"
- exit 0
-