12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #include "libbb.h"
- #include "modutils.h"
- int rmmod_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
- int rmmod_main(int argc UNUSED_PARAM, char **argv)
- {
- int n, err;
- unsigned flags = O_NONBLOCK | O_EXCL;
-
- n = getopt32(argv, "wfas");
- argv += optind;
- if (n & 1)
- flags &= ~O_NONBLOCK;
- if (n & 2)
- flags |= O_TRUNC;
- if (n & 4) {
-
- err = bb_delete_module(NULL, flags);
- if (err && err != EFAULT)
- bb_perror_msg_and_die("rmmod");
- return EXIT_SUCCESS;
- }
- if (!*argv)
- bb_show_usage();
- n = ENABLE_FEATURE_2_4_MODULES && get_linux_version_code() < KERNEL_VERSION(2,6,0);
- while (*argv) {
- char modname[MODULE_NAME_LEN];
- const char *bname;
- bname = bb_basename(*argv++);
- if (n)
- safe_strncpy(modname, bname, MODULE_NAME_LEN);
- else
- filename2modname(bname, modname);
- err = bb_delete_module(modname, flags);
- if (err)
- bb_perror_msg_and_die("can't unload module '%s'",
- modname);
- }
- return EXIT_SUCCESS;
- }
|