aboutsummaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
authorPawel Jakub Dawidek <pjd@FreeBSD.org>2005-09-23 23:52:26 +0000
committerPawel Jakub Dawidek <pjd@FreeBSD.org>2005-09-23 23:52:26 +0000
commit90217cddd06eee6177f32361f451bc5ed1e207f1 (patch)
tree4c2a888b13e4d495628abb6e9a23c6f54aae385c /sbin
parent829681b6aa1b7781ae4d369cffc84ef04112ec1b (diff)
downloadsrc-90217cddd06eee6177f32361f451bc5ed1e207f1.tar.gz
src-90217cddd06eee6177f32361f451bc5ed1e207f1.zip
Add '-q' option, which (when used with '-m' option) just tells if the given
module is loaded or compiled into the kernel. This is useful mostly in startup scripts, when module should be loaded only if it wasn't compiled into the kernel nor already loaded, eg.: kldstat -q -m g_eli || kldload geom_eli.ko || err 1 'geom_eli module failed to load.'
Notes
Notes: svn path=/head/; revision=150497
Diffstat (limited to 'sbin')
-rw-r--r--sbin/kldstat/kldstat.83
-rw-r--r--sbin/kldstat/kldstat.c15
2 files changed, 15 insertions, 3 deletions
diff --git a/sbin/kldstat/kldstat.8 b/sbin/kldstat/kldstat.8
index b2b72c28b8a0..5a8565e1c838 100644
--- a/sbin/kldstat/kldstat.8
+++ b/sbin/kldstat/kldstat.8
@@ -37,6 +37,7 @@
.Op Fl i Ar id
.Op Fl n Ar filename
.Nm
+.Op Fl q
.Op Fl m Ar modname
.Sh DESCRIPTION
The
@@ -52,6 +53,8 @@ Be more verbose.
Display the status of only the file with this ID.
.It Fl n Ar filename
Display the status of only the file with this filename.
+.It Fl q
+Only check if module is loaded or compiled into the kernel.
.It Fl m Ar modname
Display the status of only the module with this modname.
.El
diff --git a/sbin/kldstat/kldstat.c b/sbin/kldstat/kldstat.c
index 20404d630052..f9fd2c1b7dd7 100644
--- a/sbin/kldstat/kldstat.c
+++ b/sbin/kldstat/kldstat.c
@@ -87,11 +87,12 @@ main(int argc, char** argv)
int c;
int verbose = 0;
int fileid = 0;
+ int quiet = 0;
char* filename = NULL;
char* modname = NULL;
char* p;
- while ((c = getopt(argc, argv, "i:m:n:v")) != -1)
+ while ((c = getopt(argc, argv, "i:m:n:qv")) != -1)
switch (c) {
case 'i':
fileid = (int)strtoul(optarg, &p, 10);
@@ -104,6 +105,9 @@ main(int argc, char** argv)
case 'n':
filename = optarg;
break;
+ case 'q':
+ quiet = 1;
+ break;
case 'v':
verbose = 1;
break;
@@ -120,8 +124,13 @@ main(int argc, char** argv)
int modid;
struct module_stat stat;
- if ((modid = modfind(modname)) < 0)
- err(1, "can't find module %s", modname);
+ if ((modid = modfind(modname)) < 0) {
+ if (!quiet)
+ warn("can't find module %s", modname);
+ return 1;
+ } else if (quiet) {
+ return 0;
+ }
stat.version = sizeof(struct module_stat);
if (modstat(modid, &stat) < 0)