diff -ur module-init-tools-0.7/CHANGES module-init-tools-0.8/CHANGES --- module-init-tools-0.7/CHANGES Thu Nov 14 02:09:28 2002 +++ module-init-tools-0.8/CHANGES Wed Nov 20 13:32:39 2002 @@ -1,3 +1,4 @@ +o Add module name argument to sys_init_module() o 64/32 bit autodetection thanks to Dave Miller o Preliminary alias support. o Very primitive /etc/modprobe.conf support diff -ur module-init-tools-0.7/insmod.c module-init-tools-0.8/insmod.c --- module-init-tools-0.7/insmod.c Wed Nov 13 22:33:32 2002 +++ module-init-tools-0.8/insmod.c Wed Nov 20 13:32:05 2002 @@ -28,6 +28,7 @@ #include #include +#include "mod_types.h" #include "backwards_compat.c" static void print_usage(const char *progname) @@ -62,15 +63,22 @@ unsigned long len; void *map; char *filename, *options = strdup(""); + char *modname = NULL; try_old_version("insmod", argv); - filename = argv[1]; + i = 1; + if (argc > 3 && !strcmp(argv[1], "-o")) { + modname = argv[2]; + i = 3; + } + + filename = argv[i++]; if (!filename) print_usage(argv[0]); /* Rest is options */ - for (i = 2; i < argc; i++) { + for ( ; i < argc; i++) { options = realloc(options, strlen(options) + 2 + strlen(argv[i]) + 2); /* Spaces handled by "" pairs, but no way of escaping @@ -99,7 +107,20 @@ exit(1); } - ret = syscall(__NR_init_module, map, len, options); + if (!modname) { + char *ext; + modname = strrchr(filename, '/'); + if (modname) + modname++; + else + modname = filename; + + ext = strrchr(modname, '.'); + if (ext && !strcmp(ext, MODULE_EXTENSION)) + *ext = 0; + } + + ret = syscall(__NR_init_module, modname, map, len, options); if (ret != 0) { fprintf(stderr, "Error inserting `%s': %li %s\n", filename, ret, moderror(errno)); diff -ur module-init-tools-0.7/modprobe.c module-init-tools-0.8/modprobe.c --- module-init-tools-0.7/modprobe.c Thu Nov 14 02:29:24 2002 +++ module-init-tools-0.8/modprobe.c Wed Nov 20 13:32:00 2002 @@ -373,7 +373,7 @@ if (map == MAP_FAILED) fatal("Can't map `%s': %s\n", modpath, strerror(errno)); - ret = syscall(__NR_init_module, map, len, options); + ret = syscall(__NR_init_module, filename, map, len, options); if (ret != 0) { if (dont_fail) fatal("Error inserting %s: %s\n",