stuff
This commit is contained in:
@@ -22,19 +22,21 @@
|
|||||||
*/
|
*/
|
||||||
int read_cmd_string(char dest[INPUT_MAX])
|
int read_cmd_string(char dest[INPUT_MAX])
|
||||||
{
|
{
|
||||||
// Read user input
|
// Read user input
|
||||||
if(fgets(dest, INPUT_MAX, stdin) == NULL) {
|
if (fgets(dest, INPUT_MAX, stdin) == NULL)
|
||||||
fprintf(stderr, "Unable to read user input\n");
|
{
|
||||||
return -1;
|
fprintf(stderr, "Unable to read user input\n");
|
||||||
}
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// Remove trailing return character
|
// Remove trailing return character
|
||||||
int len = strlen(dest);
|
int len = strlen(dest);
|
||||||
if(dest[len-1] == '\n') {
|
if (dest[len - 1] == '\n')
|
||||||
dest[len - 1] = '\0';
|
{
|
||||||
}
|
dest[len - 1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* parse_commands()
|
/* parse_commands()
|
||||||
@@ -46,57 +48,61 @@ int read_cmd_string(char dest[INPUT_MAX])
|
|||||||
*/
|
*/
|
||||||
int parse_commands(char input[INPUT_MAX], char cmd_strs[CMD_MAX][INPUT_MAX])
|
int parse_commands(char input[INPUT_MAX], char cmd_strs[CMD_MAX][INPUT_MAX])
|
||||||
{
|
{
|
||||||
// Chop the input into command strings
|
// Chop the input into command strings
|
||||||
int cmd_count = 0;
|
int cmd_count = 0;
|
||||||
char* cmd_ptr = strtok(input, ";");
|
char *cmd_ptr = strtok(input, ";");
|
||||||
while(cmd_ptr) {
|
while (cmd_ptr)
|
||||||
if(cmd_count >= CMD_MAX) {
|
{
|
||||||
fprintf(stderr, "Too many commands\n");
|
if (cmd_count >= CMD_MAX)
|
||||||
return -1;
|
{
|
||||||
}
|
fprintf(stderr, "Too many commands\n");
|
||||||
strncpy(cmd_strs[cmd_count], cmd_ptr, INPUT_MAX);
|
return -1;
|
||||||
cmd_count++;
|
}
|
||||||
cmd_ptr = strtok(NULL, ";");
|
strncpy(cmd_strs[cmd_count], cmd_ptr, INPUT_MAX);
|
||||||
}
|
cmd_count++;
|
||||||
|
cmd_ptr = strtok(NULL, ";");
|
||||||
|
}
|
||||||
|
|
||||||
return cmd_count;
|
return cmd_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
char user_input[INPUT_MAX];
|
char user_input[INPUT_MAX];
|
||||||
char cmd_strs[CMD_MAX][INPUT_MAX];
|
char cmd_strs[CMD_MAX][INPUT_MAX];
|
||||||
|
|
||||||
// TODO need to be able to get input from
|
// TODO need to be able to get input from
|
||||||
// the user in a loop
|
// the user in a loop
|
||||||
|
|
||||||
// Print the input prompt
|
// Print the input prompt
|
||||||
printf("$> ");
|
printf("$> ");
|
||||||
|
|
||||||
// Read user input
|
// Read user input
|
||||||
if(read_cmd_string(user_input) == -1) {
|
if (read_cmd_string(user_input) == -1)
|
||||||
return 1;
|
{
|
||||||
}
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: Figure out how to handle the 'quit' command
|
// TODO: Figure out how to handle the 'quit' command
|
||||||
|
|
||||||
// Chop the input into command strings
|
// Chop the input into command strings
|
||||||
int cmd_count = parse_commands(user_input, cmd_strs);
|
int cmd_count = parse_commands(user_input, cmd_strs);
|
||||||
if(cmd_count == -1) {
|
if (cmd_count == -1)
|
||||||
return 1;
|
{
|
||||||
}
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// Chop the commands into arguments and execute one at a time
|
// Chop the commands into arguments and execute one at a time
|
||||||
for(int i = 0; i < cmd_count; i++) {
|
for (int i = 0; i < cmd_count; i++)
|
||||||
|
{
|
||||||
|
|
||||||
// TODO:
|
// TODO:
|
||||||
// 1) Chop the command into command line arguments
|
// 1) Chop the command into command line arguments
|
||||||
// need to handle up to 10 arguments
|
// need to handle up to 10 arguments
|
||||||
// NOTE: the command name is always the first argument
|
// NOTE: the command name is always the first argument
|
||||||
// 2) fork a process
|
// 2) fork a process
|
||||||
// 3) execute the command with execvp
|
// 3) execute the command with execvp
|
||||||
|
}
|
||||||
|
|
||||||
}
|
return 0;
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user