Annotation of 43BSD/contrib/B/src/bed/help.c, revision 1.1

1.1     ! root        1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1984. */
        !             2: static char rcsid[] = "$Header: help.c,v 2.6 85/08/22 16:03:38 timo Exp $";
        !             3: 
        !             4: /*
        !             5:  * B editor -- Print help blurb.
        !             6:  */
        !             7: 
        !             8: #include "feat.h"
        !             9: 
        !            10: #ifdef HELPFUL
        !            11: 
        !            12: #include "unix.h"
        !            13: 
        !            14: #ifdef IBMPC
        !            15: #define getchar() getch()
        !            16: #endif IBMPC
        !            17: 
        !            18: #ifdef SIGNAL
        !            19: #include <signal.h>
        !            20: #endif SIGNAL
        !            21: 
        !            22: #ifdef SGTTY_H
        !            23: #include <sgtty.h>
        !            24: #endif SGTTY_H
        !            25: 
        !            26: #include "b.h"
        !            27: 
        !            28: string unixerror();
        !            29: 
        !            30: #ifndef HELPBLURB
        !            31: #define HELPBLURB "/usr/new/lib/B/Bed_help"
        !            32: #endif
        !            33: 
        !            34: #define SOBIT 0200
        !            35: 
        !            36: extern int winheight;
        !            37: extern int llength;
        !            38: extern int winstart;
        !            39: 
        !            40: 
        !            41: /*
        !            42:  * Interrupt catcher while printing message.
        !            43:  */
        !            44: 
        !            45: Hidden int intr;
        !            46: 
        !            47: #ifdef SIGNAL
        !            48: Hidden Procedure
        !            49: stop()
        !            50: {
        !            51:        intr = Yes;
        !            52:        signal(SIGINT, stop);
        !            53: }
        !            54: #endif SIGNAL
        !            55: 
        !            56: 
        !            57: /*
        !            58:  * Print help blurb.
        !            59:  * This is done through the standard screen interface.
        !            60:  * An interrupt during the printing only stops the printing.
        !            61:  * The user must type [return] to continue.
        !            62:  */
        !            63: 
        !            64: Visible bool
        !            65: help()
        !            66: {
        !            67:        FILE *fp;
        !            68:        string helpblurb;
        !            69:        char buffer[81];
        !            70:        int len = sizeof buffer;
        !            71:        string cp;
        !            72: #ifdef SIGNAL
        !            73:        int (*prevsig)();
        !            74: #endif SIGNAL
        !            75: #ifdef SGTTY_H
        !            76:        struct sgttyb tty;
        !            77: #endif SGTTY_H
        !            78:        int c;
        !            79:        
        !            80:        helpblurb = getenv("BED_HELP");
        !            81:        if (!helpblurb || !helpblurb[0])
        !            82:                helpblurb = HELPBLURB;
        !            83:        fp = fopen(helpblurb, "r");
        !            84:        if (!fp) {
        !            85:                error("Sorry, I can't help [%s]", unixerror(helpblurb));
        !            86:                return No;
        !            87:        }
        !            88: #ifdef SIGNAL
        !            89:        intr = No;
        !            90:        prevsig = signal(SIGINT, stop);
        !            91: #endif SIGNAL
        !            92:        if (llength < (sizeof buffer)-1)
        !            93:                len = llength+1;
        !            94:        while (!intr && fgets(buffer, len, fp)) {
        !            95:                cp = index(buffer, '\n');
        !            96:                if (cp)
        !            97:                        *cp = '\0';
        !            98:                trmputdata(winheight, winheight, 0, buffer);
        !            99:                trmscrollup(0, winheight, 1);
        !           100:                trmsync(winheight, 0);
        !           101:        }
        !           102:        fclose(fp);
        !           103: #ifdef SIGNAL
        !           104:        signal(SIGINT, prevsig);
        !           105:        if (intr)
        !           106:                trmundefined();
        !           107:                /* UNIX discards output when interrupted */
        !           108:                /* so output position is uncertain */
        !           109: #endif SIGNAL
        !           110:        trmputdata(winheight, winheight, 0, "");
        !           111:        strcpy(buffer, "Press [return] to continue");
        !           112:        for (cp = buffer; *cp; )
        !           113:                *cp++ |= SOBIT;
        !           114:        trmputdata(winheight, winheight, 0, buffer);
        !           115:        trmsync(winheight, cp - buffer);
        !           116:        c = getchar();
        !           117:        while (c != '\n' && c != '\r' && c != EOF) {
        !           118:                trmbell();
        !           119:                c = getchar();
        !           120:        }
        !           121:        trmputdata(winheight, winheight, 0, "");
        !           122:        winstart = winheight;
        !           123:        return Yes;
        !           124: }
        !           125: #endif HELPFUL

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.