]> sigrok.org Git - libserialport.git/commitdiff
Use a more logical set of SP_MODE_* flags.
authorMartin Ling <redacted>
Wed, 20 Nov 2013 15:54:10 +0000 (15:54 +0000)
committerBert Vermeulen <redacted>
Fri, 22 Nov 2013 00:48:02 +0000 (01:48 +0100)
libserialport.h.in
serialport.c

index 264c7db8ca496c69d4ee87a9a199ce46c2919606..fa5ba1a829c95a96be03a84c1ab370972d97b2f0 100644 (file)
@@ -101,10 +101,10 @@ enum sp_return {
 
 /** Port access modes. */
 enum sp_mode {
-       /** Open port for read/write access. */
-       SP_MODE_RDWR = 1,
-       /** Open port for read access only. */
-       SP_MODE_RDONLY = 2,
+       /** Open port for read access. */
+       SP_MODE_READ = 1,
+       /** Open port for write access. */
+       SP_MODE_WRITE = 2,
        /** Open port in non-blocking mode. */
        SP_MODE_NONBLOCK = 4,
 };
index 7127cb36e532f369539af7f57c5d8199dc68af45..353cd347118c61c468584fd4256d51b0001a6933 100644 (file)
@@ -422,9 +422,10 @@ enum sp_return sp_open(struct sp_port *port, enum sp_mode flags)
        sprintf(escaped_port_name, "\\\\.\\%s", port->name);
 
        /* Map 'flags' to the OS-specific settings. */
-       desired_access |= GENERIC_READ;
        flags_and_attributes = FILE_ATTRIBUTE_NORMAL;
-       if (flags & SP_MODE_RDWR)
+       if (flags & SP_MODE_READ)
+               desired_access |= GENERIC_READ;
+       if (flags & SP_MODE_WRITE)
                desired_access |= GENERIC_WRITE;
        if (flags & SP_MODE_NONBLOCK)
                flags_and_attributes |= FILE_FLAG_OVERLAPPED;
@@ -443,10 +444,12 @@ enum sp_return sp_open(struct sp_port *port, enum sp_mode flags)
        int ret;
 
        /* Map 'flags' to the OS-specific settings. */
-       if (flags & SP_MODE_RDWR)
+       if (flags & (SP_MODE_READ | SP_MODE_WRITE))
                flags_local |= O_RDWR;
-       if (flags & SP_MODE_RDONLY)
+       else if (flags & SP_MODE_READ)
                flags_local |= O_RDONLY;
+       else if (flags & SP_MODE_WRITE)
+               flags_local |= O_WRONLY;
        if (flags & SP_MODE_NONBLOCK)
                flags_local |= O_NONBLOCK;