console_line #7

Merged
cromer merged 7 commits from getchar into master 2021-06-26 23:15:01 -04:00
3 changed files with 35 additions and 0 deletions
Showing only changes of commit 4ea527064a - Show all commits

View File

@ -16,11 +16,20 @@
#include <string.h>
#include "array.h"
/**
* Create a String Array by initializing its structure.
* @param string_array The String Array to create.
*/
void create_string_array(StringArray *string_array) {
string_array->array = NULL;
string_array->size = 0;
}
/**
* Insert a string into the String Array.
* @param string_array The String Array to insert into.
* @param string The string to insert into the String Array.
*/
void insert_string_array(StringArray *string_array, char *string) {
if (string_array->size == 0) {
string_array->array = malloc(sizeof(char *));
@ -33,6 +42,11 @@ void insert_string_array(StringArray *string_array, char *string) {
string_array->size++;
}
/**
* Delete a string from the String Array.
* @param string_array The String Array to delete from.
* @param index The index in the String Array to delete.
*/
void delete_string_array(StringArray *string_array, int index) {
if (string_array->size > 0 && string_array->size > index) {
for (int i = index; i < string_array->size - 1; i++) {
@ -48,6 +62,10 @@ void delete_string_array(StringArray *string_array, int index) {
}
}
/**
* Free the String Array and all of its strings.
* @param string_array The String Array to free.
*/
void free_string_array(StringArray *string_array) {
for (int i = 0; i < string_array->size; i++) {
free(string_array->array[i]);

View File

@ -18,6 +18,11 @@
#include "array.h"
#include "builtins.h"
/**
* Check if the command is a builtin or not.
* @param command String with the command name to check.
* @return Returns true if it's a builtin or false otherwise.
*/
bool is_builtin(char *command) {
if (strcmp(command, "exit") == 0) {
return true;
@ -30,12 +35,20 @@ bool is_builtin(char *command) {
return false;
}
/**
* Run the builtin command.
* @param string_array An array of strings containing the arguments to run.
*/
void run_builtin(StringArray *string_array) {
if (strcmp(string_array->array[0], "exit") == 0) {
exit_shell(string_array);
}
}
/**
* Exit the shell.
* @param string_array The arguments that were used to call exit. This is used to free the memory before exit.
*/
void exit_shell(StringArray *string_array) {
free_string_array(string_array);
exit(EXIT_SUCCESS);

View File

@ -59,6 +59,10 @@ void print_input_line() {
free(cwd);
}
/**
* Get input from the console.
* @return Returns a string input by the user.
*/
char *get_console_input() {
size_t buffer_size = 0;
char *line = NULL;