home *** CD-ROM | disk | FTP | other *** search
- Subject: v17i024: MGR, Bellcore window manager, Part23/61
- Newsgroups: comp.sources.unix
- Approved: rsalz@uunet.UU.NET
-
- Submitted-by: Stephen A. Uhler <sau@bellcore.com>
- Posting-number: Volume 17, Issue 24
- Archive-name: mgr/part23
-
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 23 (of 61)."
- # Contents: demo/misc/dmgr.c demo/misc/mgrmail.c demo/misc/omgrmail.c
- # font-16/Ugal13x20b font-16/Ugal13x20r font-32/Ugal13x20b
- # font-32/Ugal13x20r src/graph_subs.c
- # Wrapped by rsalz@papaya.bbn.com on Thu Nov 17 21:05:27 1988
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'demo/misc/dmgr.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'demo/misc/dmgr.c'\"
- else
- echo shar: Extracting \"'demo/misc/dmgr.c'\" \(5769 characters\)
- sed "s/^X//" >'demo/misc/dmgr.c' <<'END_OF_FILE'
- X/* Copyright (c) 1987 Bellcore
- X * All Rights Reserved
- X * Permission is granted to copy or use this program, EXCEPT that it
- X * may not be sold for profit, the copyright notice must be reproduced
- X * on copies, and credit should be given to Bellcore where it is due.
- X * BELLCORE MAKES NO WARRANTY AND ACCEPTS NO LIABILITY FOR THIS PROGRAM.
- X */
- X/* $Header: dmgr.c,v 4.1 88/06/30 10:06:21 bianchi Exp $
- X $Source: /tmp/mgrsrc/demo/misc/RCS/dmgr.c,v $
- X*/
- Xstatic char RCSid_[] = "$Source: /tmp/mgrsrc/demo/misc/RCS/dmgr.c,v $$Revision: 4.1 $";
- X
- X/* Ditroff to MGR conversion filter (sample version) */
- X
- X#include "term.h"
- X#include <signal.h>
- X#include <ctype.h>
- X
- X/* ditroff macros */
- X
- X#define t_push()
- X#define t_pop()
- X#define hmot(N) (hpos+=(N))
- X#define hgoto(N) (hpos = (N))
- X#define vmot(N) (vpos+=(N))
- X#define vgoto(N) (vpos=(N))
- X#define put1s(c) put1('?')
- X#define put1a(N) printf("\\%3.3o",N);
- X#define t_text(S) printf("{%s}",S)
- X#define draw(S) printf("\nDRAW %s\n",S);
- X#define setfont(S) (font=(S))
- X#define setsize(N) (size=(N))
- X#define t_page() (page++>0?(getpass("\007"),m_clear()):0)
- X#define t_newline() m_flush()
- X#define t_init()
- X#define t_trailer()
- X#define t_reset(C)
- X#define loadfont(N, S1, S2)
- X#define error printf
- X#define done() getpass("\007")
- X
- X/* mgr defines */
- X
- X#define GMAX 1000 /* maximum coordinate */
- X
- X/* these should be calculated from the ditroff input file */
- X
- X#define PAGE_WIDE 2300 /* page width (pixels) */
- X#define PAGE_HIGH 3200 /* page height (pixels) */
- X
- Xint hpos,vpos;
- Xint font;
- Xint size;
- Xint page=0;
- X
- Xmain()
- X {
- X
- X int clean();
- X
- X /* setup MGR */
- X
- X m_setup(M_DEBUG);
- X m_push(P_FLAGS|P_FONT);
- X signal(SIGTERM,clean);
- X signal(SIGINT,clean);
- X m_setmode(M_OVERSTRIKE);
- X m_func(14);
- X /* m_font(4); */
- X m_clear();
- X
- X /* display output */
- X
- X conv(stdin);
- X
- X /* wait for ack. */
- X
- X getpass("\007");
- X clean(0);
- X }
- X
- X/* print a character */
- X
- Xint
- Xput1(c)
- Xregister char c; /* the character to print */
- X {
- X register int x = hpos * GMAX / PAGE_WIDE;
- X register int y = vpos * GMAX / PAGE_HIGH;
- X
- X m_movecursor(x,y);
- X putc(c,m_termout);
- X switch(font) {
- X case 2: /* italic */
- X m_printstr("\010_");
- X break;
- X case 3: /* bold */
- X m_incr(2);
- X break;
- X }
- X }
- X
- X/* do ditroff conversion (standard template) */
- X
- Xconv(fp)
- Xregister FILE *fp;
- X{
- X register int c, k, sign;
- X int m, n, i, n1, m1;
- X char str[100], buf[300];
- X
- X while ((c = getc(fp)) != EOF) {
- X switch (c) {
- X case '\n': /* when input is text */
- X case ' ':
- X case 0: /* occasional noise creeps in */
- X break;
- X case '{': /* push down current environment */
- X t_push();
- X break;
- X case '}':
- X t_pop();
- X break;
- X case '0': case '1': case '2': case '3': case '4':
- X case '5': case '6': case '7': case '8': case '9':
- X /* two motion digits plus a character */
- X hmot((c-'0')*10 + getc(fp)-'0');
- X put1(getc(fp));
- X break;
- X case 'c': /* single ascii character */
- X put1(getc(fp));
- X break;
- X case 'C':
- X fscanf(fp, "%s", str);
- X put1s(str);
- X break;
- X case 'N': /* absolute character number */
- X fscanf(fp, "%d", &n);
- X put1a(n);
- X break;
- X case 't': /* straight text */
- X fgets(buf, sizeof(buf), fp);
- X t_text(buf);
- X break;
- X case 'D': /* draw function */
- X fgets(buf, sizeof(buf), fp);
- X draw(buf);
- X break;
- X case 's':
- X fscanf(fp, "%d", &n); /* ignore fractional sizes */
- X setsize(n);
- X break;
- X case 'f':
- X fscanf(fp, "%d", &n);
- X setfont(n);
- X if (n==3) /* bold */
- X m_func(1);
- X else if (n==1 || n==2)
- X m_func(14);
- X break;
- X case 'H': /* absolute horizontal motion */
- X /* fscanf(fp, "%d", &n); */
- X while ((c = getc(fp)) == ' ')
- X ;
- X k = 0;
- X do {
- X k = 10 * k + c - '0';
- X } while (isdigit(c = getc(fp)));
- X ungetc(c, fp);
- X hgoto(k);
- X break;
- X case 'h': /* relative horizontal motion */
- X /* fscanf(fp, "%d", &n); */
- X while ((c = getc(fp)) == ' ')
- X ;
- X k = 0;
- X sign = 1;
- X if (c == '-') {
- X sign = -1;
- X c = getc(fp);
- X }
- X do {
- X k = 10 * k + c - '0';
- X } while (isdigit(c = getc(fp)));
- X ungetc(c, fp);
- X hmot(sign * k);
- X break;
- X case 'w': /* word space */
- X break;
- X case 'V':
- X fscanf(fp, "%d", &n);
- X vgoto(n);
- X break;
- X case 'v':
- X fscanf(fp, "%d", &n);
- X vmot(n);
- X break;
- X case 'p': /* new page */
- X fscanf(fp, "%d", &n);
- X t_page(n);
- X break;
- X case 'n': /* end of line */
- X while (getc(fp) != '\n')
- X ;
- X t_newline();
- X break;
- X case '#': /* comment */
- X while (getc(fp) != '\n')
- X ;
- X break;
- X case 'x': /* device control */
- X devcntrl(fp);
- X break;
- X default:
- X error("unknown input character %o %c\n", c, c);
- X fprintf(stderr, "input context is:\n%c", c);
- X for (i = 0; i < 10; i++) {
- X if (fgets(buf, sizeof(buf), fp) == NULL)
- X break;
- X fprintf(stderr, "%s", buf);
- X }
- X done();
- X }
- X }
- X }
- X
- Xdevcntrl(fp) /* interpret device control functions */
- XFILE *fp;
- X{
- X char str[20], str1[50], buf[50];
- X int c, n;
- X
- X fscanf(fp, "%s", str);
- X switch (str[0]) { /* crude for now */
- X case 'i': /* initialize */
- X t_init();
- X break;
- X case 'T': /* device name */
- X fscanf(fp, "%s", buf);
- X break;
- X case 't': /* trailer */
- X t_trailer();
- X break;
- X case 'p': /* pause -- can restart */
- X t_reset('p');
- X break;
- X case 's': /* stop */
- X t_reset('s');
- X break;
- X case 'r': /* resolution assumed when prepared */
- X fscanf(fp, "%d", &n);
- X break;
- X case 'f': /* font used */
- X fscanf(fp, "%d %s", &n, str);
- X fgets(buf, sizeof buf, fp); /* in case there's a filename */
- X ungetc('\n', fp); /* fgets goes too far */
- X str1[0] = 0; /* in case there's nothing to come in */
- X sscanf(buf, "%s", str1);
- X loadfont(n, str, str1);
- X break;
- X }
- X while ((c = getc(fp)) != '\n') /* skip rest of input line */
- X if (c == EOF)
- X break;
- X}
- X
- Xint
- Xclean(n)
- Xint n;
- X {
- X m_pop();
- X m_clear();
- X }
- END_OF_FILE
- # end of 'demo/misc/dmgr.c'
- fi
- if test -f 'demo/misc/mgrmail.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'demo/misc/mgrmail.c'\"
- else
- echo shar: Extracting \"'demo/misc/mgrmail.c'\" \(5947 characters\)
- sed "s/^X//" >'demo/misc/mgrmail.c' <<'END_OF_FILE'
- X/* Copyright (c) 1987 Bellcore
- X * All Rights Reserved
- X * Permission is granted to copy or use this program, EXCEPT that it
- X * may not be sold for profit, the copyright notice must be reproduced
- X * on copies, and credit should be given to Bellcore where it is due.
- X * BELLCORE MAKES NO WARRANTY AND ACCEPTS NO LIABILITY FOR THIS PROGRAM.
- X */
- X/* $Header: mgrmail.c,v 4.2 88/06/22 14:37:50 bianchi Exp $
- X $Source: /tmp/mgrsrc/demo/misc/RCS/mgrmail.c,v $
- X*/
- Xstatic char RCSid_[] = "$Source: /tmp/mgrsrc/demo/misc/RCS/mgrmail.c,v $$Revision: 4.2 $";
- X
- X/* check for new mail (experimental version) */
- X
- X#include <sys/types.h>
- X#include <sys/stat.h>
- X#include <signal.h>
- X#include <stdio.h>
- X#include "term.h"
- X
- X#define MSG_1 "\fLooking for new mail"
- X#define MSG_2 "\f\007You have new mail"
- X#define MSG_3 "\freading mail ...\r"
- X#define MSG_4 "\rChecking for new mail..."
- X#define MSG_5 "\fMail window is active"
- X#define MSG_6 "\rYou don't have mail "
- X
- X#define MAILF "/usr/spool/mail" /* spool file */
- X#define MAIL "mail" /* name of mail command */
- X#define POLL 60 /* polling interval */
- X#define XPOS 240 /* x start of mail window */
- X#define YPOS 190 /* y start of mail window */
- X#define W_WIDE 650 /* width of mail window */
- X#define W_HIGH 394 /* height of mail window */
- X
- X#define PROCESSED 2 /* new mail already processed */
- X
- X#define S(x) statb.x
- X#define Isflag(arg,flag) (!strncmp(arg,flag,strlen(flag)))
- X#define Max(x,y) ((x)>(y)?(x):(y))
- X#define dprintf if(debug) fprintf
- X
- X#define MENU_COUNT (sizeof(menu)/sizeof(struct menu_entry))
- X
- Xstruct menu_entry menu[] = {
- X "print","t\r",
- X "delete","dt\r",
- X "next","n\r",
- X "quit","q\r",
- X "help","?\r",
- X "headers","h *\r",
- X "abort","x\r",
- X};
- X
- Xstruct stat statb; /* spool file status */
- Xchar mail[255]; /* spool file path name */
- Xlong omtime=0l; /* previous file mod. time */
- Xint state = 0; /* mail & window state */
- Xint poll = POLL; /* poll interval */
- Xint debug=0; /* for mgrmail -d >& /dev/tty?? */
- X
- Xmain(argc,argv)
- X char **argv;
- X{
- X register int i;
- X int xpos = XPOS; /* screen position of mail subwindow */
- X int ypos = YPOS;
- X int font = -1; /* font to use for mail subwindow */
- X int shape = 1; /* initially reshape window */
- X char *command = MAIL; /* name of readmail command */
- X
- X char *getenv();
- X char *user = getenv("USER");
- X char line[80]; /* event input buffer */
- X
- X int clean(), update();
- X
- X ckmgrterm( *argv );
- X
- X /* make sure environment is ok */
- X if (user==NULL || *user=='\0') {
- X fprintf(stderr,"%s: Who are you?\n",argv[0]);
- X exit(2);
- X }
- X
- X /* process arguments */
- X
- X for(i=1;i<argc;i++) {
- X if (Isflag(argv[i],"-s"))
- X shape = 0;
- X else if (Isflag(argv[i],"-d"))
- X debug = 1;
- X else if (Isflag(argv[i],"-x"))
- X xpos = atoi(argv[i]+2);
- X else if (Isflag(argv[i],"-y"))
- X ypos = atoi(argv[i]+2);
- X else if (Isflag(argv[i],"-f"))
- X font = atoi(argv[i]+2);
- X else if (Isflag(argv[i],"-p"))
- X poll = Max(atoi(argv[i]+2),10);
- X else if (Isflag(argv[i],"-M"))
- X command = argv[i]+2;
- X else
- X usage(argv[0],argv[i]);
- X }
- X sprintf(mail,"%s/%s",MAILF,user);
- X
- X /* set up window environment */
- X
- X m_setup(M_FLUSH);
- X m_ttyset();
- X m_push(P_MENU|P_EVENT|P_FLAGS);
- X dprintf(stderr,"pushing environment\n"); fflush(stderr);
- X m_setmode(M_NOWRAP);
- X
- X signal(SIGTERM,clean);
- X signal(SIGINT,clean);
- X signal(SIGALRM,update);
- X
- X m_setmode(M_ACTIVATE);
- X if (shape) {
- X m_size(strlen(MSG_1),1);
- X }
- X
- X m_setevent(ACTIVATE,"A\r");
- X m_setevent(REDRAW,"R\r");
- X
- X m_clearmode(M_ACTIVATE);
- X m_clear();
- X m_printstr(MSG_1);
- X
- X dprintf(stderr,"Starting state 0x%x\n",state); fflush(stderr);
- X
- X update();
- X
- X /* wait for an event */
- X
- X while(1) {
- X m_gets(line);
- X dprintf(stderr,"state 0x%x line : %c\n",state,*line); fflush(stderr);
- X switch(*line) {
- X case 'A': /* window is activated */
- X if (!stat(mail,&statb) && S(st_size))
- X do_mail(command,font,xpos,ypos);
- X else {
- X m_printstr(MSG_6);
- X sleep(2);
- X m_clearmode(M_ACTIVATE);
- X }
- X state &= ~PROCESSED;
- X update();
- X break;
- X case 'R': /* screen is redrawn */
- X state &= ~PROCESSED;
- X update();
- X break;
- X }
- X }
- X}
- X
- X/* run readmail in a subwindow */
- X
- Xdo_mail(command,font,xpos,ypos)
- Xchar *command;
- Xint font,xpos,ypos;
- X {
- X int code;
- X int n;
- X
- X alarm(0);
- X dprintf(stderr,"doing mail\n"); fflush(stderr);
- X n=m_makewindow(xpos,ypos,W_WIDE,W_HIGH);
- X if (n==0) { /* can't make window */
- X m_printstr("\007\fCan't open mail window, sorry");
- X return(0);
- X }
- X m_clearevent(ACTIVATE);
- X m_printstr(MSG_5);
- X m_selectwin(n);
- X menu_load(1,MENU_COUNT,menu);
- X m_selectmenu(1);
- X m_printstr(MSG_3);
- X m_ttyreset();
- X code = system(command);
- X m_printstr(MSG_4);
- X sleep(1); /* for "New mail arrived" message */
- X dprintf(stderr,"Readmail completed code %d\n",code); fflush(stderr);
- X m_ttyset();
- X m_destroywin(n);
- X m_setevent(ACTIVATE,"A\r");
- X m_clearmode(M_ACTIVATE);
- X dprintf(stderr,"window deactivated\n"); fflush(stderr);
- X }
- X
- X/* check the spool file for new mail and update message */
- X
- Xint
- Xupdate()
- X{
- X alarm(0);
- X dprintf(stderr,"checking mail state 0x%x\n",state); fflush(stderr);
- X if (!stat(mail,&statb) && S(st_mtime)>S(st_atime) && S(st_size)) {
- X state &= ~PROCESSED;
- X if (S(st_mtime) != omtime) {
- X dprintf(stderr," First time New mail\n"); fflush(stderr);
- X m_printstr(MSG_2);
- X m_setmode(M_WOB);
- X omtime = S(st_mtime);
- X }
- X }
- X else if (!(state&PROCESSED)) {
- X dprintf(stderr," Clearing new mail\n"); fflush(stderr);
- X m_clearmode(M_WOB);
- X m_printstr(MSG_1);
- X state |= PROCESSED;
- X }
- X alarm(poll);
- X}
- X
- X/* Clean up and exit */
- X
- Xclean()
- X{
- X m_popall();
- X m_ttyreset();
- X exit(1);
- X}
- X
- Xusage(name,error)
- Xchar *name, *error;
- X{
- X fprintf(stderr,"Invalid flag: %s\n",error);
- X fprintf(stderr,
- X "usage: %s -[s|x<pos>|y<pos>|f<font>|p<poll>|M<mail_program>]\n"
- X ,name);
- X exit(1);
- X}
- END_OF_FILE
- # end of 'demo/misc/mgrmail.c'
- fi
- if test -f 'demo/misc/omgrmail.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'demo/misc/omgrmail.c'\"
- else
- echo shar: Extracting \"'demo/misc/omgrmail.c'\" \(5590 characters\)
- sed "s/^X//" >'demo/misc/omgrmail.c' <<'END_OF_FILE'
- X/* Copyright (c) 1987 Bellcore
- X * All Rights Reserved
- X * Permission is granted to copy or use this program, EXCEPT that it
- X * may not be sold for profit, the copyright notice must be reproduced
- X * on copies, and credit should be given to Bellcore where it is due.
- X * BELLCORE MAKES NO WARRANTY AND ACCEPTS NO LIABILITY FOR THIS PROGRAM.
- X */
- X/* $Header: omgrmail.c,v 4.2 88/06/22 14:37:57 bianchi Exp $
- X $Source: /tmp/mgrsrc/demo/misc/RCS/omgrmail.c,v $
- X*/
- Xstatic char RCSid_[] = "$Source: /tmp/mgrsrc/demo/misc/RCS/omgrmail.c,v $$Revision: 4.2 $";
- X
- X/* check for new mail */
- X
- X#include <sys/types.h>
- X#include <sys/stat.h>
- X#include <signal.h>
- X#include <stdio.h>
- X#include "term.h"
- X
- X#define MSG_1 "\fLooking for new mail"
- X#define MSG_2 "\f\007You have new mail"
- X#define MSG_3 "\freading mail ...\r"
- X#define MSG_4 "\rChecking for new mail..."
- X
- X#define MAILF "/usr/spool/mail" /* spool file */
- X#define MAIL "mail" /* name of mail command */
- X#define POLL 60 /* polling interval */
- X#define XPOS 200 /* x start of mail window */
- X#define YPOS 150 /* y start of mail window */
- X
- X#define PROCESSED 2 /* new mail already processed */
- X
- X#define S(x) statb.x
- X#define Isflag(arg,flag) (!strncmp(arg,flag,strlen(flag)))
- X#define Max(x,y) ((x)>(y)?(x):(y))
- X#define dprintf if(debug) fprintf
- X
- X#define MENU_COUNT (sizeof(menu)/sizeof(struct menu_entry))
- X
- Xstruct menu_entry menu[] = {
- X "print","t\r",
- X "delete","dt\r",
- X "next","n\r",
- X "quit","q\r",
- X "help","?\r",
- X "headers","h *\r",
- X "abort","x\r",
- X};
- X
- Xstruct stat statb; /* spool file status */
- Xchar mail[255]; /* spool file path name */
- Xlong omtime=0l; /* previous file mod. time */
- Xint state = 0; /* mail & window state */
- Xint poll = POLL; /* poll interval */
- Xint debug=0; /* for mgrmail -d >& /dev/tty?? */
- X
- Xmain(argc,argv)
- X char **argv;
- X{
- X register int i;
- X int xpos = XPOS; /* screen position of mail subwindow */
- X int ypos = YPOS;
- X int font = -1; /* font to use for mail subwindow */
- X int shape = 1; /* initially reshape window */
- X char *command = MAIL; /* name of readmail command */
- X
- X char *getenv();
- X char *user = getenv("USER");
- X char line[80]; /* event input buffer */
- X
- X int clean(), update();
- X
- X /* make sure environment is ok */
- X
- X ckmgrterm( *argv );
- X
- X if (user==NULL || *user=='\0') {
- X fprintf(stderr,"%s: Who are you?\n",argv[0]);
- X exit(2);
- X }
- X
- X /* process arguments */
- X
- X for(i=1;i<argc;i++) {
- X if (Isflag(argv[i],"-s"))
- X shape = 0;
- X else if (Isflag(argv[i],"-d"))
- X debug = 1;
- X else if (Isflag(argv[i],"-x"))
- X xpos = atoi(argv[i]+2);
- X else if (Isflag(argv[i],"-y"))
- X ypos = atoi(argv[i]+2);
- X else if (Isflag(argv[i],"-f"))
- X font = atoi(argv[i]+2);
- X else if (Isflag(argv[i],"-p"))
- X poll = Max(atoi(argv[i]+2),10);
- X else if (Isflag(argv[i],"-M"))
- X command = argv[i]+2;
- X else
- X usage(argv[0],argv[i]);
- X }
- X sprintf(mail,"%s/%s",MAILF,user);
- X
- X /* set up window environment */
- X
- X m_setup(M_FLUSH);
- X m_ttyset();
- X m_push(P_MENU|P_EVENT|P_FLAGS);
- X dprintf(stderr,"pushing environment\n"); fflush(stderr);
- X m_setmode(M_NOWRAP);
- X
- X signal(SIGTERM,clean);
- X signal(SIGINT,clean);
- X signal(SIGALRM,update);
- X
- X m_setmode(M_ACTIVATE);
- X if (shape) {
- X m_size(strlen(MSG_1),1);
- X }
- X
- X menu_load(1,MENU_COUNT,menu);
- X m_selectmenu(1);
- X m_setevent(ACTIVATE,"A\r");
- X m_setevent(REDRAW,"R\r");
- X
- X m_clearmode(M_ACTIVATE);
- X m_clear();
- X m_printstr(MSG_1);
- X
- X dprintf(stderr,"Starting state 0x%x\n",state); fflush(stderr);
- X
- X update();
- X
- X /* wait for an event */
- X
- X while(1) {
- X m_gets(line);
- X dprintf(stderr,"state 0x%x line : %c\n",state,*line); fflush(stderr);
- X switch(*line) {
- X case 'A': /* window is activated */
- X if (!stat(mail,&statb) && S(st_size))
- X do_mail(command,font,xpos,ypos);
- X state &= ~PROCESSED;
- X update();
- X break;
- X case 'R': /* screen is redrawn */
- X state &= ~PROCESSED;
- X update();
- X break;
- X }
- X }
- X}
- X
- X/* run readmail in a subwindow */
- X
- Xdo_mail(command,font,xpos,ypos)
- Xchar *command;
- Xint font,xpos,ypos;
- X {
- X int x,y,dummy;
- X int code;
- X
- X alarm(0);
- X m_push(P_POSITION|P_EVENT|P_FLAGS|P_FONT);
- X dprintf(stderr,"doing mail\n"); fflush(stderr);
- X if (font != -1)
- X m_font(font);
- X m_sizeall(xpos,ypos,80,24);
- X m_printstr(MSG_3);
- X m_ttyreset();
- X code = system(command);
- X m_printstr(MSG_4);
- X sleep(2); /* for "New mail arrived" message */
- X dprintf(stderr,"Readmail completed code %d\n",code); fflush(stderr);
- X m_ttyset();
- X get_size(&x,&y,&dummy,&dummy);
- X m_pop();
- X dprintf(stderr,"done with mail\n"); fflush(stderr);
- X if (x!=xpos || y!=ypos) {
- X m_movewindow(x,y);
- X xpos = x;
- X dprintf(stderr,"moving mail window\n"); fflush(stderr);
- X ypos = y;
- X }
- X m_clearmode(M_ACTIVATE);
- X dprintf(stderr,"window deactivated\n"); fflush(stderr);
- X }
- X
- X/* check the spool file for new mail and update message */
- X
- Xint
- Xupdate()
- X{
- X alarm(0);
- X dprintf(stderr,"checking mail state 0x%x\n",state); fflush(stderr);
- X if (!stat(mail,&statb) && S(st_mtime)>S(st_atime) && S(st_size)) {
- X state &= ~PROCESSED;
- X if (S(st_mtime) != omtime) {
- X dprintf(stderr," First time New mail\n"); fflush(stderr);
- X m_printstr(MSG_2);
- X m_setmode(M_WOB);
- X omtime = S(st_mtime);
- X }
- X }
- X else if (!(state&PROCESSED)) {
- X dprintf(stderr," Clearing new mail\n"); fflush(stderr);
- X m_clearmode(M_WOB);
- X m_printstr(MSG_1);
- X state |= PROCESSED;
- X }
- X alarm(poll);
- X}
- X
- X/* Clean up and exit */
- X
- Xclean()
- X{
- X m_popall();
- X m_ttyreset();
- X exit(1);
- X}
- X
- Xusage(name,error)
- Xchar *name, *error;
- X{
- X fprintf(stderr,"Invalid flag: %s\n",error);
- X fprintf(stderr,
- X "usage: %s -[s|x<pos>|y<pos>|f<font>|p<poll>|M<mail_program>]\n"
- X ,name);
- X exit(1);
- X}
- END_OF_FILE
- # end of 'demo/misc/omgrmail.c'
- fi
- if test -f 'font-16/Ugal13x20b' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'font-16/Ugal13x20b'\"
- else
- echo shar: Extracting \"'font-16/Ugal13x20b'\" \(5772 characters\)
- sed "s/^X//" >'font-16/Ugal13x20b' <<'END_OF_FILE'
- Xbegin 644 gal13x20b.fnt
- XM%@T4!8
- XM . =P!W!P'C@> < X< .!X 8!^ ?
- XM@!P'\!X#_@^ ?@ ?
- XM _' #\ & 8 # < \ !@
- XMX 'P #P' >
- XM #@'
- XM< =Q_#-P/P/@ <#@ ' _ . _P/\ \!_ X!_X9P,\
- XM /X X/^ ?S_@_\?^!_/CX_@?Q\>? >#^!X?!_P'P_X#_G_WP_P]__^'_#
- XMS_P/QP _ #P . !P / ;@ X #@ .> <
- XM !P!P!P
- XM X!W '<_XS<'.#X / \
- XM !P9P'@<>&'@/ P < X,..&'@ 'O .!PP,.<>'##A@PYP
- XM<#@!P..#@#AYP,,\..#/''!PYG,X&<&.YG S@8PX#@. !P!^ ' \
- XM!P &X > X #C@ ' !@ < < <
- XM
- XM . =P#N=_,^!S@. #@' X&.#XC X'P, .
- XM##CC@X !AP/P'P<.&!G#APPX88&<' X <#G X \>>#&'#AQAQPX
- XMX&!P.!CC#N8X8<, . X#@ < YP !P ' < #@ #@ X !P
- XM 8 #@' .
- XM #@'<#_W=Q[@
- XM<X#@!X!X ^ .#CA^ X .!\& #@ !PXXX. </^!\
- XM'#A@!P<< . & '!P. ' [@. /'GPQ@XX<8.<..!@<#@8XP[F/,#F ' . < '
- XM <. ? !P ' X X . < .
- XM X!P#@
- XM X!W _]W !P#\!P < . ' #@ ' X
- XMX#@ . '@W!_AP 8',.#@X < < '#AP;!PXX <'' #@#@!P<#@!P/P#
- XM@#QY\,X..'.#G#CP ' X&.,/YAS Y@!P#@' !P 'P'X=\#^ _P? . /V
- XM/\#X /CCP'!_\-\!^/_ ?9[P/\?^/OOA___\_\??_ . < X
- XM
- XM . '</P <!\ X ' #@=W X !P.. X #@/P-P<\=\ & ^#QX?
- XM' > #P #AP<,X<<. '!QQ@XPX <' X <#X X ^^;C.#CCC@YPP? !P.!AV
- XM#_P/@'P X X X < X#G'_ASPY\<<#@'/CW@. XYP!P/_GW@SQYX,^/
- XMN'' X!QQP,[F>&.!G#P' ' '
- XM #@ !W!_ . _ , !P X
- XM'_P. X#C@. !P'\&< 'G_@#@' ?^'P#X >#_P? !P=[#.'_#@!P<?
- XMX/\. '_P. ' ^ . /OF<S@X_PX.?X#X <#@8=@=\!P X . . . '
- XMQQX\8<,/.#A_#APXX#@ ..X <#NXXX8></&'CSAPP. <<.&.YCS!PQAX#P!P
- XM!X
- XM X [@'X' ?X < . =P#@ < XX#@ X 'A
- XMG YX\ P#X#[@X ^ ? _\!\ X'_PQAPXX <''C#@!P<#@!P/P#@#[YGLX.
- XM. .#GX /@' X&'8'_ < . ' #@!P!P !\<'. '!S@X. X<.. X #C\
- XM ' [N...#G!S@XX > #@''#ACN8?@<, \ < < < >,
- XM .
- XM.X!W!P'/P ' #@ /_@ #_X ' .. X < XQP .<' ,!G X ' ? '
- XMP<!^\?\<'. '!QP X X_<' X <#^ X W^8[.#C@#@Y_ \!P.!@X!_P/@#@!
- XMP X . < #W'!S@!P<_^#@.'#C@. X^ !P.[CCC@YP<X.. #X X!QP
- XM<P?\#P#F > #@' . /W
- XM #@ /_ =P[QQ\ !X!X!W#_X _
- XM^ #@#C@. . ./_ #G!P' XX < 'P !\' ?O&''!S@!P<< . .#G!P
- XM. ' [P. -[F'S@XX X.=X '@<#@8/ ?X&< X X . #@' !QQP<X <'
- XM. X!S@XX#@ ./P <#NXXXX.<'.#C@ /@. <<','_ > Y@/ X!P#@#_@
- XM
- XM #_QW</F<> . <!_\#@ X X XP#@' ,#G_S YP<!@
- XM.. ' X ? _\!\ '?Q@QP<8 <'' #@!@YP<#@!P.>#@#>Y@\8,. '#'/#
- XMX' XP#N!G@. . #@ <!P <<<'. '!S@ . ?P.. X #C^ ' [N...
- XM#G!S@XX \#@'' ^!_P/P'P'@ . < X!WX
- XM =P?^'9G'
- XM #P/ =W X X ? < ', X#@S@P!PX.>& 8#C@#@? ' !X/_!\ !P P.<
- XM''!G!AP8X <.<' X <#CPX,S.8/'##@!XQQXP.!P/# 8 [@PX#@' X ' <
- XM '''ASPQX\< #@. #C@. X[P!P.[CCCPQP8\.. &' XQQP/@.X&>!\
- XM#PP' ' ' 8\
- XM #@ .X#_!V8_\ <#@ < . ? 'P' !^
- XM.!_\?X <''#_ . <P#P'P#X '@ \ ' . ,#G#@XQQP<&. #CG!P. ' X>.#
- XM,SF!PY@X /X</.' <!_P& .X8' X!PP/P X_ ![Q\X<</?#C@X#_PX
- XMX#@ ..> <#NXXX>8>,'GC@!QP/8>\!P#N##P.!X<!P!P!P
- XM
- XM X #N ' X\'W #AP /@#@'P X#@ / ?\?_#\ ' _@?@# #X'P X ^
- XM < < !P#_WA__P'X_P/_GP ?CX^/X!P?#W_WM_P.'P? !X/A[_@?P/X!@#
- XMN/#X? _\#\ ./P /^;\#^!]X?@? ?^??#^ #GSX?Q__??#\'^ _Y\
- XM?X!\#[@< [CY^#@?_ / <!X
- XM
- XM < #@ /\
- XM < _
- XM @ PX !P . P '
- XM
- XM '
- XM X '
- XM 9[ ?_P # 8 ..
- XM < #@ < !P
- XM
- XM #@ <
- XM !@ /@
- XM '_\ P& #S ' X
- XM & <
- XM !P
- XM .
- XM#P
- XM /_ ?@ !P . /@ '
- XM
- XM 8
- XM # X
- XM !_@ #P
- X:^ 'P #P !P
- X
- Xend
- END_OF_FILE
- # end of 'font-16/Ugal13x20b'
- fi
- if test -f 'font-16/Ugal13x20r' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'font-16/Ugal13x20r'\"
- else
- echo shar: Extracting \"'font-16/Ugal13x20r'\" \(5772 characters\)
- sed "s/^X//" >'font-16/Ugal13x20r' <<'END_OF_FILE'
- Xbegin 644 gal13x20r.fnt
- XM%@T4!8
- XM , 9@!F!@'# < 8 P8 ,!P 0!\ ?
- XM !@'X!P#_ \ ? >
- XM ^& #X $ 0 " 8 X !
- XMP '@ #@& <
- XM # &
- XM8 9A^")@/@/ 8# & ^ , _@/X X!^ P!_P1@(X
- XM /P P/\ ?C_ _X?\!^/#P_ ?AX<> <#L!P>!_@'@_P#_'_G@[@Y_>\'>#
- XMC_@/A@ ^ #@ , !@ . 3 P # ,< 8
- XM !@!@!@
- XM P!F &8_PB8&,#P . X
- XM !@1@' 8<$' . @ 8 P(,,$' '. ,!@@(,8<&"#! @Q@
- XM8# !@,,# #!Q@((X,,".&&!@Q&(P$8$,Q& C 0@P# , !@!L & X
- XM!@ $P < P ## & ! 8 8 8
- XM
- XM , 9@#,9N(L!C , # & P$,#P$#" P%@( ,
- XM"### P !!@/@%@8,$!!@@P00$8& P 8#& P X<<"$!A!A@P
- XMP$!@,!#"#,0P08( , P# 8 Q@ !@ & 8 # # P !@
- XM 0 # & ,
- XM # &8#_F9AS
- XM8P# !P!P \ ,##!L P ,!8$ # !@PPP, 8/\!8
- XM! !@88 , $ &!@, & S , .''@A PP80,8,,! 8# 0P@S$.(#$ & , 8 &
- XM 8, > !@ & P P , 8 ,
- XM P!@#
- XM P!F _YF !@#X!@ 8 , & # & P
- XMP# , ' F!_!@ 0&(,# P 8 8 !@2!@PP 8&& # # !@8# !@-@#
- XM #AQ8(P,,&,##@ & P$,(.Q!B Q !@# & !@ '@'P9X#\ ]@> , /D
- XM-X#P /##@&!NX)X!\.^ >1S@/X?\///!W^[X]X>?^ , 8 P
- XM
- XM , &8/@ 8!X P & # 9F P !@,, P # /@)@8X9X $ T#AP>
- XM& < #@ #!@8(P88, &!AA P@P 8& P 8#P P LL3",#### Q@@> !@,!!D
- XM#N@- &@ P P P 8 P#&&_!C@QX88# &/#G , PQ@!@-W'G CAQP(\-
- XM,&& P!AA@(S$<$,!@& & &
- XM # !F!^ , ^ ( !@ P
- XM';@, P## , !@'X$8 '&_ # & ?L'@#P <#_@> !@9R",'^# !@8?
- XMP/X, '_@, & \ , ++$8C PW@P,?P#P 8# 09 9H!@ P , , , &
- XMAAPX08(.,#!^#!@PP# ,,P 8#,PPP0<8.$'#C!@@, 88,$,Q#B!@A!P#@!@
- XM!P
- XM P S 'P& =P 8 , 9@# 8 PP# P '!
- XM& QPX @"P#S P \ > _X!X P&^@A!@PP 8&&$#"# !@8# !@/@# "RQ'(P,
- XM, ,#'P / & P$&0&Z 8 , & # !@!@ !X8&, &!C P, P8,, P ##X
- XM & S,,,,#&!C PP < # &!#,0= 8( X 8 8 8 <(
- XM ,
- XM,P!F!@&-@ & # /_ #_P & ,, P 8 PA@ ,8& (!& P & > '
- XM@8!LH?X8&, &!A@ P P^8& P 8#< P FL0R,## # QN X!@,! P!W@+ # !
- XM@ P , 8 #F&!C !@8_\# ,# , P\ !@,S### Q@8P,, #P P!A@
- XM8@;H#@#$ < # & , /F
- XM # /^ 9@SAAX !P!P!F#_P _
- XM\ # ## , , ,/^ #&!@& PP 8 '@ !X& ;*$&&!C !@88 , ,#&!@
- XM, & S@, )S$&C PP P,9P ' 8# 0. =P$8 P P , # & !AA@8P 8&
- XM, P!C PP# ,/@ 8#,PPPP,8&,## / , 88&(': < Q . P!@# #;
- XM
- XM #_AF8-$8< , 8!VX# P P P@# & (#'_B Q@8!
- XM,, & P > _X!X &?A A@80 8&& # ! Q@8# !@,<# "<Q X0(, &"&."
- XMP& P$#@#,!' , , # 8!@ 888&, &!C , ?@,, P ##< & S,,,,
- XM#&!C PP X# && T!V@+@&@' , 8 P!GP
- XM 9@?\&1&&
- XM #@. 9F P P > 8 &( P# C @!@P,<$ 0## # > & !P/^!X !@ @,8
- XM&&!&!!@0P 8,8& P 8##@P(B,0.&"# !PAAP@,!@." 0 S @P# & P & 8
- XM &&'!C@APX8 # , ## , PS@!@,S###@A@0X,, $& PAA@- ,P$<!H
- XM#@@& & & 0X
- XM # ,P#^!D0_X 8# 8 , > '@& !\
- XM,!_X?P 8&^ , 8@#@'@#P ' X & , (# PAA@8$, ##&!@, & P<,"
- XM(C$!@Q P /P8.,& 8!_@$ ,P0& P!@@/@ P^ !SAXP88.6## P#_@P
- XMP# ,,< 8#,PPP<0<(''# !A@.0<X!@#,"#@,!P8!@!@!@
- XM
- XM P #, & PX'F #!@ / # '@ P# . ?X?^#X & _ ? " #P'@ P \
- XM 8 8 !@#_G![_@'P_@/_'@ ?#P\/P!@>#G_G)[@,'@> !P/!S_ ?@/P! #
- XM,.#P> _X#X ,/@ /<3X#\!YP? > ?\>>#\ #'CP?AWN>>#X'\ _QX
- XM?P!X#S 8 S#Q\# ?^ . 8!P
- XM
- XM 8 # /X
- XM 8 ^
- XM $# @P !@ , @ &
- XM
- XM &
- XM P &
- XM 1R ?_@ " 0 ,,
- XM 8 # 8 !@
- XM
- XM # 8
- XM ! /
- XM '_X @$ #B & P
- XM $ 8
- XM !@
- XM ,
- XM#@
- XM /^ ? !@ , / &
- XM
- XM 0
- XM " P
- XM !_ #@
- X:\ '@ #@ !@
- X
- Xend
- END_OF_FILE
- # end of 'font-16/Ugal13x20r'
- fi
- if test -f 'font-32/Ugal13x20b' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'font-32/Ugal13x20b'\"
- else
- echo shar: Extracting \"'font-32/Ugal13x20b'\" \(5772 characters\)
- sed "s/^X//" >'font-32/Ugal13x20b' <<'END_OF_FILE'
- Xbegin 644 gal13x20b.fnt
- XM& T4!8
- XM . =P!W!P'C@> < X< .!X 8!^ ?
- XM@!P'\!X#_@^ ?@ ?
- XM _' #\ & 8 # < \ !@
- XMX 'P #P' >
- XM #@'
- XM< =Q_#-P/P/@ <#@ ' _ . _P/\ \!_ X!_X9P,\
- XM /X X/^ ?S_@_\?^!_/CX_@?Q\>? >#^!X?!_P'P_X#_G_WP_P]__^'_#
- XMS_P/QP _ #P . !P / ;@ X #@ .> <
- XM !P!P!P
- XM X!W '<_XS<'.#X / \
- XM !P9P'@<>&'@/ P < X,..&'@ 'O .!PP,.<>'##A@PYP
- XM<#@!P..#@#AYP,,\..#/''!PYG,X&<&.YG S@8PX#@. !P!^ ' \
- XM!P &X > X #C@ ' !@ < < <
- XM
- XM . =P#N=_,^!S@. #@' X&.#XC X'P, .
- XM##CC@X !AP/P'P<.&!G#APPX88&<' X <#G X \>>#&'#AQAQPX
- XMX&!P.!CC#N8X8<, . X#@ < YP !P ' < #@ #@ X !P
- XM 8 #@' .
- XM #@'<#_W=Q[@
- XM<X#@!X!X ^ .#CA^ X .!\& #@ !PXXX. </^!\
- XM'#A@!P<< . & '!P. ' [@. /'GPQ@XX<8.<..!@<#@8XP[F/,#F ' . < '
- XM <. ? !P ' X X . < .
- XM X!P#@
- XM X!W _]W !P#\!P < . ' #@ ' X
- XMX#@ . '@W!_AP 8',.#@X < < '#AP;!PXX <'' #@#@!P<#@!P/P#
- XM@#QY\,X..'.#G#CP ' X&.,/YAS Y@!P#@' !P 'P'X=\#^ _P? . /V
- XM/\#X /CCP'!_\-\!^/_ ?9[P/\?^/OOA___\_\??_ . < X
- XM
- XM . '</P <!\ X ' #@=W X !P.. X #@/P-P<\=\ & ^#QX?
- XM' > #P #AP<,X<<. '!QQ@XPX <' X <#X X ^^;C.#CCC@YPP? !P.!AV
- XM#_P/@'P X X X < X#G'_ASPY\<<#@'/CW@. XYP!P/_GW@SQYX,^/
- XMN'' X!QQP,[F>&.!G#P' ' '
- XM #@ !W!_ . _ , !P X
- XM'_P. X#C@. !P'\&< 'G_@#@' ?^'P#X >#_P? !P=[#.'_#@!P<?
- XMX/\. '_P. ' ^ . /OF<S@X_PX.?X#X <#@8=@=\!P X . . . '
- XMQQX\8<,/.#A_#APXX#@ ..X <#NXXX8></&'CSAPP. <<.&.YCS!PQAX#P!P
- XM!X
- XM X [@'X' ?X < . =P#@ < XX#@ X 'A
- XMG YX\ P#X#[@X ^ ? _\!\ X'_PQAPXX <''C#@!P<#@!P/P#@#[YGLX.
- XM. .#GX /@' X&'8'_ < . ' #@!P!P !\<'. '!S@X. X<.. X #C\
- XM ' [N...#G!S@XX > #@''#ACN8?@<, \ < < < >,
- XM .
- XM.X!W!P'/P ' #@ /_@ #_X ' .. X < XQP .<' ,!G X ' ? '
- XMP<!^\?\<'. '!QP X X_<' X <#^ X W^8[.#C@#@Y_ \!P.!@X!_P/@#@!
- XMP X . < #W'!S@!P<_^#@.'#C@. X^ !P.[CCC@YP<X.. #X X!QP
- XM<P?\#P#F > #@' . /W
- XM #@ /_ =P[QQ\ !X!X!W#_X _
- XM^ #@#C@. . ./_ #G!P' XX < 'P !\' ?O&''!S@!P<< . .#G!P
- XM. ' [P. -[F'S@XX X.=X '@<#@8/ ?X&< X X . #@' !QQP<X <'
- XM. X!S@XX#@ ./P <#NXXXX.<'.#C@ /@. <<','_ > Y@/ X!P#@#_@
- XM
- XM #_QW</F<> . <!_\#@ X X XP#@' ,#G_S YP<!@
- XM.. ' X ? _\!\ '?Q@QP<8 <'' #@!@YP<#@!P.>#@#>Y@\8,. '#'/#
- XMX' XP#N!G@. . #@ <!P <<<'. '!S@ . ?P.. X #C^ ' [N...
- XM#G!S@XX \#@'' ^!_P/P'P'@ . < X!WX
- XM =P?^'9G'
- XM #P/ =W X X ? < ', X#@S@P!PX.>& 8#C@#@? ' !X/_!\ !P P.<
- XM''!G!AP8X <.<' X <#CPX,S.8/'##@!XQQXP.!P/# 8 [@PX#@' X ' <
- XM '''ASPQX\< #@. #C@. X[P!P.[CCCPQP8\.. &' XQQP/@.X&>!\
- XM#PP' ' ' 8\
- XM #@ .X#_!V8_\ <#@ < . ? 'P' !^
- XM.!_\?X <''#_ . <P#P'P#X '@ \ ' . ,#G#@XQQP<&. #CG!P. ' X>.#
- XM,SF!PY@X /X</.' <!_P& .X8' X!PP/P X_ ![Q\X<</?#C@X#_PX
- XMX#@ ..> <#NXXX>8>,'GC@!QP/8>\!P#N##P.!X<!P!P!P
- XM
- XM X #N ' X\'W #AP /@#@'P X#@ / ?\?_#\ ' _@?@# #X'P X ^
- XM < < !P#_WA__P'X_P/_GP ?CX^/X!P?#W_WM_P.'P? !X/A[_@?P/X!@#
- XMN/#X? _\#\ ./P /^;\#^!]X?@? ?^??#^ #GSX?Q__??#\'^ _Y\
- XM?X!\#[@< [CY^#@?_ / <!X
- XM
- XM < #@ /\
- XM < _
- XM @ PX !P . P '
- XM
- XM '
- XM X '
- XM 9[ ?_P # 8 ..
- XM < #@ < !P
- XM
- XM #@ <
- XM !@ /@
- XM '_\ P& #S ' X
- XM & <
- XM !P
- XM .
- XM#P
- XM /_ ?@ !P . /@ '
- XM
- XM 8
- XM # X
- XM !_@ #P
- X:^ 'P #P !P
- X
- Xend
- END_OF_FILE
- # end of 'font-32/Ugal13x20b'
- fi
- if test -f 'font-32/Ugal13x20r' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'font-32/Ugal13x20r'\"
- else
- echo shar: Extracting \"'font-32/Ugal13x20r'\" \(5772 characters\)
- sed "s/^X//" >'font-32/Ugal13x20r' <<'END_OF_FILE'
- Xbegin 644 gal13x20r.fnt
- XM& T4!8
- XM , 9@!F!@'# < 8 P8 ,!P 0!\ ?
- XM !@'X!P#_ \ ? >
- XM ^& #X $ 0 " 8 X !
- XMP '@ #@& <
- XM # &
- XM8 9A^")@/@/ 8# & ^ , _@/X X!^ P!_P1@(X
- XM /P P/\ ?C_ _X?\!^/#P_ ?AX<> <#L!P>!_@'@_P#_'_G@[@Y_>\'>#
- XMC_@/A@ ^ #@ , !@ . 3 P # ,< 8
- XM !@!@!@
- XM P!F &8_PB8&,#P . X
- XM !@1@' 8<$' . @ 8 P(,,$' '. ,!@@(,8<&"#! @Q@
- XM8# !@,,# #!Q@((X,,".&&!@Q&(P$8$,Q& C 0@P# , !@!L & X
- XM!@ $P < P ## & ! 8 8 8
- XM
- XM , 9@#,9N(L!C , # & P$,#P$#" P%@( ,
- XM"### P !!@/@%@8,$!!@@P00$8& P 8#& P X<<"$!A!A@P
- XMP$!@,!#"#,0P08( , P# 8 Q@ !@ & 8 # # P !@
- XM 0 # & ,
- XM # &8#_F9AS
- XM8P# !P!P \ ,##!L P ,!8$ # !@PPP, 8/\!8
- XM! !@88 , $ &!@, & S , .''@A PP80,8,,! 8# 0P@S$.(#$ & , 8 &
- XM 8, > !@ & P P , 8 ,
- XM P!@#
- XM P!F _YF !@#X!@ 8 , & # & P
- XMP# , ' F!_!@ 0&(,# P 8 8 !@2!@PP 8&& # # !@8# !@-@#
- XM #AQ8(P,,&,##@ & P$,(.Q!B Q !@# & !@ '@'P9X#\ ]@> , /D
- XM-X#P /##@&!NX)X!\.^ >1S@/X?\///!W^[X]X>?^ , 8 P
- XM
- XM , &8/@ 8!X P & # 9F P !@,, P # /@)@8X9X $ T#AP>
- XM& < #@ #!@8(P88, &!AA P@P 8& P 8#P P LL3",#### Q@@> !@,!!D
- XM#N@- &@ P P P 8 P#&&_!C@QX88# &/#G , PQ@!@-W'G CAQP(\-
- XM,&& P!AA@(S$<$,!@& & &
- XM # !F!^ , ^ ( !@ P
- XM';@, P## , !@'X$8 '&_ # & ?L'@#P <#_@> !@9R",'^# !@8?
- XMP/X, '_@, & \ , ++$8C PW@P,?P#P 8# 09 9H!@ P , , , &
- XMAAPX08(.,#!^#!@PP# ,,P 8#,PPP0<8.$'#C!@@, 88,$,Q#B!@A!P#@!@
- XM!P
- XM P S 'P& =P 8 , 9@# 8 PP# P '!
- XM& QPX @"P#S P \ > _X!X P&^@A!@PP 8&&$#"# !@8# !@/@# "RQ'(P,
- XM, ,#'P / & P$&0&Z 8 , & # !@!@ !X8&, &!C P, P8,, P ##X
- XM & S,,,,#&!C PP < # &!#,0= 8( X 8 8 8 <(
- XM ,
- XM,P!F!@&-@ & # /_ #_P & ,, P 8 PA@ ,8& (!& P & > '
- XM@8!LH?X8&, &!A@ P P^8& P 8#< P FL0R,## # QN X!@,! P!W@+ # !
- XM@ P , 8 #F&!C !@8_\# ,# , P\ !@,S### Q@8P,, #P P!A@
- XM8@;H#@#$ < # & , /F
- XM # /^ 9@SAAX !P!P!F#_P _
- XM\ # ## , , ,/^ #&!@& PP 8 '@ !X& ;*$&&!C !@88 , ,#&!@
- XM, & S@, )S$&C PP P,9P ' 8# 0. =P$8 P P , # & !AA@8P 8&
- XM, P!C PP# ,/@ 8#,PPPP,8&,## / , 88&(': < Q . P!@# #;
- XM
- XM #_AF8-$8< , 8!VX# P P P@# & (#'_B Q@8!
- XM,, & P > _X!X &?A A@80 8&& # ! Q@8# !@,<# "<Q X0(, &"&."
- XMP& P$#@#,!' , , # 8!@ 888&, &!C , ?@,, P ##< & S,,,,
- XM#&!C PP X# && T!V@+@&@' , 8 P!GP
- XM 9@?\&1&&
- XM #@. 9F P P > 8 &( P# C @!@P,<$ 0## # > & !P/^!X !@ @,8
- XM&&!&!!@0P 8,8& P 8##@P(B,0.&"# !PAAP@,!@." 0 S @P# & P & 8
- XM &&'!C@APX8 # , ## , PS@!@,S###@A@0X,, $& PAA@- ,P$<!H
- XM#@@& & & 0X
- XM # ,P#^!D0_X 8# 8 , > '@& !\
- XM,!_X?P 8&^ , 8@#@'@#P ' X & , (# PAA@8$, ##&!@, & P<,"
- XM(C$!@Q P /P8.,& 8!_@$ ,P0& P!@@/@ P^ !SAXP88.6## P#_@P
- XMP# ,,< 8#,PPP<0<(''# !A@.0<X!@#,"#@,!P8!@!@!@
- XM
- XM P #, & PX'F #!@ / # '@ P# . ?X?^#X & _ ? " #P'@ P \
- XM 8 8 !@#_G![_@'P_@/_'@ ?#P\/P!@>#G_G)[@,'@> !P/!S_ ?@/P! #
- XM,.#P> _X#X ,/@ /<3X#\!YP? > ?\>>#\ #'CP?AWN>>#X'\ _QX
- XM?P!X#S 8 S#Q\# ?^ . 8!P
- XM
- XM 8 # /X
- XM 8 ^
- XM $# @P !@ , @ &
- XM
- XM &
- XM P &
- XM 1R ?_@ " 0 ,,
- XM 8 # 8 !@
- XM
- XM # 8
- XM ! /
- XM '_X @$ #B & P
- XM $ 8
- XM !@
- XM ,
- XM#@
- XM /^ ? !@ , / &
- XM
- XM 0
- XM " P
- XM !_ #@
- X:\ '@ #@ !@
- X
- Xend
- END_OF_FILE
- # end of 'font-32/Ugal13x20r'
- fi
- if test -f 'src/graph_subs.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/graph_subs.c'\"
- else
- echo shar: Extracting \"'src/graph_subs.c'\" \(5999 characters\)
- sed "s/^X//" >'src/graph_subs.c' <<'END_OF_FILE'
- X/* Copyright (c) 1987 Bellcore
- X * All Rights Reserved
- X * Permission is granted to copy or use this program, EXCEPT that it
- X * may not be sold for profit, the copyright notice must be reproduced
- X * on copies, and credit should be given to Bellcore where it is due.
- X * BELLCORE MAKES NO WARRANTY AND ACCEPTS NO LIABILITY FOR THIS PROGRAM.
- X */
- X/* $Header: graph_subs.c,v 4.1 88/06/21 13:33:53 bianchi Exp $
- X $Source: /tmp/mgrsrc/src/RCS/graph_subs.c,v $
- X*/
- Xstatic char RCSid_[] = "$Source: /tmp/mgrsrc/src/RCS/graph_subs.c,v $$Revision: 4.1 $";
- X
- X/* graphics subs - mostly from the BLIT */
- X
- X#include "bitmap.h"
- X
- X/* circle of radius r centered at x1,y1 */
- X
- Xcircle(b,x1,y1,r,f)
- XBITMAP *b;
- Xint x1;
- Xregister int y1;
- Xint r, f;
- X{
- X register err = 0; /* x^2 + y^2 - r^2 */
- X register dxsq = 1; /* (x+dx)^2-x^2*/
- X register dysq = 1 - 2*r;
- X register exy;
- X int x0 = x1;
- X register y0 = y1 - r;
- X
- X y1 += r;
- X while(y1 > y0) {
- X bit_point(b,x0,y0,f);
- X bit_point(b,x0,y1,f);
- X bit_point(b,x1,y0,f);
- X bit_point(b,x1,y1,f);
- X exy = err + dxsq + dysq;
- X if(-exy <= err+dxsq) {
- X y1--;
- X y0++;
- X err += dysq;
- X dysq += 2;
- X }
- X if(exy <= -err) {
- X x1++;
- X x0--;
- X err += dxsq;
- X dxsq += 2;
- X }
- X }
- X bit_point(b,x0,y0,f);
- X bit_point(b,x1,y0,f);
- X }
- X
- X
- X#define labs(x,y) if((x=y)<0) x= -x
- X#define BIG 0x7fff
- X#define HUGE 0x3fffffffL
- X
- Xint bit_point();
- X
- X/* draw an ellipse centered at x0,y0 with half-axes a,b */
- X
- Xellipse(screen, x, y, a, b, f)
- XBITMAP *screen;
- Xint x, y;
- Xint a, b;
- Xint f;
- X {
- X if(a==0 || b==0)
- X bit_line(screen, x-a, y-b, x+a, y+b, f);
- X else
- X ellip1(screen, x, y, a, b, bit_point, 0, b, 0, b, f);
- X }
- X
- X/* calculate b*b*x*x + a*a*y*y - a*a*b*b avoiding ovfl */
- X
- Xstatic long
- Xresid(a,b,x,y)
- Xregister a,b;
- X {
- X long result = 0;
- X long u = b*((long)a*a - (long)x*x);
- X long v = (long)a*y*y;
- X register q = u>BIG? HUGE/u: BIG;
- X register r = v>BIG? HUGE/v: BIG;
- X while(a || b) {
- X if(result>=0 && b) {
- X if(q>b) q = b;
- X result -= q*u;
- X b -= q;
- X }
- X else {
- X if(r>a) r = a;
- X result += r*v;
- X a -= r;
- X }
- X }
- X return(result);
- X }
- X
- X/*
- X * clockwise ellipse centered at x0,y0 with half-axes a,b.
- X * from x1,y1 to x2,y2
- X * do "action" at each point
- X */
- X
- Xellip1(screen, x0,y0, a, b, action, x1,y1, x2,y2, f)
- Xint x0,y0, x1,y1, x2, y2;
- Xregister void (*action)();
- XBITMAP *screen;
- Xint f;
- X {
- X int z;
- X int dx = y1>0? 1: y1<0? -1: x1>0? -1: 1;
- X int dy = x1>0? -1: x1<0? 1: y1>0? -1: 1;
- X long a2 = (long)a*a;
- X long b2 = (long)b*b;
- X register long dex = b2*(2*dx*x1+1);
- X register long e;
- X register long dey = a2*(2*dy*y1+1);
- X register long ex, ey, exy;
- X
- X e = resid(a, b, x1, y1);
- X a2 *= 2;
- X b2 *= 2;
- X do {
- X labs(ex, e+dex);
- X labs(ey, e+dey);
- X labs(exy, e+dex+dey);
- X if(exy<=ex || ey<ex) {
- X y1 += dy;
- X e += dey;
- X dey += a2;
- X }
- X if(exy<=ey || ex<ey) {
- X x1 += dx;
- X e += dex;
- X dex += b2;
- X }
- X (*action)(screen, x0+x1, y0+y1, f);
- X if(x1 == 0) {
- X dy = -dy;
- X dey = -dey + a2;
- X }
- X else if(y1 == 0) {
- X for(z=x1; abs(z+=dx)<=a; )
- X (*action)(screen, x0+z, y0+y1, f);
- X dx = -dx;
- X dex = -dex + b2;
- X }
- X } while(x1!=x2 || y1!=y2);
- X }
- X
- X/*----------------------------------------------------------------------*/
- X
- X#define sq(x) ((long)(x)*(x))
- X#define sgn(x) ((x)<0? -1 : (x)==0? 0 : 1)
- X
- Xstatic long
- XLabs(x)
- Xlong x;
- X {
- X return(x<0? -x : x);
- X }
- X
- X/* Draw an approximate arc centered at x0,y0 of an
- X * integer grid and running anti-clockwise from
- X * x1,y1 to the vicinity of x2,y2.
- X * If the endpoints coincide, draw a complete circle.
- X *
- X * The "arc" is a sequence of vertically, horizontally,
- X * or diagonally adjacent points that minimize
- X * abs(x^2+y^2-r^2).
- X *
- X * The circle is guaranteed to be symmetric about
- X * the horizontal, vertical, and diagonal axes
- X */
- X
- Xarc(bp, x0,y0, x2,y2, x1,y1, f)
- Xregister BITMAP *bp;
- Xint x0,y0,x1,y1,x2,y2;
- X {
- X register dx, dy;
- X register eps; /* x^2 + y^2 - r^2 */
- X int dxsq, dysq; /* (x+dx)^2-x^2, ...*/
- X int ex, ey, exy;
- X
- X x1=x1-x0;
- X y1=y1-y0;
- X x2=x2-x0;
- X y2=y2-y0;
- X
- X nearby(x1,y1,x2,y2, &x2, &y2);
- X
- X dx = -sgn(y1);
- X dy = sgn(x1);
- X dxsq = (2*x1 + dx)*dx;
- X dysq = (2*y1 + dy)*dy;
- X eps = 0;
- X do {
- X if(x1 == 0) {
- X dy = -sgn(y1);
- X dysq = (2*y1 + dy)*dy;
- X }
- X else if(y1 == 0) {
- X dx = -sgn(x1);
- X dxsq = (2*x1 + dx)*dx;
- X }
- X ex = abs(eps + dxsq);
- X ey = abs(eps + dysq);
- X exy = abs(eps + dxsq + dysq);
- X if(ex<ey || exy<=ey) {
- X x1 += dx;
- X eps += dxsq;
- X dxsq += 2;
- X }
- X if(ey<ex || exy<=ex) {
- X y1 += dy;
- X eps += dysq;
- X dysq += 2;
- X }
- X bit_point(bp,x0+x1, y0+y1,f);
- X /* bit_blit(bp,x0+x1-1,y0+y1-1,2,2,f,NULL_DATA,0,0); */
- X }
- X while(!(x1==x2 && y1==y2)); /* Note1 */
- X }
- X
- X/* Note1: the equality end test is justified
- X * because it is impossible that
- X * abs(x^2+y^2-r^2)==abs((x+\010+-1)^2+y^2-r^2) or
- X * abs(x^2+y^2-r^2)==abs(x^2+(y+\010+-1)-r^2),
- X * and no values of x or y are skipped.
- X *
- X */
- X
- Xnearby(x1,y1, x2,y2, rx, ry)
- Xregister int x1, y1, x2, y2;
- Xint *rx, *ry;
- X {
- X long eps, exy, Labs(); /*integers but many bits*/
- X int d, dy;
- X register dx;
- X eps = sq(x2) + sq(y2) - sq(x1) - sq(y1);
- X d = eps>0? -1: 1;
- X for( ; ; eps=exy, x2+=dx, y2+=dy) {
- X if(abs(y2) > abs(x2)) {
- X dy = d*sgn(y2);
- X dx = 0;
- X }
- X else {
- X dy = 0;
- X dx = d*sgn(x2);
- X if(dx==0)
- X dx = 1;
- X }
- X exy = eps + (2*x2+dx)*dx + (2*y2+dy)*dy;
- X if(Labs(eps) <= Labs(exy))
- X break;
- X }
- X *rx = x2;
- X *ry = y2;
- X return(0);
- X }
- END_OF_FILE
- # end of 'src/graph_subs.c'
- fi
- echo shar: End of archive 23 \(of 61\).
- cp /dev/null ark23isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 \
- 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 \
- 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 \
- 55 56 57 58 59 60 61 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 61 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-