aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Jenkins <alan-jenkins@tuffmail.co.uk>2009-06-11 15:26:11 +0100
committerAlan Jenkins <alan-jenkins@tuffmail.co.uk>2009-06-11 16:28:44 +0100
commitedcf63137a86e93e0d4b86798f06434a8a4d2cba (patch)
treef9e98bec4e5853fec8c28a4bcf28bfc1f201c587
parent40b9a688284cda2a4150ced931e3ad8a9ced052b (diff)
downloadmodule-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.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/modprobe.c b/modprobe.c
index 926ded8..126ae76 100644
--- a/modprobe.c
+++ b/modprobe.c
@@ -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);