summaryrefslogtreecommitdiff
path: root/modutils/modprobe.c
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2004-08-03 08:23:33 +0000
committerEric Andersen <andersen@codepoet.org>2004-08-03 08:23:33 +0000
commit44b5758247cd42721e4bc681df5516e8f01dc8c7 (patch)
tree61adc1fcba8037e3e54414e225b3b91ed18e15a3 /modutils/modprobe.c
parent93d7fba89288db6f9263c0ce8026f277bc4649e0 (diff)
downloadbusybox-w32-44b5758247cd42721e4bc681df5516e8f01dc8c7.tar.gz
busybox-w32-44b5758247cd42721e4bc681df5516e8f01dc8c7.tar.bz2
busybox-w32-44b5758247cd42721e4bc681df5516e8f01dc8c7.zip
William Barsse writes:
fixes two other issues (plus the previous as well) with a 2.4 kernel : - should be able to modprobe an already loaded module and get 0 return code : # modprobe <something> && modprobe <something> && echo "ok" || echo "failed" .... failed Well, hope this helps and that I didn't screw up again, - William
Diffstat (limited to 'modutils/modprobe.c')
-rw-r--r--modutils/modprobe.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index 612e33a9e..e1e451943 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -368,15 +368,14 @@ static int mod_strcmp ( const char *mod_path, const char *mod_name )
368#define MODULE_EXTENSION ".o" 368#define MODULE_EXTENSION ".o"
369#define MOD_EXTENSION_LEN 2 369#define MOD_EXTENSION_LEN 2
370#endif 370#endif
371 if ((strstr (mod_path, mod_name) == 371 /* last path component */
372 (mod_path + strlen(mod_path) - 372 const char *last_comp = strrchr (mod_path, '/');
373 strlen(mod_name) - MOD_EXTENSION_LEN)) 373
374 && (!strcmp(mod_path + strlen(mod_path) - 374 return (strncmp(last_comp ? last_comp + 1 : mod_path,
375 MOD_EXTENSION_LEN, MODULE_EXTENSION))) 375 mod_name,
376 { 376 strlen(mod_name)) == 0 ) &&
377 return 1; 377 (strcmp(mod_path + strlen(mod_path) -
378 } 378 MOD_EXTENSION_LEN, MODULE_EXTENSION) == 0);
379 return 0;
380} 379}
381 380
382/* return 1 = loaded, 0 = not loaded, -1 = can't tell */ 381/* return 1 = loaded, 0 = not loaded, -1 = can't tell */
@@ -409,7 +408,7 @@ static int already_loaded (const char *name)
409static int mod_process ( struct mod_list_t *list, int do_insert ) 408static int mod_process ( struct mod_list_t *list, int do_insert )
410{ 409{
411 char lcmd [256]; 410 char lcmd [256];
412 int rc = 1; 411 int rc = 0;
413 412
414 while ( list ) { 413 while ( list ) {
415 *lcmd = '\0'; 414 *lcmd = '\0';