summaryrefslogtreecommitdiffstats
path: root/hw1/shell-builtin.h
blob: 5ebc06b015e9159399e5eb717b5846f6a34b6a34 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#ifndef RAS_SHELL_BUILTIN_H
#define RAS_SHELL_BUILTIN_H

#include "shell.h"

typedef struct {
    char*        cmd;
    RasShellFunc func;
} RasShellBuiltin;

extern const RasShellBuiltin ras_shell_builtins[];

#define RAS_SHELL_BUILTIN_DECL(func) \
    int ras_shell_builtin_##func(int argc, char* argv[], RasShell* shell)
#define RAS_SHELL_BUILTIN_ENTRY(func) \
    { #func, ras_shell_builtin_##func }
#define RAS_SHELL_BUILTIN_ENTRY_NULL \
    { NULL, NULL}

RAS_SHELL_BUILTIN_DECL (cd);
RAS_SHELL_BUILTIN_DECL (echo);
RAS_SHELL_BUILTIN_DECL (exit);
RAS_SHELL_BUILTIN_DECL (false);
RAS_SHELL_BUILTIN_DECL (logout);
RAS_SHELL_BUILTIN_DECL (printenv);
RAS_SHELL_BUILTIN_DECL (pwd);
RAS_SHELL_BUILTIN_DECL (set);
RAS_SHELL_BUILTIN_DECL (setenv);
RAS_SHELL_BUILTIN_DECL (shopt);
RAS_SHELL_BUILTIN_DECL (tacat);
RAS_SHELL_BUILTIN_DECL (tapipe);
RAS_SHELL_BUILTIN_DECL (true);
RAS_SHELL_BUILTIN_DECL (tty);
RAS_SHELL_BUILTIN_DECL (type);
RAS_SHELL_BUILTIN_DECL (umask);
RAS_SHELL_BUILTIN_DECL (unset);
RAS_SHELL_BUILTIN_DECL (unsetenv);

#endif /* RAS_SHELL_BUILTIN_H */