/* ** builtin.c for 42sh ** ** Made by Seblu ** Login ** ** Started on Tue Apr 11 00:22:44 2006 Seblu ** Last update Thu Nov 16 18:59:29 2006 seblu */ #include #include #include "builtin.h" enum { BUILTIN_COUNT = 10 }; struct builtin_table { const char *name; f_builtin func; }; static struct builtin_table builtin_table[BUILTIN_COUNT] = { {"cd", builtin_cd}, {"echo", builtin_echo}, {"exit", builtin_exit}, {"shopt", builtin_shopt}, {"alias", builtin_alias}, {"unalias", builtin_unalias}, {"source", NULL}, //builtin_source}, {"set", NULL}, //builtin_set}, {"unset", NULL}, //builtin_unset}, {"export", NULL}, //builtin_export} }; int is_a_builtin(const char *name) { for (register int i = 0; i < BUILTIN_COUNT; ++i) if (!strcmp(name, builtin_table[i].name)) return 1; return 0; } f_builtin get_builtin(const char *name) { for (register int i = 0; i < BUILTIN_COUNT; ++i) if (!strcmp(name, builtin_table[i].name)) { assert(builtin_table[i].func); return builtin_table[i].func; } assert(0); return NULL; }