Added helpful hints

This commit is contained in:
BuildTools
2022-02-15 12:24:09 -05:00
parent f295498164
commit f01bc708f2
2 changed files with 31 additions and 8 deletions

View File

@@ -8,6 +8,8 @@ int main() {
int status_return = 0; int status_return = 0;
char *cmd; char *cmd;
char **args; char **args;
int numFail = 0;
int numSuccess = 0;
init_shell(); init_shell();
@@ -18,6 +20,25 @@ int main() {
free(cmd); free(cmd);
free(args); free(args);
// Check exit status for feedback
if ( status_return > 0 ) {
numFail++;
// Check for fail help messages
if ( numFail == 2 ) {
printf("Have you read the output of the `author` command?\n");
} else if ( numFail == 10 ) {
printf("Maybe we try typing backwards?\n");
}
} else if ( status_return == 0 ) {
numSuccess++;
// Check for success help messages
if ( numSuccess == 4 ) {
printf("Might be worth trying to figure out why this is your shell?\n");
} else if ( numSuccess == 10 ) {
printf("Random trivia: Shells are defined in /etc/passwd\n");
}
} // else command was NULL and skip
} while(status_return != 255); } while(status_return != 255);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }

View File

@@ -42,6 +42,7 @@ void init_shell() {
"= For more information run help. =\n" "= For more information run help. =\n"
"= For information on the author: =\n" "= For information on the author: =\n"
"= run author. =\n" "= run author. =\n"
"= READ ME!! =\n"
"======================================\n"; "======================================\n";
clear(); clear();
@@ -51,7 +52,6 @@ void init_shell() {
} }
int reverse_exit(char **args) { int reverse_exit(char **args) {
printf("Exiting...\n");
return 255; return 255;
} }
@@ -62,9 +62,9 @@ int reverse_help(char **args) {
char *read_input() { char *read_input() {
int c, input_len = 0; int c, input_len = 0;
char *user_input = malloc((input_len+1) * sizeof(char)); char *user_input = calloc(0, (input_len+1) * sizeof(char));
printf(">> "); printf("$ ");
while((c=getchar()) !='\n' && c != EOF) { while((c=getchar()) !='\n' && c != EOF) {
input_len++; input_len++;
@@ -89,22 +89,24 @@ int reverse_external_execute(char **args) {
if (pid == 0) { if (pid == 0) {
if(execvp(args[0], args) == -1) { if(execvp(args[0], args) == -1) {
printf("ERROR\n"); printf("ERROR\n");
//return 1;
} }
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} else if(pid < 0) { } else if(pid < 0) {
printf("ERROR\n"); printf("PID ERROR\n");
return 1;
} else { } else {
do { do {
waitpid(pid, &status, WUNTRACED); waitpid(pid, &status, WUNTRACED);
} while(!WIFEXITED(status) && !WIFSIGNALED(status)); } while(!WIFEXITED(status) && !WIFSIGNALED(status));
} }
return 1; return status;
} }
void reverse_command(char *args) { void reverse_command(char *args) {
char *temp_string; char *temp_string;
temp_string = malloc(strlen(args)); temp_string = calloc(0, strlen(args));
strcpy(temp_string, args); strcpy(temp_string, args);
for(int i = 0; i < strlen(args); i++) { for(int i = 0; i < strlen(args); i++) {
temp_string[i] = args[strlen(args)-(i+1)]; temp_string[i] = args[strlen(args)-(i+1)];
@@ -116,7 +118,7 @@ void reverse_command(char *args) {
int reverse_execute(char **args) { int reverse_execute(char **args) {
if (args[0] == NULL) { if (args[0] == NULL) {
return 1; return -1;
} }
for(int i = 0; i < builtin_func_num(); i++) { for(int i = 0; i < builtin_func_num(); i++) {
@@ -130,7 +132,7 @@ int reverse_execute(char **args) {
char **split_cmd(char *line) { char **split_cmd(char *line) {
size_t size = 8; size_t size = 8;
int pos = 0; int pos = 0;
char **args = malloc(size * sizeof(char*)); char **args = calloc(0, size * sizeof(char*));
char *arg = NULL; char *arg = NULL;
if(line == NULL) { if(line == NULL) {