forked from radareorg/radare2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathr2bb.c
48 lines (42 loc) · 897 Bytes
/
r2bb.c
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
40
41
42
43
44
45
46
47
48
/* radare2 - LGPL - Copyright 2017 - pancake */
#include <r_util.h>
typedef char* (*CommandCallback)(const char *args);
typedef struct {
const char *cmd;
CommandCallback cb;
} BbCommands;
static BbCommands bbcmds[] = {
{ "cat", r_syscmd_cat },
{ "ls", r_syscmd_ls },
NULL
};
static int run(int i, const char *arg) {
char *res = bbcmds[i].cb (arg);
if (res) {
printf ("%s", res);
free (res);
return 0;
}
return 1;
}
int main(int argc, char **argv) {
int i;
for (i = 0; bbcmds[i].cmd; i++) {
if (!strcmp (bbcmds[i].cmd, argv[0])) {
const char *arg = argc > 1? argv[1]: NULL;
return run (i, arg);
}
}
if (argc > 1) {
for (i = 0; bbcmds[i].cmd; i++) {
if (!strcmp (bbcmds[i].cmd, argv[1])) {
const char *arg = argc > 2? argv[2]: NULL;
return run (i, arg);
}
}
}
for (i = 0; bbcmds[i].cmd; i++) {
printf ("%s\n", bbcmds[i].cmd);
}
return 1;
}