#include #include #include main(int argc, char** argv, char** env) { char* legals[] = { "list_members", "find_member", "invite_members", (char*) NULL }; int i; int flag = 0; char command[100]; if (argc < 2) { dprintf(STDERR_FILENO, "Usage: %s command command_args\nNo command found\n", argv[0]); exit(1); } for ( i = 0; legals[i] != (char*) NULL; i++ ) { if (strcmp(legals[i], argv[1]) == 0) { flag = 1; break; } } if (!flag){ dprintf(STDERR_FILENO, "Usage: %s command command_args\nUnknown command: %s\n", argv[0], argv[1]); exit(1); } sprintf(command, "/usr/local/mailman/bin/%s", argv[1]); execve(command, &argv[1], env); dprintf(STDERR_FILENO, "execve of %s failed\n", command); exit(2); }