diff options
author | phk <phk@FreeBSD.org> | 1995-08-24 09:03:04 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 1995-08-24 09:03:04 +0000 |
commit | 6525e9352125ef84d8dc9be7527c97103bd99a46 (patch) | |
tree | 3500a990f00ee986fa4dedc4ee4179df82e89175 /usr.sbin/pccard/pccardc/pccardc.c | |
parent | cb797b9f3a51481777017af541d45fbb632918bd (diff) | |
download | FreeBSD-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.c | 59 |
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; +} |