missing error return
[unix-history] / usr / src / sys / kern / kern_sig.c
index ce67d71..614642a 100644 (file)
@@ -3,7 +3,7 @@
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
- *     @(#)kern_sig.c  6.17 (Berkeley) %G%
+ *     @(#)kern_sig.c  6.21 (Berkeley) %G%
  */
 
 #include "../machine/reg.h"
  */
 
 #include "../machine/reg.h"
@@ -28,6 +28,8 @@
 #include "kernel.h"
 
 #define        cantmask        (sigmask(SIGKILL)|sigmask(SIGCONT)|sigmask(SIGSTOP))
 #include "kernel.h"
 
 #define        cantmask        (sigmask(SIGKILL)|sigmask(SIGCONT)|sigmask(SIGSTOP))
+#define        stopsigmask     (sigmask(SIGSTOP)|sigmask(SIGTSTP)| \
+                       sigmask(SIGTTIN)|sigmask(SIGTTOU))
 
 /*
  * Generalized interface signal handler.
 
 /*
  * Generalized interface signal handler.
@@ -268,7 +270,7 @@ killpg1(signo, pgrp, all)
                if (signo)
                        psignal(p, signo);
        }
                if (signo)
                        psignal(p, signo);
        }
-       return (f == 0 ? ESRCH : error);
+       return (error ? error : (f == 0 ? ESRCH : 0));
 }
 
 /*
 }
 
 /*
@@ -323,8 +325,6 @@ psignal(p, sig)
                else
                        action = SIG_DFL;
        }
                else
                        action = SIG_DFL;
        }
-#define        stops   (sigmask(SIGSTOP)|sigmask(SIGTSTP)| \
-                       sigmask(SIGTTIN)|sigmask(SIGTTOU))
        if (sig) {
                p->p_sig |= mask;
                switch (sig) {
        if (sig) {
                p->p_sig |= mask;
                switch (sig) {
@@ -340,7 +340,7 @@ psignal(p, sig)
                        break;
 
                case SIGCONT:
                        break;
 
                case SIGCONT:
-                       p->p_sig &= ~stops;
+                       p->p_sig &= ~stopsigmask;
                        break;
 
                case SIGSTOP:
                        break;
 
                case SIGSTOP:
@@ -351,7 +351,6 @@ psignal(p, sig)
                        break;
                }
        }
                        break;
                }
        }
-#undef stops
        /*
         * Defer further processing for signals which are held.
         */
        /*
         * Defer further processing for signals which are held.
         */
@@ -531,11 +530,10 @@ issig()
                if ((p->p_flag&STRC) == 0)
                        sigbits &= ~p->p_sigignore;
                if (p->p_flag&SVFORK)
                if ((p->p_flag&STRC) == 0)
                        sigbits &= ~p->p_sigignore;
                if (p->p_flag&SVFORK)
-#define bit(a) (1<<(a-1))
-                       sigbits &= ~(bit(SIGSTOP)|bit(SIGTSTP)|bit(SIGTTIN)|bit(SIGTTOU));
+                       sigbits &= ~stopsigmask;
                if (sigbits == 0)
                        break;
                if (sigbits == 0)
                        break;
-               sig = ffs(sigbits);
+               sig = ffs((long)sigbits);
                mask = sigmask(sig);
                p->p_sig &= ~mask;              /* take the signal! */
                p->p_cursig = sig;
                mask = sigmask(sig);
                p->p_sig &= ~mask;              /* take the signal! */
                p->p_cursig = sig;
@@ -580,7 +578,7 @@ issig()
                                continue;
                        }
                }
                                continue;
                        }
                }
-               switch (u.u_signal[sig]) {
+               switch ((int)u.u_signal[sig]) {
 
                case SIG_DFL:
                        /*
 
                case SIG_DFL:
                        /*
@@ -791,17 +789,17 @@ core()
        u.u_error = rdwri(UIO_WRITE, ip,
            (caddr_t)&u,
            ctob(UPAGES),
        u.u_error = rdwri(UIO_WRITE, ip,
            (caddr_t)&u,
            ctob(UPAGES),
-           0, 1, (int *)0);
+           (off_t)0, 1, (int *)0);
        if (u.u_error == 0)
                u.u_error = rdwri(UIO_WRITE, ip,
                    (caddr_t)ctob(dptov(u.u_procp, 0)),
        if (u.u_error == 0)
                u.u_error = rdwri(UIO_WRITE, ip,
                    (caddr_t)ctob(dptov(u.u_procp, 0)),
-                   ctob(u.u_dsize),
-                   ctob(UPAGES), 0, (int *)0);
+                   (int)ctob(u.u_dsize),
+                   (off_t)ctob(UPAGES), 0, (int *)0);
        if (u.u_error == 0)
                u.u_error = rdwri(UIO_WRITE, ip,
                    (caddr_t)ctob(sptov(u.u_procp, u.u_ssize - 1)),
        if (u.u_error == 0)
                u.u_error = rdwri(UIO_WRITE, ip,
                    (caddr_t)ctob(sptov(u.u_procp, u.u_ssize - 1)),
-                   ctob(u.u_ssize),
-                   ctob(UPAGES)+ctob(u.u_dsize), 0, (int *)0);
+                   (int)ctob(u.u_ssize),
+                   (off_t)ctob(UPAGES)+ctob(u.u_dsize), 0, (int *)0);
 out:
        iput(ip);
        return (u.u_error == 0);
 out:
        iput(ip);
        return (u.u_error == 0);