-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.c
More file actions
45 lines (43 loc) · 1.12 KB
/
main.c
File metadata and controls
45 lines (43 loc) · 1.12 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
#include "holberton.h"
/**
* main - main function for the shell
* @argc: number of arguments passed to main
* @argv: array of arguments passed to main
* @environment: array of environment variables
* Return: 0 or exit status, or ?
*/
int main(int argc __attribute__((unused)), char **argv, char **environment)
{
size_t lenBuffer = 0;
unsigned int isPipe = 0, i;
vabs_t vars = {NULL, NULL, NULL, NULL, NULL, 0, 0};
vars.argv = argv;
vars.env = makeEnv(environment);
if (!isatty(STDIN_FILENO))
isPipe = 1;
if (isPipe == 0)
write(1, "> ", 2);
while (getline(&(vars.buffer), &lenBuffer, stdin) != -1)
{
vars.count++;
vars.commands = parseString(vars.buffer, ";");
for (i = 0; vars.commands && vars.commands[i] != NULL; i++)
{
vars.cla = parseString(vars.commands[i], "\n \t\r");
if (vars.cla && vars.cla[0])
if (checkForBuiltins(&vars) == NULL)
check_for_path(&vars);
free(vars.cla);
}
free(vars.buffer);
free(vars.commands);
if (isPipe == 0)
write(1, "> ", 2);
vars.buffer = NULL;
}
if (isPipe == 0)
printStdout("\n");
freeEnv(vars.env);
free(vars.buffer);
exit(vars.status);
}