aboutsummaryrefslogtreecommitdiff
path: root/src/lsh_builtins.c
diff options
context:
space:
mode:
authoriceyrazor <iceyrazor@mailfence.com>2026-02-09 19:36:03 -0600
committericeyrazor <iceyrazor@mailfence.com>2026-02-09 19:36:03 -0600
commitf1f01cbbf9681ee311a69db40e832c630950cb53 (patch)
treec2f1f743856ec7601635e74b0bdd5d1f633c80ae /src/lsh_builtins.c
parent5f08fd6e7794dcdfb74c93af16dfbc903458b0ea (diff)
environment vairables. set and get
Diffstat (limited to 'src/lsh_builtins.c')
-rw-r--r--src/lsh_builtins.c106
1 files changed, 65 insertions, 41 deletions
diff --git a/src/lsh_builtins.c b/src/lsh_builtins.c
index 34aced5..33b1b88 100644
--- a/src/lsh_builtins.c
+++ b/src/lsh_builtins.c
@@ -7,85 +7,109 @@
#include <unistd.h>
/*
- Function Declarations for builtin shell commands:
- */
+ Function Declarations for builtin shell commands:
+ */
int lsh_cd(char **args);
int lsh_help(char **args);
int lsh_exit(char **args);
+int export(char **args);
/*
- List of builtin commands, followed by their corresponding functions.
- */
+ List of builtin commands, followed by their corresponding functions.
+ */
char *builtin_str[] = {
- "cd",
- "help",
- "exit"
+ "cd",
+ "help",
+ "exit",
+ "export"
};
int (*builtin_func[]) (char **) = {
- &lsh_cd,
- &lsh_help,
- &lsh_exit
+ &lsh_cd,
+ &lsh_help,
+ &lsh_exit,
+ &export
};
int lsh_num_builtins() {
- return sizeof(builtin_str) / sizeof(char *);
+ return sizeof(builtin_str) / sizeof(char *);
}
/*
- Builtin function implementations.
-*/
+ Builtin function implementations.
+ */
int lsh_cd(char **args)
{
- if (args[1] == NULL) {
- fprintf(stderr, "lsh: expected argument to \"cd\"\n");
- } else {
- if (chdir(args[1]) != 0) {
- perror("lsh");
+ if (args[1] == NULL) {
+ fprintf(stderr, "lsh: expected argument to \"cd\"\n");
+ } else {
+ if (chdir(args[1]) != 0) {
+ perror("lsh");
+ }
}
- }
- return 1;
+ return 1;
}
int lsh_help(char **args)
{
- int i;
- printf("Stephen Brennan's LSH\n");
- printf("Type program names and arguments, and hit enter.\n");
- printf("The following are built in:\n");
+ int i;
+ printf("Stephen Brennan's LSH\n");
+ printf("Type program names and arguments, and hit enter.\n");
+ printf("The following are built in:\n");
- for (i = 0; i < lsh_num_builtins(); i++) {
- printf(" %s\n", builtin_str[i]);
- }
+ for (i = 0; i < lsh_num_builtins(); i++) {
+ printf(" %s\n", builtin_str[i]);
+ }
- printf("Use the man command for information on other programs.\n");
- return 1;
+ printf("Use the man command for information on other programs.\n");
+ return 1;
}
int lsh_exit(char **args)
{
- return 0;
+ return 0;
+}
+
+int export(char **args){
+ char *token;
+ int position = 0;
+ char *key = NULL;
+ char *value = NULL;
+
+ token = strtok(args[1], "=\r\n");
+ while (token != NULL) {
+ if(position == 0){
+ key=token;
+ } else if(position == 1){
+ value=token;
+ }
+
+ position++;
+ token = strtok(NULL, "=\r\n");
+ }
+ setenv(key,value,1);
+
+ return 1;
}
int lsh_execute(char **args)
{
- int i;
+ int i;
- if (args[0] == NULL) {
- // An empty command was entered.
- return 1;
- }
+ if (args[0] == NULL) {
+ // An empty command was entered.
+ return 1;
+ }
- for (i = 0; i < lsh_num_builtins(); i++) {
- if (strcmp(args[0], builtin_str[i]) == 0) {
- return (*builtin_func[i])(args);
+ for (i = 0; i < lsh_num_builtins(); i++) {
+ if (strcmp(args[0], builtin_str[i]) == 0) {
+ return (*builtin_func[i])(args);
+ }
}
- }
- return lsh_launch(args);
+ return lsh_launch(args);
}
-
#endif