diff options
author | Jim Rees <rees@cvs.openbsd.org> | 2001-06-07 15:17:34 +0000 |
---|---|---|
committer | Jim Rees <rees@cvs.openbsd.org> | 2001-06-07 15:17:34 +0000 |
commit | e79bf55dc158d93c85332d7364cc081c5ed7f004 (patch) | |
tree | 0f156334f09069ae3055840248ec836e9d39d4cc /lib/libsectok/readers.c | |
parent | be748640a8100f6e89cc57bac4fe6358cb57b868 (diff) |
libsectok for secure tokens (smartcard, iButton, etc)
Diffstat (limited to 'lib/libsectok/readers.c')
-rw-r--r-- | lib/libsectok/readers.c | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/lib/libsectok/readers.c b/lib/libsectok/readers.c new file mode 100644 index 00000000000..2818e9e9e5b --- /dev/null +++ b/lib/libsectok/readers.c @@ -0,0 +1,85 @@ +/* + * parse the reader.conf file + * + * See copyright notice at end of file + * + * Jim Rees + * University of Michigan CITI, August 2000 + */ +static char *rcsid = "$Id: readers.c,v 1.1 2001/06/07 15:17:33 rees Exp $"; + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +int +DBUpdateReaders(char *readerconf, void (callback) (char *name, unsigned long channelId, char *driverFile)) +{ + FILE *f; + char buf[512], lv[64], rv[512], libpath[512]; + long channelno; + + f = fopen(readerconf, "r"); + if (!f) + return -1; + + libpath[0] = '\0'; + channelno = -1; + + while (fgets(buf, sizeof buf, f)) { + if (sscanf(buf, "%63s %511s", lv, rv) != 2) + continue; + if (rv[0] == '"') { + /* if rv starts with quote, read everything up to terminating quote */ + sscanf(buf, "%*s \"%511[^\"]", rv); + } +#ifdef DEBUG + printf("%s %s\n", lv, rv); +#endif + if (!strcasecmp(lv, "libpath")) + strncpy(libpath, rv, sizeof libpath); + if (!strcasecmp(lv, "channelid")) + channelno = strtol(rv, NULL, 0); + if (libpath[0] && channelno != -1) { +#ifdef DEBUG + printf("adding %x %s\n", channelno, libpath); +#endif + (*callback)("", channelno, libpath); + libpath[0] = '\0'; + channelno = -1; + } + } + + fclose(f); + return 0; +} + +/* +copyright 2001 +the regents of the university of michigan +all rights reserved + +permission is granted to use, copy, create derivative works +and redistribute this software and such derivative works +for any purpose, so long as the name of the university of +michigan is not used in any advertising or publicity +pertaining to the use or distribution of this software +without specific, written prior authorization. if the +above copyright notice or any other identification of the +university of michigan is included in any copy of any +portion of this software, then the disclaimer below must +also be included. + +this software is provided as is, without representation +from the university of michigan as to its fitness for any +purpose, and without warranty by the university of +michigan of any kind, either express or implied, including +without limitation the implied warranties of +merchantability and fitness for a particular purpose. the +regents of the university of michigan shall not be liable +for any damages, including special, indirect, incidental, or +consequential damages, with respect to any claim arising +out of or in connection with the use of the software, even +if it has been or is hereafter advised of the possibility of +such damages. +*/ |