summaryrefslogtreecommitdiffstats
path: root/utils/modlist.c
diff options
context:
space:
mode:
authorErik Troan <ewt@redhat.com>1999-07-21 02:20:44 +0000
committerErik Troan <ewt@redhat.com>1999-07-21 02:20:44 +0000
commit9ad45ef774a2f6aecdf9d52a3b3a2a9a0388016c (patch)
treee6d5e71d708552b7192edaf35217065f9f3e5f72 /utils/modlist.c
parent09b61fc5c8bde0358fb817a4489a988a9aca3590 (diff)
downloadanaconda-9ad45ef774a2f6aecdf9d52a3b3a2a9a0388016c.tar.gz
anaconda-9ad45ef774a2f6aecdf9d52a3b3a2a9a0388016c.tar.xz
anaconda-9ad45ef774a2f6aecdf9d52a3b3a2a9a0388016c.zip
added generation of module-info files
Diffstat (limited to 'utils/modlist.c')
-rw-r--r--utils/modlist.c83
1 files changed, 65 insertions, 18 deletions
diff --git a/utils/modlist.c b/utils/modlist.c
index efb768c8c..eb8f6b3a7 100644
--- a/utils/modlist.c
+++ b/utils/modlist.c
@@ -10,10 +10,19 @@ int main(int argc, char ** argv) {
char * modInfoFile = "/boot/module-info";
enum driverMajor major;
char * type;
+ char * mod;
struct moduleInfo * list, * m;
- int rc;
+ int rc, i;
+ int showModInfo = 0;
+ int ignoreMissing = 0;
+ struct moduleInfo * mi;
struct poptOption optionTable[] = {
- { "modinfo", 'm', POPT_ARG_STRING, &modInfoFile, 0 },
+ { "ignore-missing", 'I', POPT_ARG_NONE, &ignoreMissing, 0,
+ "Ignore modules not in modinfo file for --modinfo" },
+ { "modinfo", 'm', POPT_ARG_NONE, &showModInfo, 0,
+ "Give output in module-info file for listed args" },
+ { "modinfo-file", 'f', POPT_ARG_STRING, &modInfoFile, 0,
+ "Module info file to use"},
POPT_AUTOHELP
{ 0, 0, 0, 0, 0 }
};
@@ -32,24 +41,62 @@ int main(int argc, char ** argv) {
exit(1);
}
- while ((type = poptGetArg(optCon))) {
- if (!strcasecmp(type, "scsi")) {
- major = DRIVER_SCSI;
- } else if (!strcasecmp(type, "net")) {
- major = DRIVER_NET;
- } else if (!strcasecmp(type, "fs")) {
- major = DRIVER_FS;
- } else if (!strcasecmp(type, "cdrom")) {
- major = DRIVER_CDROM;
- } else {
- fprintf(stderr, "type must be one of scsi, net, fs, cdrom\n");
- exit(1);
+ if (showModInfo) {
+ while ((mod = poptGetArg(optCon))) {
+ mi = isysFindModuleInfo(mod);
+ if (mi) {
+ printf("%s\n", mi->moduleName);
+ switch (mi->major) {
+ case DRIVER_CDROM: printf("\tcdrom\n"); break;
+ case DRIVER_SCSI: printf("\tscsi\n"); break;
+ case DRIVER_FS: printf("\tfs\n"); break;
+ case DRIVER_NET:
+ switch (mi->minor) {
+ case DRIVER_MINOR_ETHERNET: printf("\teth\n"); break;
+
+ default:
+ fprintf(stderr, "unknown net minor type for %s\n",
+ mi->moduleName);
+ exit(1);
+ }
+ break;
+
+ default:
+ fprintf(stderr, "unknown device type for %s\n",
+ mi->moduleName);
+ exit(1);
+
+ }
+ printf("\t\"%s\"\n", mi->description);
+ for (i = 0; i < mi->numArgs; i++) {
+ printf("\t%s \"%s\"\n", mi->args[i].arg,
+ mi->args[i].description);
+ }
+ } else if (!ignoreMissing) {
+ fprintf(stderr, "I know nothing about %s\n", mod);
+ exit(1);
+ }
}
+ } else {
+ while ((type = poptGetArg(optCon))) {
+ if (!strcasecmp(type, "scsi")) {
+ major = DRIVER_SCSI;
+ } else if (!strcasecmp(type, "net")) {
+ major = DRIVER_NET;
+ } else if (!strcasecmp(type, "fs")) {
+ major = DRIVER_FS;
+ } else if (!strcasecmp(type, "cdrom")) {
+ major = DRIVER_CDROM;
+ } else {
+ fprintf(stderr, "type must be one of scsi, net, fs, cdrom\n");
+ exit(1);
+ }
- list = isysGetModuleList(major);
- for (m = list; m && m->moduleName; m++)
- printf("%s\n", m->moduleName);
- free(list);
+ list = isysGetModuleList(major);
+ for (m = list; m && m->moduleName; m++)
+ printf("%s\n", m->moduleName);
+ free(list);
+ }
}
return 0;