BSD 3 development
[unix-history] / usr / src / cmd / uucp / cico.c
index 891f4cb..ebf601f 100644 (file)
@@ -1,9 +1,12 @@
+       /*  @(#)cico    2.2  5/18/79  11:31:12  */
 #include "uucp.h"
 #include "uucpdefs.h"
 #include <signal.h>
 #include <sgtty.h>
 #include <setjmp.h>
 
 #include "uucp.h"
 #include "uucpdefs.h"
 #include <signal.h>
 #include <sgtty.h>
 #include <setjmp.h>
 
+char Scico[] = "@(#)cico       2.2";
+
 jmp_buf Sjbuf;
        /*  call fail text  */
 char *Stattext[] = {
 jmp_buf Sjbuf;
        /*  call fail text  */
 char *Stattext[] = {
@@ -18,6 +21,7 @@ char *Stattext[] = {
        };
 
 int Role = 0;
        };
 
 int Role = 0;
+char *ttyname();
 
        /*  call fail codes  */
 int Stattype[] = {0, 0, 0, 0,
 
        /*  call fail codes  */
 int Stattype[] = {0, 0, 0, 0,
@@ -49,7 +53,6 @@ char *argv[];
        extern char *pskip();
        char rflags[30];
        char *ttyn;
        extern char *pskip();
        char rflags[30];
        char *ttyn;
-       char *ttyname();
 
        signal(SIGILL, intrEXIT);
        signal(SIGTRAP, intrEXIT);
 
        signal(SIGILL, intrEXIT);
        signal(SIGTRAP, intrEXIT);
@@ -68,7 +71,8 @@ char *argv[];
        ASSERT(ret == 0, "BAD UID ret %d", ret);
 
        rflags[0] = '\0';
        ASSERT(ret == 0, "BAD UID ret %d", ret);
 
        rflags[0] = '\0';
-       strcpy(Rmtname, MYNAME);
+       uucpname(Myname);
+       strcpy(Rmtname, Myname);
        Ifn = Ofn = -1;
        while(argc>1 && argv[1][0] == '-'){
                switch(argv[1][1]){
        Ifn = Ofn = -1;
        while(argc>1 && argv[1][0] == '-'){
                switch(argv[1][1]){
@@ -313,17 +317,22 @@ loop:
                goto next;
        }
        else {
                goto next;
        }
        else {
+               logent("startup", "OK");
                systat(Rmtname, SS_INPROGRESS, "TALKING");
                ret = cntrl(Role, wkpre);
                DEBUG(1, "ret from cntrl - %d\n", ret);
                signal(SIGINT, SIG_IGN);
                signal(SIGHUP, SIG_IGN);
                signal(SIGALRM, timeout);
                systat(Rmtname, SS_INPROGRESS, "TALKING");
                ret = cntrl(Role, wkpre);
                DEBUG(1, "ret from cntrl - %d\n", ret);
                signal(SIGINT, SIG_IGN);
                signal(SIGHUP, SIG_IGN);
                signal(SIGALRM, timeout);
-               if (ret == 0)
+               if (ret == 0) {
+                       logent("conversation complete", "OK");
                        rmstat(Rmtname);
 
                        rmstat(Rmtname);
 
-               else
+               }
+               else {
+                       logent("conversation complete", "FAILED");
                        systat(Rmtname, SS_FAIL, "CONVERSATION");
                        systat(Rmtname, SS_FAIL, "CONVERSATION");
+               }
                alarm(MAXMSGTIME);
                omsg('O', "OOOOO", Ofn);
                DEBUG(4, "send OO %d,", ret);
                alarm(MAXMSGTIME);
                omsg('O', "OOOOO", Ofn);
                DEBUG(4, "send OO %d,", ret);
@@ -358,6 +367,7 @@ cleanup(code)
 int code;
 {
        int ret;
 int code;
 {
        int ret;
+       char *ttyn;
 
        signal(SIGINT, SIG_IGN);
        signal(SIGHUP, SIG_IGN);
 
        signal(SIGINT, SIG_IGN);
        signal(SIGHUP, SIG_IGN);
@@ -377,6 +387,9 @@ int code;
        if (Ofn != -1) {
                if (Role == MASTER)
                        write(Ofn, EOTMSG, strlen(EOTMSG));
        if (Ofn != -1) {
                if (Role == MASTER)
                        write(Ofn, EOTMSG, strlen(EOTMSG));
+               ttyn = ttyname(Ifn);
+               if (ttyn != NULL)
+                       chmod(ttyn, 0666);
                close(Ifn);
                close(Ofn);
        }
                close(Ifn);
                close(Ofn);
        }
@@ -404,7 +417,12 @@ intrINT() { onintr(SIGINT);}
 intrHUP() { onintr(SIGHUP);}
 intrQUIT() { onintr(SIGQUIT);}
 intrTERM() { onintr(SIGTERM);}
 intrHUP() { onintr(SIGHUP);}
 intrQUIT() { onintr(SIGQUIT);}
 intrTERM() { onintr(SIGTERM);}
-intrEXIT() {_exit(77);}
+intrEXIT()
+{
+       signal(SIGIOT, SIG_DFL);
+       setuid(getuid());
+       abort();
+}
 
 /***
  *     fixmode(tty)    fix kill/echo/raw on line
 
 /***
  *     fixmode(tty)    fix kill/echo/raw on line
@@ -419,8 +437,7 @@ int tty;
        int ret;
 
        ioctl(tty, TIOCGETP, &ttbuf);
        int ret;
 
        ioctl(tty, TIOCGETP, &ttbuf);
-       ttbuf.sg_flags |= (ANYP | RAW);
-       ttbuf.sg_flags &= ~(ECHO | ALLDELAY);
+       ttbuf.sg_flags = (ANYP | RAW);
        ret = ioctl(tty, TIOCSETP, &ttbuf);
        ASSERT(ret >= 0, "RETURN FROM STTY %d", ret);
        ioctl(tty, TIOCEXCL, 0);
        ret = ioctl(tty, TIOCSETP, &ttbuf);
        ASSERT(ret >= 0, "RETURN FROM STTY %d", ret);
        ioctl(tty, TIOCEXCL, 0);