1
0
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:
sin 2013-08-09 09:42:34 +01:00
parent 5da030ecec
commit 03a234e7f9
2 changed files with 49 additions and 1 deletions

View File

@ -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
View 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;
}