`dbox`: use macro to match functions.

master
Drake 2 years ago
parent 15dd71baec
commit eddbac9c48

@ -5,6 +5,9 @@
#include "funcs.h"
#define RUN_IF_MATCH(func, name, ac, av) \
if(!strcmp(name, #func)) \
return func(ac, av)
/*
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[]) {
if (!strcmp(name,"arch")) {
arch(argc, argv);
}
if (!strcmp(name,"basename")) {
bn(argc, argv);
}
if (!strcmp(name,"cat")) {
cat(argc, argv);
}
if (!strcmp(name,"chroot")) {
chr(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);
}
int ret;
RUN_IF_MATCH(arch, name, argc, argv);
RUN_IF_MATCH(bn, name, argc, argv);
RUN_IF_MATCH(cat, name, argc, argv);
RUN_IF_MATCH(chr, name, argc, argv);
RUN_IF_MATCH(cp, name, argc, argv);
RUN_IF_MATCH(ls, name, argc, argv);
RUN_IF_MATCH(pwd, name, argc, argv);
RUN_IF_MATCH(rm, name, argc, argv);
RUN_IF_MATCH(un, name, argc, argv);
RUN_IF_MATCH(whoami, name, argc, argv);
RUN_IF_MATCH(yes, name, argc, argv);
if (!strcmp(name,"dbox")) {
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
}

Loading…
Cancel
Save