X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver/blobdiff_plain/3a2a22bc86116bf7c99b1475bd8962ea26008fd3..c42237a305a64d46ed4fa4cf2c974abd09486be7:/usb-driver.c diff --git a/usb-driver.c b/usb-driver.c index 05ba48a..def52db 100644 --- a/usb-driver.c +++ b/usb-driver.c @@ -39,6 +39,8 @@ #include #include #include +#include +#include #include "usb-driver.h" #include "config.h" @@ -47,9 +49,9 @@ static int windrvrfd = -1; static unsigned long ppbase = 0; static unsigned long ecpbase = 0; static struct parport_config *pport = NULL; -FILE *modulesfp = NULL; -FILE *baseaddrfp = NULL; -int baseaddrnum = 0; +static FILE *modulesfp = NULL; +static FILE *baseaddrfp = NULL; +static int baseaddrnum = 0; static int modules_read = 0; static struct usb_bus *busses = NULL; static struct usb_device *usbdevice; @@ -72,7 +74,7 @@ void hexdump(unsigned char *buf, int len) { fprintf(stderr,"\n"); } -int usb_deviceinfo(unsigned char *buf) { +static int usb_deviceinfo(unsigned char *buf) { int i,j,k,l; int len = 0; WDU_CONFIGURATION **pConfigs, **pActiveConfig; @@ -232,7 +234,7 @@ int usb_deviceinfo(unsigned char *buf) { return len; } -int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) { +static int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) { struct header_struct* wdheader = (struct header_struct*)wdioctl; struct version_struct *version; int ret = 0; @@ -500,6 +502,7 @@ int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) { } else { devnum = strtol(devstr, &remainder, 10); if (devstr == remainder) { + busnum = -1; devnum = -1; } else { fprintf(stderr,"Using XILINX platform cable USB at %03d:%03d\n", @@ -533,7 +536,7 @@ int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) { (desc->idProduct == e->matchTables[i].ProductId) && (desc->bDeviceClass == e->matchTables[i].bDeviceClass) && (desc->bDeviceSubClass == e->matchTables[i].bDeviceSubClass) && - ((devnum == -1) || (dev->devnum == devnum)) ) { + ((devnum == -1) || (strtol(dev->filename, NULL, 10) == devnum)) ) { int ac; for (ac = 0; ac < desc->bNumConfigurations; ac++) { struct usb_interface *interface = dev->config[ac].interface; @@ -936,3 +939,21 @@ int access(const char *pathname, int mode) { return (*func)(pathname, mode); } } + +#if __WORDSIZE == 32 +int uname (struct utsname *__name) { + static int (*func) (struct utsname*); + int ret; + + if (!func) + func = (int (*) (struct utsname*)) dlsym(RTLD_NEXT, "uname"); + + ret = (*func)(__name); + + if (ret == 0 && (!strcmp(__name->machine, "x86_64"))) { + strcpy(__name->machine, "i686"); + } + + return ret; +} +#endif