GCC Code Coverage Report


Directory: ./
File: src/builtins/history.c
Date: 2024-05-07 14:54:03
Exec Total Coverage
Lines: 0 34 0.0%
Functions: 0 3 0.0%
Branches: 0 20 0.0%

Line Branch Exec Source
1 /*
2 ** EPITECH PROJECT, 2024
3 ** 42sh
4 ** File description:
5 ** The file containing the history builtins
6 */
7 /**
8 * @file setenv.c
9 * @brief The file containing the history builtins
10 */
11
12 #include "../../include/myshell.h"
13
14 /**
15 * @brief Display the history
16 * @param mysh The shell structure
17 * @return <b>void</b>
18 */
19 ✗ static void display_history(mysh_t *mysh)
20 {
21 ✗ int index = 0;
22
23 ✗ for (node_t *tmp = mysh->history; tmp != NULL; tmp = tmp->next) {
24 ✗ my_printf("%d %s\n", index + 1, (char *)tmp->data);
25 ✗ index++;
26 ✗ if (tmp->next == mysh->history)
27 ✗ break;
28 }
29 ✗ }
30
31 /**
32 * @brief Print the n last command of the history
33 * @param mysh The shell structure
34 * @return <b>void</b>
35 */
36 ✗ static void print_number_history(mysh_t *mysh)
37 {
38 ✗ int size = my_list_size_circled(mysh->history);
39 ✗ int index = 1;
40 ✗ int nb = my_getnbr(mysh->args[1]);
41
42 ✗ for (node_t *tmp = mysh->history; tmp != NULL; tmp = tmp->next) {
43 ✗ if (index > size - nb)
44 ✗ my_printf("%d %s\n", index, (char *)tmp->data);
45 ✗ index++;
46 ✗ if (tmp->next == mysh->history && nb == 0) {
47 ✗ my_printf("%d %s\n", index - 1, (char *)tmp->data);
48 ✗ break;
49 }
50 ✗ if (tmp->next == mysh->history)
51 ✗ break;
52 }
53 ✗ }
54
55 /**
56 * @brief The history 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 ✗ int exec_history(mysh_t *mysh)
61 {
62 ✗ if (my_array_len((void **)mysh->args) >= 3) {
63 ✗ my_fprintf(2, "history: Too many arguments.\n");
64 ✗ return 1;
65 }
66 ✗ if (mysh->args[1] == NULL) {
67 ✗ display_history(mysh);
68 ✗ return 0;
69 }
70 ✗ if (!my_str_isnum(mysh->args[1])) {
71 ✗ my_fprintf(2, "history: Badly formed number.\n");
72 ✗ return 1;
73 }
74 ✗ print_number_history(mysh);
75 ✗ return 0;
76 }
77