Annotation of 43BSD/ingres/source/monitor/edit.c, revision 1.1.1.1

1.1       root        1: # include      "monitor.h"
                      2: # include      <ingres.h>
                      3: # include      <aux.h>
                      4: # include      <opsys.h>
                      5: # include      <sccs.h>
                      6: 
                      7: SCCSID(@(#)edit.c      8.1     12/31/84)
                      8: 
                      9: 
                     10: 
                     11: /*
                     12: **  CALL TEXT EDITOR
                     13: **
                     14: **     The UNIX text editor is called.  The actual call is to
                     15: **     the macro {editor}.  If that fails, /bin/ed is called.
                     16: **     This routine suppressed the autoclear function.
                     17: **
                     18: **     Uses trace flag 4
                     19: */
                     20: 
                     21: edit()
                     22: {
                     23:        register int    i;
                     24:        register char   *p;
                     25:        register char   *editfile;
                     26:        extern char     *getfilenm(), *macro();
                     27: 
                     28:        editfile = getfilenm();
                     29:        if (*editfile == 0)
                     30:                editfile = Qbname;
                     31: 
                     32:        Autoclear = 0;
                     33:        fclose(Qryiop);
                     34: 
                     35:        /* FORK SENTRY PROCESS & INVOKE THE EDITOR */
                     36:        if ((Xwaitpid = fork()) < 0)
                     37:                syserr("edit: fork");
                     38:        if (Xwaitpid == 0)
                     39:        {
                     40:                setuid(getuid());
                     41: #              ifndef xB_UNIX
                     42:                setgid(getgid());
                     43: #              endif
                     44:                for (i = 3; i < NOFILE; i++)
                     45:                        close(i);
                     46:                p = macro("{editor}");
                     47:                if (p != 0)
                     48:                {
                     49:                        execl(p, p, editfile, 0);
                     50:                        printf("Cannot call %s; using /bin/ed\n", p);
                     51:                }
                     52:                execl("/bin/ed", "ed", editfile, 0);
                     53:                syserr("edit: exec");
                     54:        }
                     55: 
                     56:        /* WAIT FOR SENTRY TO DIE */
                     57:        if (Nodayfile >= 0)
                     58:                printf(">>ed\n");
                     59:        xwait();
                     60: }

unix.superglobalmegacorp.com

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