diff options
author | Eric Andersen | 2001-01-25 04:11:06 +0000 |
---|---|---|
committer | Eric Andersen | 2001-01-25 04:11:06 +0000 |
commit | 155c89b0c3aa0e86c630bccc0af4143223b49121 (patch) | |
tree | 86a71a2956eb83164a6c98743d75938ee596e38a /modutils | |
parent | 15f29e7d86f5196955b8e1e4a2fa50856a137530 (diff) | |
download | busybox-155c89b0c3aa0e86c630bccc0af4143223b49121.zip busybox-155c89b0c3aa0e86c630bccc0af4143223b49121.tar.gz |
I just wrote 'insmod -o' to close bug#1049.
Diffstat (limited to 'modutils')
-rw-r--r-- | modutils/insmod.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/modutils/insmod.c b/modutils/insmod.c index fc49dcd..c51ee4f 100644 --- a/modutils/insmod.c +++ b/modutils/insmod.c @@ -78,7 +78,7 @@ #ifndef MODUTILS_MODULE_H static const int MODUTILS_MODULE_H = 1; -#ident "$Id: insmod.c,v 1.39 2001/01/24 23:59:50 andersen Exp $" +#ident "$Id: insmod.c,v 1.40 2001/01/25 04:11:06 andersen Exp $" /* This file contains the structures used by the 2.0 and 2.1 kernels. We do not use the kernel headers directly because we do not wish @@ -284,7 +284,7 @@ int delete_module(const char *); #ifndef MODUTILS_OBJ_H static const int MODUTILS_OBJ_H = 1; -#ident "$Id: insmod.c,v 1.39 2001/01/24 23:59:50 andersen Exp $" +#ident "$Id: insmod.c,v 1.40 2001/01/25 04:11:06 andersen Exp $" /* The relocatable object is manipulated using elfin types. */ @@ -2889,7 +2889,7 @@ extern int insmod_main( int argc, char **argv) #endif /* Parse any options */ - while ((opt = getopt(argc, argv, "fkvxL")) > 0) { + while ((opt = getopt(argc, argv, "fkvxLo:")) > 0) { switch (opt) { case 'f': /* force loading */ flag_force_load = 1; @@ -2903,6 +2903,9 @@ extern int insmod_main( int argc, char **argv) case 'x': /* do not export externs */ flag_export = 0; break; + case 'o': /* name the output module */ + strncpy(m_name, optarg, BUFSIZ); + break; case 'L': /* Stub warning */ /* This is needed for compatibility with modprobe. * In theory, this does locking, but we don't do @@ -2928,9 +2931,11 @@ extern int insmod_main( int argc, char **argv) if (len > 2 && tmp[len - 2] == '.' && tmp[len - 1] == 'o') len -= 2; - memcpy(m_name, tmp, len); - strcpy(m_fullName, m_name); + strncpy(m_fullName, tmp, len); strcat(m_fullName, ".o"); + if (m_name == NULL) { + memcpy(m_name, tmp, len); + } /* Get a filedesc for the module */ if ((fp = fopen(argv[optind], "r")) == NULL) { |