aboutsummaryrefslogtreecommitdiff
path: root/src/helper_functions.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/helper_functions.c')
-rw-r--r--src/helper_functions.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/helper_functions.c b/src/helper_functions.c
index 9427b87..5c81f15 100644
--- a/src/helper_functions.c
+++ b/src/helper_functions.c
@@ -1,6 +1,8 @@
#ifndef shell_helper_functions
#define shell_helper_functions
+#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -51,4 +53,38 @@ char *str_replace(char *orig, char *rep, char *with) {
return result;
}
+char *basename(char *path_in)
+{
+ char *token = NULL;
+ char *lastToken = NULL;
+ char *basePath;
+
+ basePath = (char *)malloc(sizeof(char) * (strlen(path_in) + 1));
+ if (!basePath) {
+ fprintf(stderr, "lsh: allocatin error\n");
+ exit(EXIT_FAILURE);
+ }
+ strcpy(basePath, path_in);
+
+ token = strtok(basePath, "/");
+ while (token != NULL) {
+ lastToken = token;
+ token = strtok(NULL, "/");
+ }
+
+ if (lastToken == NULL){
+ free(basePath);
+ return NULL;
+ }
+
+ char *ret_str = (char*)malloc(sizeof(char)*strlen(lastToken)+1);
+ if (!ret_str) {
+ fprintf(stderr, "lsh: allocation error\n");
+ exit(EXIT_FAILURE);
+ }
+ strcpy(ret_str,lastToken);
+ free(basePath);
+ return ret_str;
+}
+
#endif