]>
git.zerfleddert.de Git - usb-driver/blob - config.c
5 #include "usb-driver.h"
14 #define PARSEERROR fprintf(stderr,"LIBUSB-DRIVER WARNING: Invalid config statement at line %d\n", line)
16 static struct parport_config pp_config
[4];
18 static void read_config() {
21 static int config_read
= 0;
23 char buf
[LINELEN
], *pbuf
;
24 unsigned short vid
, pid
;
31 for (i
=0; i
<sizeof(pp_config
)/sizeof(struct parport_config
); i
++) {
33 pp_config
[i
].ppbase
= i
*0x10;
34 pp_config
[i
].real
= 1;
35 pp_config
[i
].open
= parport_open
;
36 pp_config
[i
].close
= parport_close
;
37 pp_config
[i
].transfer
= parport_transfer
;
40 snprintf(buf
, sizeof(buf
), "%s/.libusb-driverrc", getenv("HOME"));
42 cfg
= fopen(buf
, "r");
47 pbuf
= fgets(buf
, sizeof(buf
), cfg
);
55 if (len
> 0 && buf
[len
-1] == '\n') {
59 if (len
> 0 && buf
[len
-1] == '\r') {
64 for (i
= 0; i
< len
; i
++) {
65 if (buf
[i
] != ' ' && buf
[i
] != '\t')
69 if (buf
[i
] == '#' || buf
[i
] == ';' || buf
[i
] == '\0')
72 if (!strncasecmp(buf
+i
, "LPT", 3)) {
73 unsigned char equal_seen
= 0;
77 for (; i
< len
; i
++) {
78 if (buf
[i
] == ' ' || buf
[i
] == '\t' || buf
[i
] == '=') {
94 num
= strtol(pbuf
, NULL
, 10);
101 for (; (i
< len
) && (!equal_seen
) ; i
++) {
106 } else if (buf
[i
] != ' ' && buf
[i
] != '\t') {
116 for (; i
< len
; i
++) {
117 if (buf
[i
] != ' ' && buf
[i
] != '\t')
121 if (strncasecmp(buf
+i
, "FTDI:", 5)) {
129 for (; i
< len
; i
++) {
142 vid
= strtol(pbuf
, NULL
, 16);
151 for (; i
< len
; i
++) {
152 if (buf
[i
] == ' ' || buf
[i
] == '\t')
157 pid
= strtol(pbuf
, NULL
, 16);
163 pp_config
[num
].real
= 0;
164 pp_config
[num
].usb_vid
= vid
;
165 pp_config
[num
].usb_pid
= pid
;
166 pp_config
[num
].open
= jtagkey_open
;
167 pp_config
[num
].close
= jtagkey_close
;
168 pp_config
[num
].transfer
= jtagkey_transfer
;
174 fprintf(stderr
,"libusb-driver not compiled with FTDI2232-support, config file ignored!\n");
180 struct parport_config
*config_get(int num
) {
181 struct parport_config
*ret
= NULL
;
186 for (i
=0; i
<sizeof(pp_config
)/sizeof(struct parport_config
); i
++) {
187 if (pp_config
[i
].num
== num
) {
188 ret
= &(pp_config
[i
]);
196 unsigned char config_is_real_pport(int num
) {
202 for (i
=0; i
<sizeof(pp_config
)/sizeof(struct parport_config
); i
++) {
203 if (pp_config
[i
].num
== num
) {
204 ret
= pp_config
[i
].real
;
212 unsigned short config_usb_vid(int num
) {
213 unsigned short ret
= 0x00;
218 for (i
=0; i
<sizeof(pp_config
)/sizeof(struct parport_config
); i
++) {
219 if (pp_config
[i
].num
== num
) {
220 ret
= pp_config
[i
].usb_vid
;
228 unsigned short config_usb_pid(int num
) {
229 unsigned short ret
= 0x00;
234 for (i
=0; i
<sizeof(pp_config
)/sizeof(struct parport_config
); i
++) {
235 if (pp_config
[i
].num
== num
) {
236 ret
= pp_config
[i
].usb_pid
;