summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pccard/pccardc/pccardc.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1995-08-24 09:03:04 +0000
committerphk <phk@FreeBSD.org>1995-08-24 09:03:04 +0000
commit6525e9352125ef84d8dc9be7527c97103bd99a46 (patch)
tree3500a990f00ee986fa4dedc4ee4179df82e89175 /usr.sbin/pccard/pccardc/pccardc.c
parentcb797b9f3a51481777017af541d45fbb632918bd (diff)
downloadFreeBSD-src-6525e9352125ef84d8dc9be7527c97103bd99a46.zip
FreeBSD-src-6525e9352125ef84d8dc9be7527c97103bd99a46.tar.gz
The userland part of Andrew McRae's PCMCIA/PCCARD code.
This is not quite finished yet, and therefore I have not added it to the usr.sbin/Makefile yet. I collected a bunch of Andrews small programs into one: pccardc /phk Reviewed by: phk Submitted by: Andrew McRae <andrew@mega.com.au>
Diffstat (limited to 'usr.sbin/pccard/pccardc/pccardc.c')
-rw-r--r--usr.sbin/pccard/pccardc/pccardc.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/usr.sbin/pccard/pccardc/pccardc.c b/usr.sbin/pccard/pccardc/pccardc.c
new file mode 100644
index 0000000..e789be2
--- /dev/null
+++ b/usr.sbin/pccard/pccardc/pccardc.c
@@ -0,0 +1,59 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef int (*main_t)(int , char **);
+
+#define DECL(foo) int foo(int, char**);
+DECL(dumpcis_main);
+DECL(enabler_main);
+DECL(help_main);
+DECL(pccardmem_main);
+DECL(rdmap_main);
+DECL(rdreg_main);
+DECL(wrattr_main);
+DECL(wrreg_main);
+
+struct {
+ char *name;
+ main_t func;
+ char *help;
+} subcommands[] = {
+
+{ "dumpcis", dumpcis_main, "Prints CIS for all cards"},
+{ "enabler", enabler_main, "Device driver enabler"},
+{ "help", help_main, "Prints command summary"},
+{ "pccardmem", pccardmem_main, "Allocate memory for pccard driver"},
+{ "rdmap", rdmap_main, "Read pcic mappings"},
+{ "rdreg", rdreg_main, "Read pcic register"},
+{ "wrattr", wrattr_main, "Write byte to attribute memory"},
+{ "wrreg", wrreg_main, "Write pcic register"},
+{0, 0}
+};
+
+int
+main(int argc, char **argv)
+{
+ int i;
+ for(i=0; argc > 1 && subcommands[i].name; i++) {
+ if (!strcmp(argv[1],subcommands[i].name)) {
+ argv[1] = argv[0];
+ return (*subcommands[i].func)(argc-1,argv+1);
+ }
+ }
+ if (argc > 1)
+ fprintf(stderr,"Unknown Subcommand.\n");
+ return help_main(argc,argv);
+}
+
+int
+help_main(int argc, char **argv)
+{
+ int i;
+ fprintf(stderr,"Usage:\n");
+ fprintf(stderr,"\t%s <subcommand> <arg> ...\n",argv[0]);
+ fprintf(stderr,"Subcommands:\n");
+ for(i=0; subcommands[i].name; i++)
+ fprintf(stderr,"\t%s\n\t\t%s\n",
+ subcommands[i].name, subcommands[i].help);
+ return 1;
+}
OpenPOWER on IntegriCloud