diff options
author | Alan Jenkins <alan-jenkins@tuffmail.co.uk> | 2009-06-11 15:26:11 +0100 |
---|---|---|
committer | Alan Jenkins <alan-jenkins@tuffmail.co.uk> | 2009-06-11 16:28:44 +0100 |
commit | edcf63137a86e93e0d4b86798f06434a8a4d2cba (patch) | |
tree | f9e98bec4e5853fec8c28a4bcf28bfc1f201c587 | |
parent | 40b9a688284cda2a4150ced931e3ad8a9ced052b (diff) | |
download | module-init-tools-edcf63137a86e93e0d4b86798f06434a8a4d2cba.tar.gz |
modprobe: don't ignore --set-version when preceded by --dirname
Fix this:
strace -e trace=file build/modprobe --dirname / --set-version 2.6.99 foo
...
open("///lib/modules/2.6.30-rc7/modules.alias", O_RDONLY) = 5
FATAL: Module foo not found.
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
-rw-r--r-- | modprobe.c | 11 |
1 files changed, 4 insertions, 7 deletions
@@ -1332,10 +1332,10 @@ int main(int argc, char *argv[]) unsigned int i, num_modules; char *type = NULL; const char *config = NULL; - char *dirname = NULL; + char *basedir = ""; char *optstring = NULL; char *newname = NULL; - char *aliasfilename, *symfilename; + char *dirname, *aliasfilename, *symfilename; errfn_t error = fatal; int flags = O_NONBLOCK|O_EXCL; int was_error = 0; @@ -1364,10 +1364,8 @@ int main(int argc, char *argv[]) case 'n': dry_run = 1; break; - case 'd': - nofail_asprintf(&dirname, "%s/%s/%s", optarg, - MODULE_DIR, buf.release); + basedir = optarg; break; case 'S': strncpy(buf.release, optarg, sizeof(buf.release)); @@ -1441,8 +1439,7 @@ int main(int argc, char *argv[]) if (argc < optind + 1 && !dump_only && !list_only && !remove) print_usage(argv[0]); - if (!dirname) - nofail_asprintf(&dirname, "%s/%s", MODULE_DIR, buf.release); + nofail_asprintf(&dirname, "%s%s/%s", basedir, MODULE_DIR, buf.release); nofail_asprintf(&aliasfilename, "%s/modules.alias", dirname); nofail_asprintf(&symfilename, "%s/modules.symbols", dirname); |