]> err.no Git - yubikey-personalization/commitdiff
add a new error: YK_ENODATA
authorKlas Lindfors <klas@yubico.com>
Fri, 10 Jan 2014 09:53:12 +0000 (10:53 +0100)
committerKlas Lindfors <klas@yubico.com>
Fri, 10 Jan 2014 09:53:12 +0000 (10:53 +0100)
used when read from device returns no data but no underlying error

ykcore/ykcore.c
ykcore/ykcore.h
ykcore/ykcore_libusb-1.0.c
ykcore/ykcore_libusb.c
ykcore/ykcore_osx.c

index a4f0b0486eb059bd9acda22ea31345132d0e67ff..31a9460cc82f4a77e26308b56d304d38077dc02d 100644 (file)
@@ -403,6 +403,7 @@ static const char *errtext[] = {
        "operation would block",
        "invalid command for operation",
        "expected only one YubiKey but several present",
+       "no data returned from device",
 };
 const char *yk_strerror(int errnum)
 {
index 8d032a56b7c77c43cd56f1bdcf5061c4a4feb363..33d0592581a394b963e0e1a3941e1e89e7f9b279 100644 (file)
@@ -160,6 +160,7 @@ const char *yk_usb_strerror(void);
 #define YK_EWOULDBLOCK 0x0b    /* operation would block */
 #define YK_EINVALIDCMD 0x0c    /* supplied command is invalid for this operation */
 #define YK_EMORETHANONE        0x0d    /* expected to find only one key but found more */
+#define YK_ENODATA     0x0e    /* no data was returned from a read */
 
 /* Flags for response reading. Use high numbers to not exclude the possibility
  * to combine these with for example SLOT commands from ykdef.h in the future.
index a3541c1ea4b3dbc5dbfa510749e2fafb1e4b0b14..2385e7fa67b52811d88882ae6bee68c4ddf98132 100644 (file)
@@ -128,9 +128,13 @@ int _ykusb_read(void *dev, int report_type, int report_number,
                if (ykl_errno > 0 && rc2 < 0)
                        ykl_errno = rc2;
        }
-       if (ykl_errno > 0)
+       if (ykl_errno > 0) {
                return ykl_errno;
-       yk_errno = YK_EUSBERR;
+       } else if(ykl_errno == 0) {
+               yk_errno = YK_ENODATA;
+       } else {
+               yk_errno = YK_EUSBERR;
+       }
        return 0;
 }
 
index 35cd68083653f014f3e50c35f1bbb032822b322e..1c9c116bb3b73289204a2d6330414c3edf8ccc85 100644 (file)
@@ -121,7 +121,10 @@ int _ykusb_read(void *dev, int report_type, int report_number,
        }
        if (rc >= 0)
                return rc;
-       yk_errno = YK_EUSBERR;
+       if(rc == 0)
+               yk_errno = YK_ENODATA;
+       else
+               yk_errno = YK_EUSBERR;
        return 0;
 }
 
index bd4538a045bd61edf2c109309176a99ca4264c34..b9f2087595b9478036c9587041d35272f814a2f5 100644 (file)
@@ -185,6 +185,9 @@ int _ykusb_read(void *dev, int report_type, int report_number,
                return 0;
        }
 
+       if(sizecf == 0)
+               yk_errno = YK_ENODATA;
+
        return (int)sizecf;
 }