`dbox`: use macro to match functions.

master
Drake 2 years ago
parent 15dd71baec
commit eddbac9c48

@ -5,6 +5,9 @@
#include "funcs.h" #include "funcs.h"
#define RUN_IF_MATCH(func, name, ac, av) \
if(!strcmp(name, #func)) \
return func(ac, av)
/* /*
BSD 3-Clause License BSD 3-Clause License
@ -38,42 +41,21 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
int matchExec(char *name, int argc, char *argv[]) { int matchExec(char *name, int argc, char *argv[]) {
if (!strcmp(name,"arch")) { int ret;
arch(argc, argv); RUN_IF_MATCH(arch, name, argc, argv);
} RUN_IF_MATCH(bn, name, argc, argv);
if (!strcmp(name,"basename")) { RUN_IF_MATCH(cat, name, argc, argv);
bn(argc, argv); RUN_IF_MATCH(chr, name, argc, argv);
} RUN_IF_MATCH(cp, name, argc, argv);
if (!strcmp(name,"cat")) { RUN_IF_MATCH(ls, name, argc, argv);
cat(argc, argv); RUN_IF_MATCH(pwd, name, argc, argv);
} RUN_IF_MATCH(rm, name, argc, argv);
if (!strcmp(name,"chroot")) { RUN_IF_MATCH(un, name, argc, argv);
chr(argc, argv); RUN_IF_MATCH(whoami, name, argc, argv);
} RUN_IF_MATCH(yes, name, argc, argv);
if (!strcmp(name,"cp")) {
cp(argc, argv);
}
if (!strcmp(name,"ls")) {
ls(argc, argv);
}
if (!strcmp(name,"pwd")) {
pwd(argc, argv);
}
if (!strcmp(name,"rm")) {
rm(argc, argv);
}
if (!strcmp(name,"uname")) {
un(argc, argv);
}
if (!strcmp(name,"whoami")) {
whoami(argc, argv);
}
if (!strcmp(name,"yes")) {
yes(argc, argv);
}
if (!strcmp(name,"dbox")) { if (!strcmp(name,"dbox")) {
char **newArgv = argv + 1; char **newArgv = argv + 1;
matchExec(newArgv[0], argc-1, newArgv); return matchExec(newArgv[0], argc-1, newArgv);
} }
return 0; //TODO: return return of exec files return 0; //TODO: return return of exec files
} }

Loading…
Cancel
Save