Code:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
#define MAX_LINE 80
void setup(char inputBuffer[], char *args[], int *background)
{
}
/*
void parse(char *line, char **args)
{
while (*line != '\0') {
while (*line == ' ' || *line == '\t' || *line == '\n')
*line++ = '\0';
*args++ = line;
while (*line != '\0' && *line != ' ' &&
*line != '\t' && *line != '\n')
line++;
}
*args = '\0';
}//end of void parse(char *line, char **args)
*/
void parse(char *line, char **args)
{
while (*line != '\0') {
while (*line == ' ' || *line == '\t' || *line == '\n')
*line++ = '\0';
*args++ = line;
while (*line != '\0' && *line != ' ' &&
*line != '\t' && *line != '\n')
*line++;
}
*args = '\0';
}//end of void parse(char *line, char **args)
void preparse(char *line, char **args)
{
char result[] = "ls";
parse(result, args);
}
void shell(char **args)
{
int state;
pid_t pid;
pid = fork();
if(pid < 0){
fprintf(stderr, "Fork Failed");
exit(-1);
}//end of if(pid < 0)
else if (pid == 0) { /* for the child process: */
if (execvp(*args, args) < 0) { /* execute the command */
printf("execvp failed\n");
exit(1);
}
}
else { /* for the parent: */
while (wait(&state) != pid); /* wait for completion */
}
}//end of shell();
int main(void)
{
char inputBuffer[MAX_LINE];
int background;
char *args[MAX_LINE/2 + 1];
char commandLine[512];
char commandLine1[256];
char commandLine2[128];
char commandLine3[128];
char commandLine4[128];
int semicolon = 0;
while(1)
{
background = 0;
printf(" COMMAND ->");
setup(inputBuffer, args, &background);
gets(commandLine);
//getsnew(commandLine);
preparse(commandLine, args);
//parse(commandLine, args);
shell(args);
}//end of while(1)
printf("\n");
}//end of int main(void)