home *** CD-ROM | disk | FTP | other *** search
-
- int loadModule(char * modName) {
- char * objName;
- int status;
- pid_t childpid;
-
- objName = alloca(strlen(modName) + 5 + strlen(MODULES_PATH));
-
- strcpy(objName, MODULES_PATH);
- strcat(objName, modName);
- strcat(objName, ".o");
-
- if (testing) {
- messageWindow("Module", "Installing module %s now", modName);
- return 0;
- }
-
- logMessage("running command: insmod %s", objName);
-
- if (!(childpid = fork())) {
- close(1);
- close(2);
- dup2(logfd, 1);
- dup2(logfd, 2);
- execl("/bin/insmod", "/bin/insmod", objName, NULL);
- exit(1);
- }
-
- waitpid(childpid, &status, 0);
-
- if (!WIFEXITED(status) || WEXITSTATUS(status)) {
- logMessage("insmod failed!");
- return 1;
- }
-
- return 0;
- }
-
-