|
|
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 7.1 2/5/81) ! 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.