ubase/rmmod.c

49 lines
776 B
C

/* See LICENSE file for copyright and license details. */
#include <sys/syscall.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libgen.h>
#include "util.h"
static void
usage(void)
{
eprintf("usage: %s [-fw] module...\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 EXIT_SUCCESS;
}