-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathexecute.c
More file actions
116 lines (95 loc) · 2.09 KB
/
execute.c
File metadata and controls
116 lines (95 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "def.h"
void execute(char *cur, char home[], process proc[], int *proc_size, char data[20][MAX_SIZE], int done, char duplicate3[], int flag, int outputRedirection, int inputRedirection)
{
// printf("*****\n");
if(strcmp(cur, "quit") == 0)
{
exit(0);
}
else if(strcmp(cur, "cd") == 0)
{
// printf("*****\n");
cd(cur, home);
}
else if(strcmp(cur, "kjob") == 0)
{
kjob(cur, proc);
}
else if(strcmp(cur, "overkill") == 0)
{
overkill(proc);
}
else if(strcmp(cur, "bg") == 0)
{
bg(cur, proc);
}
else if(strcmp(cur, "fg") == 0)
{
fg(cur, proc, &proc_size);
}
else if(strcmp(cur, "pwd") == 0)
{
pwd();
}
else if(strcmp(cur, "echo") == 0)
{
exEcho(cur);
}
else if(strcmp(cur, "ls") == 0)
{
ls(cur, home);
}
else if(strcmp(cur, "pinfo") == 0)
{
pinfo(cur, home);
}
else if(strcmp(cur, "history") == 0)
{
history(cur, data, done);
}
else if(strcmp(cur, "nightswatch") == 0)
{
nightswatch(cur);
}
else if(strcmp(cur, "jobs") == 0)
{
// printf("*** %s\n", cur);
jobs(proc);
}
else if(strcmp(cur, "setenv") == 0)
{
setEnv(cur);
}
else if(strcmp(cur, "unsetenv") == 0)
{
unsetEnv(cur);
}
else if(strcmp(cur, "cronjob") == 0)
{
int cronPid = fork();
if(cronPid == -1)
{
perror("Unable to fork");
}
else if(cronPid == 0)
{
cronjob(cur, home, proc, *proc_size, data, done, duplicate3);
exit(0);
}
else
{
proc[*proc_size].pid = cronPid;
strcpy(proc[*proc_size].name, duplicate3);
(*proc_size)++;
}
}
else
{
if(outputRedirection > 0 || inputRedirection > 0)
{
strcpy(duplicate3, cur);
}
// printf("%s * %s\n", cur, duplicate3);
fg_bg(duplicate3, flag, &proc_size, proc);
}
}