aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/command/jobs.cc2
-rw-r--r--src/eval.cc4
-rw-r--r--src/ground.cc8
-rw-r--r--src/handler.cc8
-rw-r--r--src/job.cc76
-rw-r--r--src/main.cc2
6 files changed, 50 insertions, 50 deletions
diff --git a/src/command/jobs.cc b/src/command/jobs.cc
index ccdda75..18acc0e 100644
--- a/src/command/jobs.cc
+++ b/src/command/jobs.cc
@@ -9,7 +9,7 @@ using namespace ov4;
void jobs(char **argv)
{
- listjobs(ov4::jobs);
+ listjobs();
}
}
diff --git a/src/eval.cc b/src/eval.cc
index 0a73c0d..c4862d2 100644
--- a/src/eval.cc
+++ b/src/eval.cc
@@ -79,7 +79,7 @@ void eval(char *cmdline)
if (!ground) // foreground
{
- addjob(jobs, pid, FG, cmdline);
+ addjob(pid, FG, cmdline);
sigset_t prev_with_sigchld_blocked = prev;
sigaddset(&prev_with_sigchld_blocked, SIGCHLD);
sigprocmask(SIG_SETMASK, &prev_with_sigchld_blocked, NULL);
@@ -88,7 +88,7 @@ void eval(char *cmdline)
}
else // background
{
- addjob(jobs, pid, BG, cmdline);
+ addjob(pid, BG, cmdline);
sigprocmask(SIG_SETMASK, &prev, NULL);
cout << "[" << pid2jid(pid) << "] (" << pid << ") " << cmdline;
}
diff --git a/src/ground.cc b/src/ground.cc
index 53f8652..e82fa94 100644
--- a/src/ground.cc
+++ b/src/ground.cc
@@ -17,8 +17,8 @@ void waitfg(pid_t pid)
// get current blocked signals
sigprocmask(0, nullptr, &prev_with_sigchld_unblocked);
sigdelset(&prev_with_sigchld_unblocked, SIGCHLD);
- LOG << "waiting for pid "<< fgpid(jobs) << endl;
- while (fgpid(jobs) != 0)
+ LOG << "waiting for pid "<< fgpid() << endl;
+ while (fgpid() != 0)
sigsuspend(&prev_with_sigchld_unblocked);
// set shell to foreground again
@@ -52,7 +52,7 @@ void do_bgfg(char **argv)
return;
}
x = atoi(&argv[1][1]); // eat %
- j = getjobjid(jobs, x);
+ j = getjobjid(x);
if (j == nullptr)
{
cerr << argv[1] << ": No such job" << endl;
@@ -65,7 +65,7 @@ void do_bgfg(char **argv)
return;
}
x = atoi(&argv[1][0]);
- j = getjobpid(jobs, x);
+ j = getjobpid(x);
if (j == nullptr)
{
cerr << "(" << argv[1] << "): No such process" << endl;
diff --git a/src/handler.cc b/src/handler.cc
index a6945a3..60b41fa 100644
--- a/src/handler.cc
+++ b/src/handler.cc
@@ -98,7 +98,7 @@ void sigchld_handler(int sig)
safe_debug("\n");
sigset_t prev_inner;
block_all(&prev_inner);
- job_suspend(jobs, pid);
+ job_suspend(pid);
sigprocmask(SIG_SETMASK, &prev_inner, nullptr);
}
else {
@@ -106,7 +106,7 @@ void sigchld_handler(int sig)
safe_debug(pid);
sigset_t prev_inner;
block_all(&prev_inner);
- deletejob(jobs, pid);
+ deletejob(pid);
sigprocmask(SIG_SETMASK, &prev_inner, nullptr);
}
}
@@ -129,7 +129,7 @@ void sigint_handler(int sig)
sigset_t prev;
block_handler(&prev);
- int pid = fgpid(jobs);
+ int pid = fgpid();
if (pid != 0)
{
kill(-pid, SIGINT);
@@ -157,7 +157,7 @@ void sigtstp_handler(int sig)
sigset_t prev;
block_handler(&prev);
- int pid = fgpid(jobs);
+ int pid = fgpid();
if (pid != 0)
{
kill(-pid, SIGTSTP);
diff --git a/src/job.cc b/src/job.cc
index a22f327..e4f9617 100644
--- a/src/job.cc
+++ b/src/job.cc
@@ -3,7 +3,7 @@
namespace ov4
{
-struct job_t jobs[MAXJOBS];
+struct job_t _jobs[MAXJOBS];
int nextjid = 1;
void clearjob(struct job_t *job) {
@@ -14,26 +14,26 @@ void clearjob(struct job_t *job) {
}
/* initjobs - Initialize the job list */
-void initjobs(struct job_t *jobs) {
+void initjobs(struct job_t *job) {
int i;
for (i = 0; i < MAXJOBS; i++)
- clearjob(&jobs[i]);
+ clearjob(&job[i]);
}
/* maxjid - Returns largest allocated job ID */
-int maxjid(struct job_t *jobs)
+int maxjid(struct job_t *job)
{
int i, max=0;
for (i = 0; i < MAXJOBS; i++)
- if (jobs[i].jid > max)
- max = jobs[i].jid;
+ if (job[i].jid > max)
+ max = job[i].jid;
return max;
}
/* addjob - Add a job to the job list */
-int addjob(struct job_t *jobs, pid_t pid, int state, char *cmdline)
+int addjob(pid_t pid, int state, char *cmdline, struct job_t *job)
{
int i;
@@ -41,15 +41,15 @@ int addjob(struct job_t *jobs, pid_t pid, int state, char *cmdline)
return 0;
for (i = 0; i < MAXJOBS; i++) {
- if (jobs[i].pid == 0) {
- jobs[i].pid = pid;
- jobs[i].state = state;
- jobs[i].jid = nextjid++;
+ if (job[i].pid == 0) {
+ job[i].pid = pid;
+ job[i].state = state;
+ job[i].jid = nextjid++;
if (nextjid > MAXJOBS)
nextjid = 1;
- strcpy(jobs[i].cmdline, cmdline);
+ strcpy(job[i].cmdline, cmdline);
if(verbose){
- printf("Added job [%d] %d %s\n", jobs[i].jid, jobs[i].pid, jobs[i].cmdline);
+ printf("Added job [%d] %d %s\n", job[i].jid, job[i].pid, job[i].cmdline);
}
return 1;
}
@@ -59,7 +59,7 @@ int addjob(struct job_t *jobs, pid_t pid, int state, char *cmdline)
}
/* deletejob - Delete a job whose PID=pid from the job list */
-int deletejob(struct job_t *jobs, pid_t pid)
+int deletejob(pid_t pid, struct job_t *job)
{
int i;
@@ -67,9 +67,9 @@ int deletejob(struct job_t *jobs, pid_t pid)
return 0;
for (i = 0; i < MAXJOBS; i++) {
- if (jobs[i].pid == pid) {
- clearjob(&jobs[i]);
- nextjid = maxjid(jobs)+1;
+ if (job[i].pid == pid) {
+ clearjob(&job[i]);
+ nextjid = maxjid(job)+1;
return 1;
}
}
@@ -77,63 +77,63 @@ int deletejob(struct job_t *jobs, pid_t pid)
}
/* fgpid - Return PID of current foreground job, 0 if no such job */
-pid_t fgpid(struct job_t *jobs) {
+pid_t fgpid(struct job_t *job) {
int i;
for (i = 0; i < MAXJOBS; i++)
- if (jobs[i].state == FG)
- return jobs[i].pid;
+ if (job[i].state == FG)
+ return job[i].pid;
return 0;
}
/* getjobpid - Find a job (by PID) on the job list */
-struct job_t *getjobpid(struct job_t *jobs, pid_t pid) {
+struct job_t *getjobpid(pid_t pid, struct job_t *job) {
int i;
if (pid < 1)
return NULL;
for (i = 0; i < MAXJOBS; i++)
- if (jobs[i].pid == pid)
- return &jobs[i];
+ if (job[i].pid == pid)
+ return &job[i];
return NULL;
}
/* getjobjid - Find a job (by JID) on the job list */
-struct job_t *getjobjid(struct job_t *jobs, int jid)
+struct job_t *getjobjid(int jid, struct job_t *job)
{
int i;
if (jid < 1)
return NULL;
for (i = 0; i < MAXJOBS; i++)
- if (jobs[i].jid == jid)
- return &jobs[i];
+ if (job[i].jid == jid)
+ return &job[i];
return NULL;
}
/* pid2jid - Map process ID to job ID */
-int pid2jid(pid_t pid)
+int pid2jid(pid_t pid, struct job_t *job)
{
int i;
if (pid < 1)
return 0;
for (i = 0; i < MAXJOBS; i++)
- if (jobs[i].pid == pid) {
- return jobs[i].jid;
+ if (job[i].pid == pid) {
+ return job[i].jid;
}
return 0;
}
/* listjobs - Print the job list */
-void listjobs(struct job_t *jobs)
+void listjobs(struct job_t *job)
{
int i;
for (i = 0; i < MAXJOBS; i++) {
- if (jobs[i].pid != 0) {
- printf("[%d] (%d) ", jobs[i].jid, jobs[i].pid);
- switch (jobs[i].state) {
+ if (job[i].pid != 0) {
+ printf("[%d] (%d) ", job[i].jid, job[i].pid);
+ switch (job[i].state) {
case BG:
printf("Running ");
break;
@@ -145,20 +145,20 @@ void listjobs(struct job_t *jobs)
break;
default:
printf("listjobs: Internal error: job[%d].state=%d ",
- i, jobs[i].state);
+ i, job[i].state);
}
- printf("%s", jobs[i].cmdline);
+ printf("%s", job[i].cmdline);
}
}
}
-bool job_suspend(struct job_t *jobs, pid_t pid) {
+bool job_suspend(pid_t pid, struct job_t *job) {
int i;
for (i = 0; i < MAXJOBS; i++)
- if (jobs[i].pid == pid)
+ if (job[i].pid == pid)
{
- jobs[i].state = ST;
+ job[i].state = ST;
return true;
}
return false;
diff --git a/src/main.cc b/src/main.cc
index ed88912..05136f4 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -61,7 +61,7 @@ int main(int argc, char **argv)
Signal(SIGQUIT, sigquit_handler);
/* Initialize the job list */
- initjobs(jobs);
+ initjobs();
/* Execute the shell's read/eval loop */
while (1) {