MiniDevil As beautiful as a shell
command.c
Go to the documentation of this file.
1 /* ************************************************************************** */
2 /* */
3 /* ::: :::::::: */
4 /* command.c :+: :+: :+: */
5 /* +:+ +:+ +:+ */
6 /* By: baelgadi <baelgadi@student.42.fr> +#+ +:+ +#+ */
7 /* +#+#+#+#+#+ +#+ */
8 /* Created: 2026/02/17 17:49:16 by zotaj-di #+# #+# */
9 /* Updated: 2026/03/04 03:37:19 by baelgadi ### ########.fr */
10 /* */
11 /* ************************************************************************** */
12 
13 #include "minishell_ui.h"
14 
24 static int exec_ui_builtin(t_shell *shell)
25 {
26  t_ui *ui;
27 
28  ui = shell->ui;
29  if (ft_strncmp(ui->cmd.buf, "exit", 4) == 0 && (ui->cmd.buf[4] == '\0'
30  || ui->cmd.buf[4] == ' '))
31  {
32  ui->running = 0;
33  return (1);
34  }
35  if (ft_strncmp(ui->cmd.buf, "clear", 5) == 0 && (ui->cmd.buf[5] == '\0'
36  || ui->cmd.buf[5] == ' '))
37  {
38  out_clear(&ui->out);
39  return (1);
40  }
41  return (0);
42 }
43 
52 void cmd_execute(t_shell *shell)
53 {
54  t_ui *ui;
55 
56  if (!shell || !shell->ui)
57  return ;
58  ui = shell->ui;
59  if (ui->cmd.len == 0)
60  return ;
61  out_clear(&ui->out);
63  if (exec_ui_builtin(shell))
64  {
65  ft_memset(ui->cmd.buf, 0, MAX_CMD_LEN);
66  ui->cmd.len = 0;
68  return ;
69  }
70  execute_minishell_cmd(shell);
71  ft_memset(ui->cmd.buf, 0, MAX_CMD_LEN);
72  ui->cmd.len = 0;
73 }
static int exec_ui_builtin(t_shell *shell)
Handle "exit" and "clear" commands directly.
Definition: command.c:24
void cmd_execute(t_shell *shell)
Execute the current command buffer & reset it.
Definition: command.c:52
void execute_minishell_cmd(t_shell *shell)
Fork a child to execute a minishell command & capture its output.
Definition: execute.c:137
UI mode structures, macros & function prototypes.
#define MAX_CMD_LEN
Definition: minishell_ui.h:84
#define MOOD_HAPPY
Definition: minishell_ui.h:103
void out_clear(t_out *out)
Free stored output lines and reset the scroll state.
Definition: output.c:37
char buf[MAX_CMD_LEN]
Fixed size buffer.
Definition: minishell_ui.h:138
int len
Current input length.
Definition: minishell_ui.h:139
Shell state.
Definition: structs.h:164
struct s_ui * ui
UI state (NULL if off)
Definition: structs.h:170
UI state.
Definition: minishell_ui.h:167
t_cmd cmd
Cmd buffer.
Definition: minishell_ui.h:169
t_out out
Output state.
Definition: minishell_ui.h:170
int running
Event loop flag.
Definition: minishell_ui.h:172
void update_waifu_mood(t_ui *ui, int mood)
Set the waifu mood.
Definition: waifu.c:21