#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
-#include <syslog.h>
#include <libgen.h>
#include <glob.h>
#include <elf.h>
}
strings = map + offset;
- while (strings && (strings < map + offset + size)) {
+ while (true) {
char *sep;
int len;
while (!strings[0])
strings++;
+ if (strings >= map + offset + size)
+ break;
sep = strstr(strings, "=");
if (!sep)
break;
strings = map + offset;
printf("module:\t\t%s\n", module);
- while (strings && (strings < map + offset + size)) {
+ while (true) {
char *dup = NULL;
char *sep;
while (!strings[0])
strings++;
+ if (strings >= map + offset + size)
+ break;
sep = strstr(strings, "=");
if (!sep)
break;
cur += sprintf(cur, "%s", argv[i]);
}
- init_module_folders();
+ if (init_module_folders()) {
+ fprintf(stderr, "Failed to find the folder holding the modules\n");
+ return -1;
+ }
if (get_module_path(argv[1])) {
name = argv[1];
{
struct module *m;
char *name;
+ char *mod = NULL;
+ int i;
- if (argc != 2)
+ for (i = 1; i < argc; i++)
+ if (argv[i][0] != '-') {
+ mod = argv[i];
+ break;
+ }
+ if (!mod)
return print_usage("modprobe");
if (scan_loaded_modules())
if (scan_module_folders())
return -1;
- name = get_module_name(argv[1]);
+ name = get_module_name(mod);
m = find_module(name);
if (m && m->state == LOADED) {
ULOG_ERR("%s is already loaded\n", name);
static int main_loader(int argc, char **argv)
{
int gl_flags = GLOB_NOESCAPE | GLOB_MARK;
- char *dir = "/etc/modules.d/*";
+ char *dir = "/etc/modules.d/";
struct module *m;
glob_t gl;
char *path;
strcpy(path, dir);
strcat(path, "*");
- if (scan_loaded_modules())
+ if (scan_loaded_modules()) {
+ free (path);
return -1;
+ }
- if (scan_module_folders())
+ if (scan_module_folders()) {
+ free (path);
return -1;
+ }
- syslog(LOG_INFO, "kmodloader: loading kernel modules from %s\n", path);
+ ULOG_INFO("loading kernel modules from %s\n", path);
if (glob(path, gl_flags, NULL, &gl) < 0)
goto out;
avl_for_each_element(&modules, m, avl)
if ((m->state == PROBE) || (m->error))
ULOG_ERR("- %s - %d\n", m->name, deps_available(m, 1));
+ } else {
+ ULOG_INFO("done loading kernel modules from %s\n", path);
}
out:
if (!strcmp(exec, "modprobe"))
return main_modprobe(argc, argv);
+ ulog_open(ULOG_KMSG, LOG_USER, "kmodloader");
return main_loader(argc, argv);
}