X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=ao-tools%2Fao-chaosread%2Fao-chaosread.c;h=6d860139f71487a59dbd3f9d8e6433532fa018b4;hb=f607a882a50aa6cd9e8e3e74cbaa5bcc1b5fa4a4;hp=82831201c1b3ffe1e7c1ddf87470f8cb1b6dd80b;hpb=d52cb9dac725206ba7b2d26818c84f134d5bf183;p=fw%2Faltos diff --git a/ao-tools/ao-chaosread/ao-chaosread.c b/ao-tools/ao-chaosread/ao-chaosread.c index 82831201..6d860139 100644 --- a/ao-tools/ao-chaosread/ao-chaosread.c +++ b/ao-tools/ao-chaosread/ao-chaosread.c @@ -74,7 +74,7 @@ chaoskey_match(libusb_device *dev, char *match_serial) goto out; } - ret = libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, device_serial, match_len + 1); + ret = libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, (unsigned char *) device_serial, match_len + 1); if (ret < 0) { fprintf(stderr, "failed to get serial number: %s\n", libusb_strerror(ret)); @@ -103,7 +103,6 @@ chaoskey_open(char *serial) int ret; ssize_t num; libusb_device **list; - libusb_device *device = NULL; int d; ck = calloc(sizeof (struct chaoskey), 1); @@ -173,12 +172,6 @@ chaoskey_close(struct chaoskey *ck) free(ck); } -void -chaoskey_transfer_callback(struct libusb_transfer *transfer) -{ - struct chaoskey *ck = transfer->user_data; -} - #define ENDPOINT 0x86 int @@ -202,7 +195,9 @@ chaoskey_read(struct chaoskey *ck, void *buffer, int len) } len -= transferred; buf += transferred; + total += transferred; } + return total; } static const struct option options[] = { @@ -234,7 +229,7 @@ main (int argc, char **argv) int infinite = 0; int bytes = 0; - while ((c = getopt_long(argc, argv, "s:l:", options, NULL)) != -1) { + while ((c = getopt_long(argc, argv, "s:l:ib", options, NULL)) != -1) { switch (c) { case 's': serial = optarg; @@ -283,8 +278,17 @@ main (int argc, char **argv) int i; for (i = 0; i < got / 2; i++) putchar((buf[i] >> 1 & 0xff)); - } else - write(1, buf, got); + } else { + int i; + int ret; + for (i = 0; i < got; i += ret) { + ret = write(1, ((char *) buf) + i, got - i); + if (ret <= 0) { + perror("write"); + exit(1); + } + } + } length -= got; } exit(0);