]> git.zerfleddert.de Git - usb-driver/blobdiff - usb-driver.c
always set ecpbase correctly.
[usb-driver] / usb-driver.c
index 881b67bf050fb19f5a45efe0620062e729d63a07..1c5b18b2d8f4b3ae3b29f116b8729f73bda1865f 100644 (file)
@@ -349,6 +349,9 @@ int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) {
                                        DPRINTF("opening %s\n", ppdev);
                                        parportfd = open(ppdev, O_RDWR|O_EXCL);
                                        parportnum++;
+
+                                       if (parportfd < 0)
+                                               fprintf(stderr,"Can't open %s: %s\n", ppdev, strerror(errno));
                                }
 
                                if (parportfd >= 0) {
@@ -357,17 +360,20 @@ int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) {
                                        if (ioctl(parportfd, PPCLAIM) == -1)
                                                return ret;
 
+                                       ecpbase = 0;
                                        pmode = IEEE1284_MODE_COMPAT;
                                        if (ioctl(parportfd, PPNEGOT, &pmode) == -1)
                                                return ret;
                                        
-                                       if (cr->Card.dwItems > 1) {
+                                       if (cr->Card.dwItems > 1 && cr->Card.Item[1].I.IO.dwBytes) {
+                                               DPRINTF("ECP mode requested\n");
                                                ecpbase = cr->Card.Item[1].I.IO.dwBytes;
                                                /* TODO: Implement ECP mode */
 #if 0
                                                pmode = IEEE1284_MODE_ECP;
 
                                                if (ioctl(parportfd, PPNEGOT, &pmode) == -1) {
+                                                       ecpbase = 0;
                                                        pmode = IEEE1284_MODE_COMPAT;
                                                        if (ioctl(parportfd, PPNEGOT, &pmode) == -1)
                                                                return ret;
Impressum, Datenschutz