mirror of
git://git.suckless.org/ubase
synced 2024-12-22 22:53:10 +00:00
Add rmmod(8)
No manpage yet.
This commit is contained in:
parent
5da030ecec
commit
03a234e7f9
3
Makefile
3
Makefile
@ -18,7 +18,8 @@ SRC = \
|
||||
|
||||
ifeq ($(OS),linux)
|
||||
SRC += \
|
||||
insmod.c
|
||||
insmod.c \
|
||||
rmmod.c
|
||||
endif
|
||||
|
||||
OBJ = $(SRC:.c=.o) $(LIB)
|
||||
|
47
rmmod.c
Normal file
47
rmmod.c
Normal file
@ -0,0 +1,47 @@
|
||||
/* See LICENSE file for copyright and license details. */
|
||||
#include <sys/syscall.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <libgen.h>
|
||||
#include "util.h"
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
{
|
||||
eprintf("usage: %s [-fw] modulename...\n", argv0);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
char *mod, *p;
|
||||
int i;
|
||||
int flags = O_NONBLOCK;
|
||||
|
||||
ARGBEGIN {
|
||||
case 'f':
|
||||
flags |= O_TRUNC;
|
||||
break;
|
||||
case 'w':
|
||||
flags &= ~O_NONBLOCK;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
} ARGEND;
|
||||
|
||||
if (argc < 1)
|
||||
usage();
|
||||
|
||||
for (i = 0; i < argc; i++) {
|
||||
mod = argv[i];
|
||||
p = strrchr(mod, '.');
|
||||
if (strlen(p) == 3 && !strcmp(p, ".ko"))
|
||||
*p = '\0';
|
||||
if (syscall(__NR_delete_module, mod, flags) < 0)
|
||||
eprintf("delete_module:");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user