]> sigrok.org Git - libserialport.git/commitdiff
Return SP_ERR_SUPP from sp_list_ports() on unsupported platforms.
authorMartin Ling <redacted>
Sat, 23 Nov 2013 11:57:17 +0000 (11:57 +0000)
committerMartin Ling <redacted>
Sat, 23 Nov 2013 11:57:17 +0000 (11:57 +0000)
README
serialport.c

diff --git a/README b/README
index 35b32434c34149a672870f17015304f039317f25..87de434b79dd693c655e7d468e8fb5f8fa07d966 100644 (file)
--- a/README
+++ b/README
@@ -25,8 +25,8 @@ The library should build and work on any Windows or Unix-based system. If it
 does not, please submit a bug.
 
 Enumeration is currently only implemented on Windows, Mac OS X and Linux. On
-other systems enumeration will return no results, but ports can still be opened
-by name and then used.
+other systems enumeration is not supported, but ports can still be opened by
+name and then used.
 
 If you know how to enumerate available ports on another OS, please submit a bug
 with this information, or better still a patch implementing it.
index 05aff3a4bc6ea6732d7dde6c08d4da1b8a04c121..4b25eafa08af70f70f5c280303d72d2d06c67a84 100644 (file)
@@ -246,7 +246,7 @@ fail:
 enum sp_return sp_list_ports(struct sp_port ***list_ptr)
 {
        struct sp_port **list;
-       int ret = SP_OK;
+       int ret = SP_ERR_SUPP;
 
        TRACE("%p", list_ptr);
 
@@ -269,6 +269,8 @@ enum sp_return sp_list_ports(struct sp_port ***list_ptr)
        char *name;
        int name_len;
 
+       ret = SP_OK;
+
        DEBUG("Opening registry key");
        if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DEVICEMAP\\SERIALCOMM"),
                        0, KEY_QUERY_VALUE, &key) != ERROR_SUCCESS) {
@@ -339,6 +341,8 @@ out_done:
        CFTypeRef cf_path;
        Boolean result;
 
+       ret = SP_OK;
+
        DEBUG("Getting IOKit master port");
        if (IOMasterPort(MACH_PORT_NULL, &master) != KERN_SUCCESS) {
                SET_FAIL(ret, "IOMasterPort() failed");
@@ -402,6 +406,8 @@ out_done:
        int fd, ioctl_result;
        struct serial_struct serial_info;
 
+       ret = SP_OK;
+
        DEBUG("Enumerating tty devices");
        ud = udev_new();
        ud_enumerate = udev_enumerate_new(ud);
@@ -456,10 +462,13 @@ out:
        udev_unref(ud);
 #endif
 
-       if (ret == SP_OK) {
+       switch (ret) {
+       case SP_OK:
                *list_ptr = list;
                RETURN_OK();
-       } else {
+       case SP_ERR_SUPP:
+               DEBUG_ERROR(SP_ERR_SUPP, "Enumeration not supported on this platform.");
+       default:
                if (list)
                        sp_free_port_list(list);
                *list_ptr = NULL;