Changeset 3435 for trunk/src/kash/jobs.c


Ignore:
Timestamp:
Sep 2, 2020, 10:30:54 PM (5 years ago)
Author:
bird
Message:

kash: Remove vfork code, we've never used it and we wont need it if we replace fork() with pthreads.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kash/jobs.c

    r3434 r3435  
    8686#ifdef KASH_USE_FORKSHELL2
    8787static int forkparent(shinstance *psh, struct job *jp, union node *n, int mode, pid_t pid);
    88 static void forkchild(shinstance *psh, struct job *jp, union node *n, int mode, int vforked);
     88static void forkchild(shinstance *psh, struct job *jp, union node *n, int mode);
    8989#endif
    9090
     
    149149                } while (0);
    150150
    151                 setsignal(psh, SIGTSTP, 0);
    152                 setsignal(psh, SIGTTOU, 0);
    153                 setsignal(psh, SIGTTIN, 0);
     151                setsignal(psh, SIGTSTP);
     152                setsignal(psh, SIGTTOU);
     153                setsignal(psh, SIGTTIN);
    154154                if (sh_getpgid(psh, 0) != psh->rootpid && sh_setpgid(psh, 0, psh->rootpid) == -1)
    155155                        error(psh, "Cannot set process group (%s) at %d",
     
    167167                shfile_close(&psh->fdtab, psh->ttyfd);
    168168                psh->ttyfd = -1;
    169                 setsignal(psh, SIGTSTP, 0);
    170                 setsignal(psh, SIGTTOU, 0);
    171                 setsignal(psh, SIGTTIN, 0);
     169                setsignal(psh, SIGTSTP);
     170                setsignal(psh, SIGTTOU);
     171                setsignal(psh, SIGTTIN);
    172172        }
    173173        psh->jobctl = on;
     
    798798                return -1; /* won't get here */
    799799        case 0:
    800                 forkchild(psh, jp, n, mode, 0);
     800                forkchild(psh, jp, n, mode);
    801801                return 0;
    802802        default:
     
    817817                /* child */
    818818                (void)arglen;
    819                 forkchild(psh, jp, n, mode, 0);
     819                forkchild(psh, jp, n, mode);
    820820                sh_exit(psh, child(psh, nchild, argp));
    821821                return 0;
     
    866866#endif
    867867void
    868 forkchild(shinstance *psh, struct job *jp, union node *n, int mode, int vforked)
     868forkchild(shinstance *psh, struct job *jp, union node *n, int mode)
    869869{
    870870        int wasroot;
     
    875875        wasroot = psh->rootshell;
    876876        TRACE((psh, "Child shell %d\n", sh_getpid(psh)));
    877         if (!vforked)
    878                 psh->rootshell = 0;
    879 
    880         closescript(psh, vforked);
    881         clear_traps(psh, vforked);
    882 #if JOBS
    883         if (!vforked)
    884                 psh->jobctl = 0;                /* do job control only in root shell */
     877        psh->rootshell = 0;
     878
     879        closescript(psh);
     880        clear_traps(psh);
     881#if JOBS
     882        psh->jobctl = 0;                /* do job control only in root shell */
    885883        if (wasroot && mode != FORK_NOJOB && mflag(psh)) {
    886884                if (jp == NULL || jp->nprocs == 0)
     
    896894                                    sh_strerror(psh, errno), __LINE__);
    897895                }
    898                 setsignal(psh, SIGTSTP, vforked);
    899                 setsignal(psh, SIGTTOU, vforked);
     896                setsignal(psh, SIGTSTP);
     897                setsignal(psh, SIGTTOU);
    900898        } else if (mode == FORK_BG) {
    901                 ignoresig(psh, SIGINT, vforked);
    902                 ignoresig(psh, SIGQUIT, vforked);
     899                ignoresig(psh, SIGINT);
     900                ignoresig(psh, SIGQUIT);
    903901                if ((jp == NULL || jp->nprocs == 0) &&
    904902                    ! fd0_redirected_p(psh)) {
     
    910908#else
    911909        if (mode == FORK_BG) {
    912                 ignoresig(psh, SIGINT, vforked);
    913                 ignoresig(psh, SIGQUIT, vforked);
     910                ignoresig(psh, SIGINT);
     911                ignoresig(psh, SIGQUIT);
    914912                if ((jp == NULL || jp->nprocs == 0) &&
    915913                    ! fd0_redirected_p(psh)) {
     
    921919#endif
    922920        if (wasroot && iflag(psh)) {
    923                 setsignal(psh, SIGINT, vforked);
    924                 setsignal(psh, SIGQUIT, vforked);
    925                 setsignal(psh, SIGTERM, vforked);
    926         }
    927 
    928         if (!vforked)
    929                 psh->jobs_invalid = 1;
     921                setsignal(psh, SIGINT);
     922                setsignal(psh, SIGQUIT);
     923                setsignal(psh, SIGTERM);
     924        }
     925
     926        psh->jobs_invalid = 1;
    930927}
    931928
Note: See TracChangeset for help on using the changeset viewer.