tiny-shell 0.2
A mini shell project aiming to gain knowledge about Win32 and Linux API
Loading...
Searching...
No Matches
invoke.c
Go to the documentation of this file.
1#include "invoke.h"
2#include "../core/io_wrap.h"
3#include "../os/operations.h"
4#include "add_path.h"
5#include "cd.h"
6#include "child_processes.h"
7#include "datetime.h"
8#include "delete_file.h"
9#include "env.h"
10#include "help.h"
11#include "kill.h"
12#include "launch_executable.h"
13#include "list.h"
14#include "lsdir.h"
15#include "minibat.h"
16#include "resume.h"
17#include "stop.h"
18
19#include <assert.h>
20#include <stdbool.h>
21
22enum run_result invoke_runner(const struct cmd *cmd) {
23 switch(cmd->type) {
24 case CMD_HELP:
25 return run_help();
26 case CMD_EXIT:
27 format_success("%s", "Goodbye\n");
28 return RUN_EXIT;
29 case CMD_CHANGE_DIR:
30 return run_cd(cmd->val.new_dir);
31 case CMD_DEL_FILE:
32 return run_del(cmd->val.filename);
33 case CMD_CLEAR:
35 return RUN_OK;
36 case CMD_LSDIR:
37 return run_lsdir(cmd->val.dir);
38 case CMD_LIST:
39 return run_get_list_process();
40 case CMD_TIME:
41 return run_get_time();
42 case CMD_DATE:
43 return run_get_date();
44 case CMD_STOP_PROC:
45 return run_stop(cmd->val.proc_id);
47 return run_launch_executable(cmd->val.args);
48 case CMD_KILL:
49 return run_kill(cmd->val.proc_id);
50 case CMD_ADD_PATH:
51 return run_add_path(cmd->val.new_path);
52 case CMD_MINIBAT:
53 return run_minibat(cmd->val.args);
54 case CMD_SET_ENV:
55 return run_set_env(cmd->val.env.name, cmd->val.env.val);
56 case CMD_UNSET_ENV:
57 return run_unset_env(cmd->val.env.name);
58 case CMD_GET_ENV_ALL:
59 return run_get_all_env();
60 case CMD_GET_ENV:
61 return run_get_env(cmd->val.env.name);
62 case CMD_UNKNOWN:
63 format_success("%s", "Unknown command. Use \"help\" for more information\n");
64 return RUN_FAILED;
65 case CMD_NOOP:
66 return RUN_OK;
68 format_success("%s", "Invalid syntax. Use \"help\" for more information\n");
69 return RUN_FAILED;
70 case CMD_RESUME:
71 return run_resume(cmd->val.proc_id);
73 return run_child_processes(cmd->val.proc_id);
74 default:
75 assert(false && "unimplemented command");
76 return RUN_FAILED;
77 }
78}
enum run_result run_add_path(const os_char *new_path)
Definition add_path.c:101
enum run_result run_cd(os_char *new_dir)
Change current working directory.
Definition cd.c:4
enum run_result run_child_processes(int proc_id)
Resume running a process.
@ CMD_ADD_PATH
Definition cmd.h:22
@ CMD_DEL_FILE
Definition cmd.h:23
@ CMD_RESUME
Definition cmd.h:26
@ CMD_NOOP
Definition cmd.h:12
@ CMD_LIST
Definition cmd.h:28
@ CMD_EXIT
Definition cmd.h:16
@ CMD_LAUNCH_EXECUTABLE
Definition cmd.h:24
@ CMD_KILL
Definition cmd.h:25
@ CMD_GET_ENV
Definition cmd.h:21
@ CMD_UNKNOWN
Definition cmd.h:10
@ CMD_CLEAR
Definition cmd.h:17
@ CMD_MINIBAT
Definition cmd.h:32
@ CMD_UNSET_ENV
Definition cmd.h:20
@ CMD_STOP_PROC
Definition cmd.h:31
@ CMD_CHANGE_DIR
Definition cmd.h:14
@ CMD_DATE
Definition cmd.h:29
@ CMD_GET_ENV_ALL
Definition cmd.h:19
@ CMD_INVALID_SYNTAX
Definition cmd.h:11
@ CMD_SET_ENV
Definition cmd.h:18
@ CMD_HELP
Definition cmd.h:15
@ CMD_LSDIR
Definition cmd.h:33
@ CMD_CHILD_PROCESSES
Definition cmd.h:27
@ CMD_TIME
Definition cmd.h:30
enum run_result run_get_date()
get date
Definition datetime.c:7
enum run_result run_get_time()
get time
Definition datetime.c:3
enum run_result run_del(const os_char *filename)
Delete a specific file.
Definition delete_file.c:4
enum run_result run_unset_env(const os_char *name)
Unset current process's environment variable.
Definition env.c:11
enum run_result run_get_all_env()
Set current process's environment variable.
Definition env.c:15
enum run_result run_get_env(const os_char *name)
Set current process's environment variable.
Definition env.c:26
enum run_result run_set_env(const os_char *name, const os_char *val)
Set current process's environment variable.
Definition env.c:7
enum run_result run_help()
Display help message.
Definition help.c:4
enum run_result invoke_runner(const struct cmd *cmd)
Invoke corresponding functions based on cmd's type and value.
Definition invoke.c:22
void format_success(char *fmt,...)
Used format_xxx instead of printf and such for uniform output.
Definition io_wrap.c:69
enum run_result run_kill(int proc_id)
Kill a process.
Definition kill.c:5
enum run_result run_launch_executable(const struct args args)
Run the executable foreground.
enum run_result run_get_list_process()
get list all running processes
Definition list.c:3
enum run_result run_lsdir(const os_char *dir)
List files/folders in a directory.
Definition lsdir.c:5
enum run_result run_minibat(const struct args args)
Run the executable foreground.
Definition minibat.c:3
void clear_screen()
Clear the console.
run_result
Result of the execution of a command line.
Definition res.h:6
@ RUN_OK
Definition res.h:7
@ RUN_EXIT
Definition res.h:8
@ RUN_FAILED
Definition res.h:9
enum run_result run_resume(int proc_id)
Resume running a process.
Definition resume.c:5
enum run_result run_stop(int proc_id)
Resume running a process.
Definition stop.c:5
Resulting struct after parsing the input.
Definition cmd.h:39
os_char * val
Definition cmd.h:49
enum cmd_type type
Definition cmd.h:40