| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /* | ||
| 2 | ** EPITECH PROJECT, 2024 | ||
| 3 | ** 42sh | ||
| 4 | ** File description: | ||
| 5 | ** The file containing the help builtins | ||
| 6 | */ | ||
| 7 | /** | ||
| 8 | * @file help.c | ||
| 9 | * @brief The file containing the help builtins | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include "../../include/myshell.h" | ||
| 13 | |||
| 14 | /** | ||
| 15 | * @brief Print the help for the shell | ||
| 16 | * @param mysh The shell structure | ||
| 17 | * @return <b>int</b> <u>0</u> if the command succeed, <u>1</u> otherwise | ||
| 18 | */ | ||
| 19 | ✗ | static int print_help(mysh_t *mysh) | |
| 20 | { | ||
| 21 | ✗ | if (mysh->args[1] == NULL || my_strcmp(mysh->args[1], "help") == 0) { | |
| 22 | ✗ | my_printf("USAGE:\n\thelp [BUILTIN]\n"); | |
| 23 | ✗ | my_printf("\tDisplay information about builtin commands.\n"); | |
| 24 | ✗ | my_printf("BUILTIN:\n"); | |
| 25 | ✗ | my_printf("\tabout\n"); | |
| 26 | ✗ | my_printf("\tcd\n"); | |
| 27 | ✗ | my_printf("\tenv\n"); | |
| 28 | ✗ | my_printf("\texit\n"); | |
| 29 | ✗ | my_printf("\thelp\n"); | |
| 30 | ✗ | my_printf("\tsetenv\n"); | |
| 31 | ✗ | my_printf("\tsource\n"); | |
| 32 | ✗ | my_printf("\tunsetenv\n"); | |
| 33 | ✗ | return 1; | |
| 34 | } | ||
| 35 | ✗ | return 0; | |
| 36 | } | ||
| 37 | |||
| 38 | /** | ||
| 39 | * @brief Show the help for the cd builtin | ||
| 40 | * @param mysh The shell structure | ||
| 41 | * @return <b>int</b> <u>0</u> if the command succeed, <u>1</u> otherwise | ||
| 42 | */ | ||
| 43 | ✗ | static int cd_help(mysh_t *mysh) | |
| 44 | { | ||
| 45 | ✗ | if (my_strcmp(mysh->args[1], "cd") == 0) { | |
| 46 | ✗ | my_printf("cd [OPTION]\n\tChange the shell working directory.\n"); | |
| 47 | ✗ | my_printf("OPTIONS:\n\t- : " | |
| 48 | "Change to the previous working directory.\n"); | ||
| 49 | ✗ | my_printf("\t~ : Change to the home directory.\n"); | |
| 50 | ✗ | return 1; | |
| 51 | } | ||
| 52 | ✗ | return 0; | |
| 53 | } | ||
| 54 | |||
| 55 | /** | ||
| 56 | * @brief Show the help for the env builtin | ||
| 57 | * @param mysh The shell structure | ||
| 58 | * @return <b>int</b> <u>0</u> if the command succeed, <u>1</u> otherwise | ||
| 59 | */ | ||
| 60 | ✗ | static int env_help(mysh_t *mysh) | |
| 61 | { | ||
| 62 | ✗ | if (my_strcmp(mysh->args[1], "env") == 0) { | |
| 63 | ✗ | my_printf("env\n\tPrint the environment variables.\n"); | |
| 64 | ✗ | return 1; | |
| 65 | } | ||
| 66 | ✗ | return 0; | |
| 67 | } | ||
| 68 | |||
| 69 | /** | ||
| 70 | * @brief Show the help for the setenv builtin | ||
| 71 | * @param mysh The shell structure | ||
| 72 | * @return <b>int</b> <u>0</u> if the command succeed, <u>1</u> otherwise | ||
| 73 | */ | ||
| 74 | ✗ | static int setenv_help(mysh_t *mysh) | |
| 75 | { | ||
| 76 | ✗ | if (my_strcmp(mysh->args[1], "setenv") == 0) { | |
| 77 | ✗ | my_printf("setenv [VARIABLE] [VALUE]\n"); | |
| 78 | ✗ | my_printf("\tSet an environment variable.\n"); | |
| 79 | ✗ | return 1; | |
| 80 | } | ||
| 81 | ✗ | return 0; | |
| 82 | } | ||
| 83 | |||
| 84 | /** | ||
| 85 | * @brief Show the help for the unsetenv builtin | ||
| 86 | * @param mysh The shell structure | ||
| 87 | * @return <b>int</b> <u>0</u> if the command succeed, <u>1</u> otherwise | ||
| 88 | */ | ||
| 89 | ✗ | static int unsetenv_help(mysh_t *mysh) | |
| 90 | { | ||
| 91 | ✗ | if (my_strcmp(mysh->args[1], "unsetenv") == 0) { | |
| 92 | ✗ | my_printf("unsetenv [VARIABLE]\n"); | |
| 93 | ✗ | my_printf("\tUnset an environment variable.\n"); | |
| 94 | ✗ | return 1; | |
| 95 | } | ||
| 96 | ✗ | return 0; | |
| 97 | } | ||
| 98 | |||
| 99 | /** | ||
| 100 | * @brief Show the help for the next builtin | ||
| 101 | * @param mysh The shell structure | ||
| 102 | * @return <b>int</b> <u>0</u> if the command succeed, <u>1</u> otherwise | ||
| 103 | */ | ||
| 104 | ✗ | static int help_next(mysh_t *mysh) | |
| 105 | { | ||
| 106 | ✗ | if (my_strcmp(mysh->args[1], "exit") == 0) { | |
| 107 | ✗ | my_printf("exit\n\tExit the shell.\n"); | |
| 108 | ✗ | return 0; | |
| 109 | } | ||
| 110 | ✗ | if (my_strcmp(mysh->args[1], "source") == 0) { | |
| 111 | ✗ | my_printf("source [FILE]\n\tExecute commands from a file.\n"); | |
| 112 | ✗ | return 0; | |
| 113 | } | ||
| 114 | ✗ | if (my_strcmp(mysh->args[1], "about") == 0) { | |
| 115 | ✗ | my_printf("about\n\tDisplay information about the shell.\n"); | |
| 116 | ✗ | return 0; | |
| 117 | } | ||
| 118 | ✗ | my_fprintf(2, "help: %s: No such builtin.\n", mysh->args[1]); | |
| 119 | ✗ | return 1; | |
| 120 | } | ||
| 121 | |||
| 122 | /** | ||
| 123 | * @brief The help builtin | ||
| 124 | * @param mysh The shell structure | ||
| 125 | * @return <b>int</b> <u>0</u> if the command succeed, <u>1</u> otherwise | ||
| 126 | */ | ||
| 127 | ✗ | int exec_help(mysh_t *mysh) | |
| 128 | { | ||
| 129 | ✗ | if (print_help(mysh)) | |
| 130 | ✗ | return 0; | |
| 131 | ✗ | if (cd_help(mysh)) | |
| 132 | ✗ | return 0; | |
| 133 | ✗ | if (env_help(mysh)) | |
| 134 | ✗ | return 0; | |
| 135 | ✗ | if (setenv_help(mysh)) | |
| 136 | ✗ | return 0; | |
| 137 | ✗ | if (unsetenv_help(mysh)) | |
| 138 | ✗ | return 0; | |
| 139 | ✗ | return help_next(mysh); | |
| 140 | } | ||
| 141 |