int main(int argc, char *argv[]) { unsigned int i; long int ret; unsigned long len; void *file; char *filename, *options = strdup(""); char *progname = argv[0]; if (strstr(argv[0], "insmod.static")) try_old_version("insmod.static", argv); else try_old_version("insmod", argv); if (argv[1] && (streq(argv[1], "--version") || streq(argv[1], "-V"))) { puts(PACKAGE " version " VERSION); exit(0); } /* Ignore old options, for backwards compat. */ while (argv[1] && (streq(argv[1], "-p") || streq(argv[1], "-s") || streq(argv[1], "-f"))) { argv++; argc--; } filename = argv[1]; if (!filename) print_usage(progname); /* Rest is options */ for (i = 2; i < argc; i++) { options = realloc(options, strlen(options) + 1 + strlen(argv[i]) + 1); strcat(options, argv[i]); strcat(options, " "); } file = grab_file(filename, &len); if (!file) { fprintf(stderr, "insmod: can't read '%s': %s\n", filename, strerror(errno)); exit(1); } ret = init_module(file, len, options); if (ret != 0) { fprintf(stderr, "insmod: error inserting '%s': %li %s\n", filename, ret, moderror(errno)); exit(1); } exit(0); }
int main(int argc, char *argv[]) { /* O_EXCL so kernels can spot old rmmod versions */ unsigned int flags = O_NONBLOCK|O_EXCL; int i, opt, all = 0, log = 0, verbose = 0; int ret, err; try_old_version("rmmod", argv); while ((opt = getopt_long(argc, argv, "afh?swvV", options, NULL)) != EOF) { switch (opt) { case 'a': // --all all = 1; break; case 'f': // --force flags |= O_TRUNC; break; case 's': // --syslog openlog("rmmod", LOG_CONS, LOG_DAEMON); log = 1; break; case 'w': // --wait flags &= ~O_NONBLOCK; break; case 'v': // --verbose verbose++; break; case 'V': // --version puts(PACKAGE " version " VERSION); return 0; default: print_usage(argv[0]); } } if (!argv[optind]) { if (all) { /* FIXME implement */ exit(1); } fprintf(stderr, "no module names given\n"); print_usage(argv[0]); } err = 0; /* remove each specified module */ for (i = optind; i < argc; i++) { ret = rmmod(log, verbose, argv[i], flags); if (ret!=0) err = ret; } if (log) closelog(); exit(err); }